🐮 🐮 🌿
Networked multiplayer racing!
The 13th Kajam coincides nicely with the Dos Games June 2023 Jam, so maybe I'll make a DOS based entry. This might make any kind of networked realtime multiplayer quite complicated to implement, unless the game is hosted on a BBS or something. Maybe I'll create a 'play by mail' game where each player takes their turn and then emails the save to the next? Interested to hear what everyone else's ideas and plans are
I will try and put up a post mortem at some point. Maybe I'll even get a finished game out.
For now I'll try to play and rate as many games as I can.
I knew I wouldn't have enough time, but I also know I can make quick simple games in a short amount of time. So of course, I decided to make an open world multiplayer roguelike deck builder, that should be quick and easy! I am not certain if I wrote a single line of code, but I did throw a lot of things in to Unity and made a mess. So, there is no playable game, but at least I can put up a screenshot.
The images are all done via AI programs (specifically Diffusion Bee), except the lizard comes from the Liberated Pixel Cup Character Generator and the card frames come from CraftPix
I do have a theory that game jams are not always about making useful things, but just taking ideas and throwing them at the wall and seeing what happens. It's art, as they say. So, there you are.
Having taken part in every single main Alakajam event until now, it sometimes feels like I'm getting stuck in a rut. So this time, I decided to shake it up a little by (a) using the latest Godot 4 release candidate, instead of the stable 3.5, and (b) going full 3D instead of my usual 2D style:
I had a slow start due to other obligations, which gave me some time to think about the game design. Most of that made it into the final game, but I had some ideas that didn't work as well as I'd thought.
Originally I had implemented tiles with forks (three exit points). The idea was that the river goes down a slope, so the boat would always pick the most downwards direction. If there were multiple options, it would choose randomly. This means the player would need to take both possibilities into account until the boat had made it to the fork. However, it was still possible to make a corner where the river is forced to go upwards, which then wouldn't make physical sense. Should the boat get stuck, or start moving against the flow? Neither would be a great option. Moreover, I found during playtesting that it was easy to always point the "unwanted" exit point upwards so that it always got ignored. We could also say that the river is on a flat plane, and always choosing a random fork regardless of up/down direction, but this made the game too unpredictable.
The other idea that didn't make it was multiple boats. This would have interacted nicely with forks and joins: you'd have to make sure that the boats didn't collide. You could send both down the same path, making it easier to manage, or maintain two parallel paths to increase coverage for collecting stars. I think this idea could have worked, but didn't implement it because time was up.
Godot 4 was a very smooth experience. My entire X server crashed once, but that's unlikely to be Godot's fault; otherwise everything was pretty stable. The editor feels snappier than Godot 3 and has grown a couple of new useful features. I had some trouble with the export, but it turned out it was my own fault. I was listing files in the
levels/ directory to enumerate levels at runtime, but didn't realize that the file names change upon export. Easily fixed with some hardcoding.
Working in 3D was the challenge. Having worked with Blender years ago in the days before the huge 2.5 overhaul, I had to re-learn it on the spot. Fortunately I only needed basic mesh creation and manipulation facilities; everything else could be done in Godot, including textures and materials.
Several hours went into writing shaders. The water shader is the most apparent one. It takes two noise textures, A and B, and lerps between them, using a sawtooth mix factor that ping-pongs between 0 and 1 over time. When the factor is 0, texture B (which is entirely invisible at that moment) is translated to a new location, and vice versa. This avoids a repetitive effect.
The other shader, which is not nearly as apparent, is the one that draws the terrain. The albedo comes from another noise texture, which is put through a gradient map to get some colour variety. Another noise texture is used as a normal map. That same texture is also used as a height map to displace the vertices. You might think I just produced three models for the three different tile shapes (straight, obtuse corner, acute corner), but no: the river is also carved out using the shader.
The water on each tile is just a single plane mesh that intersects the terrain. Unfortunately, that means you can see its edges glitching through the side of the tile sometimes. The obvious quick fix of shrinking the water mesh slightly resulted in the river having seams, which looked worse, and I had no time to fix it properly. The price for working in 3D, I guess.
All texture sampling is done in world space coordinates so that tiles and water match up seamlessly. However, for the tile queue on the right and the "ghost" tile attached to the mouse cursor, local coordinates are used so that these tiles don't seem to change while they move. As a result, when you place a tile, it switches from local to global coordinates and does change shape a little, so I put some smoke particles on top, tweened the vertical coordinate, and added some camera shake, all to make it less noticeable.
Changing the colour scheme for each level was an addition half an hour before the deadline. It's a pretty quick way to add some variety. Because it was done in such a hacky way, the colour of the river on the main menu also changes according to which level you last played, which is actually a bug but I'm branding it as a feature now!
I'm proud to say we uploaded it on time (kind of) .
It was a team effort and wow those were some very intense 48 hours.
The game is far from ready, but we handcrafted the pixel art, the story and the background music. Given that, I think the result is very good.
Enjoy playing! There's no tutorial level, so look out for an explanation in the description.
Just submitted! Currently drinking a celebratory cup of tea. This was a fun jam with very little stress (mostly on account of submitting early)
Here is a quick breakdown of how I spent my time (detailed statistics curtosy of wakatime):
All in all that comes out to roughly 13 hours of development. It's time for some much needed rest!
Wishing everyone best of luck with their submissions!
Here's my progress after 6 hours of development on this game.
Game Jam Progress
i really hope that embeds properly
It's kinda ugly, but maybe I'll improve it later. Currently, the main game loop works fine, and is decently fun. I still need to implement
Anyway, the community has been really nice, and I'm really enjoying participating.
Thanks for the reviews!
Maybe move the whole room into some kind of control tower, so the player has a clearer view of what's happening?
@thomastc I actually spent a... (read more)
A good twist on hexagonal builders like Carcassonne or Dorfromantik! I appreciate the comfort features and liked the overall presentation, the game is well polished.
After a couple wins I... (read more)
This is a nice twist to the bullet hell genre, with a basic attack that turned out interesting and hard to master - basically a reverse grenade launcher without the... (read more)
A fun game to play and a perfect fit for Pico-8, it has a pretty impressive amount of contents with a good variety of skills to discover, of enemies and... (read more)
@maartene Thanks! I can confirm backspace works, but I found another problem … how do I login with my current name when the LOGIN command requires you to be …... (read more)
I found that I could make a bit more progress going backward then forward. However, the canoe is also very fragile. I think this is (for a jam game, as... (read more)
No wonder all the other fish are mad at you, if your breath is bad enough to devastate the entire river eco-system :-p
The more comments there are, the more... (read more)
Playing on a laptops touchpad is hard-mode! (I knew I should've gotten the mouse out for these last minute plays.) At some point I just stopped catching and defended my... (read more)
Very cool puzzle game and a nice interpretation of the theme. I also tried to go for a puzler this time, but your game turned out so much better. Job... (read more)
oh wait maybe İ could enable it