XaiJu
StarcatStoriesAndGames
StarcatStoriesAndGames

patreon


AdvJam2021 retrospective part 2

This is part two of the retrospective of my AdvJam project. Let’s get right to it.
How did I go about building the game?

Motivation

The first day of the jam went great. I was very productive.
After that I plunged into a hole. When I looked online, I saw all those fancy graphics and could only imagine what games were behind it. It semed like a lot of people were actually working together in teams instead of going at it all on their own. I had to write, design, program and pixel all by myself.
There was so much I wanted to do with this game. How could I build something that communicated that? There were still so many open questions.
I didn’t want to limit myself by an existing engine that I might have to scrap at a later stage of the project. But my own engine was not far enough along.

I didn’t even have artwork yet. But my game would be somewhat visual.
It’s downright painful for me to create visuals that don’t communicate what I am after.
Working with placeholders is very difficult to me in terms of motivation.
I felt overwhelmed. To snap out of it, I told myself that the game was what’s important. Long-term focus. If nothing was ready for the jam, then I would just not submit anything.

However in previous jams I learned that creating anything at all is better than nothing.
I know this very clearly in terms of writing, but there is a lot of baggage in it when it comes to game dev. Nothing feels ever good enough. Placeholders certainly not.
Nevertheless I dove into creating art, to get out of this monkey-brain mindset.

Art
I haven’t really drawn by hand for maybe twelve years. Not since my game design study.
Again this is a matter of motivation and feeling not good enough. But it’s impossible to ever get better without practise.
I also never could get used to using a graphic tablet. Something about hand-eye coordination. And something about being taught never to draw from images, always from the real-life object. (Terrible and useless advice for game art.)
On top of that I always felt compelled to a clean way of working. Which pretty much meant do it once and well enough to not have to do it again. (Again terrible advice, because it doesn’t work.)
Fortunately there are a lot of motivating video tutorials these days. You can learn from some of the best of the industry if you just happen to grab a course on a sale.
But this wasn’t about the best, this wasn’t even about being bad. This was just about sketches, dirty as they may be.
Not too long ago there was a Humble Bundle sale of natural painting tools and I hadn’t touched it since getting it out of impulse.
I decided to ignore everything else, get a proper graphic tablet and just draw.
I spent a whole day doing just that. And after that day, I not only felt comfortable with my new graphic tablet, but I felt like things were taking shape.

I drew from many reference pictures of details that I liked, sort of like a collage and put them together. At the end of the day I had drawn my protagonist as a child. It was fine.

Now for environments I just didn’t find much I was happy with in terms of references. It just didn’t feel right. So I decided to wing it and just draw rough pixel art as placeholders for the locations. It’s pretty obvious, but well. It say *something*.

To animate my character I created a quick flat 3D model and put my drawing on it as a texture. It was a start, but I still had to paint over it, to make it clean enough which would have taken too long for the jam.
So instead I went ahead and created a cleaner flat 3D model to animate walk and idle cycles of my main character and just render them. The style is not final, but it works for now.

Tech
I’ve often thought about using AGS (Adventure game studio) for my next project, but at the end of the day, I always end up frustrated but details of the workflow. I have enjoyed many games created with AGS and I have the greatest respect for the developers of these games. It’s amazing what they can work with and still make such rich games. I see them do amazing things and I have no clue what plugins or sources they have access to that I don’t.
Whenever I try to work with AGS, I quickly stumble over a frustrating problem and searching the forums is a very slow process of trial and error.
In short: I feel limited by the resources available. I’m much happier building what I need.

Despite my best efforts not to focus too much on tech, this game runs on my own adventure engine built inside of Unity. I basically use it as a cross-platform environment to abstract input and output.
Back in the day I already wrote adventure engines in assembly for the Atari Jaguar. Later versions of that engine were written in C using the SDL library on the PC.
Now Unity is a huge step up in terms of comfort. I can build my game in the editor and Unity offers a lot of advanced features. Some of which I wrote two or three years ago, which can now be replaced by new built-in features of Unity.

So what does my engine do?
- Scene management
- Navigation, walkable areas, blocking areas
- Scaling, Z-space rendering (you can walk behind, in front of or around objects in 2D space), Lighting, different camera effects
- Scripted events and cut-scenes (now powerd by Ink)
- NPCs, Dialogues (now powered by Ink)
- Item / Inventory system
- Object puzzles, dialogue puzzles, mini-game puzzles
- Animation system
- Camera management
- Audio management

In short, it’s already quite capable of handling a lot of common adventure requirements. It works well for me and is very flexible without it taking much time to build something playable.

Technical problems during the jam
My engine is still heavy work in progress and the features I just described are what I have now. It was a lot less before the jam.
There were plenty of technical problems, actually. I’ll just describe a few fun ones.

Some of the features I built myself a few years ago now got in the way of how the latest version of Unity handled things.

As you may know Unity is a full-blown development package for modern 3D games. It’s also very popular among indie developers and in recent years it got a dedicated 2D workflow on top of everything that’s 3D.
I wanted to make a pixel art game and there are helpful tools and workflows for that, too these days. But some details are tricky to get right.
The actual graphics are scaled down to pixel resolution, but the world coordinates are still in 3D space. You can end up with coordinates that are on a fraction of a pixel so things can get blurry. There are of course ways to prevent this, but the more you combine built-in and custom functionality, the more complex things get.

The camera, text display and user interface were a big problem.
I decided to scrap my own camera code and use Unity Cinemachine feature that offered a pixel perfect camera that follows an object around.
This created more problems with my own on-screen text handling, because I used to create text as scene objects. When the camera moved the text also had to move accordingly. Same with my user interface and mouse cursor.
To make things worse, when the camera moved this caused the text to jitter. It also caused the text to be randomly sharp or blurry, depending on the world coordinates of the text.

A completely new feature was the implementation of Ink into my own scripting and dialogue system. It allowed for much more flexibility and was totally worth it, but it took time.
I decided to switch partly to the built-in Unity UI to display dialogue options. However this meant my cursor was displayed below the UI and below the dialogue options. This somehow worked, but wasn’t looking nice.

It’s been a while since I had done any animation in Unity. The workflow is not exactly intuitive, you have to do things in a certain order. It took me a whole 90 minutes in the night before the end of the jam, to get the idle and walking animations for inside and outside areas to work correctly. That was annoying and I was already sleep deprived.

When I created my first release built of the game about 30 minutes before the end of the jam, I saw the strangest camera behavior. Depending on the scene it was jumping, jittering, creating random black bars around the scene and so on.
I fixed this by tweaking the scene boundaries and Cinemachine settings by hand and setting a fixed default HD resolution.

Meanwhile I have fixed a lot of these problems. When I post the next version here on Patreon a lot will be smoother.

Next post I will continue my retrospective. I will talk about scope, the deadline approaching and post-jam reception.


More Creators