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).
- Gameplay and features
- Removed ‘depletion zones’ around bursts, made separate Fire and Block actions
- Made AI more sophisticated & tunable, including the ability to fire ‘blockers’ (still only tuned to one difficulty so far though – ‘hard’)
- Added Singularities that strongly repel or attract anti-gravitons within range (and explode dramatically when found, dropping specials)
- Player inventory for specials (currently only “Blocker”)
- Added little UFOs that appear and fire bursts near the end-game if there aren’t many trails (gameplay-wise this is still not tuned enough and can be confusing – might get cut or change significantly)
- Added a ‘grid mode’, where planets and bursts are placed on a discrete grid
- Instrumented with lots of analytics tracking, added interstitial adverts
- Pause button !
- Tutorial !
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.