This week I made a terrible clone of Canabalt, the seminal endless runner by Adam Atomic.
It's called French Ship (a bad pun) and uses scavenged, beautiful art from Luc Wolthers.
What went right
- Aesthetics (graphically): I'm really happy with how the game looks this week. This has little to do with me, really - it's mostly Luc's incredible art and his great understanding of how art works in games, but I'm happy with how the implementation went. The different layers of parallax moving at different speeds gives a great sense of movement. Simply, it's just a joy to play in something so pretty.
- Minimalist Gameplay: The gameplay is really, really simple. You have one button to jump and that's it. Though it's simple, there is a lot of depth that the pressure sensitive jump (stolen from last week) allows when jumping between platforms and over obstacles. The small leeway period for jumping after you fall off a platform adds alot as well.
- Random generation: I'm really happy with how the random generation of the platforms turned out. The game randomly generates the length, height, type (crumbling), and obstacles on the platform. It calculates the gaps between the platforms depending on the speed of the scroll, so it's rarely impossible for players to make a jump if they've hit some obstacles.
What went wrong
- Dynamism: The game is far from as dynamic as Cannabalt is. There is a higher variety of obstacles to deal with in Canabalt that adds a lot to the game's re-playability. In French Ship the only variation is benches (which slow you down when hit and generate 1-3 at a time); a crumbling platform section (on contact sinks down) and the varying heights and lengths of the platforms themselves. I just ran out of time to add more elements.
- Meta game: There is simply none in French Ship. This isn't that important as the gameplay is still pretty strong, but I think it would keep players engaged for longer if there was a "Furthest Distance Ran:" element on the screen and a "Current Distance" element too. That would keep you keep coming back - because we all know how much people love arbitrary point values.
What I learnt
- Simplicity can hide elegant complexity: Canabalt at first glance appears very simple. It's just jumping between platforms, how hard could it be? Well... the elegant implementation that underlies Canabalt's simplicity is very complex. It takes a lot of logic to ensure the generation of the platforms is very fair - that jumps are always possible. This means you have to track the scrolling speed of the game and check what the maximum distance a player could cross with that speed is. Additionally, the pressure sensitive jump (while not difficult to implement) adds so much depth to the game. Simplicity is often the result of a lot of complexity (don't confuse this for complicated, which has a negative stigma)
Ideas for Future Development
- Obstacles: More of them, that force the player to move and react in different ways.
No comments:
Post a Comment