Godot Port Progress Update


So I've been mired in Godot's internals for a little over a month now and I figured it'd be as good a time as any for updates about the port!

UI

From the player-facing side of things, I've gotten all non-town gameplay reimplemented. Dungeons (well, dungeon) load, you can wander around, get into fights, find loot, explode enemies with death magic, all of the previous things. But the UI... good lord the UI!

One of the really nice things about this update is that it's allowed me to take a look at a lot of systems and tweak them to just be Better™. The UI tools in Godot are leagues ahead of what I was working with in Unity. Things have a more cohesive look, text is more readable, UI elements are substantially more performant (almost all running in event systems now instead of on a per-frame basis), and are just all around better.

+ The minimap looks nicer, showing floor textures, nicely denoting doors, archways, secret doors, and so on.
+ The spellbook, instead of being a list of text now shows glyphs denoting spell schools as well as whatever info you may need for a given spell on mouseove. The glyphs will eventually be unique on a per-spell basis instead of being generic school glyphs and they'll be used for hotkey icons down the line.
+ All UI elements are movable now, so folks on larger monitors can place things where they like. Most UI elements can be closed if desired.
+ The message log now has separate tabs for general message (which shows everything) and combat messages. I eventually want to get the option to 'pop out' the combat message tab so that they can both be displayed at once. The message log can also be toggled to have a transparent background behind text, if desired
+ The enemy roster is now a list instead of a copy of the player roster. It's easier to parse, you know what order the foes are in at a glance, and it's much less 'wasted' screen space.

GAMEPLAY

On the gameplay side of things, most everything is the same with a lot of behind-the-scenes improvement. I've tidied up a lot of really sloppy mechanics that I implemented in the first go. Characters and enemies now more or less behave the same in a statistical sense instead of having separated mechanics. This allowed me to reduce the number of lines of much of the combat code by as much as 60%.

+ I took the opportunity to tear the guts out of the old spellcasting system and completely rewrite it. Spells are no longer hardcoded and instead run off of an 'event' system that applies effects to enemies as denoted by a given spell. A spell can have any number of effects on it, basically anything I can think up, I can make happen without having to write a bunch off code that'll get used once and never again. A spell went from its own full function to about half a dozen lines of code.
+ The combat system itself has been streamlined a good bit in a code sense. Things run faster and more predictably.
+ The die roller is now what I would consider 'properly' random. It was random before, don't get me wrong, but there were what felt like some tendencies towards specific results. I don't know if it was paranoia, or anything real, but I rewrote it and now its random ranges give proper bell curves that match what you'd see on anydice.com. I imagine it's more truly 'random' than most of the dice people play tabletop games with.

WHAT'S LEFT

The editor. Good Christ the editor. I need to get the tools that I use to build maps up and running again. Of everything that was made in Unity, the editor is the one thing most intrinsically tied with Unity's godawful UI stuff. Most other code has been fairly easy to port over, but getting the editor working again is going to see me having to learn how Godot does a bunch of stuff that I've yet really had to tinker with. I don't think it'll be bad, just time consuming. Thus far I've got the editor reading map data... kinda:

The above is mostly just display issues. You can pretty clearly see the layout of the tutorial map. Just need to get the cells displaying properly. Shouldn't be much work. Once that's done, though... I've got to get all of my tooling ported over. That's what's going to be time consuming. My immediate goal is to get map editing in. Once that's plugged in, I'll get the encounter system re-implemented. Then the event system. The event system is what I was fighting with when this whole thing started.

Town. Town's actually last on the bucket list of things I need to do. Since Town is basically nothing but menus, it's going to be a bit of work to get ported over. I don't expect it to be too horrible because all of the logic I use is already written, I just need to get it working with Godot's UI elements. One thing I can tell you is that the UI is going to look leagues better. I cannot put into words how much better Godot's UI tools are than Unity's. Night. And. Day! 

I've put together some Programmer Art™ sprites for enemies. The style is vaguely inspired by the Dominions games. Super low res, since I can actually 'art' things that don't look like complete crap. These are currently being used for enemy icons in the enemy roster. I'd like to get them visible in the gameworld so players can see enemy groups before fights break out, but I don't know if I'll get that plugged in to to the next update or not. We'll see.

And that about covers everything. I have no idea for a release date for Update 4. It's obviously been a much larger project than I'd initially intended, but I think the game's going to be leagues better for it. I'm hoping to have it out before the holidays hit and I have to weather the storm of peak time at my second job, but we'll see. Fingers crossed, thanks for reading!

Get Currently Unnamed Dungeon Crawler

Comments

Log in with itch.io to leave a comment.

(+1)

Glad it's going well for you so far.  Keep up the good work.

(+1)

Great update! Happy to see your migration to Godot is apparently going quite well and you took the time to do some clean-up and rewriting. Look forward to seeing more!

(+1)

wishin ya luck ghost, the hardest part of anything is the start... and ya done it twice now a rough draft and then optimization too. baring any chaos factors you got this as long as you dont mire in some muck along the way.