We recently took part in the Jupiter Hadley Game Jam, and are very proud to have won the award for Best GameMaker Game with our game Hopper.
In the game you play as a planet hopping dinosaur, jumping between planets and using gravity to avoid a deadly star.
You can download the game for free from our itch.io page here.
We spent the whole weekend bringing Hopper from concept, to game, and we are quite proud of how it turned out.
We recently finished a postmortem for Hopper. It includes what we thought did and didn't work, as well as what we’d change and add to the game if we were to take it further. We want to share some of those key points here.
The theme given for the game jam was “Extinction“, so naturally we had to feature dinosaurs in the game.
Coming up with the concept for the game was actually quite fast, and only took a few minutes of messing around in paint to come up with this mock up.
Using a total of 3 inputs (left/right and jump) kept controls simple and familiar. This meant that the game was quite intuitive, and getting into the core gameplay was instant.
The speed of the planets, asteroids, and the player fit well together, and made for fluid gameplay. The player is rarely held back, and is almost always in motion. As a result the player is engaged and making decisions during gameplay.
The charged jump allowed for mechanical depth, as well as providing good game feel. The rate of jump charge increase, at first being very fast, and then slowing down quite a lot, worked very well. It allowed for both short jumps, and powerful jumps to be accessible. Extra powerful jumps required a longer hold period. But this too worked well, as it gave the feeling of having to put a lot of effort into the jump.
The time taken to get a good jump charge also fit well with the time taken to get around a planet. This allowed the player to move with speed between planets, and not have to be stationary at all if they didn’t want to. The jump indicator served two purposes, showing the magnitude of the jump as well as the direction. Its subtle, but almost necessary in order play the game well.
Using gravity comes only after having experimented with it, and learned how it works. For instance, orbiting the star is not something players usually consider. After a few games they might discover it's a possibility, and then go on to use it either for fun or as a genuine strategy. However, orbiting the star does need correct aim and jump charge, so it still requires some level of skill.
The menu and gameplay use the same environment. This means getting from menu to game, and from game to menu (after death), barely slows the player down at all. It provides the player with a pause they control the duration of. This ease of getting back into the action provides a powerful one-more-go feeling, which is essential as game rounds usually last under a minute.
The environment is constantly live, and never pauses or resets. This means that even when the player is in the menu, planets spawn and crash into the star. The star fills most of menu view, with planets coming in from the right side of the screen. This view functions well for several reasons:
The player always dies at the star, meaning the transition back to the menu view is never jarring and slow, but rather smooth and fast.
It establishes the entire premise for the game before the player starts playing. Showing the star as a constant threat and main focus, the direction everything moves in, and what happens to things when they reach the star.
The player never feels taken out of the game with the menu, or as if there’s ever a definite ending dictated by game. Everything is continuous and flows from one state to the next, giving the player a very streamlined experience.
Our composer Dave Allen did an excellent job with the music. The tack fits the light-hearted but tense atmosphere of the game very well. The music also adds to the of seamless experience of the game, as the track loops and is never interrupted.
There are two sections to the track, with the song changing slightly in the second half. This change offers something for the players to look forward to, as a form of reward for surviving.
Planets & Randomness
Random planet generation often resulted in inconsistent spacing. Most of the time there are plenty of options for the player to take, but occasionally there are none.
Planets were spawned at a random location, within an area based on the position of the camera. The set up for this was fast, but testing and tweaking the system to ensure a playable and fun game, took a long time.
Another reason for the inconsistent planets and large empty gaps, is the fact that on collision with another planet, both are destroyed. This means in an area with a lot of planets, collisions are more likely to happen and thus result in an empty space.
Large gaps between planets force the player to either take a leap of faith, or face unavoidable death. The player can also start the game in an inescapable situation, and die almost immediately. These uncontrollable situations can be infuriating for players, as they are punished for no reason.
The inconsistency of the artwork is quite noticeable, and does not give the game a good aesthetic. The star uses large pixels and seems blurry, whereas the planets use small pixels and appear sharp with defined edges.
No animation makes everything feel quite static, which goes against the fluidity the game tries to achieve.
The limited variation of all elements (e.g planets), and in some cases no variation, can make the game visually uninteresting and repetitive.
The game uses 4 different planets, but randomises their size and orientation, to produce more variation. However, this is still not enough to avoid repetition.
Visual Effects & Feedback
Other than the score effects, the jump indicator, and the screenshake and freeze frame from planet landing, there is no visual feedback. For the most part this makes the game a lot less interesting than it could be.
However, it can also be detrimental to the player’s understanding of the game. For instance planets destroying each other on collision had to be explained to most players. This was because the disappearance of the planets, without an explosion, was confusing.
Similarly the area of effect of a planet’s gravity is never indicated to the player, making it difficult to understand that it is not a constant passive effect.
Needing to Click Play
Needing to use the mouse to click the play button can break the flow of gameplay, as the mouse is not used outside of menu interaction. This goes against the idea of constant fluid gameplay.
Boring Long Term Gamplay
Past the core gameplay loop, the game becomes repetitive and boring. The game lacks a sense of progression. The player feels as if every game played is relevant and valuable, and worth their time. In it's current state, the player earns nothing, unless they beat the high score.
Achieving a high score is not enough on its own after several game sessions. The game needs more incentives and rewards, to maintain player engagement.
The lack of options is detrimental to the accessibility and quality of the game. Options such as a volume controls, and control remapping are essential.
[ADDITIONS & ALTERATIONS]
Planet generation needs to have randomness reduced as much as possible, wherever possible, in order to let skill play a more significant significant role. A system that randomly generates sequences of premade patterns of planets, would allow players to learn and master specific patterns, but not entire levels.
Planets colliding with each other should not cause instant destruction. Instead planets should have several states of damage they go through, before collapsing. This would help prevent gaps in planet spacing, and also give the player an sign of the risk of landing on a planet.
Planet landing could cause the planet and player to stretch and bounce back, with a white flash. The player character could also turn around to land feet first on a planet, when approaching the planet.
The game needs an effect to show a planet’s gravity strength and area of effect. Glowing waves shrinking towards the planet would be good for this. Wave speed would represent gravity strength, and starting radius would represent area of effect.
Backgrounds should be more engaging and interesting to look at. The view should populated with nebula, galaxies, and supernovas, not only generic background stars. The further the player progresses, the more starts to appear. Using several background layers would give a parallax effect, to give an impression of depth.
Using a good variation of art assets is important to avoid the game becoming repetitive and boring.
Aside from being interesting, differences should also have significance. Planets for example:
Smaller planets offer more points for landing on.
Size of planet and glow colour could correlate to strength and area of effect of planet gravity.
Certain colour planets could offer jump speed boosts.
Hopping between the same colour, or a specific pattern of colour, planets could offer a point bonus.
Achievements & Challenges
Offering achievements, such as "Orbit the star", would give players long term goals to achieve, and provide a sense of progression. Smaller challenges can be used to give an experienced player extra goals to go after within a round. These challenges would be generated using a template and variable numbers. e.g Land on X planets in Y seconds. Completing these challenges would earn the player a significant amount of points.
Power Ups & Items
Power ups can be generated as the round goes on, for the player to pick up and use to enhance their game. Power ups could include speeds boosts, point multipliers, and size changes.
The player could also use items during the game, such as a jetpack, or grapple gun. These items would could help the player, but be limited in number of uses - as to not be overpowered.