The current state of the tram mechanic

As you probably know by now, the game I am currently developing is a tram-operating horror game. If you don’t know what that entails, I am interested to know what you think it means. Is it a game about weird people on a tram? Is it about a post-war period with your starving family? Is it about the gruel reality of a 9 to 5? All are good guesses. And they’re all somewhat true.. kinda. Maybe not.

What is the game about?

My game is about a guy trying to make more money by working the night shift at his current job. As you may have guessed, he works at a public transport company. The pay is not great, but the night shift offers an increased salary of 150% (I would take that too). During work hours, the player will be confronted with many bizarre people. Some have an overarching story, which I’ll be telling within the game.

moving npcs within the tram

The role of the tram

The tram is the main mechanic of the game. Not that surprising, I guess. At its core sits the dashboard, which the player can use to control the tram. This dashboard offers a variety of tools. You blast the horn with a button or turn on the headlight with a switch. There is also this massive button, which controls the two doors on the side. And also a massive lever to change the movement speed. These are all fully scalable and I have already used all these interactables to create a working radio.

view of the dashboard in the tram

Behind the dashboard, we will find two dozen seats, give or take. These seats can be occupied by the NPCs, who will enter and exit the tram at tram stops. These seats have their own complex use in the NPC AI scripts and I’ll be talking about that in one of the next few blog posts.

The tram serves as the mediator between the player and the story progression as it directly influences game flow. When the player closes their eyes and keeps the tram moving, in theory, they should be able to finish the game instantly. Of course, I wouldn’t want this at all, so I’ll be addressing these concerns in the next YouTube video.

The inner workings

At the base, we have a tram movement system. The tram moves around on a spline, which makes development work a million times easier. The tram can both go forward and backwards, though going backwards is way slower. The other controls, like the buttons and the switches, don’t really offer any game-defining mechanics yet (though I guess the headlight is pretty important for such a dark environment).

One thing I like the most about the tram is the sound design. The sound changes (using a crossfade) depending on the speed of the tram. So if the tram is like 70% of its top speed, you will hear an equal amount of sound from the 60% and 80% thresholds. All those thresholds flow well together and it sounds practically seamless. I love that so much about the tram.

It has been a while since I last used a tram, but one thing I vividly remember from sitting in one is the screeching. Whenever a tram turns even a little bit, I always hear these loud screeches and I added that to the game aswell. It really tops off the experience.

Some necessary game design

As the tram is at the core of the game, it also makes the game have a single point of failure. If there is even a single bug with the tram, the game can easily be softlocked. So trying to figure out all kinds of ways players can mess up the game is pretty harsh. I already set some principles in place, which I’ll also be talking about in the next YouTube video.

The principles are pretty simple. I want to prioritize player freedom. So no matter what the player wants to do, I should make it possible to some extent. I want the player to be able to get out of the tram whenever they want. I want them to be able to skip a tram stop. I want to them to drive off before all the NPCs have entered and I simply want the player to be able to jump out without losing the tram.

I already solved the last one. When the player jumps out, the tram simply breaks. But I made it so the movement lever completely resets, so the tram breaks very naturally. Also, if the tram is going top speed, the player dies. I don’t know how to feel about that one though. I feel like, at some point in development, it will not fit my vision of ‘player freedom’ anymore. But we’ll see that later.

Final thoughts

At the end of the day, I feel like I’m handling the tram pretty well. I feel like it’s easy for a game developer to feel scared. And they end up restricting the player way too much. The beauty of this game is partially the freedom you have as the player. All games can benefit from that, even if only a little bit!

Anyways, that’s it about the tram. I’ll be talking about the other features in the next few blog posts.

See ya!

-Luxo