top of page

Splekbot

Summary

Splekbot is an arcade-style game in which the player challenges computer-controlled aliens to the game of Splek, a fusion between tennis and soccer. I led a team of 5 programmers, 1 artist, and 2 multi-discipline developers for this project over a period of 5 months as part of UCLA ACM Studio’s 20-week Winter 2020 - Spring 2021 Unity game development projects.

My responsibilities included:

  • Establishing major milestones and managing weekly tasks using a pseudo-agile framework

  • Developing core player mechanics and game progression systems

  • Managing the programming interfaces between modules

Aiming with SectorAim

SectorAim is a script I wrote that manages the character’s aiming vector. It rotates the aiming vector (shown in yellow) based on commands from the input module attached to the character and prevents it from rotating outside the span of vectors (shown in red) that would launch the ball across the midline (shown in purple), which we can call “valid” vectors.


The major difficulty I encountered in the development of this class was figuring out how to best transform the aiming vector as the span of valid vectors shifted with the character’s position. Not transforming the aim at all would mean that a character aiming down the middle at center court would suddenly find itself nearly aiming along the rightmost bounds of the span after repositioning to the right-hand side, which feels unnatural. My solution was to preserve the relative proportion of the span traversed by the aiming vector as the player moved. This way, aiming down the middle of the span would mean aiming down the middle of the span wherever you moved on the court.

Tutorial Level

I chose to implement the tutorial level of Splekbot with a state machine. Each phase of the tutorial is defined by a unique state and has a set of required player actions (charging, moving, etc.) that must be completed before transitioning to the state of the next phase. The tutorial script sets up listeners for player events and records when an objective for the current phase has been accomplished. I used Jason Weimann’s StateMachine class to support my implementations (found from this video: https://www.youtube.com/watch?v=V75hgcsCGOM&t=579s).


A big challenge for this task was figuring out how to add dialogue throughout the tutorial that would help transition the player between phases. The dialogue system had already been used extensively throughout the map world to provide story dialogue at every new location. However, using it in an active match and having it activate and deactivate throughout the tutorial required a different implementation. Given that I needed to return to dialogue every time the player completed a tutorial phase, I decided to make a new state dedicated to reading dialogue that all tutorial phase states would transition back to after being completed. Every time the player returns to the dialogue state, the next tutorial text file is displayed.

bottom of page