Ludum Dare 23
I’m adding a couple of things to the post-compo version of Pico Planets, mostly driven by the feedback I have gotten on my submission so far. Top two critiques have been: 1.) a way to reset if you drift off into space (v1.1, available at picoplanets.com/latest/ now kills you off quickly if you’re drifting away); and 2.) more levels.
Making good levels is tricky. When you’re typing in planet coordinates and radii by hand, it’s hard to tell how it will turn out until you test it. That process takes far too long. Instead, I figured I should build a simple graphical level editor.
Level editor preview: http://picoplanets.com/latest/editor.html
Right now, you can add, move, and resize planets and suns. You can also move and resize the goal planet and change the player’s starting position. The result is a JSON string outputted in a text field below the editor. Unfortunately, the game currently does not accept this kind of input. So, the next step will be to update the game app to make the levels dynamic, rather than hard-coded like they are now.
The blue ring highlights the selected planet, and the little dot is the resizing handle. You can drag the stage around in case you want to lay out a large level.
I’m pretty excited. With about an hour to spare, I submitted my entry for LD #23.
Just like everyone else, there’s a lot I would have liked to add to the game, but simply didn’t have time. Ultimately, I’m really pleased with how far I got in the time allotted. I think the biggest missing piece is the lack of sound, but I would honestly rather add optional stuff, like power-ups (like additional oxygen) or more hazards (like orbiting satellites). More levels would be cool, and a tutorial at the beginning would probably help. It would probably also be smart to detect that a player is drifting off into space and let them start over quickly, instead of waiting for their oxygen to run out.
But ultimately, I made a simple game that works and is fun. It’s also fresh and different, albeit a little discombobulating..
I added a fun little animated intro screen. It was rendered without the black background so animated stars could be rendered behind it at runtime.
To see it animate, go to picoplanets.com
Now our intrepid hero can see the path laid out before him thanks to these handy new preview maps!
Also, I just copied the game over to its own domain: picoplanets.com
To keep the game mechanics as simple as possible, I decided to focus on the puzzle aspect of getting around a solar system without any thrusters (jump and see where gravity takes you!). To make it more interesting and challenging, I added a timer—a limited oxygen supply. So, in addition to getting burnt to a crisp by the sun, you can now suffocate! Yeah!
My game involves hopping around from tiny planet to tiny planet. Might as well add a sun to the mix! Get too close and you get burnt to a crisp..
I added a “jump meter” that powers up as you hold SPACE. The more you power up, the higher you’ll jump!
Take the game for a spin here: brianshaler.com/planets/ (it can be kind of dizzying, but it’s fun to try to get caught in orbit)
The hacked-together, comment-less source code for my CoffeeScript+Processing.js 2D rotating platformer is available on GitHub here.
Any version I show others (on my site) will be pulled from the latest version on GitHub.
Fortunately, jumping around on planets wouldn’t really change your perspective of the stars, so leaving them static kind of works. It would’ve been great to have the stars scroll, as it would make movement more evident and add more depth to the scene. It would also make it feel like you’re watching from a distance, as the stars wouldn’t be moving, only your viewport.
Here, our brave hero is lost in space after jumping just a little too high:
I heard about Ludum Dare 23 about 4 hours after the theme was chosen. Loved the idea but was doubtful I would participate. I saw a bunch of people still at the drawing board and brainstorming ideas hours after learning of the theme, struggling with the theme of Tiny Worlds. For me, though, inspiration came pretty quickly.
Taking a fairly literal interpretation of the theme, I thought about a game where planets were tiny and you had to jump from one to another. Now, that doesn’t sound too terribly unique and exciting, but the way I envisioned the 2D platformer being rendered could make it fun and interesting.
Which way is down? If you were hopping from planet to planet, each time you would land on a planet, your definition of “down” would change. Essentially, “down” is relative to the character’s orientation, which is relative to the nearest planet.
What if you miss? Imagine if you were actually jumping off a planet—how would you adjust your trajectory in-fight? Unless you had thrusters, you wouldn’t be able to. So, there becomes this inherent risk when jumping from one planet to another. If you miss, you may drift off into space!
While hanging out in IRC, I saw people starting different areas. They were either working on ideas, or sketching things out, or designing actual assets, or working on a soundtrack, or working on code. I jumped straight into code.
Using CoffeeScript and Processing.js, I started putting together a <canvas>-based motion/physics sample. Using circles for planets and a rectangle for the character, I was able to put together a proof of concept. Screenshot:
One of my inspirations for this was actually from Dragon Ball Z Kai, where the main character Goku trains on a tiny planet (similar proportion to above) with massive gravity. To leave the planet, you’d walk to the part of the planet you wanted to jump from and then you would jump straight “up” (away from the center of the planet in the current direction).