Choplifter V1.1.1

@Vampirics and @Keyboard_Camper … can I ask for more feedback.

When I play it, I use my left thumb to press the up and left / up and right buttons together and as I am coming into land I release the left / right buttons to stop moving so I can land properly. Have you tried this and did this make the flying easier?

If I make the flying too simple, the game itself might be too simple (especially as I don’t have the jets to crash into you). I am a little concerned about simplifications.

@Vampirics and @Keyboard_Camper … here we go.


I have added an easy and hard option to the game. Easy means you do not accelerate towards the ground, the tanks fire a little less and its easier to kill them. Hard is pretty much as it was.

You will have to grab the code from GitHub at the moment as I haven’t packaged it up.

I would appreciate your feedback on the latest version. Cheers!

I’m finding hostages are heading too far left if you destroy all the tanks and buildings your left flying out to nowhere for ages to find them.
I’m up to 63 hostages so far and posting on my phone whilst flying left.

LOL … really, I wonder why they err to the left? Its supposed to be random. I’ll have a look.

Are you playing the easy or hard level??

On easy. I’m now having a run on hard I’ve also noticed they like to hang around the tanks and get themselves killed … these people are beyond saving :joy:

38 hostages on hard and then I’m flying around in an empty game with none to be found.

Designing a game to rely on a single finger pressing two buttons simultaneously is not a good practice. Some people might have difficulty doing this. And, although it’s relatively easy on a real Arduboy, it may prove to be next to impossible on some home made systems or even the Arduboy DevKit.

1 Like

Seriously? The Arduboy lacks a joystick so unless you are planning to write games that have no diagonal movements then you need to press two buttons at once. In fact, controlling the helicopter is the challenge on the ‘hard’ level.

As for the home grown Arduboys or the dev kit, I cannot concern myself with those. If they cannot play my game then they have a number of others to chose from. Maybe a home grown Arduboy might have a joystick on it in which case they will love the game.

1 Like

Then, as a courtesy, you may at least wish to document that this technique is expected to be used, and may be difficult to achieve on non-official hardware, to save some people from wasting their time uploading it.

Surely if someone has an issue pressing two directional buttons at the same time on their clone they need to be reviewing their own design and adjusting it to meet their personal needs?
And of the 150 1st Edition and 250 2nd Edition Develoment kits produced, I would expect the majority of users would be in possession of the two-three fingers needed to play the game. Whilst it can be a little awkward at first it’s really not that hard once you’re used to it.

It’s even almost playable playing with one hand whilst filming with the other.

Playing some more I noticed you can’t crash into the objects so this is perfect in its current state for anyone with button pressing issues.

@filmote I just noticed that I also somehow managed to pick up a random group of passengers that stopped me collecting the second lot of hostages in this video?

It looks like I picked them up by flying into the second building.

Edit 4 or 5 or something:

Yep you can collect all the hostages by landing at an unopened building.

1 Like

I don’t think I will be doing that.

As @Keyboard_Camper says above, if someone has built a frankenstein of a clone using buttons salvaged from one cold war equipment and has managed to install them six inches apart thus preventing them from using one finger to press two buttons, then they probably are having problems with any action game on the Arduboy.

1 Like

I have just committed version 1.0.3 to the repo. It fixes a few little issues and requires you to use your toes for shooting.

Do you mean you flew through the building and this allowed you to pick them up? Did the building ‘open’ as a result of your flying through? A tank can open a building too.

Edit: Oh I see what you mean. That shouldn’t happen! I have fixed that too, now. Thanks for the heads-up.

I can land at a closed building and get +16 passengers without them exiting

1 Like

Version 1.0.3 has just been checked in … it fixes this issue amongst others.

That little bug makes it a little easy!

Edit: Also, as of the latest commit it now has some introduction - music ‘Ride of the Valkyries’ as per Apocalypse Now.

1 Like

It depends on the algorithm being used.
I find a lot of the time rand implementations rely on a Linear Congruential Generator which has been proven to have bias.

Throw in modulo bias and results can often have noticable trends (like travelling to the left).

I don’t know if that’s the issue here, but it’s worth considering.

1 Like

It could just be shit code on my behalf. Will need to look at that. If nothing else, I should prevent them wandering off to the edge of the world (as we all know that is way out to the left).

Wild guess: you wouldn’t happen to be doing a divide/multiply and then flooring instead of rounding, would you?

1 Like

No … from memory, a simple random().

I sure hope random isn’t just an LCG like @Pharap mentioned earlier, it takes up way too much space for that kind of algorithm.

If I knew the exact line I could take a look.

I notice you’re using random(n, m) a lot, which could mean there’s modulo bias involved because that uses modulo.

(See WMath.cpp.)

If you’ve never encountered modulo bias, I find this SO answer is quite a good explanation.

I can’t find the random implementation on the github code. I’m guessing the implementation varies between chip, so I’ll have a dig around my local files for a better clue.

Not sure what you mean by ‘too much space’ though, LCG state only needs one variable (most likely 32 bit given that random returns a long), the modulus, the multiplier and the increment are all constant values.

I didn’t mean the state, I mean the code takes up a lot of flash space. I had to go through its disassembly looking for a bug and vaguely recall having seen much smaller implementations.