This week I focused on improving and adding to the AI, fixing bugs, improving combat interactions between the players and the AI, and adding to visual feedback within the game. This AI improvement went hand in hand with the cover system that was implemented by my teammate Tyler and the new prototype level made by Alonzo.
The AI have seen much improvement over the course of the week. Some examples:
- When moving to get into range of a player unit, whether to basic attack or cast a spell, the enemy will look for closer targets. This adds more depth to the act of kiting enemies in the game.
- General movement, damage, and health re-balance. The movement speeds, sight ranges, health, and damage were adjusted across the board to make the player experience feel more tense.
- Added the special melee unit. This unit is large, has high damage low rate of fire basic attacks, high health, slow movement speed, and has an AOE smash attack it will periodically use to deal high damage in a medium radius. The special melee unit is a great addition to our line up and is just in time for the first pass at level one. In which the special melee enemy will be featured as a mini boss at the end.
- The AI now respect cover in more interesting ways. If a player unit moves into cover without AI already engaging them. Any AI that pass by on the other side of the cover will not spot the player unit. If the AI see the player at an angle where the cover is not concealing them, the AI will spot and engage the player unit. The point of this is to allow the player to position their units in a more advantageous position before starting a fight. This is especially important in preparing for fights with a lot of ranged units.
- Ranged units now respect cover in a more obvious way. The ranged units have a small chance of doing half damage to a player unit when in cover and not firing. When a player unit is in cover and firing the ranged units have a higher chance of hitting the player unit for half damage.
Player feedback was also a big focus of mine this week. Some examples:
- The grenade now has a proper effect, as well as a more effective, responsive, and accurate aiming mechanic.
- The ability cool downs not properly displaying after switching back and forward between characters has been on our bug list for a long time. This week I was finally able to have the time to tackle this problem enthusiastically. Now if you use a player units ability then switch to another unit, then switch back to that initial unit their abilities cool down will still be visually represented. The code behind this is very elegant and lightweight. I adapted a technique that I used to cache yielders for enumerators to cache the next time, in game time, that a cool down should be complete. When a new ability is loaded into the ability button, the cache is searched for that particular ability. If it is found, the time its ability should be done cooling down by is returned. If not the ability is given a spot in the cache for when it is used next. The overall technique used was adapted from this thread on more efficient yield statements in Enumerators.
Another thing you can see in the above gif is the health ability feedback that I added in to replace the projector that was previously used.
Other than what I have listed my week was filled with bug fixing, minor utility scripts to help out our level designer, and a lot of refactoring old code to be more efficient, flexible, and usable.
The team as a whole has accomplished a lot. Our UI continues to improve, a new level has been prototyped, our GDD has been revised, our IPM created and revised, more rts standards met, and gameplay as a whole is starting to form a real cohesive experience. We are very close to an exponential breakthrough in terms of gameplay. Our focus now is on getting the final rts standards in the game, implementing new weapons and abilities, the last few enemies, and making our levels.
The only concerns I have right now is the mental system in our game. Currently we have been bandaging it enough to keep pace with our other advances and implementations. We sat down and really talked about some changes that we plan to implement. Fear in itself has been made more easy to gain but we still need to implement a large variety of effects. The same goes for delusion which will also rely a bit on the shrine revival system which has yet to be implemented.
The thing that has kept me from being the most productive I could be this week was a bug that we ran into on Wednesday that was causing our game to drop to 2 fps. Turns out it is a bug on Unity's end that we can only remedy by deleting the library if it gets really bad. Myself and Tyler spent 2 nights doing nothing but optimizing every bit of code we could. A lot of research and effort went into the process and now our game runs solid at nearly 200fps in the editor with the profiler running. This will keep the impact from the bug we can't do anything about to a minimum. While also leaving us some nice headroom for future additions to the code base and visual improvements to the game.