'What Am I?' is our submission for the Unity Neon Challenge. It shows the journey of a bot who has just awakened in an unknown place. The bot does not know what it is or where it is, and must explore to find out.
Let's start with an introduction. We are Boring Games Studio. We are a team of two people.
Abhinav Kumar Gupta (Founder)
Swapan Kumar Gupta (Co-Founder)
While the challenge started back in December 2017 and we had more than a month to come up with something, we unfortunately were only able to start a week before submission date. So here's what we were able to come up with in that time.
So when we first started working on the project, all we had in mind were words like Futuristic, Robots, Sci-Fi World, etc. That's pretty much what helped build the foundation for what eventually became 'What Am I?'. We didn't really have any specific design in mind. What we did know, was that there were a lot of amazing assets available on the Unity Asset Store, and if we put a bunch of them together, we would surely be able to come up with something good. It may seem like we oversimplified it but this is pretty much how we started. As for the story, we bounced a couple of ideas around. Whatever the story was initially, we were constantly adding and removing things from the story throughout the development process. Believe it or not, up until the point where we have to animate the camera to tell a story, there were small changes being made here and there.
We started by importing multiple assets from the Unity Asset Store. Many of the packs had modular assets, which was amazing! So there are two scenes - an exterior scene that contains buildings, machinery, etc. basically meant to look like an outdoor environment...
...and an interior scene that contains the interior of a building.
For the interior, we used assets from a Sci-Fi Modular Assets pack. The great thing is that some of the assets were modular, so we were able to use them in various creative ways to create things. Here are some examples.
These are a couple of from the Sci-Fi Modular pack. By positioning, rotating and scaling the objects in various ways, we were able to create this item that we could use as a machine of some sort.
Another example of how we put together a couple of assets....
...and created this item that can also be used as a machine of some sort.
The modular assets were very useful when creating the interior. The image on the right shows one of the halls of the interior. The walls, floor and roof were all constructed using modular assets.
Below is the same hall taken apart.
And the image on the right is a screenshot showing how we constructed the floor using the modular assets. It's important to note that you need to use Vertex Snapping to snap the vertex of one object to vertex of another, so that you don't see any gaps between the objects.
We learned a neat little trick to help with placing objects in darker areas. There is a Lighting Button in the Scene View Control Bar that lets you toggle Scene View Lighting On or Off. When toggled On, Scene Lighting will be used. When toggle Off, a light attached to the Scene View Camera is used. Below are two images showing the effect of toggling Scene View Lighting On and Off.
The exterior was designed by first putting together a bunch of random assets which eventually formed buildings. This was quite a fun and creative process because we had to use a bunch of random props from a couple of different asset packs to make them.
In the image below, you can see how one of the towers was assembled using 2 inverted stone gates, 3 rings that are just squashed tower walls, an elongated plate with an emissive material on it and a projector prop that sits on the top of the tower
Here’s the tower after the assets were put together
The buildings assembled were meant to be more “important” buildings and hence the city assembling process began by placing a couple of these buildings on a floating platform, which is a Grass_Round_Planter asset with a thin cube on it for the ground
Now it was time time to populate the city with as many buildings as there could be on the planter, Initially, the assembling process started by randomly placing rusty looking buildings and random props found in the Julai Model asset pack to give a rough diea as to how the city would look
The next part was a little bit tricky to accomplish because it involved placing even more objects in the city to completely populate it, the only problem was that many of the models used had a platform as part of their mesh, which admittedly made things a little bit tedious, however, there were a few models that did not have the platforms attached, which were used to modify the already existing buildings to make them slight more different. A reflection probe was also added at this point
The final step to completing the city was adding a few streetlamps and little bits of assets to fill in empty spaces between buildings, and also, adding the main building, the building that the main character goes into
The main building was actually quite simple to put together, just a simple building, 2 rotated stretched bases of guns, 2 entry points for bots and a bunch of lights, that was really about it. In the below image, you can see the pieces disassembled and kept to the right scale.
It was about time to add a few points lights and remove the single directional light, hence, the grand 20 point light system was born! (a bit of an overkill…)
Earlier, while setting up the base of the city, we had placed a few “Protected cities” around the main city, this was achieved by using the “Projector” asset in the Sci-Fi Styled Modular Pack to form a shielded area that needed buildings in them. The globes were populated with the buildings created earlier and shrunk down to give a feeling of distance. Creating these “Protected Cities” was definitely one of the more easier tasks to accomplish as there was no worry for perfection since the details of these cities would not even be seen clearly as they are quite far the main city
The main idea here was that these cities are inhabited by humans while the city the bot was born in, was only inhabited by robots
Post Processing Effects
Now was the time to use the Post Processing Stack to add all sorts of effects to really intensify the scene. This process took about 2 hours to get right, fine tuning all sorts of things like colour grading, bloom, depth of field and more, but in the end, it was completely worth spending that extra time because without it, the scene would have looked quite bland. The most tedious part was fine tuning the colour grading effect because changing the balance even a little either exaggerated or brought down other effects, namely bloom. In the image below, Image 1 shows the scene as it was, without any effects added to it, Image 2 shows the image after Bloom was added, it had to be set to a lower amount because other effects brought out the bloom even more, Image 3 shows the effects of adding depth of field, Images 4 is after adding anti- aliasing and ambient occlusion, image 5 is after the colour grading was added, this really helped give the scene that sci fi looks with a very dark theme, and finally, to show that this is the viewpoint of a robot, chromatic aberration and vignetting were added (Image 6).
Here’s a quick side by side of a shot before and after applying the Post Processing Stack!
Here is where the real challenge began, Lightmapping. This was by far, the most stressful and time consuming process. Unfortunately, we could not lightmap this city because it was too crowded and hence, needed much more memory to lightmap than we could offer. This lead to significantly changing the city to optimize the scene (by removing many buildings, especially the ones in the other globes) along with removing many of the point lights set up(which was an outrageous amount for such a small scene, about 20 point lights). So, now the city became half a city instead of a complete circle filled with buildings. Lightmapping this new scene was quite an exciting moment because we could finally actually bake our scene, BUT AT WHAT COST!!!
As mentioned earlier, lightmapping was quite an issue, to solve this, a number of methods were used before optimizing the scene, which combined helped lightmap the scene. When we first got errors, namely “Out of memory” errors, our first thought was to check the solution online, to which we did get a couple but not many worked, in the end we settled with reducing the Lightmap Parameters, Lightmap Resolution and Lightmap Size
Here’s the scene without any lights or the post processing stack
And here’s after adding point lights and the post processing stack. It was at this time we decided to increase the chromatic aberration to about max to further exaggerate the robot feel, and decrease the number of point lights in the scene to make it even darker looking
Cinemachine and Timeline
Cinemachine and Timeline were crucial parts of the storytelling process. We were trying to show the First Person view of a lost Bot roaming around, looking at things, exploring. Cinemachine provided us with all the tools we needed, and then some. Below is an image of a Cinemachine Virtual Camera on a Dolly Track.
How do you move the camera on the dolly track? That's where Timeline comes in. Using Timeline, we were able to animate the virtual camera's position on the dolly track. The virtual camera's give you the option to specify a Look At Target that the camera must always try to look at. You can customize the Virtual Camera in various ways. For example, there are options to smooth out the transition from one angle to another. That way, when the camera's LookAtTarget suddenly changes position, you get a nice smooth transition.
Timeline is a very powerful feature of Unity. In the above screenshot, you can see multiple tracks for animating multiple gameobjects. All you have to do is hit the record button on a track and you can animate the GameObject it's bound to, and the keyframes get recorded. What's better? You can record multiple tracks at once. For us this was very useful because on one track we could animate the Virtual Camera's position on the Dolly Track, and on another track we could animate the position of the gameobject we were using as a LookAtTarget. It's worth mentioning that to make it look a little more like a robot was looking around, we had to use tricks like stopping the Virtual Camera at certain positions and then move the LookAtTarget gameobject.
In Timeline you can also create Groups for organization. Of the many amazing things about Timeline, one of the best parts is that it lets you act as a Director.
We have two scenes. Each scene has it's own Timeline. You can have multiple Timelines as well, but at the scale at which we were doing things, we felt individual Timelines were more than enough. Another amazing feature of the Timeline is the ability to blend between clips.
Here's an example of how this was useful for us. In the below screenshoot, on the third track, you can see two clips overlapping each other.
What's really happening is the end of one clip is being blended with the beginning of another clip to make a seamless transition. This was very useful when we wanted to blend the transition from one Virtual Camera to another.
So let's talk about some tricks we used. The outdoor scene is not a very big scene. One of the main reasons for this is that as we mentioned before - we had trouble lightmapping the scene when the scene was very crowded. So we had to limit the number of buildings. This is what the outdoor scene looks like...
When you watch the bot navigating through the unknown place, the bot is actually navigating between these objects. The trick here is to use various methods to hide the "edges" of the level like, Post Processing FX, avoid looking in the direction of the edges a lot, pointing the camera up a lot so that buildings and big props can hide the edges. In the final video, you'll also see what looks like stars in the sky. 'Hiding the edges' is really useful because if the viewer doesn't see an edges, and sees buildings, props, etc., we are able to trick them into thinking there's a lot more in the distance.
Another trick we used was a simple swap while entering the building. Imagine a corridor that has two doors on each side. You enter the corridor through one door and you have to exit the corridor through the other. In the outdoor scene, the bot enters a corridor through one of it's two gates. Once the gate closes, the bot cannot see anything outside the corridor. At that point, we load another scene, which is the building interior scene. In the building interior scene we have another identical corridor. We make sure that the bot starts out with the exact position and rotation that it had when the previous scene exited. This creates an illusion that the bot is entering a building, when really another scene is building loaded. Making the transition seamless was a bit of a challenge, but we managed to do it. This is the corridor being used.
We have learned a lot from this experience. It's always great to see what you're able to come up with when you're allowed to get creative. It was amazing that we were allowed to use assets from the Unity Asset Store. We were able to focus on creating the experience rather than having to spend time creating the assets. Unfortunately, because of how late we started we didn't have a chance to work on Audio. But we are still happy with what we were able to accomplish in about a week.
Unity Asset Store Credits
Destroyed City FREE - https://assetstore.unity.com/packages/3d/environments/sci-fi/destroyed-city-free-6459
Julai Models - https://assetstore.unity.com/packages/3d/environments/sci-fi/julai-models-75013