Left/right on the joystick controls movement direction, A is jump. Once you find a bullet, press B with the joystick (arrow keys) in a direction to blast yourself in that direction, like a dash ability (that’s exactly what it is). Additional bullets mean more dashes!
Find all 10 coins to beat the level and unlock hard mode! If you are confused at the start of the game, try ignoring what the second sign says and bump into some walls…
You can always cheat and look at the code if you can’t find all the hidden coins. If you can’t understand JavaScript, use the assets tab and find the “easyMode” and “hardMode” tilemaps. My best hard mode completion is 1 death. If you beat hardMode without dying you… uhh… win bragging rights I guess…
If you randomly fall down through the grass into a hidden area, let me know. I think I fixed that bug, but it’s very illusive and I can’t easily test if it’s fully fixed.
If y’all are ever interested in an ultra hard mode… I have ways of making that happen, just let me know. Or just longer levels in general. Y’all could totally make your own levels too.
I didn’t really explain that, huh… Whenever you lasso an animal(s), it will go where the lasso goes before coming loose after about half a second. Because of this, you must constantly lasso the animal(s) and bring them forward, so they don’t get away. Then, at the 1-minute mark, you will pass a corral (it’s supposed to be cattle guard) where you must drop them off; then the capture count will change. (Now that I’m explaining this, it seems a bit more complicated, huh)
@BotWarrior fewer bits per pixel isn’t actually faster, it’s just more memory efficient.
you need to pack/unpack the numbers each time you read a pixel so it’s actually far more performant to do 8 bits per pixel. for example:
function getPixel8bpp(x: number, y: number, width: number, buffer: Buffer): number {
return buffer[x + y * width]
}
function getPixel4bpp(x: number, y: number, width: number, buffer: Buffer): number {
const index = x + y * width;
return (buffer[index >> 1] >> ((index & 1) << 2) & 0xf
}
function getPixel1bpp(x: number, y: number, width: number, buffer: Buffer): number {
const index = x + y * width;
return (buffer[index >> 3] >> (index & 7)) & 1;
}
however 8 bits per pixel is obviously twice as much memory which is pretty bad… i guess 1bpp is very slightly faster than 4 bpp for reading since it has one fewer shift operation.
This started as a card-based duelling idea, but I shifted it into a control-based system instead, and I think it turned out pretty fun.
It’s a two-player duelling game with a twist:
The duel lasts three turns.
Each player secretly picks all their actions before the turns begin. The other player doesn’t see your actions.
The actions are: Attack, Dodge, or Stall. Both players’ choices happen at the same time. It gets interesting from how actions chain into the next round. For example:
If one player stalled last turn and the other dodged, the stall gives them priority if both attack this turn.
Dodging an attack sets you up with an advantage next round.
Stall is high-risk, high-reward; stand your ground and hope you reap the payoff.
Most matches end with both players taking each other out… but predicting your opponent and managing advantages is the core of the game.
On top of that, I added something I haven’t seen in MakeCode Arcade that much (ok its been around, but like… not to this extent): a procedurally generated terrain system. Every duel feels fresh because the battlefield reshapes itself each time. I think this mechanic has a lot of untapped potential, even beyond this project
Is there anyway to play single player? Like say randomise the other players attacks using chance? I think if you get time that might be good to add in…