Week 12: More visual styling tests

EarlyOwl
5 min readNov 8, 2021

Hey everyone! Welcome to the 12th week of my game development. You may think 12 weeks is a long time, and I should have had something tangible to show you by now. I wish that too… but you should know I get to work on this for about 1–2 hours a day. So effectively, I just had 15–20 days of development yet.

(Talking to myself: It’s a marathon, it’s a marathon… )

So, in the last couple of weeks, I have worked on quite crucial roadblocks. I have some prototype testings to do, and the path for that is clearer than ever. I also worked quite a bit on the visuals.

Here’s the TLDR:

  1. I tested visuals for the game in unity by trying out different shaders and tweaking them.
  2. UI for gameplay is now ready, and it works.
  3. I replaced multiple player-scenes with a single player-scene that can handle all the game modes and camera changes seamlessly.
  4. I implemented my own solution for object-pooling, but it looks like I need to replace it soon.

So let’s begin…

Visual testing

I have a thing for watercolor painted texture, and I would love to evoke that feeling in the game. So far, I have seen many inspiring pieces of artwork. Still, I wasn’t confident if I could achieve that render quality or even close to that in a real-time engine. The limiting factor is that I have limited time, and I don’t have enough experience with rendering.

One option is actually to paint. With the recent release of Procreate (an iPad app), painting on 3D models is more accessible than before (works almost like Adobe Substance painter). I can potentially paint all the 3D models the way I like. I even tried importing models into my iPad and tested it. It works well… but then again, my time is restricted, and I can’t possibly be painting each texture on my own.

Shaders seem to be a better option to achieve an excellent stylized effect without individually painting every pixel. But I didn’t know much about shader-graph. So it was time to fix it. I dived in, viewing lots of tutorials, asking help from some fantastic community at discord, and tested different effects in unity.

Tested 3 different shaders in the same scene

I still have a long way to go, but now I have a sense of direction with it. I downloaded a couple of toon shaders and tinkered with them. I am not super satisfied with the result, but this is good enough to proceed for now. I now know the capabilities of the shader graph, and I have confidence that I will be able to achieve the effect I was looking for later.

Gameplay UI

It took me some time, but now the UI works as intended. I also tried to make sure that I could change the functionalities, add new features and modify them later on during the development without much struggle. For now, it holds dummy buttons that I’ll replace later on.

Also, now it sticks to the player (egg) wherever it moves. I have extended this feature to other game objects so that when the player accesses its properties, it feels contextual.

One Player scene

So far, based on the progress I have made, I foresee the use of multiple camera angles and configurations during the game based on what the character is doing and where they are in the world. Earlier I had two different player scenes with the camera set up for different game modes. It was increasingly becoming difficult to keep both the scenes up to date. So I combined it.

Now I have a single scene that holds both the camera configuration. Switching between the cameras means just making one virtual camera active while making the other inactive. Cinemachine automatically makes the transition between them without me touching anything. The default setup looks so good that I have left it for now. I will revisit it if I want to make any changes to that.

If you want to know more about this setup, please read my previous article about setting up the player game object in your game.

Object pooling

Object pooling is one of the ways developers make their game super-efficient, even in mobile devices without significant frame rate loss during run-time. A super-simple explanation of object pooling is -

Let’s say you have a specific game asset that gets loaded into the scene in plenty and frequently, and it gets destroyed soon (like bullets, stars to collect, etc.). Then instead of loading a new version of the same asset every time you need it, one can reuse the destroyed ones that are already in memory. Instead of destroying the game object, all one has to do is simply make it inactive and change its position and orientation when making it active to be reused.

I created a small script to handle the mentioned behavior for my game. It wasn’t an all-purpose solution, but it would have dealt with the few scenarios I have. And it worked fine.

But then Unity 2021.2 dropped, and what did it have — a native solution to object pooling.

I am not sure if it will work with the Unity 2020 LTS version but, I got to check that out.

What’s next?

The upcoming week is the Audio and Release sprint, where I focus on taking care of the audio part of the design. But I have other plans. I need to get to a stage where I have a sharable prototype of the game. So… I’ll be using this week to go a few steps closer to that goal.

Story development is also happening in parallel, and I got some crazy ideas for that.

That’s it for this week… See you next time.

I wish you the very best!

Originally published at https://www.theearlyowl.com on November 8, 2021.

--

--

EarlyOwl

📱 App coder, 🎮 Game creator, 📖 Storyteller - Sharing all that I learn along the way! Sincere hobbyist | Forever a Work in Progress | Learning out Loud