LIGHT'S OUT
A downloadable game
Freddy Falcon
Programmer, Designer
A frustrating 2D platformer with Gameboy-esque graphics, featuring a color-inversion gimmick that disables black and white platforms based on whether the lights are turned on or off.
- Team Size: 2
- More Info - Play LIGHT'S OUT
- GitHub Repository
My Responsibilities
- Player Movement
- Designing all game systems
- Color Inversion Manager & color transition creator
- Programming all game systems
Player Systems
Movement: Movement in this game is fairly rigid and straightforward. This was intentional, and lets the player have complete control over their player. A simpler movement style also makes the game feel older; an aesthetic we were trying to capture. You can also move down through platforms if you press down while on top of one.

Interactions & death: The player is only able to collide with the current active platforms, or, the platforms without lines going through them. I simply made certain platforms colliders disable when the color inversion event is sent.
- Created the player's movement system
- Created player respawning system
- Created death system
- Coded trigger queries to handle events like scene progression & cutscenes
Phase Switching and Shaders
To achieve the effect we wanted to see in-game, the observer programming pattern was used. An action event is sent every few seconds to switch the time phase, and that event has listeners which make all of the necessary changes to the level (swapping collisions, swapping graphics, & spawning platform graphical lines)
To create the sun inversion effect around the light guy, I used the same shader I built for the normal color inversion transitions, placed it on the world space coordinate of the light guy, and I have the sun scale up and down using sin, and I have the object always rotating as well. The sun beams around the circle use the same sin scaler class, but with different serialized field values to customize their movement.
- Created a delegate event to handle phase-switching
- Created line instantiator component to visualize on and off platforms.
- Created a timephase animation system where we can create new timephase transition easily with scriptable objects
- There is a timephase animation parsing class which will run the animation based on the animation data in the scriptable object it's looking at. This class has a list of different animation data sets, and chooses one randomly on each transition.

The Final Cutscene
- Created the final cutscene system
- Final cutscene creates an invisible wall until the game is ready for you to jump into the light-stand
- Created collision system where if the player is detected jumping over the fence, the final animation plays, and the game ends
[note: this project was created by alumnus Keegan Butt]
| Status | Released |
| Author | FREDDY FALCON |
| Content | No generative AI was used |

