top of page

Part of SAGE2023, and SAGE2024.
The Flipper Framework
Special thanks to SuperSonic68, NotSoGreedy, LakeFeperd, and more.
Responsibilities
(Hover Over)
Ensuring the framework is reliable and efficient, while keeping code easy to maintain or expand.
Optimising & Refactoring
Making source files/code easy to use. Internal and external documentation, file organisation, custom inspectors, gizmos, editor scripting and more.
Dev User Experience
Creating a character controller that feels fast, fluent and responsive, with a myriad of interchangeable actions that can be easily added or removed.
3Cs Design
Implementing the 3Cs, editor actions, and core game systems. Using a code style guide to enforce consistent conventions and helpful patterns.
C# Programming
Exploring many Unity Features like Shader Graph, render pipelines, VFX graph, Probuilder, Cinemachine, Custom inspectors, and Version control.
Unity Engineering
Role(s)
Technical Designer (Solo Developer), started from a premade base.
Team Size
1 (but expanding upon/rewriting pre-existing frameworks)
The Background
This framework is an expanded and improved version of SuperSonic68's Bumper Engine. I first started exploring it in 2022, and while I created some levels, my implementation was messy. The source files were chaotic and soon afflicted with software rot. My goal then became to "un-spaghetti" this project, by going through every single element, to refactor, sort, rename, add tools and more to overall make it more usable.
My university dissertation went through this and was titled "A means for designers to learn and understand programming through readable source code, and why this is important."
Genre
Non-profit Unity template for creating 3D platformers
Duration
September 2022 - Present (On and Off)
The Project
A Unity template for creating 3D Sonic Fangames, that helps new developers learn game development through a sandbox approach. The focus is on optimisation and accessibility, with useful documentation, utilities, and organisation. Every feature and element is described and can be reused later on, with high cohesion, low coupling and a code style guide to help.
The character controller is tight, fast and robust, featuring over a dozen actions (that can be easily removed or added to), over a hundred tweakable stats, polished effects to enhance feel, and many objects to interact with.
Details
In order to make the project legible, I've had to accept the many chaotic errors I'd made previously, as well as understand the implementation and goals of already existing code without documentation. When I started, my code was messy and inconsistent. Now I've created a code style guide with strict conventions, and utilised interfaces, enumeration. inheritance, libraries, switch statements and coroutines to diversify and optimise the code.
For instance, I had to figure out how Bumper Engine implemented air dashes, optimise with the profiler, refactor for legibility, comment for clarity & structure, then add additional options to make it control like it does in a variety of different games.
Reading code, good code practices, and why its important.
Clean code is a classic uninteresting subject, and the programming side of games is frequently overlooked by the design side, so finding ways to get people engaged was important. Not just to staff and colleagues through presentations and reports, but to users through code comments and documentation.
I took inspiration from level editors like Fall Guys, Portal 2, Prodeus and Mario Maker. Custom inspectors, naming conventions, file organisation and formatting were particularly useful. Even the use of Sonic was an act of gamifying game creation. As "the best code is no code at all" (Jeff Atwood), I found ways to offer dev facing tools and inspectors that allowed more control without touching code. I used Gizmos & Handles to help visualize how objects work, text pop-ups in world for important values, and component buttons for specific editor functionality like screenshots.
Additionally, I explored many academic papers on software development and computer science, to explore the frequent issues in teaching the subject, the disconnect between technical and artistic disciplines, and the advantages/disadvantages of certain documentation or teaching styles.
How to better communicate technical implementation and use. Tools, documentation, face-to-face, etc.
In addition to making the project feel good, I had to make the game feel good. Steve Swink argues game feel is composed of Real Time Control, Simulated Space, and Polished effects. I've done multiple projects on character controllers, whether playing as a rat or a beyblade, and always focus on highlighting a controller through levels, but effects were knew to me.
Utilising shader graph, VFX graph, and Animation events, I created and implemented numerous effects like speedlines and boost aura. I acquired sonic SFX to help sell the movement. I also created specific interactions like changing camera FOV at higher speeds to show speed, or rotating it around the facing direction when upside down so its always looking the same way without changing input. Early on, I spent too much time tweaking the controller to get it to feel right, but looking more into these showed me what I was missing, and made me waste less time.
Game Feel tricks I'd missed.
Lessons Learned
(Hover Over)

Pre-Production

Production

Post-Production
Gallery
Charles Django
bottom of page