Project Description

BORE begins with the escape of our main characters from the toxic wasteland above ground to the unknown depths below.

As Earth’s atmosphere crumbled, so did its civilizations. Knowledge of technology dimmed, people began  to worship beings from ancient myths, and many credited useful tools to their mythical creations. Driven by a desire to survive and one day perhaps to return to the surface, the inhabitants of BORE burrow deeper and deeper beneath the earth’s surface, discovering caves, mysteries, and the truth of their humanity.

The game is available on Android and on Windows, check it out here.

Development

BORE was made for Module DES504, at the MProf Games Development from Abertay University.

Development time: Approx. 4 Months.

Team: 6 members, 2 artists, 2 programmers, 1 designer and 1 producer.

My Role: Programmer

Developed using Unity & WWise.

You can find all the code developed for the game here: https://gitlab.com/Robinaite/bore-code-repository Licensed under the MIT License, so feel free to look and use bits of the code! 😄

Systems developed

As one of the programmers I’ve helped creating various systems, below u can find a small list of systems which I was in charge:

  • Base Architechture for the game
  • Implementation of the audio using WWise
  • Day System
  • Encounters Base logic
  • Food Encounter
  • Boss Encounter

Base Architecture

As one of the programmers with the most experience, I took upon me to draw out all the necessary dependencies based on the design concepts that where being discussed by the game designers. This diagram helped shape the base structure of the game, as well as make it easy for multiple programmers to work on separate tasks while maintaining compatibility with the other dependencies.

Day System

The day system, is the system on which the game time flows. A day is separated by various states. These states can be skipped if certain requirements can be met.  As the game works on a day by day system, I needed to make sure that I was able to separate the new resources used of that day, with the previous ones, to allow for easy understanding and explanation to the player with the results of their decisions.

Encounter Base Logic

All of the encounters (dialogues, minigames and battles) are based upon the same logic which allows us for easy decoupling between normal gameplay and encounter gameplay, while also maximizing flexibility.

The base logic handles:

  • Encounter Requirements
  • Scene management
  • Start and Finish of the encounters
  • Encounter States

Encounter Requirements

In Engine dropdown to create requirements for the Designers

The encounter requirements is another well-developed system. It makes heavy use of polymorphism and Unity Scriptable Objects to allow designers to easily compose requirements for the encounters. It works as follows:

  1. The programmers will create various inherited classes which each allow for setting unique requirements, such as: Is it a specific day, is it a specfic state, did the player lose, has player build all caverns?
  2. The designers will create scriptable objects and setup the respective requirements
  3. Using either And or Or scriptable objects, one can compose multiple requirements and make complex requirements without the need of programmers intervention.
  4. Assign it to the respective encounter