“Hidden Mechanics” in Video Games — and in Tabletop Games?

Last week, a video game designer I’ve been following on Twitter for a while now, Jennifer Scheurle posted asking game developers to post tricks they use to optimize for fun, versus coding a perfect simulation of an environment:

The responses were great, and the thread is being picked up by all kinds of video game press. Kinda makes me wish I’d chimed in when I saw the tweet come by amidst the political dumpster fire I generally consume on Twitter, though I don’t specifically have my of my own inventions to post about, so maybe just as well I didn’t. Though I have written about a couple related topics here previously.

The thread kicked off a discussion in a FlightlessCo Slack channel as well — my Terraformist collaborator who is taking the lead on game design for that project found it on Polygon and wanted to discuss; this being his first foray into this type of design.

I love these tricks, both as a designer and a player, but I think it’s telling that many of the responses are about single-player games; in a multiplayer PvP situation there are humans trying to have fun on both ends of the equation — and in a direct head-to-head, thumbing the scale for one of them might have a negative impact on the other. For instance, in Terraformist, a player sending a swarm of combat units against another can’t necessarily just result in warning shots ‘across the bow’ to get their attention, because then the attacking player may feel disadvantaged. Continue reading

“BONUS!”: Clever game deceptions

I’m going to talk a little about video game design today, but think there’s a lesson in it for board game design as well.

3D animation frame.

A poorly-textured Josh plays cards… in an animation project for a different class. [1]

An anecdote that I think about at least once a month:

It’s my senior year at UMich, and I’m one of the apex classes of the computer science program “EECS 494: Computer Game Design & Development”. This was the class I’d been champing at the bit to get into all four years, because this is what I was hoping to do professionally after I graduated. I’d convinced a few of my nerd housemates to take the class with me.

One of our assignments was to develop an “arcade-style” game — simple user interactions, on the level of complexity of 80’s classics like Missile Command, Space Invaders, etc., to get a handle on concepts like ‘event loops’, ‘collision bounds checking’ and all that good stuff. I embarked on a JezzBall clone, and my roommate Josh set about building in the Bust-a-Move/Snood style.

Josh had built some data structure atop an C++ STL container, which he was using to keep track of all the “balloons” in the playfield. It implemented a clever formula for determining when three or more balloons were adjacent and should “pop” to score points for the player. There was just one problem. The code would occasionally glitch, and the data structure would “forget” about some of the balloons on the field. He’d narrowed down the bug such that his code could consistently determine that it had happened, after the fact, and it didn’t seem to cause a crash, or break anything else. Continue reading