13 minute read

Blast away to defeat swarms of enemies while harnessing the power of a constantly bouncing orb!

Art by ƒ(Dis).


Lapis and Rhubarb: The Orb of Doom was made in about 8 days for the Godot Wild Jam #75. It was made with Lyon, Quenched Disorder (Gopher), and ƒ(Dis) (fisdunc). The Jam’s theme was “Reflections”.

The Jam

Godot Wild Jam #74 was a decent experience for me. I was really enjoying how the jams were run and the relative size of the community. Plus I felt I was getting into a groove with making games. Not that they were easy now, but things were getting easier. At least the making them part. Coming up with ideas I still was struggling with. I figured I should do at least one more jam on my own before diving back in and working with a team. That was the plan, at least.

The Theme

“Reflections” is really good jam theme, but a challenging one. There are a lot of obvious tropes and ideas that fall out of that, such as laser puzzles (and there was no shortage of those in the submissions), but “reflections” are so much more than just light bouncing off things. Really, a reflection is anything bouncing off of anything, sound and objects reflect just as much as light does. A reflection can be something that defines someone, an action a reflection of someone’s character, a person can reflect on the past and present. So much that can be done with this idea.

But as I said, it’s a challenging theme. Because even the most basic interpretation of the theme, a laser puzzle, is hard to do. Lasers, and reflections as a whole, are hard to do! And, while I’m getting ahead of myself here, of the 60 or so entries I played, so many of them got the physics of reflections wrong. Sometimes that didn’t matter, but other times it did, and it was very distracting.

Anyway, from the moment the theme was revealed, I was incredibly excited to see what other people came up with around this theme. But what would I do for this jam?

The Plan, part 1

Working alone again, the idea was simple. I’d make a story about a man confronting his dying wife. As they “reflect” on their past, they would relive their memories in the form of a series of mini-games. I was thinking this would be a good way to flex my abilities, essentially making three different games.

I came up with some ideas, struggling to find a third memory for them to live out. I slept on this, and when I woke up, I scrapped this idea. And I scrapped it for one reason: this is not my story to tell. I’ve never had a wife, let alone a dying one. I worried I’d put all the wrong emotions into it. Meh, it wasn’t that good of an idea anyway.

The Plan, part 2

At this point I thought to myself, “what are some games I’ve played that have reflection in them?” Reflection in this context really meaning any kind of introspective talk. And it hit me, one of my favorite games, Getting Over It with Bennet Foddy! I would recreate this game and… I don’t know… reflect on my journey through doing game development? Yeah sure, why not?

The Work, part 2

So I got to making the game and immediately ran into a major roadblock: the physics. The physics of GOIwBF are… nonsense to say the least. They are mind bending, asinine, and downright evil. I spent basically the whole day trying to get this working and, while I did get somewhere, it was a struggle, and I wasn’t enjoying this struggle. Plus the connection to the theme was quite weak. So I scrapped it.

A janky, default-looking Godot scene where a buggy Getting Over It-like character moves around the screen.
The failed prototype of Project Bookends

The Fall

Once I gave up on this, I resigned to making something more straightforward, a simple push-block laser puzzle. I tried to come up with some ideas for it but my heart just wasn’t in it.

Hoo, man… three failed ideas at this point, not to mention the flurry of other ideas I had that all just kinda sucked. I was at a low point here. I felt dumb and weak. That maybe I’m not cut out for game development. No, no I can do this. I just…

I need to make someone else’s idea. The problem is it’s my ideas that suck. I can make someone else’s bad idea just fine. At the very least, it would be easier than beating myself up over my own bad ideas. I need to join a team.

The Plan, part 3

Lyon had posted in the team-up chat of the GWJ Discord server that his team was still looking for an additional artist and programmer. I messaged him and waited. He got back to me rather quickly and invited me to the team discord. It was only then that I learned the team did not yet have an idea. Honestly, I was more hoping for a team that had an idea but was struggling to realize it. The last thing I wanted at the time was to have my idea be the main one. So I generally kept quiet on ideas and pushed other people to come up with things, only providing small mechanical ideas.

Dis, our artist, then posted their idea early Sunday morning. It was surprisingly complete on its own and, after some riffing back and forth, we had a solid concept. And this concept resembles the final game shockingly closely.

Central ring, player controlled units can only move around this [ring]. Power core in the center bounces between both player controlled units. Left side unit controlled with left analogue stick. Right side unit controlled with right analogue stick. Enemies approach from the outer edges of the screen from all edges. As player moves to attack enemies, the trajectory of the power core will change when it bounces off [their back], sort of like a game of pong. When the core strikes the backside of the player, it powers up the unit, giving it increased damage/fire rate/etc. If the core strikes the perimeter of the ring, the player takes damage. If an enemy reaches the ring, the player also takes damage. Too much damage and the player loses, obv.
Early concepts (art by ƒ(Dis))
Concept art for Lapis and Rhubarb. Lapis, on the left, is dressed in sci-fi garb, has pony tails and glasses. Rhubarb, on the right, has more witch-like clothes, with a witch's hat and a skirt. Her eyes are covered by her hair.
Early concepts for the main characters (art by ƒ(Dis)). I came up with the names :)

The Work, part 3

This was exactly what I was looking for. A weird but game-y idea that, most importantly, was someone else’s idea. I was so excited to get to work on this, so I started making a prototype right away. Within a few minutes I had sprites rotating around a circle. A few hours and we had the power core bouncing around the center. The next day we had enemies and health. Things were going smoothly, at least on my end.

An early prototype of Lapis and Rhubarb: The Orb of Doom. Two Godot icon sprites spin around a central point chaotically, demonstrating that controller controls are working. An early prototype of Lapis and Rhubarb: The Orb of Doom. Two Godot icon sprites spin around a circle, with another smaller circle bouncing between them and the edge of the larger circle. An early prototype of Lapis and Rhubarb: The Orb of Doom. Hundreds of Godot icons swarm toward a central ring with two nondescript characters shooting at them from the center. A ball bounces around the central ring.
Early prototypes. After making the third gif, I joked we should pivot to making screen savers.

For the next few days, every line of code I wrote empowered me. Aside from a few small things, I knew how to do everything already or could figure it out without much effort. I was in flow state, and nothing could stop me, only slow me down. I attribute much of this flow state to my team, who supported me with ideas about how to solve any issues I came across and, most importantly, did the work they said they were going to do! Though I was skeptical if they would at first.

I was a bit concerned for our artist. Dis was committing themselves to a lot of art, and seemed to be interested in making a very visually detailed game. Luckily I convinced him to dial things back by abstracting the action of the game a bit. He still had a ton of work ahead of him, and with this being his first jam, I didn’t want him to burn himself out. I think we hit a happy medium between detail and time, and I love the look of the final game.

As for our composer, Gopher, we were over half way through the jam and we hadn’t heard much from him. Speaking from past experience, I had a deep concern in my gut that he was going to bail on us, but I am happy to say that he didn’t! He had committed early on to making Touhou-inspired music, whatever the hell that means. When he finally sent us the song he’d been near silently working on for the last few days, my mind was absolutely blown. He sends us this complex, rich, layered piece with time signature changes and what sounds like 40 different instruments flying all over the place and its just…

When I heard this song, I knew we were making something special. I had an inkling when I saw the initial concept art for the two main characters that we’d make something pretty cool, but now? With cool art, cool music, and cool gameplay, I was certain we were making something worth every ounce of effort. And I was even more empowered than before.

An early prototype of Lapis and Rhubarb: The Orb of Doom. Hundreds of Godot icons and monstrous enemies swarm toward a central ring with the two girls shooting at them from the center. A wave of icy energy flows over the crowd, freezing them in place as it touches them. They then unfreeze a few seconds later, thawing from the inside out. It looks really cool.
Not only did this ice power look cool as hell, it also worked the very first time after writing the code for it!

We had more and more sprites and assets rolling in, the game continued to look and sound better and better, which only made me more motivated to realize this idea. The only thing that concerned me was how other people were doing. Lyon had been working on a shop UI, which we had to scrap due to time restraints. He then pivoted to doing other UIs, like the pause menu, main menu, and options menu. Gopher was working on sound effects still. I had sent out some tweaks for him to make since I had trouble hearing some things through my shitty laptop speakers. He was a champ about it though, and did a perfect job with those tweaks. Dis was working away at finishing up the enemies, the backgrounds and, what I would call my favorite piece of art from the game, the key art and main menu. It is simply glorious.

The key art Lapis and Rhubarb: The Orb of Doom. Lapis and Rhubarb or positioned in the upper left and lower right respectively, each holding their arms out as if they are shooting their magic bullets. The Orb of Doom rests between them, energy escaping from it in sparks. The two layers of the magic circle rest behind them. The corner behind each girl is colored with cyan for Lapis, and red for Rhubarb.
Lapis and Rhubarb: The Orb of Doom (art by ƒ(Dis))

As I mentioned, we had initially planned to do a shop. We wanted to do an endless mode and make that the focus of the game. But one thing I’ve always liked in jam games is when they have a clear ending. So I pushed for us to do a boss. In fact Dis had made a concept for a boss early on, so it worked perfectly. Saturday, the last full day of the jam, was spent with me making the boss mechanics work and putting Dis’s beautiful sprites in for him. Making The Doomer is, honestly, one of my favorite things I’ve ever made for a game. He was slapped together quickly and imperfectly, but he was satisfying to make. And satisfying to kill! The team did an excellent job with him, and I’m very proud of how he came out.

I also have to attribute some of The Doomer’s success directly to Gopher, who did some tedious work tweaking the game’s numbers. What I had that Saturday night was fine. Good, even. But Gopher then took it up a notch and really made it a “jam game” with his tweaks.

We spent the last day doing UI. We made the gameplay UI not absolute hot garbage and, shockingly, managed to make a functioning interactive tutorial. Lyon set up the prompts and the controller for it and I integrated it with the main scene. I finished the first draft of the tutorial some 30 to 45 minutes before the deadline. We fixed up some bugs, particularly with text and some controls, and we had just under 8 minutes left when we submitted. What a rush that was. And stupid. Stupid to wait that late, but a rush getting it done no less. Gopher even woke up in the middle of his night to make sure our goofy selves submitted on time. Good lad.

The End

Final gameplay of Lapis and Rhubarb: The Orb of Doom. The Doomer floats around spawning enemies from his hands and teleports to different corners of the screen. The girls move around the central ring and shoot at all the bad guys.
Final gameplay

We celebrated. We cheered. We cried. Ok, maybe that was just me. But either way, finishing this game felt triumphant in so many different ways. For one, it was good. It looked good, it sounded good, and played decently well. It is a game I am happy to put my name on, something to be proud of.

And if that wasn’t enough, it was a blast to make. The team got along together quite well, each of us doing our tasks and doing them well. I wish it was more organized, but that’s hard to do in a team with no leader. That’s right, we didn’t have a clear leader on the team. And I think this contributed to our success in many ways. We kind of just all managed our own work and took suggestions from others. We sort of had our own domains we worked on, and they all happened to come together nicely.

And if THAT wasn’t enough, people actually liked the game! We got so much praise for the art and sound and a lot of praise for originality. We wound up with 6th place overall and 1st place in originality. Personally, I think we deserved higher in graphics and audio (7th and 6th, respectively), but it was some steep competition. Oh, and the game that won the jam 100% deserved it.

However there were some fair criticisms, in particular the abysmal keyboard controls and preference for a controller. We took some hits on controls and accessibility for that. But I don’t think we could have done much about that, the game was designed to be controller-first. Ah well.

The Lessons

  1. In order to make a good game, you need to have a good team.

    The team doesn’t need to be the best at what they do. But they need to be responsive, communicative, and driven. The team has to be good, it has to be functional, the members themselves can vary in skill. And, mercifully, this team happened to be quite functional.

  2. Controllers should not be the primary control method for jam games.

    This should have been obvious. I play 99% of jam games with a mouse and keyboard, and so does everyone else. No one wants to go grab their controller (and maybe a cable for it) just to play a game for 6 or 7 minutes. I’m not saying that making controller-focused games is a bad idea. But for game jams, mouse and keyboard are king. In retrospect, I think we should have gone with a different idea to avoid this issue, or changed the gameplay in some significant way to make it more tolerable on keyboard.

  3. I need to write more readable code.

    When making games, I often throw out many principles of clean code I use at my day job. And this is for good reasons sometimes. Often Godot doesn’t support certain language features that enable clean code, such as the lack of privacy for methods and variables (and you’ll catch me dead before I start a variable or method name with an underscore). And, critically, clean code slows things down. Not by a ton, but every second counts in a jam. This time around, three different people had their fingers in the code, and I wrote a large chunk of it. And everything I wrote was a massive knot of spaghetti code. It made sense to me, but there are some clear deficiencies. I need to get better at using signals, I know. And other things. But these things come with practice and time, just have to make a conscious effort.

  4. No really, I am capable of making something worth playing.

    SUFFER.er showed me this as well, but LaRtOoD was above and beyond. Because this time, I actually like the game that came out the other end, whereas SUFFER.er is painful for me to replay. I am capable of making games that I enjoy making, I enjoy playing, and that other people also enjoy playing! I never thought I’d see the day, but here we are.

What’s Next?

Making this game was satisfying. Empowering. It made me see the magic in game development once again. The magic of making something as complex as a video game at all, let alone on such a short timeline. In a time where I was not only feeling drained from my day job but also in a bit of a slump with game development, working on this game has helped get me back to baseline. And the reason for this is solely the team. Lyon, Gopher, and Dis, thanks for making something special with me.

As for what’s next? Damn if I didn’t have a blast making this game, and I want to keep the magic going for a bit longer. So we did a post-jam update!

Updated: