I’d like to start by saying that the playable beta should be on the way soon, but it needs a few more things to be ready. That being said, a few status updates are in order.
Life has been hectic for me in the past couple months, and all of that is finally starting to settle now. Weekly posts and smaller updates on twitter should return as of this week, and hopefully that will keep up through the final release and beyond. I haven’t been doing a good job of keeping track of time during this transition, so I can’t say exactly how far away the release, but beta is just around the corner. There are two more features of the AI system that still need to be implemented, but after that it’s all content until the end.
My biggest breakthroughs since the move have all unfolded in the past week. The alien AI has been the last daunting piece to the puzzle for a while now, and there was nothing else left to procrastinate on, so I finally bit the bullet and took it on. I had a few requirements for how I wanted the aliens to act.
- The aliens must play fair. Communication between aliens is fine, but they can’t use out-of-band information to track the player. This ensures that smart play can consistently evade capture.
- The aliens must be smart. While evading the aliens is not the main focus of the game, few things are as distracting as bad AI. They don’t need to be geniuses, but they should behave in a way that makes sense.
- The aliens must be predictable. Since the only time the player is around them, time is limited, the aliens must behave the same way each round so the player can learn how to avoid them.
To make sure the aliens played fair, I implemented a system of alerts. The aliens raise alarms on the ship based on their observations of the player at different levels of directness. An alien that sees the player will override all other alerts and let the other aliens know where he is. If the aliens observe direct evidence of the player, things like blood trails or signs of vandalism, the aliens will update to look in those locations. This way the aliens will constantly move towards evidence of the player without ever accessing the player’s location information directly.
The next step was to get the aliens to act intelligently. Since they don’t know where the player is, they have to make guesses as to where to look next. If the aliens can see the player, that’s easy, they simply estimate based on direction and speed, and move in that direction until they can’t accurately estimate any more. If they can’t see the player, then it gets a little more tricky. Based on the last known location, they do a quick calculation to determine if the player could have moved between the two since the last sighting to determine if this evidence happened before or after that sighting. For now this seems to work ok, but only time and testing will tell.
The final step is to make sure that the aliens are predictable. Not using any random functions makes this easy to implement, but I still haven’t figured out how to give the aliens idle activity that isn’t random in any way. Pre-set paths are an option, but not one that I would like to use if it can be avoided. I’m considering deterministic “random” paths that are generated based on the map at run-time, but that seems more complicated than it’s really worth. I could even be happy with having them stand still while idle, or if they aren’t where they spawn have them walk back to spawn and stand still. For that to not look awkward though, I would need to come up with idle animations for each type, and that much animating seems like, again, too much work.
In any case, the game is finally moving along again. The beta version should be ready for testing by this weekend, if all goes as expected. The map for that version is very small still, the sound effects and music are still absent, and the intro and ending aren’t scripted yet. The good news about all of that is that it’s content, and not code, which means that juicy updates with screenshots and videos will be frequent.