Tiny Thor is a retro inspired action platformer with a unique hammer-throwing gameplay mechanic, pixel art by Henk Nieborg and music by Chris Huelsbeck.
I'm already working on this game on- and off for many years (all started with a Ludum Dare Jam). I will try post a small update every week, but to get things started this is what happened the last two weeks.
Switch to 16:9 aspect ratio
Until now we've designed all levels around a 4:3 aspect ratio. 16:9 is a much more common aspect ratio on modern displays and we wanted to switch to 16:9 for quite some time, but we were also aware that this will cause some problems.
The main problem is that as we use pixel art we don't want to make the art blurry by scaling it up. To avoid this, we can only scale up with integers (2,3,4,...), but we also don’t want to introduce any black borders.
However, with these two requirements in mind we are only able to use either 320x180 or 640x360 as native resolution. Those will scale up well on 720p and also on 1080p. Before the transition we've used 320x240 and designed all our levels, mechanics and bosses around that resolution.
The first option of 320x180 didn't work well, because the vertical size of the viewport was way to tall. Especially now with a new charged hammer mechanic (more on that later) where the size of the viewport actually matters A LOT to the gameplay.
The second option of 640x360 had the opposite problem. Although the game works nicely with it and looks beautiful, the viewport feels just way too big. The game is losing it's retro vibe quite a lot. It would also mean a lot of changes to the level design.And the current, narrow boss arenas would not work at all anymore.
So in the end we've decided to keep the vertical size of 240 pixels which was also a common resolution on popular 8Bit and 16Bit consoles. It scales up very nicely to 720p (3x). The problem now is that it doesn't scale up well to 1080p. So our solution is to scale it up 4x times. And then with that input we scale it up again by 1.3333333334. This will introduce a little bit of blurriness around the edges, but it's very hard to figure it out (Shovel Knight for example used the same or very similar approach I think). We've also added some options that people who prefer the original pixel art in all it's beauty can disable this last step in the games options.
Mushrooms
We tweaked the mushrooms that are acting as trampolines. First of all we have removed that the player is able to modulate the jump height whether he holds the jump button down or not. In play tests we've figured out that it's quite unintuitive and it felt much better just without it. We also added the ability to rotate the mushrooms by 45 and 90 degrees which enables us to create some exciting fast-paced sections where the player is pushed around the level in zig-zag paths which is a lot of fun.
We're currently also talking about the idea, if the Mushrooms should also work as some kind of "charging pads" for the hammer to give some extra boost to it.
Trigger Zones
Using trigger zones we are now able to spawn enemies (indeed: any game object) when the player hits a predefined (invisible) box. The original intention for that feature wa that enemies are able to attack the player from both sides at the same time. But suddenly we realised that we can do much more with it, like spawning objects when the player backtracks a given area or even enemy patterns that change or start when a player hits given zone.
One example that benefits a lot from the spawning system are the statues. These were static enemies that now have a spawn animation where they rise from the ground in a dramatic fashion, ambushing the player.
Checkpoints
We finally implemented Checkpoints. We didn't want them in the game since the beginning, but as the levels are getting bigger and bigger, with lots of areas to explore for the player, it was very frustrating when the player died near the end and has to start over.
Before the checkpoint system we felt very limited with the difficulty curve of an individual level. Very hard passages right before the exit of a 10 minute level felt very punishing if you failed, but you kind of expect a climax before the end. Now, as a level can be divided into chucks, we have much better control over pacing, difficulty and tension.
Improved Charged Hammer
During the last weeks we played around a lot with different mechanics and ideas for the charged hammer the player can throw. And this week we finally reached a design that is genuinely fun and shows a lot of potential for enemy and leveldesign.
The player can now throw the hammer without it losing any speed or it being affected by gravity. This seemingly simple change resulted in the hammer bouncing through the level as if we're playing breakout.
This mechanic feels so awesome, powerful and satisfying because you can do lots of very cool, bouncy skillshots. You can even throw your hammer, watch him destroying enemies in one part of the screen while you fighting some enemies on the ground at the same time.
New Wall Jump
The wall jump of the game had some flaws we addressed now. One problem was that the player was not only able to jump up opposite walls but also single-sided walls as much as he wanted to. This was a problem with level design as we always had to take care of it. And for example put spikes on them so the player isn't able to skip sections or something like that. Now the player is pushed away much wider when he executes a wall jump which besides fixing our main problems has some other nice benefits as well. The player is now able to use the wall jump to jump off much wider, which combined with the double jump makes for some very wide jumps which can be used to do some nice level design or secret passages. The flow of it is also much, much better because the player can move or change direction much faster.
Swinging ropes tweaked
Last but not least we tweaked the swinging ropes. One thing that was important was to have greater control over their timings/angles in the editor, so that more intricate sections can be built. Another change we made was that the player gains more momentum from the swinging rope, allowing him to make wider jumps and we tweaked that values a lot so it felt less random and the player has better control over it.
The Hive
The hive is a new enemy type that is constantly spawning small bees that are buzzing around and attacking the player if he comes closer. They are the only enemy type for now that can fly through walls - which makes them quite dangerous for the player, because his attacks cannot reach them until they close in.
They can swarm the player but Thor can destroy hordes of them with one single well aimed throw (which feels very satisfying).
The hive itself has multiple hitpoints and will replenish destroyed swarm bees. The player has to push through and eliminate the hive to overcome this encounter.
During the development we played around a lot with different values: Move rate, aggressiveness, spawn rate and spawn cap. It seems the engine is robust enough to handle … experimental numbers :P
The Guard
This enemy is carrying a shield in front of him. As he is always facing towards the player, Tiny Thor is not able to attack him directly, but rather has to employ trick shots and clever positioning to hit him in the back, where he is vulnerable.
The enemy also launches a shockwave every now and then that will follow the ground and forces the player to jump to dodge it. To do an aimed throw with the hammer the player has to stand still, so there’s only a small window to get the shot off.
The wave following the level geometry also counters Thors newfound ability to kill enemies safely from behind a corner with the charged throw.
We don't have a visual concept for this enemy yet - so if you have any ideas please let us know. Have a look how it works:
Snakes
Our Snakes now have the ability to do a dash attack at the player when he is in reach:
Spikey Ball
The spikey ball is a nice variation of our rope (which is usually used by the player to swing around the levels): At the end of the rope we put a big spikey ball on it. You'd better avoid it if you don't want to die :-)
The spikey ball came to be by changing a platforming tool of little Thor into a threat by attaching the namesake to the end of our swinging ropes. This thing now flails around in our levels, forcing Thor to dodge it in more interesting ways than our other environmental threats (falling spikes, etc.).
Besides that we also worked on the design of the first levels again to introduce the new features and also establish a better game flow to get the player hooked sooner into the game.