This game is a full remake of the classic Q*bert arcade game, where I have re-created the main mechanics that make up the Q*bert game loop, to create an experience similar to the original. As well as re-creating the base mechanics, I have added one new one where the map itself, is randomised between levels, offering different and unique map layouts in the game. The game itself has been made inside of Visual Studio using pure C++, with the use of the SFML 3.02 graphic library.
Remaking Q*bert was a fun challenge, as this was my first time creating a game outside of an engine, which was a great learning experience, and now after making this game, I have a better understanding of how a game engine works internally to create the different visuals and systems they have built in.
The Q*bert game I made has most of the main mechanics from the base game. These are:
The Isometric Map Grid - The map of Q*bert is quite a unique one compared to other arcade games of its time as it uses an Isometric like art style creating the illusion of a 3D game making the game appear more visually complex
The player movement system - The Q*bert character can move in up to 4 diagonal directions, to traverse the game map
Tile Switching - The main mechanic of Q*bert is that when the player lands on a square it changes colour, depending on the level the player reaches the length and complexity of the colour order changes, as well as loops, which has been fully created an implemented.
Score - whenever the player achieves a certain conditions the score increases, and a high score is also displayed to showcase the best run
Lives - the player can die, and lose a life either by running into an enemy or jumping off the map, once the player loses all their lives the game resets, lives can be gained by hitting certain score thresholds
The game also has two other mechanics, the enemies and the circle pad, which are not in the game right now but I will figure out and get them implemented at a later date.
The game also has a built in config file with its own file parser implementation, to allow the game to be easily configured and have different settings toggled on and off, such as the random maps, the map size, and different data values such as the level number, number of rounds and the speed of the player.
The mechanic I decided to upgrade for the game is a new map implementation where the map layout can vary, by having random tiles removed from the map to create a unique map layout with its own challenges. I have incorporated a Breadth-First-Search algorithm to ensure each map that is generated is beatable, so the full game loop can always be experienced.
The map system itself has been created using a graph based approach, so the map can be built using a collection of nodes, to make the map easily edited and expanded, while also removing a need for any collision handling by having the player only move between map nodes, and the same can be applied to the enemies, with a node comparision to see if a player and enemy share the same node.