Merkwürdigliebe said:
How about greatly increasing movement points in a square based grid? Not meaning that you can move further but rather subdividing them so diagonal movement doesn't have to be rounded off so coarsely.
As an example instead of a character having 10 movement points, and moving in a straight line costing one points and diagonally 1 or 2. One could have say 1000 points instead where moving in a straight line(the same distance as before) costing 100 points and diagonally 141 points.
Square grid, movement in 4 principle directions costs n movement points, diag moves cost n * sqrt(2) to get the distance ratio right. So using n = 100 and approximating the diagonal as 141 is one idea (or 1000, 1414 depending on how precise you want to get). Seems reasonable and simple enough, I like it.
Or you could still be precise with n = 1 and staying with integers, provided you're willing to use a probabilistic logic for handling the diagonals. On this scheme a diagonal move costs either 1 or 2 movement points and the game calls the random number generator to determine which, using p(1) + 2 * (1 - p(1)) = sqrt(2). This puts the expected value of movement points for a diagonal move at sqrt(2). Solving, we have p(1) = 2 - sqrt(2) which is approximately .586. So on each diagonal move you call the RNG to obtain a value 0 <= r < 1, if r < 2 - sqrt(2) the move costs 1 movement point otherwise it costs 2. And any AI pathfinding code would estimate the cost of diagonal moves as the expected value sqrt(2) as the geometry would dictate. How I could see this working in combat would be that you always can attack in the 4 principle directions, but you're gambling trying to attack diagonally - the attack only works if the diagonal distance gets calculated as 1 meaning it only has a .586 probability of success (otherwise you aren't close enough to attack).