Another week of development comes and goes and we have spent a large majority of it doing optimizations. As of the past week we had a functioning game that allowed you to start a single player game and either win or lose the match and return to a main menu to start again. As amazing as that was to us we had to begin the task of optimizing many aspects to make sure the smoothest gameplay is possible. It also came with a few new assets being added in order to test those optimizations!
- Main menu music, title music, ambient sounds, battle sounds.
Sound is always a daunting task for any game as it can create and evoke feelings in the player outside of the visual content or storyline. We are fortunate to have a very talented composer and audio specialist on our team that is capturing the feeling that we are trying to portray and packaging it in perfect songs and sounds for us to play for the player.
- HMS Victory Ship Model
We added the Victory this early on simply as our 'maximum' level of detail. With over 250k tris it is a beautiful model and one that will tax systems when we reach the 32+ player mark so we knew we needed to test this early on. As a side effect, that model is amazing to see rendered in engine and will be even more amazing to see in action when all of the systems are wired up to the model.
Progress and Optimizations
- Sky and weather system
We had been running into odd issues with sky and weather in the past week and finally gave up and switched to a packaged sky/weather implementation to work from as a base. Immediately our screenshots took on a more professional look that included atmospheric scattering and much improved lighting. As a bonus, we improved the framerate in battles by over 100fps. The new system is much lighter and faster than the old one and players should see smoother transitions from day to night.
- Audio System
To handle all of those new sounds we moved to a AAA quality sound management system that helps us to handle grouping of sounds into collections and will allow us to block sounds into many different priority groups and have the audio system manage ducking the sounds so that the higher priority items are heard most prominently. It also helps us in managing the music in a way to keep repeating minimal and allow players to mute/volume control each separate channel more effectively.
- Controller Support & Keybind management
As players move to games that are faster paced there exists a need to allow them to use controllers in place of traditional keyboards. Along with that comes the need to allow players to change the controls to best fit their play style and their controller. As such we have integrated a keybinding and controller support system that will allow both readily. Players will be able to save their bindings and settings into profiles that can be enabled or disabled at will and stored for later use or export to others.
- Buoyancy Optimizations
Making a ship move realistically is one of our goals, as well as being able to make that ship sink on demand in a cinematic and exciting way. We took a look at our server/client model and decided to move the buoyancy to a single system that handles the motion of all ships on the level to better fit with our server authoritative network model. As a result we not only gained the control of having a single machine moving all ships realistically, we also were able to gain over 50fps in frames by doing so. We expect to be able to gain even more through further planned optimizations to keep the server machine under as little load as possible for smooth gameplay.
A term thrown around in games is 'pooling' which simply means making a collection of objects that are enabled and disabled as needed rather than having to create and destroy them. What that means in terms of gameplay is smoother gaming that is free of 'hiccups' where the system has to assign or release memory for the new objects. We moved all of our particles effects (water splashes, damage wood, fire, smoke, cannon effects, etc) into new managed pools that gained us a large portion of frames when running the particles consistently. Considering a ship like the HMS Victory could unleash 104 guns at a time, we need those poolers to be very efficient when there are 32 of them on a map!
- Optimized AI
The latest iteration of the AI now reacts more consistently to the player and actually engages in a very smooth combat experience (with the brig). As the wind/sea systems continue to improve the AI will be moved to a finite state system so that the AI can react to player and environmental inputs as well as try to complete objectives or missions