Python scripting, mod, system design, serious game
Civilization IV: Quality of Life
Mod of the scoring system to reward making citizens happy and healthy. Employing test-driven development, I validated the formulae and functions by unit tests in the form of Python doctest examples. Employing literate programming, some the examples are embedded in the design document. My functions were informed by the metrics of medical ethics and population ethics. Download the Python source code or the system design chapter (PDF.). Read more. Directed research at USC advised by Peter Brinson (2 credits, one semester). Exhibited at Games for Change, Mediateca Arcadia, Logic and the Simulation of Interaction and Reasoning 2, 2009.
Social game, system design, scripting, MMORPG
Dark Ages: Online Roleplaying (어둠의 전술-미국)
In 1999, for the MMORPG Dark Ages (using Nexon's unstructured scripting language), I designed and scripted some of the players' favorite social systems:
Religion
Players join and manage each of eight temples. Priests host mass (a multiplayer ceremony and a pacifist method to level up). Through worship and quests, a player gains an unknown number of faith points, to pray for a miracle, consecrate an item, or gain prestige. Religions cooperate and compete in a faction system that is diagrammed in the Dark Ages logo: an eight-pointed star.
Politics
Elected players staff two villages, in offices of mayor, judge, lawmaker, and guard. Players write, publish, amend, and enforce their own laws. Players manage a town hall and court of law. Players promote and demote each other by an economy of secret clout points. Each citizen can secretly give clout points to candidates. Officials can trade or destroy each other's cloud points, in a player-versus-player system of voting, alliance, and intrigue.
Labor
Each day that a player logs on, he gets labor points: to craft, quest, or trade with other players. This labor market stimulates cooperation, and balances the supply of quest items.
I wrote about some of this experience at Gamasutra.com
Achievements
I scripted the above systems, events, contests, and rare quests on top of a simple system of achievements. I suggested a data format, scripting hooks, and the wireframe of the character's public profile. Programmers implemented and other designers have since then improved the system. In 1999, I had not heard the term "achievements," so in Dark Ages, I called these achievements "Legends."
System design, author, illustrator
Graph Theory for Designers (Charles River Media)
The first article, "Games within Games," introduces graph theory and demonstrates how mechanics in any game can be modeled by a mathematical graph (A mathematical graph is basically a well-defined network). Then graphs are modeled for common activities in massively multiplayer games: hunting, gathering, missions, and spatial navigation. Several case studies are analyzed, in which graph theory is used to expose exploits and suggest improvements in Anarchy Online, Ultima Online, City of Heroes, and others.
The second article, "Worlds within Worlds," extends graph theory to model the economy and community in a massively multiplayer game. The economy is modeled by graphs of transactions, and the community is modeled by graphs of chatting, team participation, friendship, guild membership, and faction relationships. Examples of economic and community design are given from several online games, such as Dark Ages, Final Fantasy XI, EverQuest, and World of Warcraft.
Read more.
System design, author
Better Game Design through Data Mining (Gamasutra.com)
Players spend millions of man-hours selecting optimum strategies in a massive multiplayer (MMO) game. They are getting the best return on investment (ROI) on your MMO game. Are you? Learn from analysis of logs and other traces of player behavior in the US version of Nexon's first to MMORPGs, The Kingdom of the Winds and Dark Ages. Read more at Gamasutra.com
Optimal Weapon and Armor for First-level Fighter in Dungeons & Dragons (3e)
Out of personal curiosity, here is an algebraic analysis for picking a weapon and armor that maximizes damage rate and maximizes dueling lifespan. Download in PDF, Word, or the raw Excel data. This analysis corroborated the 3.5e Player Handbook's revision of the starting fighter equipment package.
Randomness without Replacement
In this article at GameDev.net, I explain how to convert the hit probability function in an MMORPG from a dice model to a card model, so that a player never misses too many times in a row. In Mathematica and Excel, I explain how the mechanism reduces player frustration (shown in this Mathematica chart). Read the article.
System design, co-art director
HeroCard Cyberspace
For this cyberpunk game about hacking computers in an evolving network, using InDesign, I wrote and helped layout the rules and figures, co-directed the artists. In PhotoShop and InDesign, I composed a montage of card art to decorate the front cover of the box. The tile-laying is loosely based on Carcassonne. The art direction is inspired by Man-Machine Interface (illustrated by the creator of Ghost in the Shell), biohorror sci-fi by Greg Bear, and old school cyberpunk short stories by various authors.
Design team, system design, technical writing
HeroCard Nightmare (Design Team)
Others at TableStar Games, and myself contributed to the design of this horror-themed board game. A number of designers created and revised the rules. For my part, I evolved the framework to combine the deduction of Clue with the bluffing of Poker. You start the dream knowing where you will die and who will kill you. Your only chance of waking up is to conceal your fate, and reveal each other's. In InDesign, I wrote some of the rules and composed some of the figures. Boardgamegeek reviewers say "Creepy fun for the whole family" and "Clever bluffing and deduction game".
Warhawk (PS3)
For this multiplayer only game on PS3, I scripted a single-player mission and cutscene, and collaborated on the design of infantry AI and ambient warfare. Part of a contracted team of scripters, we used Incognito's function-oriented scripting language to monitor triggers, coordinate events, firefights, and camera movement. See vidoes of this online tactical game at IGN or Gamespot. Thanks to the hard work of over sixty employees, Warhawk receives favorable reviews (84 on metacritic).
Level design, mission design, scripting, MMORPG
Here are my favorite massively multiplayer role-playing game (MMORPG) events and missions that I wrote, scripted, and mapped in the 2D level editor.
The Pentagram, Halloween, 2000
Five-player team quest themed for Halloween. Each player (one warrior, one priest, one rogue, one wizard, and one monk) gathers clues to find their teammates' landmarks in this underground scavenger hunt with a time limit. The teammates guide each other to their landmarks, and reassemble for a boss fight at a pentagram.
The Letter, Fall, 1999. Re-released Fall, 2000.
This is a guy and girl date quest. The two players receive clues to missing letters written by a lost lover. They have a limited amount of time to find the next letter. For replayability and to encourage the guy and girl to whisper their clues to each other, there are 256 permutations of this scavenger hunt (4 stages with 4 variants each), along with differing reward items.
Nexus: The Kingdom of the Winds (바람의 나라 - 미국)
In 1998, using Nexon's unstructured scripting language, I programmed hosting of their first team versus team arena. I also scripted some of the bosses, levels, and quests.
Euphonics
Four other students and myself programmed a procedurally-generated shooter that was inspired by Gyruss (1984). The art director programmed a tool to procedurally generate all the models and animation. We adhered to MVC (model-view-controller) framework. I programmed the abstract model, event scheduler, ship maneuvers, collision detection, and frame rate optimization. I pitched the concept and managed the team. Download the Windows game. Here is the event scheduler that I authored in C++ (header and source). 2007 Advanced Game at USC, taught by Victor Lacour (4 credits, one semester) and supplemented by students in a modeling and animation class.
Python programming, serious game
Runesinger (한글 히로)
As my MFA thesis at USC, I programmed and animated a proof of concept to practice speaking and spelling Korean. I programmed most of the game, a Python-OGRE toolkit, helper functions for animating bones, loading a dotscene, Newton physics, automated testing, and OpenAL sound playback. Advisors: Chris Swain, Paul DeMeo, Scott Lee. In SketchUp, I made the models, animated them in Maya, and exported them to OGRE dotscene. Runesinger was an advanced game at USC, and was presented at some educational game conferences (ISAGA, INTETAIN, GIC, TCETC). Runesinger received student honorable mention at IGF, and the post-mortem appears at GameCareerGuide.com. Download the toolkit software. Read more.
Python server, ActionScript client
Hotel vs Gozilla
Hotel vs Gozilla is an animated adaptation of the ancient Chinese game of Go.
I teach casual videogamers the rules and tactics of my favorite boardgame.
This my personal experiment with several new game mechanics and UI:
Bonuses for combo moves.
Animations of risk and reward.
Animated groups and fights.
Single-player levels 1 to 30.
Multiplayer from 5x5 to 9x9.
You are free to copy and modify my Python server and ActionScript client code.
You may not be free to copy files that are authored by others
(the included decorator.py, GnuGo, pindent.py, PyAMF, sgflib.py, typelib.py, t.as)
unless their licenses say you can.
Download (4 MB).
FreeRanger
As a semester class at USC, two other students and I made this Flash game about saving chickens from a factory farm. In ActionScript 2, I programmed most of the artificial intelligence, loading a level from Flash CS3. I also drew the graphics and edited many of the levels. Two other students and I made the paper prototype. Intermediate game development taught by Tracy Fullerton and Peter Brinson. Exhibited at Games for Change. Play the Flash game.
Programmer, prototyping, user interface
Prototyping Gameplay (Dutch Game Garden, Korea Game Conference)
For a videogame, innovating a rule or user interface is risky. Before production, prevent an expensive change, by doing a pilot study. Duct tape together tricks from educational assessment, animation storyboarding, and test-first development to design by example. Take engineering and animation shortcuts to fake a new rule or interface. Play your idea, today.
In the related article, "Wii media in $5 and 15 minutes" After reading, hopefully you have enough examples to start experimenting. Read the article.
Find the Fun (Hogeschool van Amsterdam)
at Hogeschool van Amsterdam I hosted a workshop to make a game in four days. I have been evolving a (serious) boardgame that supplements the workshop: Find the Fun. Here is the synopsis: "Play your idea today! Using parts of board games, observe your user and find what makes your player frown. Then try out your ideas to make your player smile and laugh." Here is: syllabus, help, script, examples, boardgame, and the lecture slides: prototyping gameplay. Read more.
Here is a bit of how I adapt screenwriting to designing videogames. I am not a published screenwriter; instead, I use screenwriting to describe a videogame.
Storyboard illustration, videogame screenplay
Tree of Life
Appears in the textbook chapter I authored: "Game Script and Storyboard Creation" (ITT Tech 2003). Accompanied by screenplay sample. Read more.
I also authored and made some illustrations for the instructor's manual of a class called "Game Interface Design." Read more.
Fan fiction, screenplay
Head of State (Heroes fan fiction)
As a teenager, I enjoyed the "What if" Marvel extrapolations to alternate futures of superheroes. So, my favorite episode of Heroes is season 1, episode 20, called "5 years gone." In it, someone special (wink wink) has become president. A lot happened in those five years into the future. In a screenwriting class, called Writing the One Hour drama (taught by Lance Gentile), a room of talented writers helped me tell a tale of what happened during those five years. Here is a fan fiction teleplay from the first season of Heroes, called: "Head of State"
Machinima
Interface
My first machinima (and second short movie), from concept to final version in 3 weeks. Inspired by a psychological article about a schizophrenic believing to be controlled by another being, I wrote and directed this short horror movie in The Sims 2. I directed voice actors, and spliced it together in FinalCut Pro, with touch-up animation in After Effects. Voices by Robert Babish and Christina Byron. Music from Graeme Revell (Red Planet). Made in the USC class, introduction to film production.
Understanding the Ring
Undergraduate article summarizing the influence of Tolkien and the political moral of the one ring. Read the article.
Amateur artist
Here is an amateur drawing, painting, photograph, and 3D model.
For Whom the Sirens Scream
Several shades of graphite pencil, drawn freehand from from montage of two photographs, using grid imaging. The image is based on the true story of a very eloquent yet unbalanced friend who should have been born during the Revolutionary period of the United States.
Palace of Fine Arts
Ink wash over light pencil sketch. I visited the rotunda at the Palace of Fine Arts in San Francisco at day and at night to create the upper and bottom halves of this illusion.
Nuked Subway
Before digital cameras, at a subway stop in Seoul, I took a (chemical) photograph on an inexpensive SLR camera. In the darkroom, I solarized the top half of the lights, to turn the undeveloped white highlights purple. This photograph won first place for Creative Effects at a Korean American friendship competition in photography, 1996.
King's Dagger
In LightWave, I modeled and textured this dagger. On the handle, I twisted and cloned a tube. On the petals, I warped and cloned a sphere. The inscription is greek (kallisti: to the fairest), inspired by account of the goddess in The Illuminatus Trilogy who throws a golden apple in the hall of the gods to stir up the Trojan War.