Space Battle - Trench Run

The Game:
So this is my first game, i decided to pick an easier and simpler one to make so i can get to know Arduboy SDK nitty and gritty.
It’s inspired by the Star Wars Battle Pod Arcade Game. It depicts the rebels assault on the Doom Sphere, the Empire enormous space station and you, as a Rebel pilot, have to destroy the Imperial Fighters until you get a chance to shoot into the Exhaustion Port and destroy it.
It’s quite simple and doesn’t have much replay value. Any feedback is appreciated.
You can download the game, use the assets and checkout my (beginner) source code on Github.


TrenchRun-v1.1.hex (78.3 KB)

A Little Intro on myself
Hi! I’m a new owner of an Arduboy and i’m in love with the thing,
I’ve been aware of Arduboy’s existence since 2017 but i regret so much not picking one before.
Since before, when i got my first Arduino i was weirdly interested in developing games on it, and my “dream” was to do a very low-fi Wolfenstein Clone and then design a GameBoy shell-like to it. In the end Arduboy is so similar to my idea but it’s so much better made.
After completing this game i’m eager to engage in the community, including making more games and contributing with the development of tools. Just PM me,

Below are some of the “development sketches”, if anyone is interested in that sort of thing.



When you upload the HEX file it will automatically ‘embed’ the emulator.

Very cool by the way!


Sorry, when i tried to upload it said that as a new user i couldn’t upload .hex files. When this restriction lifts i’ll try to re-upload the hex file.
Also, Thanks!

Alternatively you can flag your own post and ask a moderator to edit it in for you (like I just did).

1 Like

By the way, you should probably add a ‘LICENSE’ file to the repo.
It makes GitHub add a licence icon to the repo,
and it makes the licence a bit more obvious anyway.

If you click ‘Create new file’ and then type ‘licence’ or ‘license’ into the filename box then a ‘Choose a license template’ button appears.

That gives you several common licence options to choose from.

I was going to make a fork and then make a PR, but then I realised it’s probably better to tell you about this so you know how to do it in future (if you don’t already).

1 Like

Thanks for the headsup and the detailed tutorial. I didn’t really knew, it’s one of my first open source projects. I’ll add tomorrow!


WHOA! Very impressed! It looks really nice in the emulator. Love the crawl, but I was surprised by how much it looks like the movie.


It plays really nicely, too!


Grrrr… attention to detail… The back scroll is supposed to fade into the distance, not scroll straight up!!!

Just joking, this is pretty FRACKING awesome. :slight_smile:

All sorts of little ideas for improvements you could make.

  • Tie fighters could shoot
  • Where are my shields?
  • Controls could be a little more precise
  • Maybe I could move up and down a little changing perspective? Not sure how to fly and shoot though.
  • Obi One needs to come in and some point and say “use the force Luke” :slight_smile:

Wow! That’s a lot of ideas! So…

  • They don’t shoot because I consider they shoot when they get too close. Also I could not think of a way of representing this and not looking weird
  • I tried to make it less complicated by having just 3 hits to be destroyed. Maybe I’ll rename hull to Shields.
  • About the controls, the crosshair scroll 2 pixels per frame, so yes it’s not very precise, but If reduce to just 1 frame, it scrolls too slow.
  • I tried to give this impression by using the parallax effect
  • That’s not a bad idea!

To make it really Star Wars-y they should be named “Deflectors”,
but that’s probably a bit too long for the screen. :P


Just tried this on the emulator, it’s pretty good


Out of interest, is there a reason you decided to change from MIT to GPL?

1 Like

I might not have chosen the right one since I’m new to the license business, but I only wanted to, if anyone made any modifications or improvements, that they also released the source for it. That’s about it, I don’t know if I got the license terms right.

1 Like
  • I tried to make it less complicated by having just 3 hits to be destroyed. Maybe I’ll rename hull to Shields.

Well, in reality (hahahah) you have both shields and hull. Though the hull never seems to take much in star wars. So maybe shields is more accurate.

About the controls, the crosshair scroll 2 pixels per frame, so yes it’s not very precise, but If reduce to just 1 frame, it scrolls too slow.

So you need a different frame rate… or different polling rate (hard) or an algorithm that varies the speed… OR you can also move it just 1.5 pixels per frame too though… no reason it’s gotta be a whole number.

1 Like

Ah ok, that makes sense.

Though technically they only have to publish the source if they also publish their modified/improved version of the game.
If they don’t publish the game then they don’t have to publish the source.
I.e. they could share their modified version between a group of friends as long as nobody publicly published the game. If the source code was hosted on a private server or unlisted public server then technically it would still be following the licence terms.

The GPL and MIT licences are both popular licences for Arduboy games.

However personally I dislike the GPL for two main reasons:

  • Modifications to the source must have a relevant date next to the notice stating the code has been modified.
    • Mainly this is just annoying - people don’t tend to think about the date when they modify code
  • If someone wants to use a small piece of code from a GPL program, they must publish their own program under the GPL. If they don’t want to release their own code under the GPL, they simply can’t use the code. This is technically called ‘copyleft’, but often derogatorily called a ‘viral’ licence.
    • I dislike this because it seems like an unnecessary restriction

If either of those things bother you I’ve found a licence that still requires people to publish the source of their derived versions, but doesn’t require them to use the same licence (the LaTeX project public licence). It’s not a particularly common licence, but it’s still a completely valid open source licence.

If you aren’t worried about either issue then feel free disregard this comment.
If you have any questions, feel free to ask.

I’ll just leave this here…

1 Like

I really didn’t know, I’ll revert back to MIT if it’s better to the community

I tried not using Floating Points knowing there is a performance problem, though I haven’t benchmarked the game using it. I also knew about Fixed Point, but as your post describes, I didn’t knew how to use it.

1 Like

I’ll probably make a V2 with some of the suggestions on the thread. Also there are some optimizations that I can do to reduce the Sketch size

1 Like

Unfortunately licences can be quite complicated.

Some people don’t bother with licences at all, but that’s not a good idea either because it means that technically nobody can modify your code.
It’s better to use a licence that’s not quite right than to not have one.

MIT is probably the simplest and most permissive licence.
(Unless you count licences like CC0 that actually try to get rid of copyright altogether.)

Using MIT would mean that technically people could publish closed source modified versions if they wanted, which isn’t what you wanted.

Ultimately it’s up to you what you choose, I’m just trying to make sure you’re aware of what each licence allows and that you’re happy with the implications.
(I should really write a simplified tutorial about this stuff someday…)

If you’re worried about what’s best for the ‘community’,
I think a ‘permissive’ licence is better than a ‘copyleft’ licence because ‘permissive’ licences give other users more freedom and they tend to be less complicated.

The library comes with:

Overall it’s pretty simple.

All the normal arithmetic operators work as expected, and floating point literals are converted at compile time:

UQ8x8 a = 1.5;
UQ8x8 b = 2.25;
// c becomes 3.375
UQ8x8 c = a * b;

Though somtimes you have to remember to explicitly convert:

int a = 5;
// 2.25 would be a double in this case
// UQ8x8 b = a * 2.25;
// So you must convert:
UQ8x8 b = a * UQ8x8(2.25);
// Equivalent alternative:
// UQ8x8 b = a * static_cast<UQ8x8>(2.25);

If you decide to use it and need some help then feel free to ask.
If you don’t want to use it that’s fine too.
Floats might be a bit easier if you can afford them.

1 Like

@Pharap thanks so much taking your time to write this explanation. I’ll probably try using Floats but if it end up slowing the frames, I’ll give the lib a try.
For sure I’ll use it when I try to do the FPS one.

1 Like

Sooo… what are the chances we can change the title of this game to something that is less likely to get the site issued a DMCA?

I’m going to have to hide this thread until it gets a new name and title screen, sorry! I think everything else can stay the name, but “Star Wars” especially in it’s font is going to be covered by their intellectual property and I don’t want to get an email from Disney lawyers please.