Building levels by the numbers, Part IV

The Restaurant level is almost done at this point, so here's the next chapter in this saga. To recap, so far I've gone over how the level is initially designed, how the architecture is built, how the level is lit and how the level is filled in. I'll repeat what I said at the beginning of this series; this should not be taken as a guide. It's just how I do it, and for all I know could all be totally wrong. I'm not above pointing out a few times things didn't go so well.

So, at this point, we have a level that looks mostly complete, but isn't playable. You can walk around and maybe put out a few fires, but you can't accomplish much and you can't finish the level. There's no direction and no goal.

I had a very clear vision of how the player would make their way through the Apartment level, and in fact the map was built around that flow from the very beginning. I did scribble out something similar for the Restaurant but ultimately decided to leave it more open. There are some hints and a few set pieces, but it's a more open layout with multiple doorways between rooms and few obstacles blocking progress.

Let's talk interactivity. This is a basic thing in video games- being able to open doors, talk to people, and in this case put out fires and rescue people. In Firefighter VR, I'd say about half of these interactions are implemented with general-purpose scripts. All doors share a script, all people share a script, all fires share a script. Basic, common stuff like that is handled this way. Another quarter uses specific scripts written for a certain scenario. These are used for complex stuff like conversations and set-piece sequences. Each level has a few of these, some more than others.

The last quarter uses what I call the Action Special system. If that name sounds familiar, it's because the idea comes from Doom, with a few significant changes. In this case it's a set of scripts, comprising of triggers- such as entering an area or using an object- and actions- such as spawning an object, toggling and object, or playing a sound. There are a few special ones that allow for splitting, branching, and randomization. With a basic but relatively complete set, I can just drop them in, configure a few things in the editor, and have flexible interactions without having to write specific scripts. It's not a perfect system, and I made some mistakes in its implementation. Triggers don't send any information (such as the activator) to actions, and it can only invoke UnityEvents through a bridge action. But it's handy and I'll do something similar for my next game.

Going back to the Restaurant, if I'm going to be totally honest I sat on my hands for a while trying to figure out how it was going to play. We have an open layout, but what paths are players generally going to take? How should the level begin? How should it end?

Once I got started, though, it came together fairly quickly.

In most levels the goal will be to rescue a specific person, so I started with that. I put them in, laid out that part of the level, and wrote the scripts that handle that. I kind of worked backwards from there, adding a few interactive obstacles and other components (including one major surprise) to the player's path. After the bare minimum was in- as in, the level can be played from start to finish- I tried to make it more dynamic and interactive.

Did you know that Firefighter Simulator 2016 had a fairly complex (and very hacky) fire spread system? Firefighter VR doesn't have that, so any "spreading" fire is in fact scripted. Flammable objects can burn to destruction in Firefighter VR as they could in 2016, but few objects are set up this way. I would have liked to have done more here, but as a solo developer, it's necessary and difficult to constrain scope.

Idle thoughts aside, we're almost at the end of this series. I think there will be one more entry talking about detailing, polish, and a few things I forgot. I'm not going to go over the next level the same way, but I have a few thoughts on VR, mobile development, and learning Unity that I'd like to share.

Get Firefighter VR

Leave a comment

Log in with your itch.io account to leave a comment.