This tower system was created back in 2021 by myself for the popular Roblox game “Ghost Simulator” during my time as the lead developer there.
The system comes in two main scripts which are as follows:
- A Tower Module, which holds all of the methods required to create the tower floors in an object oriented style
- A Tower Manager, which interfaces with the core game system and handles the sequential running of the tower, and all related components
Since its creation, this system has undergone rapid changes, bug fixes, refactors and has implemented a lot more features. A “tower”, as used in this system, describes a set of floors, which are fundamentally similar to what a dungeon might look like in most MMORPG titles. Players are able to fight their way through from the start to the finish of the tower, in which they shall be rewarded with a prize. In the case of Ghost Simulator, that prize is a Key.
Originally, the tower only had support for 2 types of floors. The first was a dungeon-like maze floor with ghosts dotted around for players to fight, this was created using Prim’s Algorithm for Maze Generation. The second supported floor type was a mega boss floor, this simply was an arena room in which the players were teleported to so that they could fight a mega boss.
In the 2022 revamp of the module, support was added for a few more floor types, such as an Obstacle Course floor (“Obby”, as known on the Roblox Platform), Miniboss floor and a Race floor.
This system was written in the Luau scripting language, a derivation of Lua, which is what Roblox experiences are programmed in. The Tower Module script wasn’t heavily edited during the 2022 revamp and so you may notice inconsistencies with certain conventions and styles used in the two scripts. The Tower Manager employs a much more effective documentation & naming style which in my opinion, allows for much more effective commenting to aid the reader and any editors.
The tower system can be seen in action here: https://www.youtube.com/watch?v=Q3Z7PrcUxjM
The code for this project can be seen here as well: