Program: A* Explorer Author: James Matthews Version: 2.0 (16th July, 2002) *** Features | Bugs and Quirks | Future Features? *** - This program was written as an example program for my chapter in AI Game Programming Wisdom published by Charles River Media. - Check Generation5 for latest executable and help files: http://www.generation5.org/ ================================= F E A T U R E S ================================= - Draw, load and save maps. - View the A* tree and open/closed lists. - Run or Step the A*. - Breakpoints and 5 break conditions. Set a breakpoint by double-right clicking on a point on the map. If that point is queried, the A* will break allowing you to examine the tree as well as the open and closed lists. - Dynamically view the A* search space. - Create your own heuristic and map extensions to test your pathing algorithms before implementing them in a game. v2.0 - Added ASE_PREASTAR, ASE_POSTASTAR messages. - Minor tweaks and other additions. v2.0 BETA R2 - Greatly improved save code (unfortunately, renders old maps unusable again). - Savefile no longer uses absolute path to extension. - Savefile now includes a signature and A* Explorer version. - If extension doesn't save information, savefile isn't dependent on the extension. - Added CoInitialize() so COM objects can be used in main program and extension DLLS. - Can now "open" DLLs to facilitate debugging. Call Ase with your DLL as a parameter, and Ase.exe will automatically load it. "File, Open" also works. Requires the full path, or setting the working directory. - Added a limit on the number of A* steps (about 60,000). The just helps cut down the time the A* is running if there is no path (or its a REALLY long one). - Various tweaks and changes. v2.0 BETA - A* details now DLL-based, allowing programmers to test out their own A* particulars quickly and easily. - Custom map extensions! Add your own features to A* Explorer! - Distance function can now be altered. - Bitmap support! Import small, greyscale bitmaps to use as your maps. - Terrain levels increased from 4 to 256. - CAStar now uses doubles for f, g, h. Also, the cost and distance functions can return a double. As a result, the cost function was also tweaked to compensate for diagonals. Technically, even if diagonals are allowed, they are slightly (0.414) more costly than straight movement. Thanks to all the users that pointed this out! - Numerous other tweaks and fixes. v1.1 - Display the A* search space - Support for toggling the A* Route ================================= B U G S A N D Q U I R K S ================================= - Quirk: If a node changes parent, the A* tree doesn't update to reflect this. Just updates reflects it in the icon. ================================= F U T U R E F E A T U R E S ? ================================= - Make aseext.h part of a "Generation5 SDK". - Improve speed and efficiency. - This is high on my agenda. I want to really speed A* Explorer, since it will be even slower once I move the code into its own thread. The thing is I want to keep the A* code as simple as possible. Ideas? - Pool the nodes and use a memory manager. - Turn the CView into a CScrollView (currently, you can only see about 80x60 out of a possible 320x240!) - Remove MFC dependencies from DLL. - NOTE: I couldn't get the DLL to draw from just an HDC, but passing a CDC pointer worked a treat. Perhaps both the output and attribute DCs need to be passed? If anyone has any advice to offer, I'd appreciate it. - Get asescript.dll and asedraw.dll released. - NOTE: asescript.dll has problems with WindowsXP. Has anyone had experience with msscript.ocx under XP? I'd appreciate some help! - ...and a lot more. Any comments would be welcome at jmatthews@generation5.org Enjoy! - James