LATE (v2.2.1) - 3 in 1 puzzle game

(Владимир Борисов) #1

Hi guys!
This is my first Arduboy game. It features 3 modes/mini games that I really enjoy playing. There are already similar games to my first two modes (I haven’t seen any clone of Stick Hero for Arduboy yet). Anyway I decided to give it a try. To write my own versions and to be a single game, so I can play them without reflashing.

Here you can see some screenshots from Project ABE.

You can also play the game there and decide if you like it too.

The source code is here. Check out the releases for the latest compiled hex and the change log.

Any suggestions for improvements, bug reports and critique of any kind are welcome.

Bare in mind that this is a hobby project so I’ll work on it in my spare time. Certainly this is not the final version. There will be improvements, but I’m not sure if I can fit all the changes I wish to (for example there’s no sound yet) in the Arduboy’s memory.

(Stephane C) #2

Great job! Nicely done and 3 games in 1. For a first try, this is really good. Thank you!

(Hans) #3

The blocks puzzle is quite fun

(Miloslav Číž) #4

The animations are so neat, great job :slight_smile:


I love that the progress is saved.

Feedback: In Tetris I’d like to have an “instant drop” button - the only possible button would probably be the up button (it now rotates the block, the same as B). Do you think it would play well?

(Simon) #5

Nice work.

I am just waiting for someone to chime in an point out the ‘issue’ with the Tetris licencing and Arduboy.

Doesn’t the down button do that?

(Miloslav Číž) #6

Down button just speeds up the falling. Usually, in other versions I’ve played, you have this plus also “instant drop” which well, instantly drops the brick down. I am used to using this button on PC Tetris, it makes you play fast, at the pace which is limited only by your brain - this is actually the feeling I love about Tetris, it kinda allows you to clean your mind with this fast gameplay. The down button makes the gameplay real slow for anyone who is used to playing the Game.


I’ve been thinking about bringing it up actually :slight_smile: The issue is just the name, right?


from Wikipedia:

The Tetris Company licenses the Tetris trademark (which includes Tetris trade dress elements, such as the distinct brightly colored blocks and the vertically rectangular play field[5])

So not just the name, the whole dress/look should be different. To what degree no one can probably tell? Apparently there’s no color on Arduboy. Given other versions I’ve seen (e.g. GNOME), this looks okay.

(Simon) #7

Oh I see.     

(Pharap) #8

TTC (LLC) have indeed been known to raise lawsuits against games for using the same board size or certain specific game mechanics.

For those who don’t know, the reason people aren’t supposed to make Tetris games for the Arduboy is because Arduboy Inc has a special contract with TTC to make the Tetris microcards.
Making Tetris games for the Arduboy could put that in jeopardy.

I don’t know the specifics of the contract.
As far as I’m aware, only one person does.

(Владимир Борисов) #9

Hello, everybody. Thank you for the feedback.

I wasn’t aware that the Tetris can harm Arduboy. There are other remakes in GitHub and Erwin’s Arduboy Collection too so I thought it’s OK to make it.

I’ll remove Blocks Arcade in the next release.

(Miloslav Číž) #10

Ooh, this gets interesting then.

You can already tell I don’t like it :slight_smile:

If there’s someone out there not wanting me to make a Tetris game, I’m suddenly wanting to make one really badly :slight_smile:

(Pharap) #11

Don’t go removing it just yet.
I think it’s best to wait to see what @bateske has to say.

I’m not sure what the stance is about the games on eried’s repo, but I think having games on GitHub is something we don’t worry about because then they’re technically not on the forums, so we can’t police them and might not even know about them.


Really nicely done! Had never even heard of ‘Stick Hero’ before, so it took me a minute to figure out what was going on - frustratingly addictive / addictively frustrating! :sweat_smile:

(Владимир Борисов) #13

Hi. There’s a new version of my game. As @drummyfish requested, in Blocks Arcade mode, the Up button is now instant drop by default. I also made the buttons reconfigurable. While playing the game you can hold Left and Right together and then press Up, Down or A to change it’s function as follows:

  • Up: Instant drop/rotate
  • Down: fast/instant drop
  • A: rotate (counter) clockwise - This also affects Up if configured as rotate.

This change is in case you like to play it one handed. The A button is hard to reach, so you can use only the direction buttons.

I also added some more animations and kind of background to the Bridge Builder.

Download the latest hex here or if you want to take a quick peek, have a look at the online emulator.

(Stephane C) #14

Wow… That Bridge Builder game is surprisingly fun to play, i really like it.

While i like the fact that we can instant drop in Block arcade, i find it weird to be able to only rotate counter-clockwise the pieces, i think that having B to rotate clockwise would be nice too. i would just make it so that you pause the game by pressing A+B …

(Владимир Борисов) #15

That’s not going to happen. For consistency reasons all modes of the game are paused by the B key. In my mind B stands for Back, so you go back to previous state.

Anyway I do use <-+-> in “Blocks Arcade” mode. It’s kind of hidden settings menu. While holding these buttons you can press A to change the rotation direction. You can’t have multiple buttons mapped to different rotation directions. That’s not necessarily a bad thing. As long as you rotate the current piece, it’s not gionig to lock into place.

In the latest version of the game I made a visual feedback screen in “Blocks Arcade” so now you see what the current button mapping is. You can also toggle the ghost piece by holding <-+-> and then press B.

The most changes are towards the “Bridge Builder” mode though. While you could collect a single bonus and it was traded for “lives”, you can now collect 3 different bonuses. You gain a bonus score point for any of them. You lose everything if you die.

If you collect a “heart” bonus, you gain a 1/5 “life point”. Gather at least five and you are safe to miss the next platform. If you do so, you’ll lose one life and you can continue on.

If you manage to hit the center of the next platform, you gain the same bonus as if you’ve collected a “heart”.

The “cake” bonus rewards you with a platform that is at maximum width.

If you collect a “coin” bonus, you can be sure, that the next platform will be as close to you as possible.

(Miloslav Číž) #16

I just played the new version, instant drop works great, thanks for adding it. Another thing I like is that you actually register not only button pressed, but also button repeats – very nice :slight_smile: I think this function should be added to Arduboy library so that more games start using it.

(Josh Goebel) #17

Arduboy2 supports repeats.


Chiming in to say this is a neat little set of games, and I love the Bridge Building one in particular. Simple concept, fun to play, cute animation. Nice work!

(Владимир Борисов) #19

@daytime Thank you! I’m glad you liked it.

@Dreamer3 This is a bit off topic but would you tell me the name of the function that reports the held state of the buttons? I went through the docs and the only functions I’ve found, regarding the buttons are buttonsState, waitNoButtons (doesn’t compile with online version of ProjectABE), pollButtons, pressed, released, justPressed, justReleased.

It would be awesome if there was a function bool justPressedOrHeldFor(uint8_t button, uint16_t held_time = 250). Unfortunately I couldn’t find one.

BTW that was the manual I was reading. Could it be out of date?

(Pharap) #20

For a single button, pressed.

For all the buttons at once as a mask - buttonsState.

There isn’t one, you’d have to write it yourself.
Or you could make an issue about adding one.

It’s not up to date with the master branch, but it’s up to date with Arduboy2 v5.1.0, both were made on 7th April 2018.

I think the problem you were having is that the functions are spread out across several classes.
(Arduboy2 inherits Arduboy2Base, which in turn inherits Arduboy2Core.)

E.g. the buttonsState entry can be found here, under Arduboy2Core.