Impact: Developing a Flexible Game Engine#
Key Concepts: Game Design, Raycasting, 2.5D Rendering, Procedural Generation, Optimization
Tools: Python, PyGame
Roles: Developer, QA Tester, Player
Duration: 7 weeks, term project for Fundamentals of Programming and Computer Science (15-112)
Labyrinthine is a game built on a simple, custom ray-casting game engine that takes a 2D list of coordinates (for wall placement) and flat image textures (of the walls and the skybox) and turns them into 3D-ish environments by “propping up” these flat objects at different distances from the player. The player’s view is simulated by drawing larger or smaller slices of the textures on the screen (using PyGame’s blitting functions) return the proper scaling of texture slices based on “cast” rays. Using the distance and angle to triangulate the size of the distant object creates a 3D-like effect (termed 2.5D) that is well known from games such as Doom and Quake.
Labyrinthine, its maze generation algorithm, and its engine are not the most polished or noteworthy projects on their own merits, but represent to me the vast amount of opportunity that programming and design can encompass when paired and allowed to shine. They don’t live up to that promise — not even close, but the project did begin me on my journey to study Human-Computer Interaction, so I wanted to pay it the respect it deserves here.