Rebellion through graffiti
Disobey is a stealth platformer set in a cyberpunk era. The player is a rebel trying to stop propaganda by spray-painting messages through quick-time events. Platforming and avoiding detection connect these graffiti encounters, with guards and security cameras creating threats along the route.
My role in the five-person team
I worked across gameplay programming and the custom engine that powered the game. My gameplay contributions include guard AI and detection, animation and feedback integration, audio and UI work, and changes to levels, cameras and scene transitions. The project was built by five people: player controls, graffiti mechanics and hiding also include teammates’ implementations.
Guard behaviour as a state machine
I implemented guard AI using a finite-state machine. Guards have idle, patrol, curious, investigate, apprehension, capture and stunned states, with additional transition states connecting behaviour and animation. This separates what a guard is doing from the conditions that cause it to change behaviour, while supporting different movement and feedback for each state.
Detection and player feedback
The detection system connects guard perception to behaviour and visual feedback. My contribution history includes detection changes, guard animation work, visual indicators and fixes to guard behaviour around hiding locations. These systems bring enemy decisions, visible reactions and the player’s stealth interactions together.
Animation, audio and scene flow
My work also covered player and guard animation integration, camera-caught sequences, guard and player sound effects, background music, UI audio, and graffiti and hiding audio integration. Scene-transition and cutscene work connected gameplay to menus, level-clear screens and the ending sequence.
Building the playable levels
Alongside the source work, my game-repository history records changes to both levels, guard placement and configuration, cameras, lighting, spray-can setup and audio. I integrated engine versions and prepared final deployments, connecting the shared systems and assets into the playable game.
Powered by Liberation Engine 2D
Disobey was developed in the team’s custom C++ engine. My engine contributions included the ECS, serialization, editor tooling, asset workflows and subsystem integration. The companion Liberation Engine 2D project page covers those foundations and the team’s adoption of explicit dependency injection.
Messages of rebellion
Original graffiti artwork used by the game’s spray-painting mechanic.


