This release is for July 19, 2009. It adds the long promised NPC vs NPC combat system. It also adds 2 new solar systems and finished the Core worlds.
Among Seas of Dust 0.65 has added some of the final touches to the AI of the game. It has allowed them to identify a target getting too close to them, determine if it is hostile, and engage it. It can then return to normal patrol duty if it survives; if it dies it respawns as a new patroller.
How it Works
The AI obeys a few very simple rules. These rules include....
- Try to get on top of your target.
- If you run into an allied NPC, bounce back about 135 pixels. (This prevents them from getting ontop of each other and it diversifies the fight when the target of a fleet jumps position from an impact).
- Like engaging a player, warp drives may only be activated when greater than 600 from the target.
- The bullets can only damage the player or the target. (This saves so many CPU cycles, i tried it damaging all NPCs, and wow. It slowed the game to a screeching 3 fps)
- When you have nothing to engage, resume normal patrol.
- The player > the NPC in the standings war. This keeps the player involved while still allowing NPCs to select NPC targets.
These simple rules allow an amazing diversity of behaviors such as piracy (rogue pirate patrols selecting a trader as a target), base defenses, attacks, and battle sizes from epic fleets to duels. That is how I write AI code, I try to make rules and allow the emergent behaviors to do the rest. I spelled out nothing about any specific type of behavior besides identify -> check reputation -> engage or ignore.
In the above image you can see how it works. This image is of the new improved Debug mode that is infinitely helpful in bug hunting. Notice that the details are complete, it looks just like any other combat situation.
The best part is that the player is preserved. Even when engaged in a full scale fleet battle of 20 vs 20 if the player has bad standings he is included and moved somewhat to the top of the possible target list. The target is a factor of distance and standings, and often times the player wins.
I would like to thank the rectangle for making this possible. Yes, the rectangle. Without the rectangle there would be no games. This code uses many rectangles. It has a rectangle for the damage zone of an NPC (color by faction), one for identifying a target (red) and of course rectangles for the bullets. It has rectangles for no warp zones (blue) and rectangles for the destination for a patrol or trade AI (yellow and magenta respectively).
- Fixed death-game restart bug, but you have to undock twice after death.
- Fixed commodity issue for Sigos
- Adjusted Sigos prices so clothing no longer is bought for 600.
- Sigos commodity issue fixed, Sigos's commodities now display.
- Fixed same-speed issue with player's ship. Also, configureLoadedShip() is now reachable.
- Warp Field _____ status indicator updated so it updates when you attempt to warp.
- Ship name fixes for Encyclopedic search
- New starbridge type for Mycerian space
- Added full information on ships to the encyclopedia.
- Fine controls over speed using + (equals) and - (dash) sign added.
- NPC vs NPC combat!
- Luina and Verdis rogue pirates now no longer autokill you.
- Luina and Verdis rogue pirates obey the current standing system
- Player > NPCs in combat
Please send your comments to me. You can also reach my by firstname.lastname@example.org . Your opinion matters!NOTE: Please remember to delete your old ASoD 0.6 and before files before attempting to run this program, otherwise it will corrupt the new stuff that was added in ASoD 0.65 . This is due to the way it saves the position of objects. These files are located in /home/you on linux and c:\ on windows xp and Public in vista. They may be hidden. They are called ".amongSeasOfDust", ".amongSeasOfDustStandings*, and ".amongSeasOfDustStarMap" .