René Adam-Richer
Game Programmer
TBDoom was developed in the context of a class. The primary focus of the project was to deepen use and understand Scriptable Objects.
  • Made in a team of 2
  • Focus on Scriptable Objects

Completion: May 2022

Work Time: 4 months

Platform: Unity 3D

Dungeon placement is randomized each time the player begins a new run. This ensures the player will have a different experience every playthrough and also increases replayability.
Shop rooms, treasure rooms, special rooms, secret rooms and boss rooms are yours to explore and solve!
Each weapon in the game and its corresponding effects are randomized. You might find a handgun with explosive bullets or a machine gun with piercing rounds! Effects can be combined and give birth to new possibilities.
Effects include explosive, poison, freezing, piercing, homing, bouncing, splitting rounds and more!
Did you die? Simply try again; maybe you'll get lucky and get better weapons on your next run!
The goal is to try to advance as far as possible and beat the bosses you'll encounter along the way.
Most game items are made using Scriptable Objects.
These include Weapons, Weapon Behaviours, Player and Enemy Inventories, Projectile Visuals, Projectile Effects, Pickable PowerUps and more.
Scriptable Objects are also used in conjunction with Unity Events to pass information and GameObjects between GameObjects or Managers.
Projectiles use a Strategy Pattern implemented with the help of Scriptable Objects to easily add effects. Effects can simply be dragged onto weapons and they will be applied to their respective projectiles.
The game allows the player to input a seed manually or opt for a random seed at the start of a run.
Runs with the same seed will have the same dungeon layout, weapons drops and boss encounters. This allows the player to easily share runs that they find interesting to the community.
The game uses a custom implementation of the Tilemaps to generate a 3D environment at runtime. This allows new rooms to be quickly drawn and adds them to the pool of possible rooms to spawn.
Multiple Tilemaps allow the creation of floors, walls, ceilings and enemies separately.
To reduce game size, room Prefabs are not included in the build. Instead, each room layout is recorded into a JSON file which is then referenced to create the room at the start of a run.
This allows the game to have a huge number of rooms and room variants without running into space issues.
TBDoom significantly enhanced my understanding of the use of Scriptable Objects. We also encountered a number of limitations in Unity that forced us to use creative problem solving.
Our iterative appoach to building TBDOOM simulated actual production quite well. Our placeholder visuals are underpinned by a solid code architecture.
I may revisit this project at a later point in my career.