Open Collective
Open Collective
Loading
2024 sees a complete overhaul/refactor/rewrite of Liblast
Published on February 7, 2024 by unfa

Yes, the game takes a huge step back. It's due to multiple overlapping factors.

Here's a video I've prepared to tackle this topic, you might watch it after or before reading this. There is overlap but I talk more specifics here.

What's wrong with Liblast 0.1?

1. The game has been suffering from a lack of a coherent technological design behind it - pretty much I made stuff up as I went, applying limited planning, but making a lot of poor decisions, resulting in the codebase becoming riddled with various elusive bugs, and no easy way to find and fix them.
2. Because the systems and the content of the game became intertwined, making the game moddable would be an uphill battle. I have previously intended to push through in the existing state to the 1.0 release, and for 2.0 do a total refactor with (hopefully) a team of people to support my work. It's become apparent to me that this plan would not work out well.
3. The game has long suffered from a problem where any runtime error in the game would show an error message just for a second, then the game would crash. Normally the game should only pause, and let the developer inspect the game's state to find out what is the problem. In our case that was not working when running the whole game. It did not happen when running small scenes to test individual components.
4. However the game programming structure was not properly decoupled and modularized on all levels, having multiple singletons manage crucial tasks, making it impossible to really test most of the game's components in isolation.

How did the refactor came about?

In January this year, me and the other co-founder of the project - Combustible Lemonade - got to play Liblast a bit for fun, also working on another Godot project. He's asked if I've hear about continuous integration/delivery. We started playing with implementing that for Liblast. Days passed, we got excited making CI work.

Around that time after playing some private games with friends I've realized how terribly broken and unreliable the game really is still. The same bugs keep showing up, despite me being sure I have fixed them already a year ago...

Yo Soy Freeman has been a faithful and very dedicated contributor since March 2023. He's created all the environment materials for the game, and he's done a lot of programming work also, however I felt like we don't have the resources to fix the game alone, and it does really need a deep overhaul.

Me, Freeman and CL have talked about Liblast together via Jitsi and started drafting some ideas on Excalidraw.

Then something clicked in my head. Alone I could not rewrite this game for the 3rd time. It's too much. But if I had a small team I could rely on... we could do it.

We talked and agreed to start the game fresh. Combustible Lemonade is earning a living by programming. He's the best person to overlook how the game is programmed I know. And honestly I just missed working with him. If he'd want to do that, us three could do this.

And so it became - a complete overhaul/rewrite/refactor.

We're not starting from nothing. Me and Freeman have now quite a lot of experience working together (also with KeVs404), we made together another game called SNMD, and it's been a well deserved break from struggling with Liblast's messy codebase.

The core vision of the game has not changed, but now we're building fresh starting with automated tests for every feature and commit. No more finding out something is broken and having no idea when it broke. We've designed the game to separate systems (framework) from data (content) so that it's easy to replace or update any part of it without affecting the rest. This will make the game moddable from day 1. We'll be making it so the game itself is like a mod for the Liblast framework.

What's going to happen with the existing game? I like it, don't take it away!

The existing 0.1 builds will stay up in one way or another, and for now the public server for 0.1.9 is still up. I have updated the HTML5 version accessible via play.libla.st, otherwise experiencing the latest and "greatest" from Liblast (from the now legacy 0.1 line) is to download the Preview build from libla.st.

However the game's repository needs clean-up, the 0.1 game needs to be marked as legacy. This step back is a chance to break up with a lot of poor choices of the past.

What's with the PRs being closed?

I've closed Pull Requests in the repository as I don't want anybody doing work on a version of the game we're leaving behind as reference. After talking to a friend I've realized open PRs might not make sense for a game project like Liblast at all. Random people contributing stuff out of the blue would probably hurt the production more then help it. We need a GDD, a production plan and processes to make it happen.

If someone wants to help, they need to get in touch and join the team - then they can become part of it and help in an organized way!

There is a lot of excitement, especially since another member has joined the team just yesterday. I see that my role is primarily to make the project run well, so nobody's time gets wasted, and everyone knows what to do. I'm itching to get down to coding, making art etc, but I must stop myself and first take care of house-holding.

What Liblast needs from me right now is providing a game vision and making sure all contributors have their work cut out for them and can work smoothly.

Wish me luck, wish the team luck, and thank you for sticking with us!

- unfa