Project: Tolawole
Goal
Tolawole is my current passion project, which I am still in the early stages of. The vision is a 2D action platformer of some kind, one where I'm approaching design from a systems perspective first and foremost. In its current iteration, it represents a demonstration of a simple moveset, as well as a test for my ability to write extensible code. By focusing exclusively on the core 'feel' before any visual or level design, I've given myself the chance to deliberately approach design with a gameplay first perspective in mind. this project represents a deliberate approach to game development.
My Contributions
- Designed a data driven move system using custom Godot resources (MoveData, CancelRule) to separate game design from core logic, allowing for rapid iteration.
- Intentionally approached design of every move to serve a dual purpose, both in combat and platforming. The Cartridge is a limited resource that the player gains by landing a 3 hit combo on an enemy, encouraging a flashy playstyle that rewards skilled players with more power.
- Wrote a custom physics controller for precise control over jump heights, hangtime, and acceleration, following design principles of classic great platformers in tuning jump variables.
- Implemented an input buffer and leniency system, alongside a versatile animation cancel system, both governed by the data-driven CancelRule resource.
- Designed with a strict limitation of 3 buttons, forcing a creative approach to squeezing the most out of each button while still creating something that feels approachable.
Challenge
The core challenge has been governing the logic that controls the seamless interaction between multiple complex systems: physics, animation, and input. A single player action, like a cancel, must be validated against the active move's CancelRule, interrupt the animation state machine, override the current physics properties, and intelligently manage the input buffer, all within a single frame. Creating a system that is dynamic and provides a great opportunity for quick iteration was an essential step in getting ideas off the ground.
Solution
The system is built on a finite state machine (FSM) architecture where each player state (e.g., Idle, Attacking) is a self-contained function. State transitions are governed by the CancelRule resources, creating a modular and highly extensible system. For example, the MoveData for Ground Slash 1 has a CancelRule that specifies which button continues the combo, the valid frame window, and whether a hit is required.
Outcome & Impact
This project demonstrates a massive leap in my development efficiency and design maturity. The core system was built in just 20 hours, a fraction of the 125+ hours spent on my first project, while achieving a significantly higher level of polish. It showcases my growth in both the Godot engine and my understanding of how professional game systems are created with extensibility in mind. It also shows an attention to detail in my understanding of the nuanced mechanics that are the foundation of critically acclaimed action and platformer games.