← Back to all projects
Splish-Splash Submarine

Splish-Splash Submarine

Gameplay ProgrammerGame Designer
UnityC#Jira

Contributions

  • Project Structure
  • Unity Tooling
  • Implemented all major systems

Generic abstract content here (always visible)…

Overview

This is a very abstract overview…

As lead programmer for this university project, I leveraged 7 years of Unity experience to create a centralized workflow using Scriptable Objects. This approach allowed for easy tweaking of game settings, experimentation with different SO configurations, and iterative testing for rapid development and refinement.

Project Structure

Designing games requires a lot of value tweaking, sometimes to the point of feeling like alchemy, mapping out all the potential mixtures of different values and how they interact with each other. So to be able to try these mixture of value and store them for later review is a must. This led me to go all in with Unity’s Scriptable Objects, so all the game design related values were nested in a single file, making it easy to swap out different submodules for different overall experience and stored on multiple files for later playtesting.

Retrospective

Nesting Scriptable Objects turned out to be more problematic than I anticipated and the reasons were manifold. Since I wanted the ability to combine different modules it meant that each module would represent different portions of the game (Player, Shooting, Enemy, EnemyFromBehind) it both made it difficult to decide what should be a distinct module and what should be a part of another module (see Player and Shooting). I wanted each module variant to have a memorable and descriptive name such as “SprayNPray” for a Shooting variant that shot at a very high frequency, but when you’d make a game mode variant that mixed all of these modules together it would be normal to slightly tweak some of the values so everything would fit well together, but ooops, another game mode was using one of the modules you just tweaked. Having a single file to access all of the values was however a great boon, since variables were no longer spread over different GameObjects and Components and it allowed for making a few game modes that was easy to go between during playtesting.

Tooling

I created a Unity tool that automated the WebGL build and upload process to itch.io, allowing non-technical team members to deploy builds easily. This reduced friction, enabled continuous playtesting, and allowed for fast hotfixes during testing sessions.