The Making of Shadow Runner


Code by JO3RI

Art by JO3RI

Help by DREAMER3 for re-coding


How it started:

At the very first Arduino-jam, I wanted to create a video game on the Arduino (Duck n jump) but we didn’t succeed very well. At the 3th Arduino-jam I gave it a new try, but again without a big success. The game “Whack A Noodle” only worked partially.


I found someone to help:

Finally I found someone, who knew about creating games AND already made some for the Gamby shield: TRODOSS. I asked him to help me out and we started creating games, TBOT would have been our first one, but we ended up making Dungeons.


And now on my own:

While working with Trodoss, I have been learning a lot, and by the time Dungeons was finished I wanted to create that Duck & Jump game. This time I did succeed and it’s even more visual impressive than I had hoped for.


What’s special about Shadow Runner:

The game itself isn’t impressive, it’s like most smartphone games, just tap on the right moment. What I wanted to do myself was using fullscreen bitmaps in the background. Normally to safe space, one would use compression technics to reduce memory space, like using tiles.


I really wanted to so if I could use 1 big bitmap to scroll over the screen. But I wanted to do even more. Parallaxing was a word I had never heard of, but I knew what is was. It is a technic used in a lot of 16-bit games, where the background scrolls by at a different speed compared to the foreground objects.


In Shadow Runner, I managed to have 3 different layers and still keep up speed. The game has no flicker nor hick ups what so ever.

This one big image is 640x52 pixels = 33280 bits or 4160 bytes. This size is to big to be used at once, so I divided the landscape into 5 pieces, each the size of 1 screen. The game randomly picks 1 of those 5 background pieces and scrolls it over the screen. Once this piece reaches the screens left edge, there would be a gap on the right side, so the next piece has to follow straight away. When the first piece is completely offscreen, a new one is picked on the right side and the process starts all over again.


We do the exact same thing for the fence, but we use a different speed.

That long fence is 640x16 pixels = 10240 bits or 1280 bytes, So again 5 pieces randomly picked.


And as a third layer I used 3 different trees passing by at the same speed the objects, you have to dodge, do. Those are also randomly picked.

Once I got al this working, I only had to add a little guy running his ass off and some objects to dodge.


Just so you know, all bitmaps are hand drawn pixel by pixel. First in black and white and then I used a checker pattern as an overlay, so you would be able to clearly see the difference between background and foreground.


Many thanks go to Dreamer3 and ace_dent:

While I wanted to have a game for the new system Arduboy as fast as I could, I didn’t have a DEV kit to work on. ace_dent has sent me his device, so I could start straight away. Dreamer3 helped me with lot’s of advice and small code improvements. Thank you both for helping me, making this conversion happen this fast. (1 week).


More to come ?

The game itself is ready to play, but as in all things, there is always room for improvement. Be my guest and make your own clone, or improve the existing code.