In which I pen a small piece about Transistor (with spoilers)

Posted on Updated on

WARNING: Major plot spoilers for Supergiant Games’ Transistor follow. If you haven’t played through the game yet, don’t even think about reading this. Go play it. Form your own opinions about how it goes together. See the ending. And then, come back and read this post.

Read the rest of this entry »

The State of the Dragon (Game)

Posted on Updated on

Since my very simple proof of concept of King Under the Mountain last weekend, I’ve been continuing to work on the game. I can’t promise a releasable version in the near future because this is still a side project of mine, but I’d like to have a playable alpha as soon as possible, so you can pick it up and give me your thoughts.

I am currently experimenting with Unicode support. I have a build option set up that currently toggles this behavior, and I’ve doubled the X width of each display character to accommodate. Surprisingly, this looks great in both modes! But, there’s a problem.

Certain fullwidth characters, such as Emoji, behave badly with my terminal software. Rendering Apple Color Emoji, for example, has a transparency channel that makes look like Swiss cheese, as each character cuts a transparent region out of the back of the window. I haven’t yet found a good way to reconcile this, though it does look substantially better in other terminal software that doesn’t use Apple’s full color equivalents.

That’s my current quandary. My next steps after this are to rewrite the UI and make characters able to interact with one another.

Are these dev posts interesting to you all? I’d love it if you let me know.

King Under the Mountain

Posted on Updated on

For the last several weeks, I’ve had a game idea bouncing around my mind. So, taking the excuse of this weekend’s Ludum Dare game design competition, I decided to start writing it:



King Under the Mountain* is a text-based roleplaying game where you play as a dragon. Not content to simply pillage and burninate the local villages and farms, you also take up the wing of politics, toothily coercing neighboring peoples to champion your cause. This plays out similarly to Dwarf Fortress, except with loftier goals and a bit more political intrigue in mind.

Written in C using ncurses**, this game is in very early alpha and isn’t yet playable. Most of the game exists as notes and code snippets I’m still in the process of writing, but world generation is far enough along that I can at least post the teaser above.

Like Dwarf Fortress and Nethack, this game is designed to be a roguelike with primarily procedurally-generated elements guiding play. Certain elements will be mutable to the player from the start, such as their name, gender***, and specific world characteristics. Of course, randomizers will be available if one prefers to start playing immediately.

I’ve found writing this to be surprisingly therapeutic. I’d missed this level of ultra-simplistic, low-level coding in time spent in higher-level languages such as Python and Go. In a way, getting back into C feels like rediscovering my roots.

Would you be interested in this game if I ever released it? Since it’s a terminal app written in C with low-spec systems in mind, hitting all major OSes wouldn’t be especially difficult.

* I had considered this name before the competition’s theme, “Beneath the Surface”, was announced. It’s a double entendre cited here, referring both to the dwarven ruler, the King of Erebor, and to the dragon, Smaug. Get it?

** I had originally planned to use this to study the Go programming language. However, this plan ground to a halt when I discovered that no complete terminal UI library existed for the language. So instead, I settled for using ncurses directly, taking many stylistic, code layout, and presentation decisions from Nethack.

*** This will be substantially more open-ended than binary. I’m thinking free input for all pronouns, up to some number of characters apiece. It doesn’t fit everyone, but it should serve the needs of the gamut of genders people express in my audience. I intend to make all text conform to these, too, which will make localization difficult. I’m still ambivalent on how to translate this, if I ever get that far along.

First Flight

Posted on Updated on

Two days ago, I flew as a dragon in immersive 3D. As otherkin, this satisfied a personal goal of mine, and it was wonderful.

This bears some explanation: I recently acquired a copy of the Oculus Rift Developer Kit 1 from a good friend of mine. Hooking this up to a copy of the CtrlAltStudio’s modified Firestorm Viewer for Second Life, I then proceeded to buy one of these to fly around in:

Image Credit: Seawolf Monsters Wiki

Seawolf Dragons have a bit of personal history for me. Specifically, they’re based on (and were eventually endorsed by the developers of) the dragon models from Horizons: Empire of Istaria (now Istaria: Chronicles of the Gifted). Istaria was where I flew as a digital dragon for the first time, albeit while watching a third-person render of my dragon protagonist moving through the skies as I played via mouse and keyboard.

At the time, Istaria was important enough to me that I had gotten in on its initial closed beta nearly a year prior to its official launch. When the first Adult Dragon Rite of Passage went live on all shards on March 12th, 2004, I pulled an all-nighter to be among the very first group of dragons to attain flight on the Life server cluster.*

The Rite of Passage succeeds as a soaring spiritual experience for fledgling dragons, and that tradition continues even today, as YouTube attests. For the young dragon, it’s a graduation ceremony to (literally) bigger and better things. I, of course, immediately used this to fly up along the game’s trademark sheer cliffs and jagged mountains to surprise crafters whom, alarmed by seeing a huge dragon flying towards them for the first time, cheered me on once I’d landed in their midst.

By contrast, this flight was quiet and personal, but just as moving. I watched through my avatar’s eyes as I flew, looking down on a tiny facsimile of the Istaria I knew and loved a little over a decade prior. As I twisted and tilted my head to see the digital equivalent of a rising sun, I could crane my neck to look and fly wherever I wished to go. Even though my primary controls remained mouse and keyboard, the verisimilitude was beyond incredible.

To fly as a dragon has been one of my goals for most of my life. It’s why I chose to program in the first place, why I’m a technologist and computer scientist, and why I pursue 3D and game design as my occasional trade and hobby. Being able to achieve it in such a simple and mundane way elates me, and makes me wish for VR to only continue to succeed. Not bad for a tiny video monitor and accelerometer connected to a set of fancy goggles.

I just hope that Facebook doesn’t ruin this for everyone. I am convinced that everyone, otherkin or not, should be able to experience this.

* Technically second; our party leader ascended first.


Posted on Updated on

So, let me tell you about Hearthstone.

As a long-term Magic: The Gathering geek, I have sort of a strong opinion about this game. It takes many of Magic‘s core mechanics: mana, creatures, spells, planeswalkers, enchantments, and keyword effects, and simplifies them into a game that is fast-paced, streamlined, and internally consistent within the properties of its universe. Wizards of the Coast tried to do this with their Duels of the Planeswalkers (hereafter, “DotP”). I’d argue that Blizzard managed this better.

For those of you that have never played Hearthstone (but have possibly played Magic), here is a very quick summary of its standard rules at this writing:

  1. Each game contains exactly two players in competitive 1 vs. 1.
  2. Each player selects a hero to represent themself. These heroes have cards and abilities associated with them. More on this later.
  3. Each hero starts the game with 30 life.
  4. Each deck contains exactly 30 cards.
  5. The hand size limit is 10. Any cards drawn over this limit are immediately discarded.
  6. Players take turns, with the first player being selected randomly.
  7. The first player receives three cards from their deck, any of which they can choose to replace with another random card from their deck. The second player receives four cards and the same mulligan opportunity.
  8. Once both players finish selecting their hands, the second player receives “The Coin”, a 0-cost card that gives them one extra mana crystal for a turn of their choosing.
  9. Every turn, a player draws a card and receives one permanent mana crystal that they can “use” each turn, up to a limit of 10. This is the primary currency used to pay the “mana” costs of playing each card.
  10. A player, on their turn, may choose to play a minion, a spell, or a weapon from their hand, or use their hero power. Usually, these cost some number of mana. Occasionally, other costs (such as life) are included.
  11. Play continues until one hero reaches zero or fewer life after all actions are resolved. If this happens to both heroes simultaneously, the game ends in a draw for both players. Otherwise, the surviving player is deemed the winner.

In practice, it’s actually fairly straightforward. Turns and gameplay happen rapidly. Gameplay is well thought out and documented on its wikis. Each card is readable at a glance for its cost, strength, and durability (when applicable).

Most of the complexities of Magic, even DotP, have been streamlined or removed in some way. Examples:

  • There are no turn “phases” to consider, other than beginning and end of turn.
  • There are no “resource” cards other than those which give you additional mana crystals.
  • For patent reasons, there is no concept of “tapping”. Creatures that can attack are directly highlighted by the game with an aura.
  • All elements on the “stack” resolve in gameplay order. Card effects are simplified to accommodate this.
  • The maximum number of minions a player can have at a time is seven, which fits neatly into short-term memory. Extra creatures over this limit simply do not spawn.
  • The attacker chooses which creatures (or players) to attack unless stated otherwise, even in combat.
  • Players only act on their respective turns. There are no interrupts or instants, but there are counterspells and surprises in the form of “Secrets”, spells that are played face down and revealed when a condition is met.

One of the biggest draws of Magic is the concept of different colors of mana and their archetypes. In Hearthstone, these are replaced by classes that are defined by your hero. These give access to (and conversely, restrict) some of the cards that you can place into your deck.

Each class fits a particular theme that is ostensibly balanced for gameplay, with some classes forming deliberate rock-paper-scissors relationships. In no particular order:

  • The Mage focuses on spell damage and board control. Their hero power deals 1 damage to any character (minion or hero).
  • The Paladin focuses on protection. Their hero power summons a 1/1 minion token.
  • The Warrior focuses on combat damage. Their hero power adds 2 armor, which are essentially bonus health.
  • The Warlock focuses on manipulating life essence. Their hero power draws a card at a cost of two health (plus the mana cost).
  • The Priest focuses on healing and keeping minions alive. Their hero power heals a character for 2 health.
  • The Hunter focuses on creatures and combo engines. Their hero power deals 2 damage to the enemy hero.
  • The Rogue focuses on evasion and board control. Their hero power equips a 1 damage, 2 durability dagger for direct combat.
  • The Druid focuses on ramping and creature enhancement. Their hero power gives their adds 1 attack and 1 armor.
  • The Shaman focuses on defensive lines of powerful creatures. Their hero power summons a random totem, usually 0/2 with an ability.

The idea here is that these pre-defined “classes” would substitute for the flexibility of Magic‘s archetypes in two colors. However, this falls somewhat flat: because the class-specific cards are so good, each class becomes very predictable to play against. This holds especially because all “unaligned” cards (cards usable by any class) are creatures only. This unfortunately gives a fairly accurate picture of how a match-up will go the moment you see whom your opponent is playing.

There is also a significant advantage to players who have paid into the game. Such “pay-to-win” mechanics are not unheard of, but they are especially relevant in Hearthstone: because of the stability of cards in the set, many paid, class-specific cards are strictly better than others. This feels unfortunate in online matchups, when my “free” deck fails to survive against decks at strictly higher power levels.

There is an option to alleviate this, forming sort of an analog to Magic limited play. In Arena mode, you select a class, then select one of three randomly generated cards until you have a deck of 30. These cards are “virtual”: they are yours until you win twelve games or lose three with that deck, whichever comes first. However, class selection once again determines which cards are in the pool, and this leads to games that are still predictable (if a bit more random) in practice.

In summary, I like what Blizzard has done here. They’ve constructed a game that appeals to an audience interested in light strategy, without mucking too much into the details. I will be preferring Magic over this only because Hearthstone isn’t exceptionally deep at this writing: it holds attention primarily through random rewards and the promise of chase rares that are required for optimal deck construction in a very stable metagame. Fun for a few days, but not something I want to invest significant time into.

Still, I recommend giving it a spin, especially once the iPad build comes to your region.