The game is here: Planet Sweepers. Here’s a postmortem.
For Ludum Dare, I’m a firm believer of using the theme for inspiration and as a restriction to stimulate creative solutions – and then ultimately not letting it get between you and producing a good game. It’s a starting point, not a destination. A muse, not a contract with a client. After I discarded all the the two-world ‘puzzle platformer’ and ‘endless runner’ ideas that I felt were too large in scope for the time I had available, my initial idea involved flying a ship around gravity attractors (and repulsors), ideally being able to toggle gravity on and off at will to enable you to ‘swing’ in circular arcs around the planets – I wanted something a bit like the feel of Clu Clu Land or one of the 3D Spiderman games where you swing around the city. Here are my rapidly typed notes after the first ~24 hours and some quick prototyping:
Initial idea – to create a level with gravity attractors / repulsors & have the player navigate their ship(?) around collecting messages in one world and delivering them in another
Mostly trying to get a certain Clu Clu Land with gravity feel. Change of direction – fixed position satellites, need to fire messages to each other at correct angle to flow through gravity wells. Could work, but initial level design suggested it wouldn’t be fun.
Firing off a pile of ‘messages’ in all directions looks cool. Instead, what about a sink and a source, where you move the planet attractors/repulsors around to make the flow go from sink to source. Fun eyecandy toy .. but again with some testing I think level design will be too difficult, game won’t be all that fun (there are a few tricks .. once you know them …)
This was a combination of “start with a system” Will Wright-style game design, and Miyamoto-style Super Mario 64 garden “make jumping fun first” game design. I made hasty system prototypes of the ‘ship navigating gravity wells’ (without the gravity toggle) and the ‘satellites firing messages around visible planets’ ideas. The feel of flying the ship around invisible gravity wells didn’t turn out as fun as I thought (failed the Miyamoto test), and I think I would have needed to move away from a ‘physically realistic’ inverse square law to enforcing circular paths – I decided not to do that this time.
The ‘satellites firing messages’ idea theoretically could have worked – find an angle that gets the message from A to B through the gravity wells, then repeat for B to C etc. But I found it really tough to design a level where you could fire a particle through the planets an have it end up somewhere unexpected (where the receiver satellite would be placed). I was about to embark on a system for generating these levels (endless replayability !), but it dawned upon me why it probably wouldn’t turn out as much fun … you basically couldn’t predict the weaving path the particle would take to end up in it’s unexpected position, so the player would be likely be reduced to using a ‘brute force search’. The aiming wasn’t intuitive like a game of bocce, Scorched Earth, Worms, gorilla.bas or Angry Birds. So I scrapped that idea.
In the process of exploring how to design these levels, I discovered that the particle bursts migrating through complex gravity wells could be quite beautiful – I resolved to at least make a proper eye candy toy out of it after Ludum Dare, even if it didn’t become part of a game. Then I didn’t do a lot on the second day due to .. having a one year old :) But taking a break and sleeping on it, and taking one long hot shower gave me a fresh perspective on something I could try … and Planet Sweeper was that thing. Same system, gamified differently. But even then, I didn’t set out to make anything ‘inspired by Minesweeper’ – in fact it was only once I was almost done and was trying to come up with a name that I noticed the similarity in mechanics. I don’t actually like the name Planet Sweeper, but it (a) passed the Google test (no major games I could find of that name previously published) (b) acts as a tiny tutorial – for those that make the connection to Minesweeper, they immediately have some basic idea of how to play Planet Sweeper.
And of course Planet Sweeper is right on theme … the worlds (planets) are connected by the trade winds of anti-gravitons, and by discovering them you are connecting them to the network of planets in the human diaspora. Occasionally someone makes a game that really nails it theme wise. I’m well aware that this is not that game – but as I say … use the theme for as long as it’s useful … then make a game. IMHO.
Design and gameplay
Although the feedback was generally positive (for a gamejam game), I feel like Planet Sweepers still needs some extra gameplay elements to make it more interesting. The ‘depletion zones’ were designed to prevent one player poaching a planet that the other was narrowing down the location of … but in hindsight I feel like the game might be more fun if poaching was allowed (especially in a two player game). In future versions, I might instead make the depletion zone blocker a limited use special ability.
The scoring system is currently simple – one planet, one point – and I kind of like it that way. However, it’s pretty clear that hunting down small planets, and finding the last few planets, is trickier than hitting a big planet. I feel like there should be some advantage for working to narrow down a small planet … maybe these will drop specials ? I already have a long list of features to try layering on top of the system (decoy specials, random gravity distorting UFOs that fly past) – the challenge in future development will be to trim this down to just the essentials that work well and avoid featuritis.
It looks like I used a particle effect – and I suppose it is indeed an effect composed of particles … however it’s not actually a “Unity Particle Effect” (eg ParticleSystem). In some of the early iterations while I was trying to find a game in the system, I was only firing off single particles. The multiple particle burst was something I did for testing … then discovered how pretty it looked and realized I needed to use it in the game somehow. As a result, I didn’t go back an rewrite it to use Unity’s in-built particle system since there were no performance issues and optimization would have been premature (especially in a game jam). There may be some performance advantage on the rendering side to using a ParticleSystem, but probably not since (a) the engines batching of draw calls means all of my anti-gravitons that use the same material will only take a single draw call anyhow (b) the movement code will be essentially the same anyhow, since it’s driven by Newtons gravity equations (inverse square law) I’d be ‘manually’ setting positions of the the particles in the Unity ParticleSystem array anyway.
There are no doubt many places I could better spend time optimizing (eg for decent mobile performance), like not using ~500 triangle spheres for particles that render as only ~16 pixels :P . Game jam ! Only optimize if it actually runs slow (and desktop GPUs are just stupidly fast, it seems).
Response, feedback and bugs
From the comments (and final ratings), it seems people generally liked it. There were a few inexplicable bugs reported that seem to be due to typical Unity Webplayer issues (ie, not my bug, just the platform). Post submission, I (or rather LDer and Twitch streamer Marekkpie) discovered a nasty bug – if you miss a turn, the AI goes haywire. I’d made a few last minute fixes to the AI turn handling logic, but obviously hadn’t fixed it. Basically I need to rewrite some parts to make the supervising “Game Manager” actually authoritative in handling the logic of who’s turn it is, and make the AI component a little more independent (so it can easily be stopped if it misses it’s turn). At the moment, the AI has some control over switching which players turn it is, which resulted in the aforementioned bug.
Planet Sweeper was ranked (equal) 20th in the Innovation section, out of 1045 jam entries ! Wowzers ! I guess I’d better flesh this one out for a full release in the future – extra game elements, better AI, mobile versions, super-evil IAPs, maybe even two-screen local or proper online muliplayer. But let’s not get ahead of ourselves :)