Why does this exist?

It was 9 pm on a Friday night. Ludum Dare 40 was just starting, but I was not prepared. Bret Hudson had just learned that the theme was "the more you have the, the worse it is" and thought Uno was the way to go. 72 hours later, we had created something far more devious.

It may look similar, but trust us, itsnot.uno.

Gameplay

Yksi follows the same primary rules as Uno. When it's your turn, you want to play a card that matches the color or type of the card that's on the top of the stack. But we introduced a few new elements. The most prominent of which is skirmishes.

Skirmishes

When a someone plays a draw card (+2 / +3 / +4), a skirmish begins. During a skirmish, you can play any action card. (The color does not matter.)

These action cards behave differently during a skirmish.

Draw cards (+2 / +3 / +4) stack. So if someone starts a skirmish with a +2 and then someone else plays a +4, the next player will be contending with a +6. (But they can still avoid this fate by playing an action card.)

The Reverse card will reverse to the previous player, and keep the current stack of draw cards. Going off of the example above, this would send the +6 back to the previous player.

The Skip card will end the skirmish and "make peace." In this case, no one has to draw any cards.

Playing With Your Balls

One area that I focused on for this game was the UI / UX. I tried to find the most satisfying way to make a card game work on phones and computers alike. Perhaps it was inevitable that this endeavor would lead to balls.

Instead of cards that look like cards, Yksi shows cards as little circular balls that you can freely move around the screen at any time. You can fling them around the screen and they'll bounce off of the walls. (I spent quite a bit of the jam tweaking the physics of the balls to get the bouncing just right...)

The end result is that you always have something to do, even when it's not your turn.

Bonus Round

Yksi uses Web Sockets for bidirectional communication so it can immediately let every player know when someone's finished their turn. It doesn't use any canvases for rendering, just DOM elements. However, it does use window.requestAnimationFrame to ensure a reliable framerate.

After just 72-hours, Bret and I had a fully functional multiplayer game!