Voxel Adventure Game


Objective

This is a recreation of an adventure game I used to play a lot of when I was younger. The goal was to make a 3D representation of the game world using the original 2D sprites.

Programs Used

These are the following programs I used to make the voxel adventure game.

  • Magicavoxel – Creating Voxel Assets
  • Blender – Editing Assets and Materials
  • Unity – Creating real time functionality

Features

Retro Voxel Style

Using Magicavoxel I took the original 2D sprites from the game and used the shading within the sprites to determine the depth of the voxel model. The tiles were kept as squares to the size of 1 unit to allow easy placement in Unity. I would then export the voxel model as an obj to be imported into Blender so I could convert the materials and optimise the model vertices before importing them into Unity.

Player Controls

Simulating the controls of the original game the player could move in four directions and had two attack styles. This was done using a custom controller I developed that removed physics from the controller to give the character a snappy feel of the original game.

Wanting to learn more about networking I implemented very basic networking system where multiple players could connect to a host world and interact with the environment and each other.

Example of two players within the same over world.

World Generation

The over world of the game was created using a file that had the locations the sprites represented as two character identifiers each separated by a space. This file was loaded into a function that split the text file by the spaces and new lines into an array. The array was then looped over using the identifiers in each object to determine which model to load.

The original game had 16×11 tiles per screen, and 16×8 screens, that would mean that there were 22,528 individual objects I would have had to place. This was my biggest drive to develop a function to create the over world saving a huge amount of time and effort.

The final over world with all the tiles placed.

The dungeon tiles were placed manually since they were created to one unit they allowed easier placement.

Dungeon tiles all placed.

Outcome

During this project attempted a few skills I had little knowledge in like developing 3D models, coding in C# and the Unity Program. I am really impressed with the end result of the project. Though it never did become a full game, it was a great way to try something new and pick up new skills on the way.