Alex Shoulson thinks things about Games, Narrative, Simulations, and Practical Artificial Intelligence

Wednesday, January 2, 2013

From Brains to Bones – The ADAPT Character Stack

(Previous: ADAPT: Building a Character Platform - Introduction)


Before we can begin to design behavior for a virtual character, it’s essential to first define the character in understandable terms. Looking from the top down, we know that whatever behavior model we use will interact with the character by pressing very specific buttons on the character’s interface, like the “go over there” or the “pick that thing up” button. On the other hand, looking from the bottom up, a 3D character is essentially a collection of bones that we control by setting positions and orientations. When I’m designing a conversation between multiple characters, I want the characters to be rich and expressive, but I can’t be bothered to fiddle with the individual bone movements of each character in the conversation. We need an abstraction between these two extremes. In this article, I’ll talk about this abstraction and how ADAPT handles it.

C# Code Snippet: Timed Unity Camera/Object Dolly


I wrote/adapted a quick 'n dirty little C# script to allow a camera (or any other object) to fly around along a timed Bezier-like curve. This is useful for cutting demo videos or doing in-game cinematics. The script supports different modes for setting the object's orientation and some control over position changes (like temporarily locking the dolly in place). Just use the empty Dolly prefab, configure it with some waypoints and times, and set whatever you want to move as the Dolly's child transform. The Unity package comes with a demo scene (shown above) to show it off. The idea and general concept is loosely based off of this package, though I structured things pretty differently.

You can pick it up here: DollyPackage.unitypackage

Friday, December 21, 2012

Stand and Deliver: Games with a Designated Narrator


I'm going to take a quick aside before diving into the guts of ADAPT to talk about something more or less unrelated, but still critical to the work I do in games and stories. A friend of mine was kind enough to toss me a copy of Thomas Was Alone on Steam the other day, and though it's a short play-through, I immediately fell in love with the charming little game. Now that I've finished it, though, I've noticed some comparisons to two other popular independent games from the past few years. In particular, Thomas Was Alone (henceforth TWA) has something in common with both Dear Esther and Bastion. (Note: I'm going to try to avoid major spoilers for any of these games, but do play them if you haven't already.)

This is especially interesting because the three games are incredibly different mechanically. TWA is a 2D puzzle-platformer, Dear Esther is a 3D ghost-story where you explore an abandoned island in the Hebrides, and Bastion is a fantasy hack-and-slash action-oriented role-playing game. Even the color palettes of these games couldn't be more different: TWA favors rich dark, saturated tones, Bastion paints with bright warm colors, and Dear Esther lives in the bleak brown and gray of a rocky Scottish coastline. What, then, could these games possibly have in common? (Aside from fantastic soundtracks, of course.)

Thursday, December 20, 2012

ADAPT: Building a Character Platform - Introduction


I've been rather busy lately working on a few publications, hence my lack of updates. The good news, however, is that I'm through the process of publishing the work that's been one primary focus of my research up to now. That means I can talk about it in detail in my blog, rather than having to keep it under wraps.

First, a little back story. Two years ago I entered the graphics lab at UPenn wanting to work in behavioral AI and character simulation. I wanted to look at crowds, character-player interaction, and other interesting parts of simulating richer virtual characters. The problem was, however, that I had no easy way to do so in a fully realized graphical environment. I needed to be able to build a space and get characters walking around in it while playing animations or doing other interesting visual stuff (gaze tracking, reaching for objects, etc.) in order to tackle the more interesting problems of behavioral AI for games and simulations. The platform I needed to animate characters and make them perform complex tasks just didn't exist. At least, there was nothing accessible enough that I could use.

Monday, September 10, 2012

Single-player is dead! Long live single-player!


Ah, the “cloud”, the light, fluffy, and poorly understood marketing gimmick we’ve all grown so accustomed to with services like Google Docs, Apple’s iCloud, and the largely forgotten Microsoft SkyDrive. In the gaming world, cloud services like Valve’s Steam and Ubisoft’s uPlay synchronize achievements and saved games, adding value to what are primarily invasive DRM platforms. Now it seems that all gaming experiences themselves are migrating to the cloud, or so claims EA’s President of Labels, Frank Gibeau. “We are very proud of the way EA evolved with consumers,” he said while speaking at the Cloud Gaming USA conference last week, “I have not green lit one game to be developed as a single player experience. Today, all of our games include online applications and digital services that make them live 24/7/365.” In reality, this quote in fact has almost nothing to do with the cloud as it’s generally used, but it does illustrate a paradigm shift from single-player to multi-player experiences in games, and I think it’s indicative of something more significant behind the scenes.

Monday, August 13, 2012

Movement in Games


Moving is tough. In fact, the mere thought of standing up from my chair and taking a few steps to get a drink of water cripples me with complexity and mental strain. It's no surprise, then, that simulating character motion is as difficult as it is essential. To benefit later discussion I want to highlight good examples of character animation and discuss where it comes from. This will be part of an effort to lay down some of the fundamental concepts and techniques in games and computer graphics on this blog, while building towards more advanced topics later on.

With respect to animation, some of the finest character movement comes from the Assassin's Creed series, which showcases a character capable of climbing walls, fighting multiple opponents, and maneuvering terrain in a rather fluid fashion. The upcoming third (or fifth, or something) installment of the series showcases organic environments such as trees and rocks, which the main character can fluidly navigate under the command of the player. Here's some exceedingly violent footage:



Sure, the character's movement has some minor artifacts such as jitter (a noticeable "jump" between frames of movement), or foot-skate (where the feet slide on the ground in a manner that makes no sense given rules like friction and weight). Despite these breaks in continuity, the movement of both the main character, Connor Kenway, and the British soldiers he's fighting is incredibly dynamic. Other top contenders for this kind of movement emphasis include the Uncharted series, and the game Mirror's Edge.

So, how do games do it?

Friday, June 29, 2012

Spacewar!


EVE Online is a fascinating game. Known for its lyin', cheatin', thievin' populace, the players of EVE enjoy some of the highest levels of individual freedom of any major MMO game currently on the market. Of course, this freedom makes parts of EVE a very dangerous place. Massive corporations (EVE's word for player guild), and alliances of corporations comprising thousands of players vie for control over territory in parts of EVE's galaxy. Just recently, two of the game's most influential and populous power blocs announced that they will be going to war with one another, and have begun mobilizing their resources and assets to do just that. This summer will bear witness to one of the largest virtual wars in history involving, by my conservative estimate, approximately 10,000 to 20,000 players over a several-month campaign.