Shadows of Abigail

Summary

Shadows of Abigail is a 2.5D platforming game about a curious little girl who gets lost in a magical, dark carnival. Armed only with her teddy bear, security blanket, and a slingshot, Abigail must traverse the carnival, defeating its residents, to find her way home.

Shadows of Abigail  is an ongoing project that is expected to hit alpha on July 1. For more information, visit the official website.

The Team

Project Lead: Jose Luis Lopez Zurita

Artists: Giancarlo Montalbano (lead artist), Doug Meritt, Amanda Garza, Alfonso Farfan, Gerry Pianta

Producers/Designers: Steven Julson (lead designer), Jaquelyn Bacal, Micah Brown, Ivan Velez, Bill Sellinger, Alex Howell, Nick Pham

Programmers: Stephen Cano (lead programmer) Jorge Capote, Logan Kincaid, Jose Luis Lopez Zurita

Technical Details

Programming Languages: C++, Lua, C# (tools)

Engines and APIs: Emergent Gamebryo Lightspeed, Nvidia PhysX, Audiokinetic Wwise, Illuminate Labs Beast

My Role and Contributions

  • Developed a region system and tools for steaming level content. This includes a plugin for Gamebryo’s level editor to automatically split levels into small chunks, completely transparent to the level designer. This export considers a number of factors, including whether or not a particular object needs to be loaded at all times, has the potential to move out of its initial region, and any dependencies on other objects being loaded at the same time. At run time, only areas near the player are loaded into memory and considered for rendering.
  • Co-developed a variable tweaking tool to assist in debugging and rapid iteration. I reworked the tool to use Gamebryo’s C# API to load the source files for the current level running in game, then list all objects in the scene and their properties. The user can then select which properties he or she is interested in monitoring, or change their values.
  • Gathered performance data using Nvidia PerfHUD to find the source of a major performance bottleneck. By default, Gamebryo dynamically computes shadow volumes for the entire scene, including static geometry. This greatly increases the polygon count of any given scene, and reduced our frame rate from 90 FPS without shadows to about 20. I am currently integrating Illuminate Labs’ Beast to bake most shadows into texture maps to avoid this run time performance penalty.

Screenshots and Videos

Introduction Video:

Dynamic Level Loading Video:

Screenshots: