Sounds like your talking about collision recovery after a collision has been detected.
There are a number of possible collision recovery strategies:
1. "Bang and turn"
this is one of the most common, is very simple, and sort of works half decent depending on the type of obstacles in the world. the basic idea is you turn the unit left or right, and move for a short distance, then resume normal movement towards your target. this works ok for maneuvering around trees, rocks, people, etc, IE.anything small enough for the unit to move around during the "move for a short distance" part. It doesn't work for big objects. there, the unit collides, turns, moves some, then turns back, collides again, turns again, moves some more, etc. eventually it finds its way around a large object, but with multiple collisions. Banf and turn doesn't work well at all for concave obstacles, such as a room with a door to the south, and your target is north of the room. When deciding hich direction to turn, you usually turn towards the target. Adding a bit of randomness can help here, as turning towards the target doesn't always work - something like turn towards the target 75% of the time and away from the target 25% of the time.
A* will find a path from the unit to the target - guaranteed. but it may be slow. Tricks here include things like only doing A* out to a range of 10 squares around the unit, instead of the whole map, or spreading the calculations out over multiple frames.
3. Navigation meshes.
Although i don't have much experience with these, i suspect its possible to use a nav mesh where nodes blocked by obstacles are marked and not used in the path calculation.
by using collision type checks during the collision recovery movement phase, you can check for things like obstacle_to_the_left(), obstacle_to_the_right(), etc. Using this, you can have the unit continue collision recovery movement until is has a clear line-of-sight to the target. units can be programmed to detect a wall ahead, to turn before they hit it, to run along the wall until they reach the end and can resume normal movement, etc.
5. other methods i cant think of right now (anyone else out there have any more recovery algos?)
A* is the guaranteed solution if you have the processing power.
Sometimes its necessary to modify the game design a bit, make the map smaller or split it up into multiple smaller maps for A*, not allow concave obstacles, etc.
"DirectX is like a belt fed machine gun, where every texture change is like hand loading in a new belt of ammo. worse, every mesh (vb) is a new belt of ammo, and a texture is like breaking the gun down, and setting it up again elsewhere, then loading it, then spraying triangles again. so you want to setup the gun once, string all your belts together, load it once, then just spray."
Rockland Software Productions
"Building PC games since 1988"