I released a game!
A videogame! From me! Can you believe it? I can hardly believe it myself. So,
Ghost Croquet is now out of Early Access!
The game
Ghost Croquet is a platformer game with asymmetrical versus multiplayer (both local and online) and single-player modes.
In multiplayer, one player is the hero. The hero’s goal is to get through a level alive.
The rest of the players are the ghosts. The ghosts can posses a variety of monsters and hazards, such as these:
The ghosts’ goal is to kill the hero. When that happens, a new hero is chosen (with some weighting towards the killer, if any), and the cycle continues.
While in hero form, the player can collect gems (to spend on upgrades for their next attempt) and there are a few more things to consider, but that’s the gist.
Local multiplayer mode can be played with up to 4 people (or 6 if you’ve got a wide monitor or are willing to deal with occasional UI overlapping).
Online multiplayer mode can be played with up to 8 and features Steam-based networking, invitations, public/private lobbies… just about everything that you might expect from a game that I did netcode for, really.
In single-player, you don’t have your friends/enemies to make the levels harder, but don’t get too excited - even though all of the game’s levels can be beaten in under a minute if you’re crafty, it might take a bit of practice to get your first win on each.
Apart of the levels themselves, there are also challenges (can you beat a level quicker? Without upgrades? Or while killing every monster?), an arcade mode (with a sequence of levels and a leaderboard for best times), a level editor, and Steam workshop for looking for/putting levels on.
The story
The first version of Ghost Croquet was made for Ludum Dare:
I did systems programming.
Nick (ampersandbear) did most of the game code.
Spritework was based around an resource pack by surt (@not_surt).
@collapseboy did the music.
Although a little janky, this version of the game contained many elements that you can find in the game today. And it even had online multiplayer!
… as we soon found out, making a multiplayer-only game for a jam isn’t such a good idea, even when it’s online multiplayer - if the player has dozens of games to look at, they won’t be grabbing a friend just to test yours for a few minutes.
But those who did manage to play the game seemed to like it, so we later decided to expand on the concept and release it on Steam (going through then-functional Greenlight).
Early Access
A year of on-and-off work later, we’ve released the game on Steam as an Early Access title.
In this initial commercial release, we have added a local multiplayer mode, a level editor, a proper menu, and generally it looked much closer to the present-day game, though still a little unpolished… and running at 30fps because no one had complained about it yet and we didn’t think much of it.
The plan was to get some player feedback, gather a little money to commission additional art/audio assets, and do a full release in a month or two.
Things don’t always go according to plan in indie games - even though people were enthusiastic about the game when shown GIFs of it, we soon found out that very few were actually willing to try it out, and we’ve had little to no success with getting press to cover the game.
And that’s a chicken-egg kind of problem - people don’t want to buy a mostly-multiplayer game that no one plays… or generally an EA game with ~3 reviews total.
We later improved the tutorial and the single-player parts of the game so that it could still be enjoyed even if you don’t have anyone to play with, but this didn’t have any visible effect on sales or the game’s overall visibility.
Then, I started working on a whole bunch of games (touching 5+ different projects in most years), Nick also got busy with work (occasionally joining me on contract projects as an additional programmer), and Ghost Croquet’s development became slightly more… occasional.
“More videogame”
Over the next few years we would revisit Ghost Croquet between contract work, usually with the same question - “Are we done here, or should there be more to the game?”. And, time over time, the answer was “Well, sort of, but it would also be nice to have…”
60fps?
That’s been a lot of work, especially since this game is a platformer and you would definitely notice if the player jump height was a few pixels off.Trading cards?
Gotta have them - especially since we’ve had a draft submitted a while ago and didn’t have to wait to pass the mystery criteria that new games do.Better netcode?
Well of course - since we’ve already figured out the common issues while working on Rivals (TLDR: some people play on choppy WiFi with packet loss of 30..50%), I’m gradually bringing small counter-measures to my other works.
In short, if your “reliable UDP” packets are small, you might as well strap a couple previous packets to each of them - this will slightly increase bandwidth, but will allow the game to lose a few frames worth of packets without having to wait for the remote player to hear of it and send them again. And that makes the game much smoother!Stranger netcode?
At one point we’ve done an experiment with delay-based netcode and time-traveling validation: so on your end you would see your player move without input delay, but your real player instance would move (delay) frames later while checking for where things were (delay) frames ago.
This was not a good fit for Ghost Croquet with its moving blocks and numerous interactions between game entities, but I think that the idea has merit for some types of games.A collaborative level editor?
Sounds fun for level prototyping, but a terrible thing to deal with implementation-wise. Perhaps some other time, preferably never.BOMB PONG
A new game mode! It’s good fun.A little more polish?
There are many small tweaks to animations, controls, and UI - many of these aren't easily noticed without comparing old/new builds alongside, but they do add up.
Sometime in late 2023 we have finally decided that maybe that's enough for a full release, and after some more finishing touches, here you have it - the videogame.
What's now and what's next
With the game having launched almost a few days almost a week ago, we've been mostly fixing bugs when people report them.
Most of these are small; some are GameMaker bugs - for example, we found out that calling the "add tags to a Workshop item" function from the official Steamworks extension causes contents of random arrays to go missing. Very cursed.
Having watched a bunch of people play the game for the first time, we've made some improvements to the tutorial, added a few new settings, and generally made the game a little nicer.
There are still some things to think about (e.g. we’ve noticed that some people consistently forget to buy upgrades from the shop in single-player mode), but we'll get there.
And that’s about it, I think! You can find the game on Steam or read the full release notes here.
Thanks for reading, and see you later!