Table of Contents

Godot learning

I did these between 2019-07-28 and 2019-088-17. I never made that game.

Part 1

I'm learning how to use the Godot game engine and so I'm going to start keeping my notes on my blog so I can remember them, and hopefully gather resources that may help you.

My goal is to rebuild an ancient RPG I made called Final Existence on the Amiga in AMOS Basic, which was a YA alternate universe apocalyptic game that looked and felt a lot like Chrono Trigger. I've become a bigger fan of ARPGs lately, and I'll rebuild it using that paradigm.

There are a crap ton of tutorials out there, but I've been having trouble gathering all the pieces I want together to build an ARPG, and there's a lot of moving parts in Godot, so this is my attempt to wrangle all that together in one place for myself.

So, on with the notes:

What do I (think I) need next?

What have I found?

Solution to "RPG Map with tiles and doors"

Part 2

Lunchtime video: Platform Game Tutorial

Game planning

I'm now thinking the game will be a walking simulator with QTE. No items, no stats, no tight action stuff, just dialog choices, exploration, and QTE. Should be pretty straightforward.

Solution to "Pixel size of Scene for Camera2D clamping"

This doesn't take into account transforms on the Map or the MapContainer.

python func get_map_max_size(): var maxSize = Rect2(0,0,0,0) for node in $MapContainer/Map.get_children(): # Object#is_class is like Ruby Object#is_a?. # if I used instances in the tree whose classes subclassed TileMap, # is_class will return true for those instances. if node.is_class("TileMap"): var mapSize = Transform2D( Vector2(node.cell_size.x, 0), Vector2(0, node.cell_size.y), Vector2() ) * node.get_used_rect().size maxSize = maxSize.expand(Vector2(mapSize.x, mapSize.y)) return maxSize

Part 3

Lunchtime Video: Branching Dialogue and Dynamic Events

Solution to "Clamp camera to max area of Map Scene"

Solution to "Fade to black when changing rooms"

Part 4

Dialogue Boxes

Solving "Move RPG dialogue box to other end of screen to not hide player"

Part 5

Dialogue Boxes Part 2

Part 6

Odds and Ends

Making Pixel Art

Krita is my art tool of choice anyway, so let's see what the Internets have to say about using it for stills and animations:

Part 7

YSort and 2d RPG games

I made a pixel art in Krita:

Then I put him in my game:

Then I walked behind him:

Oops.

My structure of the game looks like this, because I thought having Player outside of Map and not repeated in all the maps would make things easier:

But it should look like this, and I'll have to do more management of Player within maps when maps change:

My idea of centralizing all player input to Main and pushing down movement events to Player may be the direction I go for restructuring this…stay tuned.

Part 8

YSort!

Success! I got my player to walk behind the rabbit by placing both in a YSort:

But I have to make sure everything map-related goes into the YSort. My Exit Nodes were outside the YSort, so when I warped back into the larger first Map, I ended up in a weird spot. Also, moving all of the input logic to Main and pushing down events to Map and such is the way to go.

Next is making my TileMaps be the kind where the player can walk “behind” them.

Android Export

I got the game to export to Android, as I already had the Android environment installed for React Native and NativeScript-Vue compilation:

I hooked up a USB controller via an OTG cable and got the game to react to inputs, but, as expected, the YAML data didn't work, so I'll need to hook up a preflight script to covert YAML to JSON and use the JSON loader on Android, or just use JSON everywhere and run a watcher to convert YAML on-the-fly while I work.