Cursed Game Design Problems, and Dragging

I'll Simply Build my Own Drag Implementation

Hey, did you see this thing? “The Game Prototype That Had to Be Banned by Its Own Studio”

Light Spoilers: the designer accidentally built a game that could be described as “like Diplomacy”.

Yup, Tank Tactics is accidentally a re-implementation of Diplomacy, one of the most destructive anti-games ever created.

I think it’s cool that there’s a game out there so simple, and compelling but also bad that people keep re-discovering it and re-burying it in the forest once they discover it’s evil. Like Jumanji.

And it’s really easy to accidentally end up making Diplomacy! It’s a common trap for a reason - any game where player elimination is necessary to move the game forward, but players aren’t quite powerful enough to eliminate opponents on their own has a chance of congealing into a Diplomacy if you’re not careful.

I’m really interested in the idea of game designs that are fundamentally cursed, just, game anti-patterns you can accidentally fall in to if you’re not careful, leaving your players playing a game that you didn’t intend for them to play at all.

I think the NFT space is cursed in this way, too, by the way - it doesn’t matter what you try to build around the technology, the design always converges to “speculative, skill-free pay-to-win Beanie-Baby-collecting and throttling powerful GPUs for big cash prizes” - not because people are bad designers, but because that’s the only kind of game that NFTs can really support. BUT DON'T BLAME ME WHEN YOU'RE [Crying] IN A [Broken Home] WISHING YOU LET YOUR OLD PAL SPAMTON [Kill You].


Even Will Wright is getting in on it. And his game is converging to the same NFT thing, not because he’s a bad designer, but because "having NFTs” and “not letting NFTs become the entire point of the whole danged game“ is a cursed problem in game design.

Like, let’s say that we played Monopoly with significant amounts of real money, and the only way to stop other people from cheating at Monopoly was to turn a giant crank with both hands, and the faster you turn the crank the better you can do regardless of your skill at Monopoly.

Well, then, it doesn’t matter whether or not you’re good at Monopoly, we’ve created a game that will eventually be Entirely About The Crank. Even if the Monopoly part is fun, it doesn’t matter, because this is a game where the only thing that matters is the cranking.

Good designers know this, and try to make cranking fun, which is why all NFT games ultimately converge to similar designs. They converge to being about the only thing they can be about: buying collectibles and hoping they appreciate in value.

Groovelet Update: Drag Queen

So, a few weeks back I put together a working implementation of dragging-cards-between-windows - which used the powerful dragula library to manage its drag and drop behaviors.

In that article I said this, a grim portent:

I’m always suspicious when things turn out to be painless. Surely things will become frustrating soon.

Ha ha, yep.

I figured, in order to play a card, a user could just drag it into the “turn” window, which would light up when you start dragging a card. That seems like a pretty obvious interaction, right?

I tried user-testing it a bit on Voxel and she wasn’t convinced it was the right design. She wanted something a little more like the card selection mechanic from Slay the Spire - where you just drag the card from the bottom of the screen to the middle of the screen and that’s how you decide to play it.

I officiously and stuffily described to her why the thing she was asking for was impossible - dragula just doesn’t work that way. Plus, dragging things into the Turn window is a perfectly cromulent UI. (I’m sure I’m a treat to work with.)

Shortly afterwards, I discovered that dragging React elements around with a non-React library and then triggering a re-paint is a fast road to HORRIFYING CRASH JUNCTION (toot toot). I’d also need an engine to detect where cards were being played from and to in order to enforce all of the rules properly. As weird hack after weird hack mounted, it became entirely clear: I was just going to have to roll my own drag functionality.

Which, uh, worked fine.

And the custom implementation made it easier to implement some stuff that I’d wanted to try out, things like “expanding the card when you start dragging it”.

In fact, it allowed me to implement something that I think is closer to Voxel’s “Slay the Spire” request - we can’t drag into the middle of the screen because the cards can start from anywhere on the map - so what if, instead, we just activate the card if it travels beyond a minimum radius?

Now, when I grab a card:

It expands into a full-sized card:

If we drag it over that little grey halo, it gets a bright green border and does a little shake-a-shake.

There we go!

After that… well, I haven’t figured out exactly what happens after that, yet. I think I’m going to need some sort of framework to determine whether a card is actually valid to play.