A downloadable game

Neko-Tokyo has been attacked by every self-respecting cat's greatest enemy - vacuum cleaners! Only brave cats Koko and Kebi sitting at the controls of their Crank Harrier can defeat the dangerous invaders!

In this pseudo-3D arcade shooter referring to the genre's classics from the 80s and 90s, such as Space Harrier, you will face space robotic vacuum cleaners. But be careful while maneuvering at breakneck speeds between trees, admiring the Japanese landscape with the majestic Mount Fuji in the background.


Meet the heroes

Koko (known as Kokos / Coconut)Koko
– male cat
– skilled pilot of the Crank Harrier
–  he loves raw salmon, so look out for nigiri sushi
to replenish lives
– his meows in-game indicate if you lost or gained lives
– he also likes tomato soup and olives (for real!)
Kebi (known as Kebab)Kebi
– male cat
– skilled laser operator of the Crank Harrier
– his meows in-game indicate if your laser battery
is full or empty
– he hates going to the vet
– he can stretch his paw  really long if he wants to steal his human's food
– he likes bread and croissants (for real!)


Beware the enemies

Cosmic robot vacuum cleanerCosmic robot vacuum cleaner
– basic enemy 
– they move in groups of 3 to 5 units
– they have four different spawning patterns
– they can be destroyed with one shot, but can't be reached when they fly in the distance
– they can also shoot by surprise when they appear from the edge of the screen
Cosmic Boss robot vacuum cleanerCosmic Boss robot vacuum cleaner
– big and durable
– he will arrive after you defeat 50 of his minions
– you can hurt him only when he opens his core to shoot you
– you can't hurt him while he is flying away, but he can shoot you from a distance
– it takes a couple of hits to defeat him


Other stuff

Koko & Kebi Crank Harrier Life Icon– you got 4 lives
– after getting a hit you will have a short moment of invincibility
– but don't take too risky tactics as you can lose easily
– Koko will inform you with meowing if you will lose or gain a life point
Koko & Kebi Crank Harrier Laser Icon– the laser battery indicator will show you how many shots you can fire
– the battery has 20 charges and uses one charge per shot
– charging it with the crank replenishes 5 per spin
– Kebi will inform you with meowing about the battery status
Koko & Kebi Crank Harrier Sushi Nigiri– Salmon nigiri sushi can sometimes be dropped by enemies
– Catch it to recover one life point


How to play

  • Control crank harrier with a D-Pad
  • Shoot enemy vacuum cleaners with B Button
  • Recharge your laser by spinning the Crank
  • You can turn off the music on the menu
  • If you want more challenge, you can turn on in the menu classic Space Harrier style control mechanism which will automatically pull back your ship to the bottom center of the screen. 
  • Meows of Kebi and the UI will tell you if the laser is empty or full
  • Avoid the tress – they can hurt you too, but shoot them if you need to clear the way
  • If you lose some lives, hunt for the healthy salmon nigiri sushi, which can drop from destroyed enemies. But why do vacuum cleaners keep sushi anyway? 🤔
  • Survive long enough and destroy 50 enemies to spawn a powerful boss!
  • Accumulate points by surviving long enough, shooting regular enemies, and defeating the boss 
  • For now, this game has an endless gameplay loop so you can try to beat your own high score. More enemies, different levels, and bosses are planned for the future.


Note from the author

This game is a tribute to my cat Koko (Kokos or Coconut) and his cat-friend Kebi (also known as Kebab). Kebab is no longer with us and my "Koko & Kebi" games are a way to keep memory of fluffy friends.

It was made from scratch in October 2023 as part of the Yellow Square Jam challenge for the PlayDate from Panic . It's available for free and will be improved. This is my first real game project, with no prior experience,  as I just started my indie game dev learning journey in August 2023. 

All the assets were prepared by me which included sprites, sound effects (made in FamiStudio), and of course cat photos and meows – the actors were of course Koko and Kebi.

The only one exception is the music track which is royalty-free and composed by the amazing Space_Cat. I plan to prepare my own music for the game though, but I didn't have time before the deadline of the YellowSquareJam.

My game is quite resource-heavy, pushing PlayDate to its limits. For now, I'm aware of weird lag spikes in my game, while it's played on the device. They appear in intervals and aren't directly related with amount of objects on the screen. They also stop appearing after a couple of minutes of playing, so it's probably some garbage-collector / memory issue.  You can turn off the music on the menu to be less aware of these lag spikes.

Download

Download
KokoAndKebiCrankHarrier_1.0.pdx.zip 3.5 MB

Comments

Log in with itch.io to leave a comment.

(7 edits)

Hello Jerzy. I saw your post on pseudo3d https://devforum.play.date/t/struggling-with-pseudo3d-racing-game-engine/12801/2... and it was very useful to me. Your progress was incredible. 

I don't know if you've done the hills but I wanted to share the technique I was taught to get there if you don't mind.

First, in the update (very important), I initialize a variable which has the value of the screen height, like maxy=screenheight.

Then I add the hills to the roads list like:

road={

  {ct=50,tu=0,bgl=bg_tree,bgr=bg_tree, hill=0},

  {ct=30,tu=-0.1,bgl=bg_tree,bgr,bgr=bg_turn_sign, hill=.05},

  {ct=30,tu=0, hill=-.09},...

Apparently, the values that give a better result are between -0.1 and 0.1.

In the drawscreen() function, I add a variable which will serve as the value of the yd variable:

-- direction
local camang, camyd=
camz*road[camcnr].tu, camz*road[camcnr].hill;
local xd,yd,zd = -camang, -camyd, 1;

Then I draw under one condition:

if(py<maxy) then

maxy=py

drawroad()

addbgsprite()

end

I add the calculation of the hill:

xd=xd+road[cnr].tu;
yd=yd+road[cnr].hill;

I did this under love2d so I made slight modifications in the drawroad() function : 

I deleted the line :

if(math.floor(y2)<math.ceil(y1))then return end

and :

rectangle(0,math.ceil(y1),screenwidth, (y1-y2)) becomes rectangle(0,(y2),screenwidth, (y1-y2))

I hope this will be useful to you as it was to me.

Ps: how did you fix the behavior of the npc ?

And your works are very amazing ! Keep it up and all my thoughts for Kebab.

(+1)

This is fantastic - what a great first game. I really like the way the love for Space Harrier comes together with your love for the cats, and then throws in a little crank twist as well, brilliant combination all round.

Thank You very much! It means a lot to me! I always wanted to make games, just to give players some joy  🥹

What a cool way not only to keep the memory of Kebab alive but also share him with other people. I am continually impressed by games like this that push the Playdate to the edge graphically. 

Thank You for your kind words! Kebab passed away exactly a year ago in October, and I planned to make a game with him and my Koko a long time ago, so at last this is how I can pay him some respects. He was my friend's cat, but I was taking care of him quite often, and he became a buddy of my Kokos :)

Hello!  This looks great!  Wanted to let you know that when attempting to sideload, I'm getting an error: "pdxinfo is missing" from Panic.

That’s weird 🤔 how are you trying to sideload? Via panic website or by connecting device to PC? I included pdxinfo file and tested method with connecting device into pc and it should work 

Hi again! I just downloaded the file from the itch page, uploaded it via the panic website, and then downloaded it to the console. No problem on my side. Are you on Mac or Windows? And what's your console OS version right now? 🤔 Maybe try downloading file once again?  

I just downloaded a fresh copy from itch, uploaded on the Panic website and it worked fine.  

Not sure why it was failing before.  I had seen the error twice when attempting to load to website.

I'm glad that it works now! Maybe it is something with itch servers, as yesterday while I was uploading the game to itch, the first time the file was corrupted and I had to upload second time.