A great idea is awesome, but one is never enough. A great game is usually one great idea evolving into another. Half-Life starts as a shooter, but then throws in the-floor-is-made-of-lava (the first antlions level) and eventually adds elements of capture the flag. Angry birds starts as knocking things down, and doesn’t really change, but does add a bunch of cool characters that massively change the dynamics. Even the first Mario Bros., a platformer, had swimming levels.
Likewise, dropping a puck from top to bottom probably won’t be enough to carry players through 20 hours of gameplay. We’ll need surprises and new gameplay elements about every 10% of the way through.
In keeping with this goal, we’ll break the game up into 3 main sections:
- Feed the pets by dropping fruit top to bottom (the initial idea). We’ll try to keep this short, maybe 20% of the game, since it blurs the line between flow control and program state (a melon getting sliced is a state change, but the melon also represents flow control). Surprises come in the form of new keywords and new tasks (rescue the pet rather than just feeding them, refactor verbose code, optimize code speed)
- Move the entire concept of physical machines into virtual machines inside a dev-board. Once players are associating an if-statement with physical switches, and Boolean values with light switches, we can make the machines virtual, inside an Arduino-style dev-board inside the game. This allows a lot more cool tasks within the game as we’re no longer limited to just feeding or rescuing the pets. We can expand into pinball tables, plant waterers, K-Mart electric pony rides, electric cars, drones, vending machines, autoturrets, and robots. We’ll start with a simple pinball machine, wiring up push buttons to solenoids that drive the flippers. Tasks and projects will be overlapping: we’ll keep coming back to it throughout the game to keep score, launch multiball-mode, and do cool text animations on the score display.
- Collaborative play. If it tests out well, it would be cool to let players collaborate. While not super well planned out yet, this would probably be some kind of RTS style gameplay overlayed on the programming gameplay. Think Farmville, but with programming tasks involved. And friends. And trading parts you earn from each level.
Virtual devlopment board mode