Space Knife - First Arduboy Game by streetalchemist

Hey everyone, I wanted to announce the first version of my new game Space Knife! It’s essentially a Gradius type of side-scroller shmup.

This is definitely a work in progress but is a fully working game at this point. Let me know what you think! I’ll be adding more to to soon, including sound, high score storage, and attack patterns.


Nice job on your first game, by the way! How many enemies does the game have?

This is an error that was found.

SpaceKnife:19: error: 'AbPrinter' does not name a type
 AbPrinter text(arduboy);
/Users/********/Desktop/.../SpaceKnife.ino: In function 'void loop()':
SpaceKnife:85: error: 'text' was not declared in this scope
   text.setCursor(40, 5);
exit status 1
'AbPrinter' does not name a type

(Edited by @ekem)

Ah, I believe this game is built on the 1.2-alpha version of the library. Impending edit coming on the Github :smiley: - we will make this more clear on the repository for developers.

If you are a developer, I would think about creating a couple branches in the Github repository for you game. One might be named 1-1-stable and use the Arduboy 1.1 lib, while the master branch matches the Arduboy master branch.

Absolutely, thanks. I wasn’t really sure since I just updated it for 1.2 while I was getting ready to start working on music and sounds.

1 Like

The game has 8 enemies total that it recycles!


We recommend sticking with the stable release 1.1 for the time being. 1.2 separates the Print class from the Arduboy class, and the statement arduboy.print() seems to be more intuitive for a lot of users than instantiating a new class just for character printing.

We will tag the next major release as stable when it’s the recommended target for development, but the readme file for the repo should make this more clear, like right at the top :wink:

Rethinking the branch thing a bit, new users often use the master branch always, so it’s probably best to put your release on the master, and then create a 1-2-alpha or development branch to manage the newer code matching the 1.2 lib.


Yeah I’m thinking that makes sense, with master being stable. It seemed like since “classic” was already a thing that 1.2 was fairly stable at this point. I only really updated it to use the version without tunes in it, but didn’t think about the Print backwards compat issues. For the moment I’ve at least put a note in my readme calling out the 1.2 requirement. Going to point my IDE at the cloned repo instead of a downloaded copy so I can switch, like the current PR mentions.

1 Like

We recommend the library manager if you are using the Arduino IDE, it has a version tracking built in. If you checkout the tags for the Arduboy repo you can find the tag by which the releases are pushed to the IDE.

Yeah I think I had been using that then downloaded the updated version, haha. Now after switching back to 1.1 I’m seeing the following:

Arduino: 1.6.9 (Mac OS X), Board: “Arduboy”

libraries/Arduboy/audio/audio.cpp.o: In function __vector_17': /Users/alex/Documents/Arduino/libraries/Arduboy/src/audio/audio.cpp:294: multiple definition of__vector_17’

Any idea what would cause that?

1 Like

It means _vector17 is being redefined at that location after having been defined somewhere else in the source, most likely. It’s probably because you’ve included squawk libs? Part of 1.2 is taking out some of the dependencies that will take up space. This allows for a touch bigger games.

That was it, I totally forgot to get rid of the squawk stuff when I cleaned out the sound stuff I was working on. Updated and the master branch on my repo is now 1.1 compatible! Thanks so much for the help!

1 Like

nice game. It compiles no problem and the game is awesome.

1 Like

Thank you! Still lots I want to do to make it even better but I’m really happy with where it’s at right now.