Theory: Computerized Brainstorming

There’s something to RoboRosewater. It’s fair to say that this isn’t a great card:

CkXuQWcVAAEtIL9.jpg-large

Or that this one isn’t even coherent:

CksP__hWsAAqqzQ.jpg-large

However, this automatically-generated creature is a cute idea:

CknJ5xzXEAEa6ba.jpg-large

This one might even have a valid role in some conceivable metagames:

Ck3DmFWUoAAED--.jpg-large

While one clearly has to take the good with the bad, I think the interesting aspect of RoboRosewater is that it’s at least capable of putting together cards that are interesting. Its cards suggest weird possibilities that might be worth following up on. For example, I wouldn’t have thought of representing your creatures’ negative effects on opponents’ creatures with bonuses rather than penalties if RoboRosewater hadn’t tried it, with very thematically satisfying results.

I can imagine this sort of tool being useful for many games that use exception-based design. We humans can have trouble getting out of our own heads in order to find new and interesting exceptions. Computers, though, can do it easily. For a game that’s going to be around a while, it might be worth designing a script that can toss out new player powers and the like.

Unity: Debugging Infinite Loops

Unity’s Debug.Log has a singularly frustrating interaction with infinite loops: it stops working immediately upon entering the loop. My theory is that Debug.Log is designed only to output to the console at the end of a frame, so if the end of the frame is never reached messages never get written. Whatever the cause, this fundamental debugging tool is useless for working out what code is involved in the loop.

Fortunately, there’s an easy solution: write to a text file. Debug.Log messages won’t show during an infinite loop, but Unity will honor instructions to write to a file as it goes through code endlessly. By writing messages to a file instead of to the console, you can get the information you need.

Outputting text to a file is easy. Copy the following into a new script:

using UnityEngine;
using System.Collections;
using System.IO;

public class FileIO {

/// <summary>
/// Write a string to a file
/// </summary>
/// <param name=”fileName”>File to write to.</param>
/// <param name=”content”>String to write.</param>
/// <param name=”append”>If set to <c>true</c>, append. If set to <c>false<c>, overwrite file.</param>

public static void WriteStringToFile(string fileName, string content, bool append)
{

StreamWriter sw = new StreamWriter(fileName, append);

sw.WriteLine(content);

sw.Close();

}

}

You can then use it as follows:

FileIO.WriteStringToFile(“debug.txt”, “Animation begins”, true);

Write as many messages as necessary to determine what’s happening.

A few usage notes:

  • Don’t forget “using System.IO;”
  • Note that this class doesn’t inherit from Monobehaviour, so it can’t be attached as a component. That’s fine; use the syntax above to call the function.
  • By default, the text file appears in the Assets folder.

Here’s hoping this saves someone out there a little time and heartache. 🙂

Notes from GDC 2016

A few things I’ve learned (or been reminded of) while at the Game Developers Conference:

1. Visual polish matters, all the more so in a crowded environment. It gets harder and harder to stand out when the number of games on display gets larger. Good visuals are a big help in getting people to stop and look at your game.

2. Style matters when it comes to visual design. A distinctive look can beat very finely wrought–but generic–visuals.

3. San Francisco trains don’t run early on weekends, so don’t plan to fly out too early. 😉

Board Games at GDC

Just mentioning again that there’s tabletop gaming at the Game Developer’s Conference! The great folks at Shut Up and Sit Down are running board games on the third floor of the west building every day of the conference from 10 to 6. Drop by if you’re there!

Global Game Jam 2016: Gift Swap

I was fortunate enough to get to work with several great designers at last weekend’s Global Game Jam, including Eric of the Push Your Luck Podcast (which everyone should listen to!). We developed Gift Swap, a semi-cooperative game that combines a tricky logic puzzle with easy-to-learn gameplay. Gift Swap was ultimately nominated for Best Tabletop Game at the NYU Game Center jam site, and we’re all the prouder of that because our site was tied for best-attended in North America!

The rules and cards are available above. Let me know what you think, and share your games as well!

PSA: X-Wing Storage

If you’re a player of Fantasy Flight’s X-Wing minis game, and you’re trying to figure out how to store the pieces, look no further than this:

Stanley Organizer

This unprepossessing device is intended for organizing nails and screws, but it’s ideally sized for X-Wing miniatures. Each of the smaller bins is the perfect width, height, and depth for two normal-sized fighters in their plastic packing, along with cards and stands. The larger bins in the middle row hold mid-size vessels with just a little trimming of their packaging.

1-15-15 - X-Wing Storage

At less than $20, and offering protection easily comparable to much more expensive storage/transport solutions, I can’t recommend these organizers highly enough.

The Top 10 Things I Learned in My First Semester, #5

The history of game design isn’t one story. It’s a set of overlapping stories, with each genre having both recognizable eras of its own and links to larger, genre-spanning ones. Often these stories spread across time (thousands of years, in some cases!), across physical distance (Europe has its own video game design tradition, which looks completely different from the USA’s–but is little known here), and across academic fields (can the Metal Gear series be fully understood without taking a biographer’s look at Hideo Kojima?).

While the complexity of design history can be daunting, it hints at the incredible rewards to be found when one plumbs its depths. Every designer stands on the shoulders of giants, and there are so many more giants to stand on than we normally imagine! You can call upon giants in entirely different genres, or even seemingly-unrelated fields! The interconnected history of game design creates many, many vantage points from which one can analyze a problem and seek solutions.

Games influence, and are influenced by, lots of things. Avoid myopia; your understanding of games and genres increases the further you zoom out.

Phalanx: In the Lab

A few weeks ago I posted a game I’d built for my MFA program. I’ve since returned to that game, polishing it to improve the player experience. I’ve also given it a new name–Phalanx–though that’s nowhere reflected in the game itself just yet. 😉

Unfortunately, that has meant returning to the dark and dangerous halls of Javascript, with all the incomprehensible error messages and general awfulness that implies. Send good thoughts my way; I’m sorely in need of them . . . .

Argh

I’m having a bit of trouble with WordPress’ new editor.

  • Does anybody know how to link to previous posts? There used to be a convenient option for this under the link button; that seems no longer to be the case. Is it necessary to get the URL separately and just paste it in?
  • More generally, is it still possible to revert back to an older version of the “Add Post” page?

Theory: Mark Herman on (War)game Design

Yesterday I got to hear a spectacular talk by Mark Herman, longtime wargame developer and former CEO of Victory Games. Among the things I learned:

  • Games feel better when it’s clear whose shoes the player is standing in. Don’t just make the player “the UK;” make the player “Churchill.”
  • To choose the right level of abstraction, think about (a) the story the game is meant to tell and (b) who the player embodies in the game. Knowing that you’re building a game about grand strategy wherein the player is Churchill will drive you toward including certain things and omitting others. By contrast, if you’ve decided to tell a story about taking a specific bunker with the player as Sgt. Rock, that will naturally push you to incorporate what Sgt. Rock cares about and can interact with.
  • If there’s something that’s important but outside the level of abstraction for your game, don’t include a whole model for it. Instead, incorporate it as an element in a mechanism the game already has. For example, if your game has event cards, make it one of the cards.
  • Charles Roberts made wargames enormously more fun through the simple idea of being allowed to move some, all, or none of your pieces. Much of the fun of chess is building up a combo of moves—but doing that in chess is very hard. Allowing players to move lots of pieces at once made the fun of combos accessible.
  • Your game is done when you’re addicted to it.
  • Keep abreast of the market and its requirements. 100-hour campaigns used to be OK; today, the market won’t support them. It’s more fun as a designer to create games players will actually play!