I just released the code that I've been using to manage dialogues in my LÖVE point & click adventure games as a library. You can find it here.
It also includes another library I made, strands, that's a wrapper around Lua coroutines that allows to easily start parallel sequences of actions that can wait without blocking the game execution. I'll write a separate post about that since it's also available on its own.
Features of the library:
dialogues can be divided in sections that can connect to each other, allowing for
recursive behaviour and backtracking
dialogues can save their own internal state
utilities to show some dialogue options and/or perform some steps only once
an easy way to present mutually exclusive options with less conditionals using weights
sections of dialogue are run in a non-blocking way using the strands library and can be used
to perform sequences of actions (such as characters talking, or moving around) with waits in between.
This allows `plato` to be used as a way to manage cutscenes—after all, what's a cutscene if not a dialogue without
dialogue choices?
UI-agnostic: the library only manages the dialogues, you can draw things to the screen in your preferred way.
I put together a quick LÖVE demo showcasing the library, attached to this post.
Thanks. I asked in the past about your engine as well, not to be greedy, but good adventure game engine is missing from LOVE. Have you thought about releasing that as well?
dusoft wrote: ↑Sun Jun 02, 2024 8:58 pm
Thanks. I asked in the past about your engine as well, not to be greedy, but good adventure game engine is missing from LOVE. Have you thought about releasing that as well?
When I first started working on the engine, releasing it as a library was my plan. I've since changed my mind for a few reasons:
Once I started making games with the engine I have added a lot of features, but because the games were all done during game jams (not always finished in time, but that's beside the point) these were often implemented in very hacky ways. There would be a LOT of refactoring needed to make the whole thing releasable as a proper library. This was also true of the plato library, I basically had to rewrite the dialogue system from scratch in order to release it as a library.
The engine also comes with a couple of graphical editors (for rooms and for animations) that however are quite buggy and crash when doing certain operations. They work well enough for what I need them to do, but they're not in a fit state to be released publicly, and the room and configurations files would be very annoying to edit manually.
90% of the engine is actually already released, since it's made up of plato, strands, and my navigation library. The only remaining things left in the engine are the character class, the room class, and my animation library. Those are much easier to implement and I think it makes for sense for people to design them in the way they want rather than being stuck in my mould.
Writing the documentation for the plato and strands libraries took forever. I don't have the time or energy to do that again for the rest of the engine.
What I *can* do is release the source of one of the games and of the editors for people to study and use to make their own engine, but without any documentation or support.
Oh, I understand for sure. If you want to release one of your game's source code, that would be neat. Although, now as you put down all the connections among your libs and tools, I am not so sure it's going to help :-)
But really up to you. I might get to write one at some point once I finish my boat game.