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!