Harbour Defence
Game summary
Harbour Defence is a smartphone twist on the traditional tower defence game, in which a mobile player defends a stationary base from relentless attacking sea creatures. The player drags the towers behind them, and can at any time drop them off at strategic locations. The game features an endless round system, a spawn system, and extensive backend tools to add new enemies to the roster. The game can be found on the Google Play Store here.
A short gameplay clip of Harbour Defence
Development
The development of Harbour Defence was undertaken by a group of five students during a course on mobile game development utilizing Unity. As the sole third-year student amongst first-years, I encountered a disparity in experience levels, leading to occasional minor challenges. However, the development phase progressed efficiently, and we navigated through these issues effectively.
​
My contribution
Being a part of this project was less about overcoming intricate challenges for me, considering it catered to first-year curriculum requirements which I had previously bypassed but needed to complete before graduation. Nonetheless, the process was insightful and provided a valuable perspective on mobile game development. My primary responsibility centered around developing tools for the team. My key contributions included:
​
-
Designing an event-based dynamic spawn system
-
Developing a comprehensive tools system to supplement the spawn system, employing C# reflection, interfaces, and scriptable objects. This allowed for effortless integration of new enemies, customized spawn rates, initiation rounds, and more
-
Implementing an endless round system
​
Although I was relatively new to tool development, I embraced the learning curve it presented. A specific challenge I faced was redrawing the inspector GUI while adding or removing elements directly within the inspector—a process that triggered an out-of-range exception due to a loop cycling through an undetermined number of GUI elements. The resolution entailed the utilization of a queue data structure to add new elements during the editor update, as opposed to within the inspectorGUI. The associated code can be reviewed below.