Devlog 3: Expanding Horizons

Welcome back to the third installment of Armadahex Devlogs! This past week + spring break has been very eventful, with a lot of technical things being completed. Those technical details will be explained at the end.


But first we must start off with a big problem: Buoyancy. In order for all of our ships to float, we must get the mesh wave displacement from the GPU shader. But here lies the problem, retrieving data from the GPU is a significant bottleneck. So, after some research and discussion, Kyle and I decided the only way to have floating ships is to recreate the wave logic on the CPU at a lower precision. This is unfortunate because it will take some time, but is necessary. 


On the bright side, we found a great website with many free textures, which we can use for the terrain. The textures are very large (4k) with corresponding normal, AO, and displacement maps. Using them at full resolution will certainly increase the size of the game, so we might have to look into downscaling.

Polyhaven, a free texture website


Our professor, Paul Engin, also helped out by baking the textures of the free ship model we found earlier, and also separating it's turret so it can be controlled in-game. Hopefully we won't have to do this for every ship.

Ship in Unity with baked textures


Juniper again this week created another awesome menu music piece. This will be the last of the menu music, and from now on, all we need is a victory/game over jingle and perhaps a layered endgame soundtrack.

Armadahex's menu music #2


Jeremy Dale continued to help out with sound design by finding a few more sound clips to be used in-game. Additionally, I found out a way to generate realistic morse code sounds, so they can be unique.



In the last Devlog, Justin provided some sample voice lines. He's currently recording some final voice clips now, but here is the list he's working on. It's quite long, but will hopefully help out with the game's immersion. The list also contains suggested tones.

List of final voice lines


A lot of progress was made in the menus and menu networking. Pretty much all the networking is done except for profile picture changes and global chat. Additionally, the multiplayer game mode select menu is done. Some more work needs to be done visually, but this is a good start.

Networked menus


Finally, we have developments with the water. We added LOD (Level of Detail) to the water mesh through Quadtree optimization. This does conform the mesh to a square shape, but this is fine for our use case.
Quadtree LOD optimizations visualized


This way, the center of the mesh has the highest level of quality, and the edges have lower quality. By moving the mesh with the camera, we can ensure the area where the player is looking has the most visual priority.
Quadtree optimizations in Unity


In short, this allows for a much larger mesh with the same performance. See the older mesh (highlighted) for comparison. This means a larger horizon.
Old mesh (highlighted in orange) vs new mesh


However, one large problem with the meshes above is that they contain seems. If the mesh were animated in its current state, you would be able to see through the mesh at certain points, namely where the larger and smaller cells meet.

This was fixed, but results in much longer load times. We may have to look into loading scenes or potentially saving the mesh so it doesn't have to be regenerated. See if you can spot the differences in the final mesh:
Fixed quadtree mesh


Here's what it looks like now from the surface. The water shader still needs refraction and foam, but is otherwise very close to completion.

Water surface







Comments