bbox astar for critters with variable radius seems to be working just fine.
instead of checking a single node when determining impassable, you check a bbox of a specified radius around the node. if any nodes in the bbox are impassable, the node in question is considered impassable, and is not expanded. this leaves nice buffer zones of the specified radius around all obstacles.
but now i have a path with nodes 1 foot apart, not one critter diameter apart. i've been using "move to owner" for pets to test astar, and dogs now have a diameter of 3, not 5 feet.
1. i suppose i should use the smallest dimension for critter radius when pathing, right? a dog may be 3-5 feet long, but its only a foot wide, so it should be able to fit though a 1 foot gap. i'm using a radius of 1 right now, which works out to a 3x3 bbox size. using center and radius, vs UL and LR corners to specify a bbox, you can only have odd size bboxes. OTOH, even sized bboxes don't center on a tile nicely. at the moment, critter rad is used for both entity vs entity collisions, and pathing. using smallest dimension would mean i'd need two radii for a critter: one for collisions, and one for "astar pathing width".
2. when nodes were 5 feet apart, a dog would only move to node zero or one before the path got recalculated. but now i have a path with nodes 1 foot apart, and a dog can move at speeds up to 1.4 feet per update (21 feet/sec) at sprint speeds so the current algo of "if within 5 feet of node zero, goto node 1, else goto node zero" won't exactly work anymore. so if i have a path with nodes every foot, what's a good algo for choosing which node to move to next? find the closest node, if its not less than the distance you'll move before re-pathing, move there, else skip to the next node in the path until the node is at least one-repathing away, and move there? right now i re-path every update, so that would degenerate to move to closest node that's at least one update worth of movement away.
just need this last little bit to get it all hooked up and running correctly.
this is basically the "chasing breadcrumbs" problem (steering AI for pursuit in driving sims), with closely spaced breadcrumbs and a fast vehicle.