Planet Sweeper development update

Since people seemed to enjoy my Ludum Dare game “Planet Sweeper”, I decided to develop the prototype further. The aim is to expand on the basic “particle flow reveals hidden objects” idea to add some depth to the game, polish everything, and build versions primarily targeted at tablet devices (iPads and Android tablets), and maybe the web and OUYA. How time flies when you are having fun – it’s been 5 months since Ludum Dare 30 and no progress updates, so here we go. Progress !

Here’s a rough rundown of the work I’ve done on Planet Sweeper since the initial prototype:

Visual improvements and UI

Added space backgrounds

Gave planets rings, moons and nicer textures

Clearer markers of previous move positions

Added fire button to a retracting side panel, removed ‘tap to fire’

Expanded title screen & menu, added some shiny robots

Nicer transitions between screens

Experimented with an accelerometer parallax effect (result: looked fancy, but there were bugs and issues that could interfere with gameplay, so as something purely cosmetic it may not make it into the final game)

Performance improvements

Optimized gravity calculations using pre-calculated vector fields

Optimized rendering to use less draw calls, less vertices in spheres, smarter use of materials

Experimented with various trail renderer implementations (result: still using Unity’s native TrailRenderer because it looks better and is more efficient than the scripted alternatives I tried, however I’d like to optimize one of the alternatives since they are more flexible than the closed-source Unity version, which also uses one draw call per trail – I think I might be able to do better).

The most significant gameplay change I’ve made from the Ludum Dare prototype is to remove ‘depletion zones’ around where a burst was fired and instead added separate Fire and Block actions. This makes competitive play more interesting since it’s much easier to ‘steal’ a planet that another player was narrowing in on. The ability to place a ‘blocker’ zone before firing allows you to protect a spot where you think a planet is hiding, saving it for your next turn and preventing your opponent claiming it – you can then search in a second potential location in the current turn and come back to the blocked area in your next turn.

The other more obvious feature is the addition of a “Grid Mode”, where all planets and bursts are placed on a discrete grid – this was a bit of an experiment and I’m still figuring out what to do with it. The idea behind ‘grid mode’ is that it makes planets easier to find by limiting the number of possible locations. It does achieve this, however because the anti-graviton particles move independently from the grid it can actually feel frustrating sometimes when you know where you want to make a move (near an inflection point of a trail) but the grid won’t allow you to make the move exactly where you want. Overall it doesn’t feel dramatically different to the “Open Space” mode to me, making it seem a little redundant. As a result “Grid Mode” might get dropped from the final game, or alternatively become the only mode in order to simplify things.

There are many decisions still to be made. Should I add a local network multiplayer mode ? I’ve done some preliminary work, and it will take quite a bit of time and effort to implement this properly, and will add complexity and the potential for ‘technical debt’ to the codebase … all for a feature that may turn out to be rarely used. How about an online turn-based mode ? I expect this could be more popular, but it would take considerable design and technical work to implement. If so, which service for authentication, friend finding, matchmaking and hosting turn-based games ? Despite my own personal preference to avoid Facebook wherever possible, Facebook accounts for authentication and friend finding currently seem like the best cross-platform option to attract the largest number of players. I have a page of notes summarizing the pros and cons of many possible setups. My inclination is to initially ‘soft launch’ the game without any network multiplayer features initially, and add them if the single player modes prove to be popular enough.

Another important question to consider is how I will ‘monetize’ this game ? I want players to enjoy it for free, but I’d also like those that really appreciate it to be able to financially support the development of Planet Sweeper and future games. At the moment I’m thinking I’ll go for interstitial adverts at the end of each game, with an single ‘upgrade to premium’ in-app purchase option to remove them. Slapping on advertising is a slightly lazy approach and probably won’t make much money unless download numbers are huge, but I feel like this allows the best of both worlds. It also avoids having to completely redesign the game around the monetization strategy (eg virtual currencies etc). Later, other features might only be available in the premium version.

There are still a bunch of features on my core TODO list – a solo mode vs. the clock, more ‘specials’, AI difficulty modes, extra/new music, improved robot models as well as a huge pile of features on my ‘nice to have but not essential’ list, but the game is approaching a state where I need to do wider playtesting to guide any big decisions about new features.

If you are interested in testing, join the OMGWTFGAMES !1!! Beta Testing Community on Google+. I expect I’ll be posting an alpha version there sometime soon. I haven’t figured out how best to handle iOS yet – I’ll have to look into TestFlight or The Beta Family and decide how to best jump through the hoops.