Sokoban

By Thomas Jebson
(Created: February 2026, Updated: July 2026 - Finished)
Academic Project
Back to portfolio

Skills & Technologies Used

C++ OpenGL GLFW GitHub Visual Studio Visual Studio Code

Supported Platforms

Windows

Links


About

Sokoban is a classic Japanese puzzle game initially released in 1982 by Hiroyuki Imabayashi. The recreated version of the game, is known either as just Sokoban or Sokoban (ILA). The objective of the game is to push crates around the level in order to place them on the marked goal tiles. The aim is to complete the level in the least moves possible. The player can use WASD or the arrow keys to move, and can push crates by moving into them. Crates cannot be pushed if they are blocked by a wall or another crate and you cannot undo more than one previous move.

Credits

This game was designed and programmed by Thomas Jebson exclusively, using the following third-party assets:

Textures

Fonts

Reflection

This game was initially developed as part of an academic project for the University of Northampton. As is traditional for these assignments the brief is to re-create some or all of the mechanics of an existing game. In this situation, the objective was to recreate the core mechanics from the original game, and then explore introducing more advanced topics.

Unlike all previously undertaken assignments, this assignment required direct interaction with the OpenGL API through GLAD. Previous assignments had exposed me to multi-media APIs like SFML and game engines like Godot, Unity and Unreal Engine. This meant relying on my previous extra-curricular work including (but not limited to) PMMA, which was OpenGL based for a large portion of it's development, although has since switched to BGFX.

My familiarity with OpenGL meant that just four weeks into the approximately 13 week development window I had a complete base version of the game. This was built off - but fundamentally seperate - to my work in PMMA. This allowed me to spend the remaining nine weeks adding advanced features and exploring more advanced optimisation strategies for both the CPU and now also GPU. These are listed in detail below:

Extra Features

Optimisations

To conclude, the game produced for this assignment ended up meeting all the brief requirements. Further to this the game also explores a variety of extra features which further improved my understanding of game engine less development. It is important at this point to discuss this game's links to PMMA. This game uses ideas inspired by PMMA 5.0, such as the interface for some of the shape and text rendering APIs. However, the game is completely seperate to PMMA and went on to inspire exploration into Signed Distance Field (SDF) rendering in PMMA 5.1. SDF rendering was explored as a potential optimisation technique for the Sokoban game, but disregarded for being too complex for the time allocated for the assignment. SDF rendering will now be considered for future 2D rendering assignments if applicable.

Images

Level One Level One (In Progress) Level Two Level Three Credits Menu Options Menu