Aboo | DevLog 03

The UI is still in progress — just as expected, it takes time.
Because of all my “nice-to-haves”, I have to pay with extra work, but I’m making progress. Finally figured out saving and loading the game.
Rewrote some of the old code — still a mess, but I’m doing my best to improve it.

New ship, new avatar, and yet another version of the starting location (maybe the fifth one).

Not much else to say — there aren’t many visible changes right now.
So I’ll just talk a bit about how I build locations.

First, I make a rough sketch to plan where things go — key objects, layout, that kind of stuff.

Detailed sketch + painted ship

Next, I draw unique objects for the location — and non-unique ones too, if they’re not done yet. If an object is tall, I split it into parts so the character can walk behind or around it. I also separate any elements that I want to animate later.

Sliced art

Then everything goes into the engine — and the “fun” begins.
First, I place the unique objects. Some of them, like the ship, I make into separate scene objects. There I set up things like a collider (so you can’t walk through it), and a shadow — to make sure it always shows up on the bottom layer.

Main objects that make the location unique — maybe even memorable.

I group the plants on the rocks from the start, turn them into separate objects, and add some simple animation.

Even the simple animation editor is enough to make the plants sway.

Next comes placing a lot of mid-sized objects — the ones that shape the location.
Here, that means trees. Since there are so many of them, I split them into groups: top, bottom, left side, inside... something like that.

Yes, I placed all the trees by hand :)

When I first started working on the visual style, I thought the game would be black and white only. But after placing the first trees, the ship, and the character — I felt something was missing. It needed shadows — something between black and white.

Then gray became more than just shadows — it turned into patches on the ground, dust from the character’s steps... I'm still thinking about how to handle the “ground”.

Part of me wants to just paint big background images and drop them in — maybe I’ll do that later. But for now... I made this little sprite:

Ground sprite sheet

Then I started filling the whole location with these sprites. First, I covered big rectangular areas — under the mountains, in the forest. After that, I used the bigger “patterned” sprites to smooth out the edges, and slowly added smaller patches and details.

Stages of ground design + layer structure

This will probably hurt performance later, but for now — while the locations keep changing — it lets me update things quickly.

I also place small grass and rock details, always on the gray ground areas only.

Current final version of the location

The grass is interactive — when the player walks through it, it moves (simple animation). In places where the player can’t go, I just turn off the interaction with a checkbox in the object settings. (Yes, I do think about “optimization” sometimes…)

Once all the static objects are in place, I start “drawing” collider polygons over the areas where the player should never walk. Then I add small colliders at the base of trees and big rocks — so the player can’t walk through them.

Collision shapes

Final touches: placing birds, start points, portals, and dialogue triggers.
And the scene tree ends up looking something like this:

Location scene tree

That’s pretty much it for building the location. Now I’m moving on to improving the dialogue system and handling variables.

Right now, it works like this: There’s a trigger object with a custom shape. It has a script with an array of phrases and, if needed, a portrait of the speaker.

I still need to figure out how to change global variables after the dialogue — and make the trigger work depending on those variables. I kind of understand how it should work… but making a universal solution will take some time. No idea how real programmers do it.

That’s all for now.

Originally written in 2020 — just keeping the spirit.
The original Russian version is here: Gamin.me — Как сделать маленькую игру (часть 3)

Comments