If you’ve been keeping up with the game, then you’ve probably seen that we’ve implemented a real-time day/night cycle. It’s not something that every FPS has, and while it won’t have a huge effect on gameplay, I thought it would be cool regardless. A while back, one of the other developers suggested we add dynamic weather as well.
Once again, this system won’t have a huge effect on gameplay, but will mainly serve as an interesting addition.
Currently, weather works by occasionally polling for a weather change, which is based on the current state of the weather. While random, the system works by having a higher chance of following its current progression, in other words, if the weather is getting worse, it’s likely to keep getting worse, and if it’s getting better, it’s likely to keep getting better.
Fog, clouds, rain, and thunder are all part of the system. One of the better parts of the system is that it doesn’t require a lot of extra level design work. The rain is completely dynamic, and the system can determine where rain should and shouldn’t fall.
One thing I worked on a while back, but haven’t really shown off, was the implementation of ambient sounds. Once some ambient sounds were completed, I worked on a system that allowed us to configure different ambient sounds for different areas. Beforehand, I knew the system would need to update what is playing based on the day/night cycle. For example, it doesn’t make sense to play the sound of chirping birds at 2:00 AM. With that in mind, sounds can be set up to loop, or play from a variety of random sounds, as well as play at certain times of the day.
Here’s an example:
Improved Enemy Behavior
Last thing in the works recently is improvements to the already existing enemy behavior. Up until recently, the only enemy the game has had is a very stupid test enemy, which would basically just walk at the player, and do some basic path finding. While not nearly finished, I’ve been working on some actual, more final, enemy behavior, as well as improving the existing systems. One thing I wanted to do was make enemies seem a bit more intelligent. The first test enemy would try to find the player, and if it couldn’t, it would rigidly follow a path to the player’s position. Now, enemies make use of a state machine to switch between several modes, which include states like idling, patrolling, searching, and attacking. Improvements to pathing causes enemies to follow paths less statically, and to instead use them as a general guide to a certain position. This means that enemies seem a bit more dynamic, but it also means that the player can now duck out of the way of certain enemies, and cause them to lose track.
Some enemies can even be designed to flee from the player, if the player gets too close, or if the enemy gets low on health.
That’s all for this month! Happy holidays everyone, and see you next year!
Oh, and here’s a cool clock that updates in real time: