Fast - A tube racing game

fast-0.2.0.hex (65.5 KB)

Fast - Go as fast as you can while avoiding obstacles and pickup up boost to go even faster.

Hi everyone. My first game.

I don’t have an Arduboy (yet) so fully developed with the sim-arduboy emulator. Still lots of progress to be had. I intend to add sound and music, but no sound yet as I wasn’t able to find any emulation that included audio. Please let me know what you think, and especially let me know if there are issues running on real hardware.


Hold A or UP - Accelerate
Hold B - Use boost
Down - Brake (but you won’t use it)

top left - Current lap and total number of laps
top center - time elapsed for current race
right - progression through lap. The current lap is complete when the dot hits the bottom.
bottom left - boost remaining. (recharge by driving over boost pads)
bottom right - speedometer. (just for fun)


This is awesome. Love it!

Do you have plans for it to progress or can I add it to the Cart?

Thanks for this really fun racing game! Love the sci-fi aesthetic!
I don’t quite understand the HUD (what are the bars at the bottom?).
It’s really impressive you are rendering the circles so quickly! Fantastic sense of movement.
The 4x4 font looks great; was it derived from @Botisaurus ?

This is awesome! Reminds me of Run 3.

Thanks for the kudos!

@filmote There’s still a few odds and ends I want to clean up.


  • I updated the post with some explanations of the hud. I’ve been looking at it for long enough I don’t realize it might not be obvious :-). I originally had some text drawn to the screen, but I was surprised by how slow text was to render, and I ended up removing it and then forgot about it.
  • Yes the font is based heavily on @Botisaurus’ Tinyfont. I modified a few characters, optimized out some clock cycles, and changed the font to have proportional spacing. Some words just d i dn’t look r i ght otherw i se :grin: (no offense to Botisaurus’ work. Thank you) . On my todo list is being a better neighbor and providing at least some of my changes upstream.
  • Thanks for acknowledging the circles. I spent a bunch of time making code that can draw arcs, and then ended up changing how it looks and only drawing a very limited number of arcs (isn’t that always how it goes?). At its core is the arduboy2 lib’s drawCircle. The original splits the circle into octants and mirrors those 8 times to get a full circle. I do the same, but skip some and start others halfway to get arcs.

I can’t wait for this to be in the main cart. Nice job!

If you want to ‘be a better neighbour’, you could start by making sure you include the licences of the code you’ve ‘borrowed’ from.

At the moment the fact you’ve included code from Tinyfont and Arduboy2 without including their licence notices means you’re in breach of licence.

Oh damn. I just realized in some of my games I used @filmote 's font library without providing credit :grimacing: (and I guess Arduboy2 too). Never really been good with the license stuff.

Just including and using libraries without modifying them doesn’t usually require credit or licence inclusion. It’s when you take code from them and incorporate it, modified or not, into your own code, that you have to consider doing this.


To clarify further: the question you should ask yourself is “am I publishing any of the code from the library (modified or unmodified)?”.

When you #include a library and publish your code (e.g. on a GitHub repo, or indeed any website), you aren’t actually publishing the libraries you use. Anyone who downloads a copy of your code must obtain those libraries from another source because you personally aren’t providing them (i.e. publishing them).

It’s only when you publish another library, modified or unmodified, that you must carry out any any licence terms pertaining to the inclusion of licence notices and the like.

Importantly, ‘modified or unmodified’ extends to copying code from another library into your own code, even if it’s only a single function and even if you modify it substantially.

(Of course, there are areas where it gets a bit fuzzy - e.g. when a function implements a commonly known algorithm, when a function is modified to the point of being unrecognisable. Either way, it’s better to be safe than sorry. If in doubt, talk to the original author. You never know, they might give you permission to circumvent the licence.)

Recommended reading:

For simpler licences like MIT and BSD 3-Clause reading the licence text itself is also possible. Apache 2.0 takes a bit more effort, but it’s doable. The GPL on the other hand is quite a scary beast.


@pharap, you are of course correct. That should have been something I addressed before posting anything. I was too excited to post something.
Licenses are now fixed. I’ve added proper attribution for the Tinyfont library, and after review, I had only used about 15 lines from the arduboy2/Adafruit-GFX code, so I re-implemented the circle midpoint algorithm from scratch so it’s no longer derivative. I also switched the project to BSD-3 (just for maximum compatibility).


Thank you for that.

I don’t mean to sound like a nag of course, but I take licences fairly seriously, particularly when people are spending their spare time to provide useful things for free. It can be disheartening to see one’s work being used without credit, I’m sure you can appreciate that.

You might need to merge your master branch into main or change master to be the default branch before GitHub notices and changes the licence listed by the ‘About’ box on the right of the page. (You may even have to delete and re-add the licence file; I’m not sure how good GitHub is at automatically detecting the licence.)

If you need help with any of that, I’m happy to provide some.

Edit: Based on some quick testing with a fork, either changing the default branch to master or merging master into main would update the ‘About’ box, but it says ‘View license’ because it doesn’t recognise that the new licence is BSD 3-clause. That’s at least better than misidentifying the licence though. (Again, if you aren’t sure how to go about doing those things I’d be happy to provide some direction.)

@pharap I fully understand. Thanks for the offer to help with git, but I’m good. I was being lazy. The branches are cleaned up now.
@filmote As long as there aren’t any bad bugs with the latest changes I made, I think I’m done with this for a while. I was considering adding sound, but I think I’ll save that for the future.
I don’t know what the normal process is for including it in the Cart, so let me know if there’s anything I should have done that I didn’t.


@filmote actually has the process outlined here

And in another thread he said you can get the png image via the emulator

1 Like