Thales Game Logo 2
Naval Warfare Logo

Unity
Duo
20 Weeks

Contributions


Networking


Gameplay


Misc
Naval Warfare: Solo Boat
NavalWarfare_SoloBoat_Missile
NavalWarfare_AbilityGUI
NavalWarfare_MultiBoat
NavalWarfare_DeathmatchGUI
NavalWarfare_AbilityBarGUI
NavalWarfareUnity_OldAbilityCreationTool
NavalWarfareDevNewTool
NavalWarfareDevNewGUITool

Previous
Next


Naval Warfare is a closed-source promotional game, developed for Thales Nederland, aimed at advertising the Thales company to young software engineers at job fairs. It has also been aimed as a leisurely activity for the employees at the Hengelo branch, where it is continually iterated on by students.

During its development lifespan it has suffered a number of design iterations, but at its core are MOBA-like elements: ships (as player avatars) with distinct specifications and abilities with similar MOBA-like controls. As a MOBA, it is intended to be multiplayer via a local network.

The sponsor of the game further intends to incorporate elements found in military games or simulators. 

Networking

While I was working on the game, I was tasked with improving the networking capabilities of the game and including new features, such as matchmaking. In the end, I did introduce improvement to the networking of the game, however, I had to do so by replacing the networking solution and refactor or change a large chank of the code base.

The game had incurred technical debt over its long lifespan, and its native networking framework and its supporting services had been or were being deprecating. The game had been using Unity Networking (UNET), which due to a multitude of issues and a general lack of support by Unity Technologies was dropped in favor for a future networking framework. Several individual developers took over after Unity by creating an open source implementation of UNET, fixing many of the outstanding issues the framework and iterating over it. 

After briefly examining the Unity networking landscape, I decided as the sole programmer at the time with the agreement of the sponsor to replace UNET with Mirror, which brought several benefits:

  • No longer version-locked with Unity, allowing us to make use of newer Unity features and have improved stability;

  • Negate many of the problems facing UNET, such as lacking documentation, long-standing bugs, and the lack of a community;

Mirror was chosen due to two additional reasons: inexperience with networking and code base portability. It was believed that a large chunk of the code base would not need to be rewritten. Unfortunately, as investigation into the codebase continued, I learned that much of the code was hacked together without any format. As long as it works. That forced me to rewrite significant chunks of it, and taking away development time from gameplay.

In the end, I added to the project with several additional menus and the implementation of a formalized Deathmatch game mode.