welcome back, bubble cat. we have another situation, and this time you've only got 60 seconds

> how to play:

  • arrow keys: move
  • X/Z: continue to next level
  • ctrl-r: restart
  • ctrl-m: mute

you don't have to full-clear every level! skipping a level without clearing it just gives you a points penalty (-5 per remaining bubble)

> code:

this game was made to fit inside two tweets; i.e. <560 characters of code and no sprites! here's the full game, in 552 characters: (and no external sprites/sounds)

x=3y=3o={}m=0n=0p=circfill::_::z={}for j=1,13do
z[j]=rnd(49)\1end?"⁶!5f2cC"
while t()<60do?"⁶1⁶c"
b=btnp()q=b>15and"⁷fdc"d=sgn(n-m)u=x
if(n~=m)m+=d d+=6
p(32,32,60-t(),1)v=y?"⁶w⁶t"..m,24,27,4+d
if(b%16>0)s=b*.6&.75
if(not r)r,s=s
if(r)x+=cos(r)y+=sin(r)
w=x\7+y\7~=0
for j=#z,1,-1do
i=z[j]d=q and"-5"b=i\7*9a=i%7*9p(a+4,b+4,3,j|8)
if(y*7+x-x\7==i)w=del(z,i)d="+1"?"⁷d"
if(#z<1)d="+10"q="⁷egc4"
if(d)add(o,{d,a,b,d*11})n=max(n+d)
end?"★⁵8d🐱",x*9+1,y*9+3,7
if(w)x,y,r=u,v
for a in all(o)do
a[3]-=1?unpack(a)
end?q or""
if(q)goto _
end?"⁷dafa"
::e::goto e

> some code highlights:

  • convert btnp() bitfield into movement: b=btnp()if(b>0)s=b*.6&.75if(r)x+=cos(r)y+=sin(r)
  • buffered input: if(not r)r,s=s
  • out-of-bounds check: w=x\7+y\7~=0
  • animated score display: d=sgn(n-m) if(n~=m)m+=d
  • collision checking: if(y*7+x-x\7==i)
  • draw player: ?"★⁵8d🐱",x*9+1,y*9+3,7
  • animated score floaters: for a in all(o)do a[3]-=1?unpack(a) end

> full code history:

https://github.com/pancelor/bubble-cat

thanks for playing!

Download

Download NowName your own price

Click download now to get access to the following files:

bubblecat_windows.zip 938 kB
if you pay $1 USD or more
bubblecat_linux.zip 695 kB
if you pay $1 USD or more
bubblecat_osx.zip 3 MB
if you pay $1 USD or more
bubblecat_raspi.zip 2 MB
if you pay $1 USD or more

Development log

Comments

Log in with itch.io to leave a comment.

(+2)

This is a pretty neat game! Love the procedural puzzling action to try and hit bubbles without leaving any behind, the timer being a circle that gets smaller over time instead of another number is cool for minimalism's sake, just like with the rest of the game (I dunno if that's the right reasoning for it but it just fits; It's noticeable but doesn't ask you to glance at a number, something like that...Or the timer is a bubble itself!), the flyaway text is fun touch (and definitely emphasizes points lost when bubbles are left behind), and the background page looks noice~

And on top of all of that, this was all fit into two tweets? Excellent work! OUO

(+2)

thank you :) “It’s noticeable but doesn’t ask you to glance at a number” is exactly what I was going for!