This project involved making a VR game to support a social issue. Our team decided to focus on the poor working conditions of the service and food industry, so we created a game about the night shift at a run-down diner.
While we didn't manage to fully polish the game and develop tons of gameplay in the short time frame we had for this project, I'm still ecstatic that we were able to get as far as we did with it.
We put a lot of focus into the atmosphere of the diner. We were hoping to create some sense of dread when you arrive on the street in front of Stacy's. The heavy rain and dim street lighting adds even more to this effect.
We developed a gameplay loop of serving customer food that you create by pressing buttons, and your tips are collected and the amount is shown to you at the end of the shift. If we were to expand this game, I would definitely want to make it a full life-simulator, with you having to save up and spend this money on certain things for your apartment, always making sure to keep some of the money for bus tickets to get back to work. I think this would solidify the experience and flesh out the game world a bit more than just having on scene where you're working nonstop. The main character's inner thoughts being shown in subtitles, as well as voice-acted, would be another great addition to our experience if we were to proceed any further.
Below are a few more in-depth descriptions of some of the parts I worked on in this process.
_______________________________________________________________________________________________
MODELING AND ASSETS
The modeling process for this project was done on the principle of bringing the diner atmosphere to life. We started out by laying out a rough draft of the layout of the interior of the diner. After figuring out how we wanted the final layout to look, we got to work creating dozens of unique props and objects for the interior space, both to make the diner more lively through aesthetic means, and to function as part of the gameplay itself.
THE SCENE DESIGN
Drudge isn’t meant to feel comfortable, it’s meant to make you loathe working at this place; let you know how many service workers feel in their everyday work environments. Because of this, we wanted to make the diner feel harsh and let the player stand in those shoes. We knew we wanted to create a more run-down looking environment, so we decided to add worn out fluorescent lights, an abandoned urban street as the exterior, and a leaky roof from the constant rain outside. The game is set at night to make this feel even more unsettling. The diner is relatively small to create a sense of busyness in an enclosed space. The lighting was made to make the scene feel harsh and eerie. The environment is designed to encapsulate the experience of the game, and we sincerely hope it does this well.
THE GAME-LOOP
Even though we wanted a harsh environment, we still wanted the experience to play well and still be somewhat enjoyable as a game. To make sure this happened, a game-loop was created through several different events in the experience. When you first enter the game, you are led to the title screen. From there when you press start, you are dropped off across the street from your workplace, Stacy’s Diner. You cross the street while a timer ticks down until you have to start your shift. Once it starts, you must prepare and serve the correct food to customers, signaled by the floating food above their head. Preparing food is easy, just press the trigger on the corresponding food in the kitchen and you’ve done it. If they ask for a drink just grab it from the fountain. After you’ve served them, they won’t order again until you throw their dirty dishes in the sink. (This is important because more orders equals more tips!) The faster you serve an order, the greater the reward. After a long day's work serving dozens of customers, the shift clock finally strikes zero and you get to go home to find out how much you made in tips. This concept took a lot of coding and figuring things out as we went, but overall turned out just the way we wanted it to be for this demo.
My essay on the development process of the experience:
I had a really enjoyable time working on this project, it was full of processes that I love doing but never really get to do in our normal design work. Coding and making 3D art are both hobbies of mine, so that was where I spent the most during the course of development. I tried to make everything feel relatively polished but still low fidelity enough to be able to create what we wanted in the time we had. Most of the models in the game were made by me in blender, with the exception of a few that I had to pull in from Turbosquid and 3DTrader due to time constraints and convenience. The most challenging of these to make would have probably been the condiment stands, as well as the front door. Organic curves are quite tricky in some circumstances, so it took some figuring out to get the handles right on the front doors. The condiment stands were just something I wanted to put a lot of detail in, so while they weren’t technically challenging at all, they took a little more time than any of the other models I did. Doing the textures was also my job so I quickly made some basic materials for each object and applied actual image textures to specific parts of the scene that needed it, like the dirt outside the bus stop, the roads, the sidewalks, the skybox, and a few other things.
After we had the models in place and had figured out our scene layout, I needed to work on lighting. This was pretty simple at first, as I just made some dynamic lights that would be in the fixtures throughout the diner, but as our game progressed it started having some performance issues. At this point I realized I should probably have been using baked lights, and then converted all our dynamic lights to statically rendered ones. It was a bit challenging to get everything to look just right while doing this but eventually I figured it out through some minor tweaking.
The exterior of the diner was all made in a single day. The buildings were easy enough to just duplicate throughout the streets, and in my opinion I think they still look fine and give more breadth to the experience by expanding the environment. The texturing on the street had a lot of minor tweaking that needed done to get the puddle effect to look just right too. (Note on that puddle effect: It was actually all done just by using some noise images as normal maps and it turned out surprisingly good for such a quick hack.)
Coding was my biggest role in this project I’d say as it was the most time consuming process. I haven’t ever worked in C# before, so it was interesting to learn. It was helpful that many of the things I learned through HTML, Java, and Propeller C carried over pretty seamlessly. The largest script in the game is the one for each customer’s order, as this is the code for the game’s main gameplay. The engine made the debugging process very easy to do as I could just print out each subroutine's values as it ran so I could figure out where I was making mistakes and quickly change them to get everything running smoothly and efficiently. I could actually see myself getting better at C# as I wrote more of the script and learned what all Unity was capable of through the language, so this was time well spent through and through. Getting small things to work, such as the bus driving away, getting the on-screen text working, and getting the food buttons to spin was all pretty trivial work after I spent all that time working on the order script. This was the hardest but most rewarding part of this process.
My final role in the project was getting our actual player controller to work properly. This was pretty frustrating to do and I’m still not entirely happy with how it functions, but it turned out okay and works decently well for the experience. Figuring out how each teleport parameter worked, and especially getting the player height to set properly were the most challenging parts of this.