project

Totems of Time

Trailer

placeholder for project video

My Role As The Artist_

My job includes the entire production pipeline of all 3D assets in the game and some more. When our level designer, Nikolas, finishes the design of a level, I would take his 2D sketch and use primitive objects to create a block mesh of the level. This is both a reference for me to find out how big the assets are as a part of the level and our programmer, Mavis, can start coding the mechanics with this block mesh version of the level.

Concept art by me
Concept art Concept art: island overview, totem

Creating the Environment_

The model creation is done primarily in Blender. Because the project is broken into multiple iterations, I had to focus on the feature-completeness of the entire level rather than finishing one thing at a time. For this, I had to make the model for all the objects, then work on the textures for objects later.

All models for the ruin enviorment
all models used
Outside enviorment
Outside enviorment

Textures_

There are a lot of environmental textures like the floor and wall of the ruins. For these, I wanted them to be tileable, so I decided to use Substance Designer.

Substance Designer: material for the brick wall
substance designer workspace for small brick pattern

These materials are important to the project, so with our limited time, I tried my best to get feedback from the playtesters and some other changes to get our desired look. Some tweaks like the colours and contrast are made to the textures. Some tweaks like making the ground tileable are made with unity's features like shader graphs and such.

Lighting and mood change from Alpha version to final
Lighting and mood change
Custom shader graph material that seamlessly tiles the ground texture based on its world position instead of UV position
Custom ground texture shader graph

Character_

The Issue

This was originally the most confident part I felt about this project. I planned to use VRoid studio to make the model, Marvelous Designer for the outfit, Maximo for the rigging, Casecudear for the animation, and of course Blender to fix any issues in the middle. I was aware no experts would call this an "industry standard" workflow, but I thought each of them has very good features to automate tasks for me. But due to how unfamiliar I was with the workflow, a lot of mistakes happened when I made the first character: the UV were all messed up, the model keeps growing bones on his fingers (ugh...), incorrect scaling, frame rate mismatch and imperfect animation loop which offsets the player model slowly over the time. In the end, the workflow did result in a somewhat working character, but I ended up spending a lot of time fixing the issues I realized after the character was "finished".

The Solutions

We initially planned to have a younger brother for the player. Well, because of the extra time the first character took, the second character was cut. Because the amount of content for our game is very ambitious, I had to shift my effort towards the environmental side of things. To save time for the second character, I ended up finding pre-made animations online, which saved me about 2 days. Overall, the character creation was the low point for me, but I'm glad that I workarounds and saved time for other parts.

Marvelous Designer: Designing young character outfit & Cascadeur: Animating the adult character walk cycle
Marvelous Designer and Cascadeur workspace

Reflections_

Most importantly, I learned a lot about how to work with Unity's Universal render pipeline (henceforth URP). It is my first time spending this much time on a 3D Unity game and I've learned external things like exporting models, creating proper materials for URP and also internal Unity things like setting up the lighting, baking the light data etc.

Also, I learned a harsh lesson about the importance of knowing a game's audience. The end game showcase being completely demo-based, so suggesting the team make a puzzle game was a bad idea on my part. Not only would the game be less interesting because puzzle games have a lot less stimulating feedbacks, but also we had to demo the entire solution to our game which just throws out all our nuances in our puzzle/level design. It was a heartbreaking way to learn this by watching the project flop on the final showcase after all our hard work, but it was a valuable lesson.