React Jam 2023

Just last week, I fulfilled a long standing dream of mine: I participated in a game jam. React Jam may not be the most prestigious out there, but as I'm kind of good with React it was easy for me to create and finish something.

I started in the jam without any intent of winning one of the challenges. But as jams go, I was in it to try something new and so I decided that I would follow the rules of both challenges. That meant creating a game running on the Rune platform, the jams sponsor.

Good: Everybodys tech stack

This was the first time I used Vite for anything but playing around with it and you know what? It's fine! To no ones surprise Vite is fine! I just wanted to say that.

Bad but I like it the way you like an ugly dog or something: My game

Yeah, no need to sugarcoat the fact that my game is pretty bad. The UI is bland and confusing, the tutorialization is lacking (as in "there is none") and while the game system itself should be fun it is severly underdeveloped. Still, it's totally playable and I had fun creating it, so I still count that as a win.

Before the jam started I thought about making a simple card game but when I read that the theme is Party my mind immedeately hyper-fixated on party games like Avalon, Werewolf or Secret Hitler. So I just hacked together the scaffolding of a game like that in an afternoon. Every player got assigned a random role and could guess the roles of every other player. The one with the most correct guesses won. It was supposed to be played when meeting with friends over the course of a whole evening (or whenever you meet your friends).

The following week I put in a few roles with different abilities that help the player discover what roles the other players have. As I found that there was no reason to actually take out your phone and do anything until finishing up the game and just putting down your guesses I also added a system where you have to collect points every few minutes. Now everybody collected their own points and also got the points of every player they correctly guessed the role.

That also directly influenced the theme I (lightly) put on the game: Players were now office workers that are assigned mind-numbing tasks to their todo list and just try to look as busy as possible by claiming the work results of their coworkers for themselves (by guessing their roles).

I still find the ideas intriguing enough, but as I said the actual implementation isn't very good. Maybe one day I will follow this up with an actual game. It'd be pretty fun to implement this as a hybrid physical card and mobile game I think!

Weird: The Rune SDK and platform

Generally, I like the idea of Rune. It's a platform for multiplayer games that handles stuff like user accounts, friend lists and voice chat. It's still kind of new-ish so we will see if they can actually keep all their developer friendly promises, but right now most things about Rune seems nice.

The SDK is basically just an elaborate state handler. I define what my game state looks like and then define some actions to transform that game state. On the client, my renderer has to react to changes in the game state and may call actions to change the game state. The framework then executes the action on my client for fast response times while simultanieously sending the action to the server where it is checked against the server logic. When the server says the action is okay it's forwarded to all the other clients. When the server can not confirm the action my client has to roll back.

That's not exactly elaborate netcode, but for many use cases this gets the job done just fine. I'm not creating a fighting game after all, so nobody will scream at me for not doing rollbacks, doing too much rollbacks or doing rollbacks wrong. I have know next to nothing about netcode and even less about fighting games, but everybody seems to be angry about rollbacks all the time. Anyway, the Rune SDK frees me from writing all the necessary boilerplate for state synchronization myself.

Still, all in all, I find the SDK and platform to still be a bit lacking. My biggest complaint is how the platform currently only supports a small number of types of games (if you care about people not cheating in your games). The game state synchronization always synchronizes the whole game state across all of the clients. So there's just no place to store hidden information in a secure way.

I made a game about hidden roles and the roles are just ... there. Your browser receives the roles of everybody else and if you know where to look you can just do so. And that's extra bad considering that everything about Rune just screams board game and most board games have some kind of hidden information. Looking at the BoardGameGeek Top 50 the only game I can confidently say could be created on Rune is 7 Wonders Duel. (To be fair, I didn't play them all yet and it's been a while for a few of them - I think Barrage had a stack of cards?) And it's extra extra bad because when reveling the jam theme Party they even listed several games with hidden information as examples that could be build. And it's extra extra double bad because the Rune documentation lists those exact games as great examples of games you could create with Rune.

Great: Game development

Turns out liking games and liking development translate into liking game development for me. I tried it a few times in my life and always bounced off hard. Turns out that was a me problem. I just didn't have the time nor the energy to get into the bazillions of things I thought you needed to know to develop games. I remember fiddling around with unity and then just giving up when trying to learn their UI stuff. I also remember doing something in Java (yeah, I did that once) and then just giving up when I had to read up on texture atlases. And there's also this thing I still pretty much love the idea of but that uses a tech stack I hardly ever use anywhere else.

But now I learned I don't need to know all that. There's a tech stack I already know, an ecosystem I can already navigate and ressources I can use that are totally capable of producing games. Hobby game development is possible for me and it looks like I'm already in! I just developed a sucky, but fully functional game! There's so much stuff rolling around my head right now I kind of wish I was done already with Meeple Party. But I still love Meeple Party and it will absolutely be open for registration in the coming weeks and I will support it, promise! But after that ... there's a game idea I have, you know?