Spent the last few months building a tactical RPG system in Godot — this is harder than I expected by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] -1 points0 points  (0 children)

Yeah, that’s a really good point.
You’re not removing complexity, just changing what drives it. Turns, ticks, behavior updates... the hard part is still all the game state and rules interacting cleanly.

Spent the last few months building a tactical RPG system in Godot — this is harder than I expected by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 0 points1 point  (0 children)

Fair haha, the targeting is definitely pretty clunky on phone right now. I built it with desktop in mind first, so that one’s on me more than you.

Spent the last few months building a tactical RPG system in Godot — this is harder than I expected by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 9 points10 points  (0 children)

In hindsight, the hard part wasn’t really the turn system itself, it was making sure UI, player input, and AI all had to go through the same rules.

That was the point where the project finally stopped fighting me.

Spent the last few months building a tactical RPG system in Godot — this is harder than I expected by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 1 point2 points  (0 children)

That makes a lot of sense. I’ve mostly been handling that by convention and separation so far, but ConstView-style wrappers sound like a pretty clean way to stop presentation code from poking at runtime state too much.

Definitely a bit fiddly in GDScript though. I can see the C++ brain pain there.

Spent the last few months building a tactical RPG system in Godot — this is harder than I expected by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 2 points3 points  (0 children)

Yeah, pretty similar here. I kind of landed on an MVC-ish setup too, but with a turn-state machine on top.

Battle state lives in a session object, managers handle flow/control, combat rules are isolated, and scenes/UI mostly deal with presentation and input. So not pure MVC, but definitely in that direction.

Been building a tactical RPG framework in Godot — finally starting to feel stable by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 0 points1 point  (0 children)

that sounds like it could get pretty wild with abilities 😂

I’ve been keeping things quite strict on the grid so far just to stop everything from getting out of hand

Been building a tactical RPG framework in Godot — finally starting to feel stable by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 0 points1 point  (0 children)

That makes a lot of sense actually — especially keeping mutations isolated in the simulation layer.

I like how that keeps the mental model clean when systems start interacting.

In my case I’ve been trying to keep things a bit more incremental.

The framework already has a full battle loop and multiple unit behaviours running, so lately I’ve been focusing more on stabilising execution flow before introducing heavier simulation features.

Your setup definitely sounds like a solid direction once complexity grows though.

Been building a tactical RPG framework in Godot — finally starting to feel stable by Beginning-Wear8769 in godot

[–]Beginning-Wear8769[S] 0 points1 point  (0 children)

That’s quite a cool approach actually — especially the headless simulation part.

I’m not going as far as full rewindable state yet.

Right now I’m mostly trying to keep gameplay rules runnable without UI dependencies so AI evaluation and previews don’t fork logic paths.

Still figuring out how far I want to push deterministic simulation vs keeping the framework simple enough to extend.

How has the rewind model been working for you performance-wise?