31 January, 2011

Global Game Jam

It's been a while since I've updated (Little City updates and a Fallout: New Vegas design review are in the pipes!) but I do want to post about participating in Global Game Jam!

This was my first year attending and, as luck would have it, the first year that a game jam was hosted in San Francisco. Beyond some advice given to me by previous game jam participants, I went there not knowing what to expect. In the end, I found a good team and we all worked our butts off!

The game is called Good Vibes and can be viewed and downloaded from the Global Game Jam website here. This game is based on tower defense, with an interesting twist. The premise:
"The year is 2011. Times are sad. The Great Recession destroys good vibes everywhere. Job loss. Poverty. Heartbreak. Death.

Emotions are contagious. Depression is epidemic. Every suicide leads to more. Without good vibes, people will become extinct.

The people of Lyubomir have another way: living by cooperation, celebration, human connection, sharing and talking care of others. They are joyous, productive and recruiting. The Happiness Co has deployed Super Well-Being Assault Tower (SWAT) teams to rescue people.

Your SWAT Team has arrived at Dunder Mifflin, where morale is at an all-time low. Place your towers to spread good vibes and eradicate the Blues before they eradicate us."

The project was a fantastic introduction to Unity. I needed to do some file I/O, but found JavaScript lacking. Our Lead Programmer said, "Just use filestream." 10 minutes later, my .js script was humming away with C# code stuck in the middle. Mind = blown.

In addition to programming, I helped with concept and game design: namely reconciling gameplay with thematic elements, documenting designs, and establishing preliminary tower types and stats (rate of fire, damage, range, etc.) I also processed drawn 2D artwork into sprite sheets to plug into the game and located all necessary sound effects (huge thanks to the freesound project.

So yeah, Good Vibes. Check it out!

10 November, 2010

Little City Mega Update: Part 3, Greybox

This is the third of a three-part update. Also check out Parts 1 and 2

Map greyboxing is mostly finished! Items finished include:

  • Traversal from beginning to end, including some tuning to prevent fall damage along the critical path (the player could possibly escape the police bots with 1 health point and there are no healing items.)
  • Basic stand-in meshes and BSP (such as cars and rubble), with blocking volumes for gating. All meshes were created with in-editor 3D tools, but future meshes will be imported as .ase or .fbx files.
  • All basic scripting and triggers are in, such as police bots and animated doors.

Greyboxing proved its worth enormously, as level layout took only a few hours. Some major issues were quickly exposed, and easily fixed since the barebones assets present were easily re-arranged. Some notable fixes:

  • Overall map size was way too small: speedrunning took about 90 seconds. It only took a few minutes to increase the map size by 50% which I think will help play length without creating boredom.
  • The dimensions laid out in the 2D map didn’t translate well to the skyrails in the 3D level, which were easily adjusted in both mediums.
  • Greyboxing turned up a spot where the player could easily misinterpret environmental cues and miss the police IFF, which is crucial to success. This was also easily fixed with little work lost and a huge amount of potential player frustration prevented.

Here’s the video of progress so far:

If you like what you see here (or dislike, it's all good,) leave me a comment and don’t forget to subscribe to the RSS feed!

09 November, 2010

Little City Mega Update: Part 2, 2D map

The 2D map has undergone some changes and additions:
  • Greyboxing revealed spacing issues with the skyrails, which had to be moved and is now reflected in the map.
  • Based on feedback from potential artist team members, more environmental information has been added. Notably: the crash vector of the pod that brings the player here; traffic flow directions (so parked/crashed cars point the right way in concept art and in the level; the line indicating critical path has better coloring and is added to the map legend; news kiosk locations are added.
  • While greyboxing, I realized that a player might miss the police IFF completely and proceed through this intersection, figuring that they have to make a break for it (see this previous post about why stepping off the sidewalk is a bad idea.) Doing so would lead to being shot at and a locked door. For explorer-type players this probably won’t happen, but others will be frustrated by not knowing how to succeed at their current task.

    (Unclear path – Click image to enlarge)

    This can be fixed a number of ways: 1. move the IFF, 2. move the critical path, 3. provide better environmental cues indicating where to go. Number 1 is out, because I want explorer-type players to feel accomplished in discovering the police IFF and moving it closer might compromise that. Number 3 is out, because a primary goal of this project is to design a solid level without assuming an artist will be involved.

    So, Number 2 it is: I changed the critical path to go through a series of locked doors at the ground floor of the center building while fully blocking off the intersection (which is gated by an old car crash.)

    (Clear path – Click image to enlarge)

    The critical path is now more linear without changing the exploration difficulty, and as an added bonus the knowledge that the police IFF will open locked doors is reinforced.

With no further ado, here’s the latest map version. Enjoy!

(Updated map – Click image to enlarge)

The third and final Mega Update post will have video of the greyboxed level!

08 November, 2010

Little City Mega Update: Part 1, Police bots

This post concerns the police bot AI in Little City. The creation process was helped tremendously by LucidChart and the UDN tutorial chapter on state programming.

I previously talked about the police bots that regulate player movement in Little City. Brief recap: the city is long abandoned, but the automated police still enforce the law. Until the player retrieves the appropriate item, they must still follow pedestrian traffic laws.

Pictured below is a condensed flowchart of the basic bot state machine. It doesn’t contain every single action contained in the code, but describes how the bot behaves.

(AI state flowchart - Click image to enlarge)

In simple English:
  1. The bot remains idle until given a target* (a foolhardy jaywalker.)
  2. Upon target receipt the bot goes to yellow alers. It waits (to give the player a chance to get back on the sidewalk if they stepped off by accident) then checks to see if the target has been unassigned.
  3. If the target is still assigned, the bot goes to red alert. It first confirms the target is good, and that there is a clear line of sight to the target. If the target is bad (either killed or the data is garbage,) it is unassigned and shooting is disabled.
  4. If the target is all good, the bot acquires a shot vector and fires until the target dies or escapes.
  5. If the target manages to hide, the bot stops shooting and a stand down timer starts. The timer will clear and the bot will immediately resume firing if the target re-appears.
  6. If the timer goes off, the bot stops shooting and goes back to yellow alert. A hiding player can safely emerge onto legal ground (a sidewalk or crosswalk with a walk signal.) If the player stays legal, the bot goes idle. If not, the bot returns to red alert.

*Target acquisition is done with trigger volumes surrounding forbidden areas. Stepping in the volume assigns the player as the new target for the bot. Stepping out of the volume unassigns the target. Trigger volume setups can be easily and quickly re-configured in Kismet, while confining the state machine and “tick” (or “frame” or “game loop”) functions to UnrealScript code.

Here’s a video of the bot in action (currently lacking a mesh and appropriate audio:)

The next Little City post will cover updates made to the 2D map, followed by greyboxing. Stay tuned!

08 October, 2010

Critical path and Beat chart

I’ve been sitting on this post for a while, distracted with other stuff. I’m actually partly done greyboxing, but today was sidetracked by setting up an SVN server (VisualSVN + DynDNS.com for the win!) on my computer anyway so the blog gets some time, too.

Computers are fantastic tools for creation, but they aren’t everything. This list was born on a humble yellow legal pad (any debate nerds in the house know what I’m talking about?)

Below is the critical path of the level with notes tracking the beats (action) associated with each event (see the end of this post for some neat graphs.) Formatting is: “Brief description of what player does. Action Result.” Steps in (parentheses) are outside the critical path. Steps in [brackets] are permutations that could be swapped to add or remove tension to the moment, as informed by playtest feedback.

“Action Result” is what I imagine is happening to the action curve, and is described in simple terms like “down” for a falling curve or “neutral-up” for a curve that may increase for some players but remain flat for others. It will obviously need playtesting and iteration to verify.

Level flow:

  1. Establish bearings in alleyway. up
  2. Emerge from alley onto city street. up
  3. (Try to cross the street, get shot at by traffic bot for jaywalking. UP)
  4. Walk up street toward police barricade. neutral-up
  5. Crosswalk to north impassable, wait for walk signal to west. down
  6. Cross street to flashing news kiosk on opposite sidewalk. up
  7. Receive instructions to head to nearest evac point. netural-up
  8. Follow signs to evac. down-neutral
  9. Find Police IFF at evac point. up
  10. (For Explorer-types: news kiosk in front of collapsed skyrail is now accessible. Refers to biological outbreak, evacuation, and quarantine zone. up)
  11. Walk up street toward skyrail terminal visible above car crash. neutral-up
  12. (For Exporer-types: keep walking to the police barricade at the end of the street. Barricade responds to IFF instructing police bot to maintain their patrol of the quarantine zone. up)
  13. Enter rail terminal, use IFF to call stopped elevator to ground level. up
  14. Wait for elevator to arrive. down-neutral
  15. Ride elevator up to Track 1 platform. [glass elevator. up]/[enclosed elevator. down-neutral
  16. Jump from platform down to rail and walk along Track 1. [covered track with walls. neutral-up]/[uncovered track with no walls. up]/[uncovered track swaying in wind, creaking. UP]
  17. Enter covered track section, stop at damaged window before collapsed section. neutral-up
  18. Push out window pane to access Track 2. neutral-up
  19. Fall and land on top of covered section of Track 2. up
  20. Follow Track 2 to office building. neutral-up
  21. Jump down to track and then onto rail platform in office building rail station. neutral-up
  22. Use IFF to access utility stairs next to non-functional elevator. neutral-up
  23. (For Explorer-types: go down the stairs for an easter egg. The cake is a lie? neutral-up)
  24. Climb stairs to roof. down-neutral
  25. Cross roof to pedestrian skybridge leading to central tower. neutral
  26. Cross skybridge, which creaks and groans under weight. up
  27. Skybridge is collapsing! Run! UP
  28. Reach the tower as skybridge collapses and falls to street below. up-UP
  29. Enter the tower. neutral-up
  30. Door slams, lights go out. up


I assigned numeric value to each beat in Excel and graphed it (UP +2, up +1, neutral 0, down -1.) This graph isn’t scientific; It’s a first draft visualization of this level’s beat chart, to make sure that I’m starting in the right direction. Since most of the events shown above have multiple possible values, I graphed a few ranges.

(Halloween themed beat chart – Click image to enlarge)

  • HI Max running (hollow orange line), running total of highest possible value for that beat.
  • HI Avg running (solid orange line), running average of high values.
  • LO Avg running (solid black line), running average of low values.
  • LO Min running (hollow black line), running total of lowest possible value for that beat.

In simpler terms: solid lines represent projected low and high ranges of excitement, with an attempt to factor in deterioration from boredom, uncertainty about objective, environmental distraction, etc. Hollow lines are the outliers and mostly there for fun. (The hollow orange player is an excitable person, hollow black is asleep or distracted.)

04 October, 2010

Design comments on Kane & Lynch 2: Dog Days, Part 2 of 2

Below is part 2 of 2, covering what I disliked about the game. Click to read Part 1 in a new tab.

What I disliked:
Repetitive combat: 90% of the fights are on flat ground with random bits of cover scattered around. Enemies rarely appear above or below you. You can create makeshift grenades by throwing and then shooting objects such as fire extinguishers or propane tanks, but only when such objects are present (you can’t store them and it takes a sharp eye to spot them.) Doing so often kills the framerate.

The AI behavior is pretty straightforward, mainly: hide behind cover, pop out and shoot, repeat. Perhaps to compensate, the designers throw 10 to 20 enemies at you at a time. The result is that most of the game just feels like a shooting gallery. I was forced to copy the AI: hide behind cover, pop out and shoot, repeat. This got boring pretty quickly and most of my attempts to mix things up resulted in swift death, mainly because of...

Unbalanced combat: I selected the default difficulty, “Medium” (the others are “Easy,” “Hard,” “Extreme”) and found that most combat encounters felt like the minigun scene from Terminator 2 (with me as a cop.) In the hands of your enemies, every weapon is highly accurate at long distances, with enough power to incapacitate after just a few shots. Likewise, enemies are uncannily good shots, even while running and blindfiring. In the player’s hands all but the endgame weapons are frustratingly inaccurate and underpowered.

Headshots are devastating, but landing one with most of the weapons is difficult at best. It takes from 5 to 10 shots anywhere else on the body to take down even unarmored foes. Combined with enemies frequently hitting you with multiple, consecutive shots while blind-firing their weapons around corners, and combat quickly feels like a grind.

The game does let you take any enemy as a human shield, however most enemies won’t hesitate to shoot their friends or simply shoot the player’s exposed face. Perplexingly, taking a hostage puts you in control of their gun hand which will only ever contain a pistol, even for enemies that only carry automatic rifles.

Mismatched realism: As I mentioned, this game is awesomely realistic in terms of visuals. It frustrated me when combat mechanics didn’t account for a similar level of realism. I’ll freely admit this is due greatly to the influence of other modern shooters, but here is a good example from the game itself:

IO went to the trouble of setting up destructible windows and detailed collision geometry on cars, allowing me to blast through cars to hit my targets, as well as propane cylinders that will rupture and explode with a single 9mm bullet. And yet, a .45 slug won’t cut through 1/4 inch of particle board standing between me and an enemy.

Considering 90% of combat happens indoors, I think this feature would go a long way toward unifying the environments with the gameplay, and would alleviate many of the repetition and balance issues. I wouldn’t mind the shooting gallery nearly as much if I could use the high powered rifle I scrounged up to tag a foe through a flimsy aluminum air duct.

Nonsensical characterization: *SPOILERS AHEAD*--------- I grew tired of the plot turns created by characters saying one thing and then violently doing the opposite, thereby screwing over their companion. Some major examples:

-Kane (who is supposed to be the calmer, more rational of the two characters) agrees to let Brady’s girl go, then shoots her squarely in the chest.
-Kane and Lynch have agreed to go after Hsing, but Lynch hits Kane in the face instead of letting him shoot Hsing.
-Lynch shoots Shang-Si after promising Kane he wouldn’t.

It’s like watching a bad movie. Plot twists can be great narrative tools, but repeatedly uncharacteristic behavior makes me dislike the protagonists. I can no longer relate to them or respect their decisions (i.e. suspend my disbelief,) because I can’t understand why they are acting as they are.

As a player, this created a rift between me and the game. If Kane, the guy I’m playing as, really is a hardboiled mercenary then why would he make such a poor tactical decision by shooting Brady’s girl? He spends the whole game firmly reminding Lynch, and the player, that he is there purely there for the job. Why would he stick around to kill Glazer once the job was clearly off? Kane hates Lynch bitterly, but despite being constantly jeopardized by his companion, he stays with him and even helps try and rescue the man’s girlfriend. Why stay to go after Shang-Si? From what the designers showed me of Kane, I didn’t accept that revenge was more important to him than escaping with his life.

(Previous commentary: Mass Effect 2)

19 September, 2010

Little City: map scale and progression IFF notes

As promised, the police IFF explained:

The original concept for this small game included a block of an abandoned metropolis, so brainstorming included ways to make walking from Point A to Point B more interesting. I looked at ways that other games have gated the player in the otherwise wide-open space of an urban block without traffic flow. Most of the gating I saw involved some combination of collapsed buildings, car crashes, and police roadblocks. These work quite well (I’m using all three!) but I wanted something more.

Another original concept idea was the automation of this abandoned city. I thought of the automated police force, still faithfully enforcing the law, including jaywalking! Even though the player can see the other side of the street, they still have to use crosswalks or risk consequences. I’ve explored this idea as a means of creating tension (setting up a goal for the player) while guiding the player along the critical path.

Thinking as a player, though, waiting for walk signals is going to get boring. Being forced to use the sidewalk is a novelty; We take crossing the street for granted, but this limitation doesn’t support gameplay or the story. This got me thinking: What can the player do within this story world to empower themselves and solve this problem? They could always disable the police bots on the street, but I want to avoid the “go here, press a button, you win” or “go here, shoot stuff, you win” mechanic in this situation.

So what do we have to work with? An automated city, that is abandoned, that has been abandoned for a long time. In the absence of caretakers, even the most robust machines break down. I got the idea of a broken police bot with exposed IFF circuitry that the player can find/be guided to and extract. IFF – Identifcation Friend or Foe originally refers to radio transponder systems used to positively identify friendly military units from a distance. Possessing the IFF, the police bots now view the player as one of their own. The player can jaywalk in peace, as well as access new or restricted areas.

Coming up next: part 2 of my Kane and Lynch 2 breakdown, followed by the step-by-step level flow and beat chart (a.k.a. “action curve”) of Little City.

15 September, 2010

Design comments on Kane & Lynch 2: Dog Days, Part 1 of 2

Because this post is so long, I’m splitting it up. The second half will go into what I dislike about the game from a designer and player standpoint. Click to read Part 2 in a new tab.

A friend of mine was very kind to get me a free copy of Kane & Lynch 2. I didn’t play the original, nor did I pay much attention to the alleged sacking of a Gamespot reviewer for giving K&L 1 a low score. I heard the first game wasn’t very good, but IO Entertainment’s Hitman games are among my all-time favorites so I came into the experience without many expectations one way or another.

The upshot:
The environment design and visual tech in this game is fantastic, and as always IO is wonderfully unapologetic about gritty content (the censor blur on headshots and nudity is a novel touch.) Gameplay leaves a lot to be desired, though. There’s a lot here, but for me the kickass elements of Kane & Lynch 2 are too disconnected from one another to satisfy my taste.

What I liked:
The visuals: Good lord, the visuals. The game takes place in fictionalized Shanghai and is presented as if viewed through a camcorder. Moisture and grime are paired masterfully with bright colors and neon lights to create a sense of urban decay. Post-processing adds touches like lens reflection and white clipping (bright lights blowing out the picture from the camcorder’s CCD) that make most of this game look startlingly believable. Camera shake is on by default, but can be turned off which I did for reasons I’ll describe later.

Kane and Lynch’s banter: IO recorded a ton of dialogue between the two characters. The over-the-top shooting action is tempered by lines that you’d probably actually hear in a desperate firefight, such as: “I’m doing the best I can, goddamn it!” Kane and Lynch are not Master Chief or Gordon Freeman, and their fear and uncertainty comes through without interfering with gameplay.

Sound effects: Excluding kicking down doors, which sounds more like stepping on a graham cracker, the sounds work well. Ambient city noises and bullet collision/ricochet add to the sense of realism.

Imperfect cover system: The bread and butter of combat in K&L 2 is the cover system. While under cover, it’s still possible for stray bullets to hit you. Since health is regenerative it wasn’t a big problem for me (Disclaimer: I played on the default difficulty) and actually added a dimension of vengeance to enemy encounters that made victory more satisfying.

(Previous commentary, Mass Effect 2)

28 August, 2010

Little City Update: map scale and progression

Note: I’m switching to mostly present tense. Writing these posts in past tense, while chronologically accurate, feels weird; like referring to oneself in the third person. Nathan had a substitute teacher in third grade that did that. He found it unsettling.

So, with the basic layout settled, I am dying to visualize things a bit. I also want to get a feel for the scale of the environment. My main concern is verifying the scale of the central skyscraper versus the triangular park to the north. I fired up UDK for a basic scale test using BSP and stock materials. The layout is a good start, though the scale may be too small. This map will later serve as a jumping off point for greyboxing.

(Perspective view - Click image to enlarge)

(Top orthographic view - Click image to enlarge)

Now it’s time to start thinking about flow and traversal. Since I don’t yet share payroll with writers, concept artists, and programmers, my goal is to design and build a mechanically solid level while introducing minimal story or complex gameplay.

In terms of drama, here’s my starting line: the theme, an abandoned city under automated lockdown; a plot goal, escape the city somehow; the level objective, Get To Point B. To help myself focus, I brainstormed very simple mid-level objectives for the player that take advantage of the map’s topography and fit with the dramatic elements listed previously.

Here’s the list:
1. Emerge from starting alleyway (Ground level)
2. Take Police IFF device find (Ground level)
3. Take elevator to skyrail metro station (Ground level to mid elevation)
4. Jump from Track 1 (broken track) to Track 2 (Mid elevation)
5. Follow Track 2 south into the building (Mid elevation)
6. Take the elevator from the platform to the roof (Mid to high elevation)
7. Cross from that building to the central building using the skybridge (High elevation)

Step 2, the Police IFF, will be expanded on in a later post. Step 4 was in my head from almost the beginning when I was thinking of how to gate the city streets without duplicating the same police barrier or car crash. Forcing the player to drop down or fall is a classic gating technique that I’m approaching from the perspective of this story world.

Here is the flow mapped out in Illustrator as a green line:

(Click image to enlarge)

It’s a work in progress. I still haven't decided on how to gate the player from traveling north on Track 2. Possibilities include track damage, a stopped train, a physical gate on the track (perhaps a Stop sign for the train operator,) or rubble from the collapse on Track 1.

The next post will talk about issues of level flow (mainly critical path and action curve.) Also coming soon: design comments on Kane & Lynch 2.

18 August, 2010

Little City Double Update!

I've been without home internet access for a bit, so this post is a double update to include back content. So long, Starbucks, and thanks for all the internets.

Here’s the very first concept work done in Illustrator:

(Click image to enlarge)

This establishes a very basic layout. It isn’t meant to be a readable map yet, since there’s no scale or significant content. It’s a springboard for brainstorming.

I’ve been switching between pen & paper and Illustrator to help flesh out the space and environment. Seeing the actual environment in some form helps change my perspective and keep creativity flowing.

(Click image to enlarge)

I wanted to experiment with the skyrails around the central tower. Birds-eye isn’t the player perspective, but it’s helpful in creating basic global level flow. I decided I wanted the player to enter the tower via a skybridge connecting to a nearby building. Working backward yielded a sequence: ride the elevator up to the skyrail terminal, get on the tracks, fall from one skyrail down to the other, follow that track inside the building and get to the roof. At this point, the “why” isn’t important. I’m approaching the “how” just to have some content to bounce off of. If this configuration doesn’t fit the story or gameplay it can still be changed in the design phase.

Back in Illustrator, things are getting a bit cluttered with building details and the skyrails:

(Click image to enlarge)

My solution was to change the tone of overlapping objects to indicate their elevation, darker objects being higher up. This de-emphasizes unimportant buildings but also provides a physical cue our brains, which expect farther objects to be lighter due to atmospheric haze. It’s a small detail, but helps readability with no extra work. Thus, the basic area map is finished.