Chasing Elysium Devlog #001

Welcome to a devlog! I'm going to attempt to doing a weekly log on what I've been working on for my game, Chasing Elysium. Progress will unfortunately be on the slower side, as I also have a full time job doing physical labor and I have my Let's Plays and my raid group. I am very busy! But I want to get this game made.

So! What did I do this week?

Planning

Most of it was just planning. A lot of "ok, what do I want to work on and when", helping me get organized so that I can actually make progress and not just spin the mental wheels. But that doesn't mean there was no progress on the game itself.

Dual Grid Tile Maps

There is a method of tile mapping called "dual grid" that fixes several issues you frequently encounter with tile mapped games. I learned about it from jess::codes. I did end up finding a plugin for Godot that implements the dual grid, but unfortunately it has a few... issues at present. Mostly it is VERY laggy. Meanwhile, the code that jess::codes wrote (as well as other examples) does not support isometric, and my game is isometric.

So I spent a day writing out code to implement the dual grid for isometric tile maps, then the next day fixing a few bugs with it. It wasn't too bad, but there was a lot of banging my head against the wall at the somewhat lacking documentation for tile maps and tile sets for Godot. The information was all there, just not the best explained at points.

Home Town

Once that was done, I tested it by building out a rough layout of the home town for one of the game's protagonists. It's just the grass and water layers for now, and only the tile maps. It's very rough, I was mostly going for figuring out the scale of the area and testing the dual grid code.

Dialogue System - "Pause" Action

Finally, I did some work on my dialogue system. Back in July I wrote a little data format in JSON for storing a dialogue tree, as well as the code to read, process, and play back the dialogue in a dialogue box. It's a very simple "command" based system that should hypothetically be very extensible.

I designed it to work in tandem with Godot's AnimationPlayer nodes. You can call a "play" method from an animation and pass the dialogue file. The dialogue system will then immediately pause the animation, let the player progress through the dialogue at their own pace, and when it is done the dialogue system automatically resumes the animation. It works pretty smoothly I think!

That said, since the initial implementation was intended to be very simple (just the "say" command), any cutscenes that involved playing dialogue, then actions occurring, and then more dialogue being played would require multiple dialogue files. So I added a very simple "pause" command that defers control back to the AnimationPlayer until the "resume" method is called.

I'll add more commands as needed, but for now the "say" and "pause" commands give me most of the functionality I really need. I can think of a few more that will be good to have, but I won't add them quite yet.