Flight! Finesse! Friendship?!
Kaito is on a mission. He's got a brand-new pair of jetboots. He's snuck himself a pass to the finest spacegate network of 30XX. And if he can reach the other side…
…he might even make a friend.
About
It's been a while, but I'm very pleased to present my second PICO-8 release! This one is very different to Signed by '89, with a whole different genre and set of constraints. It's the first arcade-style game that I've made, and I learned a lot.
How to play
Fly through gates with ← and → arrow keys.
Enjoy, and looking forward to your feedback!
this game is simple, but surprisingly very fun! the mechanics are really easy to understand, but even with an easy mechanic it still gives me a challenge in each waves and the vibe is very arcade-y. fun, simple, love it! great game pal!
Nice work!
Is it part of the 2 button jam? Great work! Coming up with gameplay that is easy to grasp is the hardest part for me,this game is a masterclass in that-and it looks,plays and feels great too.
How did you manage to display that multicolored text?
I love this game! thank you so much! I beat it with only missing 14 gates! I wish it didn't end. Is there any plans to add more waves or more features?
Thanks for the kind words, everyone! That really means a lot to me. I hadn't heard of the two-button jam, but that does sound up my alley. :-)
No current plans to extend the game; in the course of making it I experimented with various other features, but nothing seemed to beat just a short intense race through eight waves. But who knows, inspiration may yet strike!
> How did you manage to display that multicolored text?
For the two-tone text on the title screen, I draw it once, then use clip()
to clip to half-way down the text, then draw it again in a different colour. Simple but effective! (Oh, and I do the recolouring with pal()
so that I can still get white on the button prompt.)
The draw()
function for the title screen looks like this:
local draw = function() cls() app.renderer.render_starfield(starfield) app.renderer.render_ship(player) app.renderer.render_particles(particles) app.renderer.render_title(title) local start_func if app.constants.special_capture then start_func = function() app.utils.print_center("\fca game by tim knauf",63,90) end elseif stats then app.utils.print_center("\fdlast:\fc"..app.strings.score(stats.score).." \fdbest:\fe"..app.strings.score(dget(0)),63,82) start_func = function() app.utils.print_center("\fcpress \f7❎\fc to play again",63,90,nil,4) end else start_func = function() app.utils.print_center("\fcpress \f7❎\fc to start",63,90,nil,4) end end --cheapass two-tone clip(0,0,128,93) start_func() pal(12,14) clip(0,93,128,128-93) start_func() pal() clip() end |
As you can see, I never got around to moving it to a utility method!
Oh, looking at my code again, I think that first clip()
is actually unnecessary.
Thanks for the honesty, and nice workaround for a nice effect! I quickly wrote a small function, maybe somebody might find it useful. Have fun with it!
function print_two_tone(t,x,y,c1,c2,opt_height) local height=opt_height or 3 print(t,x,y,c1) clip(0,0,127,y+height) print(t,x,y,c2) clip() end |
I added an optional parameter for the height of the "split".
I used your idea and the new function in my newest game - i needed a compact way to show the HP of up to 8 players.
I will always do that now. So really, thank you very much for sparking that idea!
This is so smooth, and the music is great! I have been listening to it on the "Game over" screen for a while now.
At first, I didn't even realize you can "die", I was so much in the flow flying through the gates. Almost managed to get through 8 waves on the first try.
A magnificent game. I got to level 7 several times before finally surviving all the way to the end.
I'd love to see a version of this with the music tied to the gates - so if you miss a gate, you also miss a note. But that might either make the music or the gameplay less interesting, and the music you do have here is wonderful.
Or, for the same effect but simpler, adjust the number of instruments heard based on the current multiplier.
Glad you liked the music! I really really enjoyed making it. I've learned a little bit of piano since last time I composed with PICO-8, and I think that helped with working out the composition.
> I'd love to see a version of this with the music tied to the gates - so if you miss a gate, you also miss a note.
I had a very similar thought! I love music/rhythm games, and once the idea occurred to me, I tried so hard to make the game fun with the gates and music synced. There's even still a lot of code in the game related to that! I tried it so you'd hit the gates on the beat, I tried making it so you'd need to press the buttons on the beat, I tried triplet gates, I tried syncopated gates, I tried mixing all that up together, aaaaaand... in the end, I just had to admit to myself that it just didn't feel very fun to play that way. :-(
I'm still not sure why not. My theory is that there's a kind of interplay between the music and the gate-hitting gameplay that for this game, is actually better when it comes in and out of phase. One day I would love to solve this, and make a proper rhythm arcade game, though! (I really admire the old game Rez for this.)
@Traffic Jam 3D I love playing simple games like this. The music is very fun.
[Please log in to post a comment]