On Software, Shipping and Success

One Week to Make a Game: #vibejam 2025, Part 1


First There Was Water
I wrote a game for the #vibejam.

Announcement came out, one week to build a game using AI.
I saw someone else’s beautiful water animation and I knew I wanted to incorporate it into my game.
I also saw someone build a sailing game. I thought sailing by itself would be a bit boring.
How can we make it more dramatic? Add massive waves and tsunamis.

I spent some time trying to implement the physics required to do this.
Turned out to be non-trivial.
After two evenings of coding I had an ocean along with a simple ship.

Once I gave up on the idea of implementing wave physics, I thought the next best thing was to give the ship cannons and make the game multiplayer.

I started with implementing bots to test ship explosions and collision logic between cannonballs and ships.
For display I used Three.js. For physics I used the (conveniently named) Cannon.js.

It was a breeze.
However, the bots now had to do something.
And making them move in an intelligent way wasn’t as trivial as I hoped.

First I made them roam the waters, and if the player’s ship got close enough, they would engage in combat, try to circle the enemy, face one of their sides, and fire cannons.
I got this to work, with some trouble.

The next few days were spent making the game a bit of fun.
It needed waves of opponents, different types of enemies, and obviously, a boss.

Each wave would spawn stronger ships.
To offset that, the player needed upgrades.
I built a simple skill tree, with the ability to unlock more cannons (up to three on each side), stronger cannonballs, and better ship armour.

The game was in good shape and ready to submit to the #vibejam panel.
Multiplayer wasn’t working yet, and I knew a single day wouldn’t be enough to build it, and to be fair, I only had a few hours a day to spare, with client work and other responsibilities still going on.

Everything was well.
But then… the contest was extended by another week.
And I knew I had to implement multiplayer.

This is when the pain began.

Multiplayer server...

Let’s just say… everything broke.

More on that in Part 2.

© 2024 getwebwizard blog. No rights reserved.​ Sharing is caring.​