Technical Design

The Elevator

Details

  • Time frame: 1 week half-time + iteration in Lazarus
  • Engine: Unreal Engine 4

The Elevator was a one week task to create a useful tool for an imagined project. It later became a part of Lazarus which meant that I got to use it in an actual project instead and gave me a chance to do some small tweaks to it for it to fulfill all our needs.

My goals:

01. Tool Design

This is a tool I made as an exercise in working on a hypothetical project as a Technical level designer. I wanted to give a tool to the level designers that was as easy and intuitive as possible to use but still have the versatility to let them feel free to create elevators that fit buildings in all sizes and styles.

02. Quick turn around

This was the first piece I made for the portfolio course and I wanted to put myself in the shoes of a designer who had been requested to make a tool for use in a game and see to it that it got there fast.

An important step was to make sure the thing was simply a drag and drop tool.

The user can simply drag the script into the level and press play and it will work instantly. Set number of floors and floor height to fit your particular building. The ease of use has always been an important aspect to me as a level designer and felt key to the tools useability.

The added feature of the meter above the door was fairly complex and got added late in the one-week process. For me it felt as a good way to communicate to a player how tall a building is without actually seeing it from the outside and also how fast the elevator moves.

Here I quickly adjust the speeds of both the doors and the elevator itself.

An important thing about elevator feel in real life is the speed of them so this felt like an obvious thing to make adjustable to get it to fit the feel the level designer seeks.

Buttons can be repositioned, named and ordered by the user.

The button variables are just another step towards making the elevator feeling more real as an elevator in a building with few floors probably would rarely have the same layout to its buttons as one in a highrise.

The base script that starts everything.

The elevator shaft script is in reality empty and just creates the actors it needs which in turn may create even more actors. For example the elevator shaft spawns the elevator and then the elevator spawns all the buttons for the floors.

Implementation in Lazarus

To implement the elevator in my final portfolio case, Lazarus, I needed to add some small features to it to make sure it fit the needs of the layout of the level. Niklas Olsson was the level designer for Lazarus and we had a very active and open communication about what would make it better for his specific scenario.

The elevator could be locked and unlocked through events.

One of the major points of the gameplay in Lazarus was a hacking system I had set up, and the elevator simply didn’t fit into that from the start. So I added a new boolean to the script so that Niklas could just set the elevator to locked or not. If interacting with a locked elevator an “Access Denied” sound would play to clue the player in to that there might be a way to override this hurdle.

Then, for testing purposes, I added functionality to unlock it by walking into a trigger. After getting that to work it was simply a question of reparenting this new script to the Hackable script to easily connect it to the main gameplay.

You can read more about the hackables on my Lazarus page.

A scene with the elevator made by Niklas for Lazarus.

Closing thoughts

As this was such a short project and it was aimed at a purely hypothetical game I really didn’t aim to fit more content in it than what was actually there by the end of that week. If I had looked to make an elevator tool to fit any and all games I obviously would have taken way more time to really get down to every single little detail. I am really happy that it actually got used for a game in the end, and the fact that very few features were added to it I feel is a testament to my proficiency as a tools scripter.