&#x;&#x;
Evolving Skills
My developing portfolio of games I’ve worked on
&#x;&#x;
Evolving Skills
My developing portfolio of games I’ve worked on
Zero Fusion
Game background

Zero Fusion is a racing game project I developed as part of a team of four with two designers and another programmer, during my first year of University – made in Unity using C#.

Our assignment as a team was to produce a local multiplayer racing game in Unity; for this we chose to create a game taking inspiration from futuristic racers such as Wipeout.

Problems faced – Ships going up walls!

A fundamental element of the game we wanted – ships with the ability to go up walls and upside down – seemed difficult to implement at first and that it may require the use of advanced mathematics, however, the solution was simple and elegant. Instead of using the world-space gravity, the ships instead apply their own ‘gravity’ relative to their downwards vector. If the ships do manage to fall off the track however, the world-space gravity is reapplied.

Problems faced – How do you transfer data between scenes?

The game allows for each player to select which ship they want to use, but how do you transfer each player’s ship selection and that ship’s stats from one scene to another? – To solve this I decided upon the method of outputting each ship’s ID and stats to a file, then the relevant scripts in each scene read in the information from the files as needed, and apply it to the corresponding objects in that scene.

Zero Fusion
Game background

Zero Fusion is a racing game project I developed as part of a team of four, with Oli Dunn (designer), Ethan Bhardwaj (designer), and Zak Waters (programmer), during my first year of University – made in Unity using C#.

Our assignment as a team was to produce a local multiplayer racing game in Unity; for this we chose to create a game taking inspiration from futuristic racers such as Wipeout.

Problems faced – Ships going up walls!

A fundamental element of the game we wanted – ships with the ability to go up walls and upside down – seemed difficult to implement at first and that it may require the use of advanced mathematics, however, the solution was simple and elegant. Instead of using the world-space gravity, the ships instead apply their own ‘gravity’ relative to their downwards vector. If the ships do manage to fall off the track however, the world-space gravity is reapplied.

Problems faced – How do you transfer data between scenes?

The game allows for each player to select which ship they want to use, but how do you transfer each player’s ship selection and that ship’s stats from one scene to another? – To solve this I decided upon the method of outputting each ship’s ID and stats to a file, then the relevant scripts in each scene read in the information from the files as needed, and apply it to the corresponding objects in that scene.

Top-down roguelike
Game background

A top-down 3D roguelike game I created as a solo project in my first year of university – made in Unity using C#.

The brief given was to create a tile based roguelike game with random generation of levels including random layouts, themes, and items, and for the game to be controlled using the mouse.

Problems faced – Different room sizes

A problem I faced when I started programming the spawning of tiles was that larger tiles would overlap onto other tiles, however I was able to find a solution by adding an offset to where the tiles are placed based on their size, meaning any mix of tile sizes can be used with the algorithm, adding extra versatility, as well as making the game look nicer and more varied.

Problems faced – But the player, it doesn’t move!

A problem I discovered when working with Unity’s pathfinding system is that once the program had generated a level, the player and none of the enemies were able to move! I discovered that this was because after each new generation of a level, the pathfinding data wasn’t being updated. I was therefore able to fix this by regenerating the pathfinding information explicitly, after each level generation.

Top-down roguelike
Game background

A top-down 3D roguelike game I created as a solo project in my first year of university – made in Unity using C#.

The brief given was to create a tile based roguelike game with random generation of levels including random layouts, themes, and items, and for the game to be controlled using the mouse.

Problems faced – Different room sizes

A problem I faced when I started programming the spawning of tiles was that larger tiles would overlap onto other tiles, however I was able to find a solution by adding an offset to where the tiles are placed based on their size, meaning any mix of tile sizes can be used with the algorithm, adding extra versatility, as well as making the game look nicer and more varied.

Problems faced – But the player, it doesn’t move!

A problem I discovered when working with Unity’s pathfinding system is that once the program had generated a level, the player and none of the enemies were able to move! I discovered that this was because after each new generation of a level, the pathfinding data wasn’t being updated. I was therefore able to fix this by regenerating the pathfinding information explicitly, after each level generation.

Maze generation tool
Game background

A dynamic maze generation program using purpose-built algorithm, created in Unity using C#, for my A-Level Computer Science project.

I created a maze generating and solving program, utilising a custom method of creating and solving mazes taking inspiration from popular algorithms like A*.

Problems faced – Making sure the tiles match up

A core element of a tile based maze algorithm is being able to check which tiles match up correctly, so that you know which tiles you can place. I approached this problem by assigning each tile a unique ID, so that you can not only easily check which tiles match up, but you can also check what tiles you’re able to move to next for traversing the maze, based on the ID of the tile you’re on.

Problems faced – Adapting the tool for use with Dungeons & Dragons

A target audience of the tool are players of the popular tabletop game Dungeons & Dragons, so to enhance the use of the tool for this audience, I introduced the screenshot button and tile selection functionality, allowing users specify the tiles of the maze to match the theme of their Dungeons & Dragons session, as well as allowing them to easily screenshot the maze so that it can be printed out and used additionally within their sessions.

Maze generation tool
Game background

A dynamic maze generation program using purpose-built algorithm, created in Unity using C#, for my A-Level Computer Science project.

I created a maze generating and solving program, utilising a custom method of creating and solving mazes taking inspiration from popular algorithms like A*.

Problems faced – Making sure the tiles match up

A core element of a tile based maze algorithm is being able to check which tiles match up correctly, so that you know which tiles you can place. I approached this problem by assigning each tile a unique ID, so that you can not only easily check which tiles match up, but you can also check what tiles you’re able to move to next for traversing the maze, based on the ID of the tile you’re on.

Problems faced – Adapting the tool for use with Dungeons & Dragons

A target audience of the tool are players of the popular tabletop game Dungeons & Dragons, so to enhance the use of the tool for this audience, I introduced the screenshot button and tile selection functionality, allowing users specify the tiles of the maze to match the theme of their Dungeons & Dragons session, as well as allowing them to easily screenshot the maze so that it can be printed out and used additionally within their sessions.