Medal of Honor: European Assault

While employed at Electronic Arts I helped develop an animation exporter for the “Metal of Honor” franchise. This page roughly outlines why it was needed and how it operated. For a more detailed description of this (now antiquated) technology, please refer to the following documentation.

Basically, when a non-player character (NPC) is required to perform an edge-case action, outside of generalised AI motion, an In-Game Cinematic Sequence (ICS) is employed.

An ICS is essentially an animation performed by an NPC, which is in most cases so specific that it’s used only once in the entire game, and is therefore outside of generalized AI motion. In a nutshell, an ICS is a NPC animation outlier.

In this particular game AI motion was limited to locomotion, attacking, and dying actions. It is referred to as “cinematic” because it generally helps advance the story of the game, while providing instructions to the user.

For instance, if an NPC is needed to perform a speech to instruct the player, or to perform a specific jump as illustrated above, a “cinematic” animation sequence would be utilized.

Motion is divided into sections, with each part activated as needed to facilitate a smooth transition in and out of AI. When an NPC is within the proximal threshold of a predefined location, the ICS is played. Care is taken to ensure character registration with the environment and seamless motion in and out of AI.

NPC jumping over the screen-right railing.
For more examples, click here.

Noteworthy Exporter Details

  • Auto-generated XML Output.
    • Output of relative positional values and quaternion rotational values, which were later reoriented for 3D Studio Max.
    • Sequence parameters as defined by engineering and Havok.
    • Header indicating miscellaneous statistics of the export.
  • Auto-generated LuaScript Output for Pre-Existing Sequencing Program.
    • Automatic association of animations with a specific pose.
    • Automation of sound alias retrieval from sound banks, with frame offset from the Maya timeline for lip sync.
  • Other
    • Database query to differentiate new from iterated ICS, for use in verification.
    • Perfect prop/world to character registration, by using reference geo.
    • LOTS of error checking to prevent bad output due to animator error.
    • Support for multiple character entrances, of various poses.
    • Email notification upon export.
    • I wrote approximately 70% of the code, while collaborating with another developer.