Inspired by the #LOWREZJAM entries to start a 64x64 resolution #Pico8 demake / mash-up of Zub and Nebulus. Zubulus, if you will... I won't finish it in time for the jam, but it's fun working within these constraints.
Adding a bit of scenery to my low-res #Pico8 Zub/Nebulus mashup. Next up: bang my head against trigonometry to give the tower some perspective.
Hand-written texture mapping on the tower to show the 3D rotation as the character walks around it. Plus some jumping. Doesn't look bad for 64x64 pixel resolution!  #Pico8 #Zubulus

Different surface patterns on the tower. On each level, the tower will have a different pattern.

I wonder how I can eliminate the visual banding in the texture mapping.

#Pico8 #Zubulus

The player can now jump onto platforms. #Pico8 #Zubulus
The player can now crouch down. (Well, whatever the equivalent is for a pink worm-like thing). When crouching on a disc, they can move the disc around the tower, so that they can jump to higher discs. #Pico8 #Zubulus
Have implemented vertical scrolling as you climb the tower. #Pico8 #Zubulus
Monsters now float down from above to stop you climbing the tower. Eventually you will be able to shoot them with a boomerang. But for now, all you can do is run away. #Pico8 #Zubulus
Why a boomerang? Because it has to fly around the tower.
Finally some gameplay: the monsters chase you and try to knock you off the discs. You have to out-run and out-jump them to reach the top of the tower. You will be able to temporarily stun them with your boomerang to give yourself some breathing space. #Pico8 #Zubulus
Each level will feature a different kind of monster. #Pico8 #Zubulus
Experimenting with shading the tower by manipulating the draw palette. Not sure if it actually improves things. I might stick with large areas of flatter colours to emphasise the perspective. #Pico8 #Lowrez #Zubulus
A monster attacks... but doesn't realise that I have now implemented the boomerang! Take that! #Pico8 #Zubulus
You have to catch the boomerang after you have thrown it. If you don't, it will rotor down to the ground, and you'll have to go back down to pick it up again.  #Pico8 #Zubulus
Time to polish the platforming. I need to implement coyote time to make the game more enjoyable.
The core of the gameplay is in place: climbing the tower, monsters, and defending yourself with the boomerang. I can now get a feel for where the gameplay works and where it doesn’t. What I’ve found is that the boomerang is *too* powerful. Unlike the shooting in Zub, no matter which way the player shoots, the boomerang flies around the tower and hits the monster. The player doesn’t need to aim! The monsters need more smarts to dodge player shots, and more varied behaviour.
One thing that did work out just as I hoped is having to catch the boomerang. Fumbling the catch and watching the boomerang flying downwards beyond your reach has just the right mix of comedy and pathos — it really tickles my sense of humour.
Side-tracked by making a title screen and start-game transition. #Pico8 #Zubulus

Get far enough up the tower and you find a door, which will lead to the end-of-level boss battle.

#Pico8 #GameDev #Zubulus

I've not yet decided... should the boss come out of the door, and you fight around the tower? Or should the player enter the door, and the boss battle be an entirely different game mode?

If you fall too far you are stunned (and have a lightly sweary reaction, from a random selection of silly rude words).

This looks frivolous, but behind the scenes I've introduced a state machine for the player, allowing me to easily add more sophisticated behaviour and animation.

#Pico8 #retro #gamedev #Zubulus

I had fond memories of playing the game Zub. But now that the core gameplay is in place, I’ve found the bits I borrowed from Zub are the least fun. I read some reviews of Zub from the ā€˜80s. The ZX Spectrum magazines gave the game a high rating. The C64 magazines gave the game a low rating because the gameplay was ā€œboringā€. So I guess the C64 had better games on average than the Spectrum. And I’m going to add more platforming elements and gameplay variety to Zubulus.

Sentry monsters are the easiest to get past: they circle the tower and will knock you off the platform if they hit you. Chasers home in on you and try to knock you back down.

#Pico8 #Gamedev

I’ve had to give each monster an explicit state machine, like I did for the player. I never learn! State machines simplify the code so much. But I always leave it too late to write them and then have to refactor from a rats’ nest of flags and if statements. And #Pico8 has no automated refactoring tools, which makes me put it off even longer. A vicious cycle.

#gamedev

Up to now, colliding with a monster has knocked the player off the platform they are standing on, but collisions did nothing when the player was jumping. I’ve now made the monsters bounce the player around, whether the player is on a platform or in mid-air. And being bounced stuns the player for a moment. What a difference it makes to gameplay! I need to tune the calculations to find a good balance between chaotic bouncing and predictable platforming. GIF coming soon…
The other thing I had to avoid was monsters bouncing the player straight upwards. The monster would bounce the player to the top of the tower with no interaction at all. So the player gets flung sideways and either upwards or downwards depending on the relative position of the monster. It’s not mathematically correct, but feels fine in practice.

Monsters bounce the player around. Collision detection and resolution needs some work. But even in this early state, the game is now far more challenging and fun to play.

#Pico8 #LowRez #GameDev #PixelArt

This game will have no lives or health bar or suchlike. The worst that can happen is that a monster bounces you back to the bottom of the tower of the current level and you have to climb up again.

Added a dev-mode key handler to toggle drawing of the sprites' hitboxes. It's uncovered a couple of little bugs in the drawing calculations and sprite data.

#Pico8 #gamedev

When developing and testing, I put #Pico8 into dev-kit mode with a POKE in the game's initialisation routine. I have a function that interprets key presses every frame to invoke testing actions or toggle test modes. For example, to show or hide hitboxes, toggle invincibility, or jump the player straight to the end of the level so I can test the boss fight.
I created correct hitboxes for all sprites, and now use them for collision detection. As a result, collisions feel more precise and predictable. #Pico8 #gamedev
Mocking up concepts for the end of level boss fights. #pico8 #gamedev #pixelart #LowRez
The topmost platform will lift you through the clouds to the top of the tower, to mark the transition between the normal level gameplay and the boss battle.
The first half of the end-of-level transition: the top platform lifts the player into the clouds, and off the top of the screen. You will enter the boss battle at the top of the tower by coming up through the clouds from the bottom of the screen. #Pico8 #gamedev
To write the end of level transition, I had to implement moving platforms. So that gives me more classic platforming elements to include in level designs. #pico8 #gamedev
Writing moving platforms involved quite a bit of refactoring. To keep myself motivated, I added some "juice": screen shake when you fall too far to the ground. (I keep a list of quick, fun things to add to the game, and use them to break up longer, less enjoyable, development tasks). #Pico8 #Gamedev #pixelart

Added a couple of little animations.

#Pico8 #GameDev #PixelArt

I’m procrastinating because the end of level boss battles will take a lot of work!
@picoretro ahah the eyes are excellent!
some blinking might even be better
@fsouchu Absolutely! Blinking is in my "motivational todo list" of fun little things to add.
@picoretro cool (and still positive that some light border shading would really help selling the tower is round + hide some aliasing artifacts)
@fsouchu that is also in my todo list, but will take quite a bit of research and experimentation to find the right mix of colour and dithering.
@picoretro hehe cute detail šŸ‘€