The Monorail

The Monorail is two-week project developed for the FIEA Application Portfolio Assignment. Taking inspiration from Adventure Time’s "“Dungeon Train” and the show Infinity Train, The Monorail pits players against an ever-changing train in an attempt to reach the end.

Planning

The initial planning for the project consisted for creating an general outline of how to tackle individual aspects the train would consist of - the player, items, and the train cars - along with brainstorming potential ideas for specific cars that would be included within the train. From the get go, I wanted the focus to be more on the environments themselves rather than items or weapons, like Enter the Gungeon, or narrative, like Hades. The environments act as a “hook” for the game, so-to-speak.

The overall plan on how to tackle specific aspects within the game stayed relatively close to this initial plan throughout the duration of development. The Player game object would have a set of base starting stats that would be altered upon item pickup and room entry/exit. The various rooms, or “train cars”, and items would each have a set of editable stats to correspond to the player’s. The train cars would be hand-crafted, but the order in which they appear in-game would be randomly generated at the start of each run. This system works relatively well and allows for the creation of cars with simpler modifiers like reduced/increased speed with great ease, and I’m satisfied with how it turned out.

Many of the early car ideas did not come to fruition, mainly due to real-world time constraints. These scrapped ideas can be found in the “future content” section towards the bottom of the page, and are something I would like to add in going forward to add more variety and interactivity to the monorail’s layout and gameplay options.

My initial planning “document” can be seen here. Not shown: the dozens of sticky notes that went along with it.

Tutorial/Starting Car

Tutorial/Starting Car

Snow Car -25% Move Speed

Snow Car
-25% Move Speed

Kaiju Car  x4 Scale for Players/Enemies, increased Enemy Health

Kaiju Car
x4 Scale for Players/Enemies, increased Enemy Health

Glass Cannon Deal x2 Damage, Take x2 Damage

Glass Cannon
Deal x2 Damage, Take x2 Damage

Bouncer Car Bullets bounce off objects

Bouncer Car
Bullets bounce off objects

Big Forest Car Enemies and Player have reduced scale

Big Forest Car
Enemies and Player have reduced scale

Golem Car  Increased enemy health, scale. Reduced enemy speed

Golem Car
Increased enemy health, scale. Reduced enemy speed

Toad Car If the ‘toad’ is damaged, so is the player

Toad Car
If the ‘toad’ is damaged, so is the player

Improvements

The two biggest issues I have with my prototype are the lack of enemy variety and the lack of interactability. Both are touched upon slightly within the project, but not to the extent that I would have liked to.

The base structure of the train car script allows for versatility in setting player and enemy stats upon car entry, as seen in cars like the Snow Car, which reduces move speed by 25%, and the Ice Car, which increased move speed by a factor of 2. From there, cars with multiple effects can come into play, like the Glass Cannon car, which sets the player to double damage while taking double damage. While this system provides a good base, it alone doesn’t provide a good sense of interactivity. The environments themselves are static for the most part.

I think the Bouncer Car - where bullets bounce off everything - is a good example of an environment that presents the player with interactivity (albeit a rather passive form of it), rather than an environment where the player can just kite around enemies. Cars created later in development, like the Chrome Car (enemies will duplicate if not killed within a certain amount of time), and the Toad Car (if the “toad” object is damaged, so is the player), present the player with a sense of agency. “Oh, I need to defeat these guys before they spawn more” or “I have to protect this object to protect myself”.

Similarly, I think the enemies leave a lot to be desired. The enemy scripting system allows for easy changes to their stats like health, scaling, speed, and damage, but no unique behavior besides “walk towards the player and die”. The “Sniper” enemy acts only as a final boss of sorts, and given more time, I would’ve liked to implement more projectile enemies into the standard cars rather than just the final one. Even then, the “final boss” aspect is comparatively underwhelming, really only acting as a way to “complete” a run in the Monorail.

Given the timed nature of the project, I’m not beating myself up terribly over these issues, but they are certainly things that I should have allotted more time to in retrospect. Going forward, I would see increasing the interactivity and agency provided by the induvial cars as one of the main areas to expand upon, along with a variety of enemies.

Future Content

Additional content would come in the forms mentioned above, more interactive train cars and a variety of enemies.

Some train cars I had planned out during the initial brainstorming phase include one based off of Infinity Train’s Clock Color Car, which has an environment that changes in set intervals, and one inspired by Deep Rock Galactic’s parasite modifier where enemies drop parasites upon death. The idea of a modifier system, where random modifiers like “enemies drop parasites” are applied to random cars rather than in a set environment, is a possibility as well.

I’d also like to apply more variety and uniqueness to the items. While the environments should take priority, it doesn’t mean the items have to all be boring ol’ stat boosts.

All Assets by Kenney - https://www.kenney.nl/assets

Ice Car x2 Player/Enemy Speed

Ice Car
x2 Player/Enemy Speed

Chrome Car Enemies will duplicate if not killed quickly

Chrome Car
Enemies will duplicate if not killed quickly

Post-Apocalyptic Zombie Car Reduced scale, x2 rate of fire

Post-Apocalyptic Zombie Car
Reduced scale, x2 rate of fire

Sniper Car The Final Car. Defeat the Sniper!

Sniper Car
The Final Car. Defeat the Sniper!