Totems of Time is a 3D puzzle game where the player is trapped on a stranded island. The player can travel between past and present to solve puzzles to find an escape.
Made with
- Mavis Z. - Program
- Nikolas A. - Level & UI
- Aditya M. - Trailer
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.
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.
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.
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.
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 that 0/26 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".
Did you know that we initially planned to have a younger brother for the character? Well, because of the extra time the first character took, the second character was deleted. Because the amount of content for our game is very ambitious (we didn't want to just make a tutorial stage for a puzzle game), 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 of time. Overall, the character creation was the low point for my part of this project, I'm glad that I found ways to not spend too much time on this one part and used those saved time to make other parts of the game better.
I love programming for games, but because I'm the only artist on the team, I decided to let other people take over most of it. I did, however, programmed some part of the game. For the player character, I was in charge of the camera and player movement. Besides that, I was the assistant programmer helping to fix bugs by merging and linking the game system with different scripts.
Yeah, I was the project manager. Weekly check-ins with everyone's progress, helping people that are stuck on their tasks, assigning work priority based on the submission deadlines: just a project manager doing project manager things.
Firstly (and 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.
Secondly, I learned how to work with unproductive team members. I think most of the team were really hard-working, but there were times where a feature was taking weeks longer than the initial schedule with unsatisfying results. I've learned how to deal with these situations better by making adjustments as a team to shift responsibility around. It was an interesting learning experience.
Lastly, I learned a harsh lesson about the importance of knowing a game's audience. I should have predicted the end showcase being completely demo-based, so I should have considered that more before suggesting that the team make a puzzle game. Not only would it be less interesting to play 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 hard way to learn this by watching the project flop on the final showcase after all our hard work, but it was a valuable lesson.