Project 3 Developmental Journal | The Fall of Octavia

For the final project, Ellen, Steven, and me decided to create an impression of the city Octavia (in the Invisible Cities by Italo Calvino) as a backdrop for a mother’s journey to find her daughter in the midst of the city falling.

The city of Octavia struck us as being precarious, with its foundation being held by spider-web structures made of ropes and ladders across a deep valley sandwiched between two tall mountain peeks. It was believed that the fate of the city was certain: one day, the ropes would snap and the city would fall, bringing with it the people of Octavia.

Illustrations of the city of Octavia. These serve as a nice departing point for us to construct the city in a 3D environment.

Initially, we envisioned the city to be destroyed by a monster spider that laid the spider-web foundation of the city in the first place (on which houses were built upon by Octavians). The spider came back to its spider web only to find out that it was already stolen by humans; thus, it was convinced to take vengeance and destroy the city. The main character now has to save the city.

However, after sharing the idea with everyone and received mixed feedback on the incentive of the main character (whose motive was not clearly defined as to whether to save the city or to save the people), we decided to ditch that spider idea altogether.

Initial rough sketch

Instead, the story now involves a mother and her journey to find her daughter in a chaotic, gradually disintegrating city and get to the mountain before the entire city collapses.

A big part of the experience will revolve around the environmental storytelling. Along the way of finding her daughter, the mother will witness parts of the city (ladders, debris…) slowly fall down into the abyss while people frantically try to escape. Some people cry. Some people yell for help. We hope to be able to capture the essence of the city and its people in its demise.

We have yet to decide whether the mother’s journey should be simple (along a linear path that has been predetermined and events can be thus linearly triggered) or more complex (that allows more degrees of freedom). We have to take into account the limiting factor of the Google Cardboard when devising the storyline of the experience. Also, we should think about whether or not to keep a time limit (which will also dictate that there are two outcomes: the mother find her daughter just in time and make it alive, or she fails and falls with the city), or not (which implies that the user can take as much time as possible to accomplish the task, which then begs the question of what keeps the user incentivized to proceed through the experience with the kind of emotion and pressure that a mother in that situation would feel).

[Updated] April 22, 2020

After many discussions and feedback, we decided that the mother’s/father’s journey to find his/her daughter in the falling city of Octavia to be quite linear.

The 360 revised sketch of the scene. It can be seen that there is one main long stretch of pathway across the city, connecting the two mountains together. From there, houses on smaller platforms branch out. The main pathway will be the only navigable space within the scene, which considerably helps simplify the experience.

[Updated] April 29, 2020

I took on the role of creating the Non-Playable Characters (NPCs) that would help to further depict the demise of the city by incorporating human elements to the environmental storytelling of the experience.

As we picked the Medieval Unity package for the houses and animate objects, it is clear that the characters should have the same aesthetics.

The scene’s Medieval aesthetics

The majority of Medieval characters we found are either too expensive or too few to work with; therefore, I try to create them from scratch.

Even though I have experience in Adobe Fuse and Mixamo to create characters with compelling animations, I stumbled upon so many challenges:

  • Adobe Fuse’s aesthetics is too modern for our project. I could only find one such costume online. Even then, this costume proved difficult to work with down along the line.
  • First, the original costume file (.obj) froze up Adobe Fuse because it contains too many faces (more than 20,000). I had to resize the file in Blender to a roughly a third of the original size so that it could be imported into Fuse:
  • Even then, when importing the costume into Fuse, something weird happened:
The costume doesn’t cover the character’s body completely no matter how hard I tried to reconfigured the body’s size. It seemed that there was something wrong with either the original file or with the resizing process.
Not to give up, I tried remodeling the costume file in Blender…
…which proved to be working. However, I had to go back and forth between Blender and Fuse multiple times because there were no way to see how the costume fit into the character’s body.
After many iterations, I finally got something that looked acceptable!
This will be the daughter character. Below are some other women characters:

For now, I think I am done with women characters. The next step is to find suitable Medieval male clothes and create some men characters. After that, I will be able to plug the characters into Mixamo to animate them and bring them into Unity.

[Updated] May 3, 2020

After modeling the characters in Fuse and animating them in Mixamo, I imported the character into Unity. The import process, however, was far from straight-forward. I had to tweak around with the material’s different rendering process to pull out the most accurate depiction of the character.
Here is a before-and-after example for the eyelashes.
An overview of all the NPCs (of course, they would be scattered across the scene later on)
An overview of NPCs’ animations. Most NPCs have two different animations: a default animation that plays from the scene’s beginning and a secondary animation that is triggered if the player comes closer to them (within a radius of let say, 20). The idea of such “interaction” is to free the player from having to concentrate on gazing or clicking on the NPCs; rather, the environmental storytelling told by the NPCs naturally unfolds as the player walks across and explores the city

[Updated] May 8, 2020

This is the place where the daughter will be hiding. I put some fences around so as to guide the player to approach the daughter at a right angle. I will add sound cues to suggest that the daughter is behind the fence when the player approaches this point in the game (the sound of the daughter crying / shouting for help). The daughter starts waving at the player as soon as the player comes to the other side of the fence, i.e. closer to the daughter. The daughter will also shout out “Mom…mom… come closer” to suggest the user coming even closer to her while she waves. As soon as such interaction is achieved, the daughter will “stick” to and move along with the player for the rest of the game. I also added a script that makes the daughter face towards the player when she waves.

[Updated] May 11, 2020

We received some feedback during the play-test session regarding introduction to the scene, i.e. setting up and giving the audience some backgrounds on the city and what is going on. We decided to make use of a flyby camera to show the entire city from above while narrating the city as a way to open the scene. While the implementation of another camera in the scene was easily achievable, we encountered some problems integrating it to the existing scripts that are using the other First Person character controller and camera, which have all been resolved.

“Octavia, the spider-web city, is nested between the slopes of two steep slopes, suspended by ropes, chains and bridges. Suspended over the abyss, the life of Octavia’s inhabitants is less uncertain than in other cities. They know the net will last only so long. The fateful day has come, the bridges are breaking and the ropes snap, leaving the inhabitants to face their city’s terrible doom. Find your daughter, the one thing you value in the city, and flee to the slope on the opposite side to safety… ”
I used a black image on top of the canvas to implement the fading effect when changing scene by changing its opacity
This is the code for the camera flyby. Originally, we kept track of the z position of the camera to determine when to terminate the flyby and change to the first person controller. However, this proved to be unreliable as sometimes it would reach the pre-determined z position too soon and terminate before the narrative stopped (because of the inconsistent Update calls). Thus, I did some research and use Time.deltaTime to keep track of the real time in seconds, thus syncing with the narrative and the speed at which the flyby camera moves.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.