Snake Party
2024
Snake Party originated from a previous skills project but evolved into a game developed for Sheffield Wednesday, designed to be played on the big screen during halftime by audience members. The entire academy team of 11 programmers and 5 technical artists contributed to the project, making it my first experience working in a large team and an existing, extensive codebase.
Key Features
- UI Editor: Developed a UI editor that allows creating screen-space UI elements such as text, buttons, sliders and toggles in any scene. Users can assign a custom enum name to a button, which is then automatically added to a generated UI enum list after running the build script. UI elements are saved to JSON per scene, enabling easy reference and functionality assignment. The editor also supports dragging, resizing and grid snapping for precise alignment of elements.
- Input System: Developed an action input system that allows defining actions triggered by keyboard or controller. It supports multiple player configurations, including keyboard-keyboard, keyboard-controller and controller-controller setups. Additionally, I added a setting that lets player one use both keyboard and controller, while player two uses a second controller.
- Polish: Toward the end of the project, I supported final design tweaks, including gameplay balancing, improving object presentation and experimenting with post effects and UI. The final design featured a metal skin with a swapping crown to indicate role changes, supported by animated text transitions. I completed the animation system after it was handed over by Adi and used it to create a leaderboard screen displaying animated stats. Additionally, I implemented a team selection feature, ensuring the snake masks matched team colors by mapping different parts of the design to real-world football team colors.
Challenges, solutions and lessons learnt
Working in a large team of 11 programmers and 5 technical artists provided valuable experience in using Perforce, handling code merges and collaborating in overlapping areas of development, especially toward the end of the project. Frequent code reviews and direct collaboration with colleagues helped refine features like my UI editor to meet team needs. During the final polishing phase, I also conducted a memory profile, identifying and cleaning up memory leaks across different parts of the codebase.