image

Dev Blog: Scoring Dynamic Combat with Procedural Music

Jack Grillo, Audio Director
Philip Lamperski, Audio Designer

[Leading into the launch of Rise of the Tomb Raider, we’ll feature a variety of developer blogs that lift the curtain on the creation of Lara’s first great tomb raiding expedition.]

Rise of the Tomb Raider features a new dynamic combat system, allowing the player to experience the combat in many different ways. Creating compelling music for these sequences is always a challenge, and for Rise of the Tomb Raider, we decided to face that challenge in a new and exciting way – by developing a combat music system that utilizes a new middleware licensed by Intelligent Music Systems, LLC.

Even as we wrapped up the development of Tomb Raider (2013), the Crystal Dynamics audio department began to discuss pushing our music implementation techniques to further score the overall gameplay experience. And during the pre-production phases of Rise of the Tomb Raider, it became clear that the complexity of our new combat system would be the perfect playground for this innovation.

The combat experience for Rise of the Tomb Raider is a combination of several dynamic game systems. Enemy AI awareness generally fluctuates between several different behavioral states, which are typically driven by the player’s actions or gameplay style. Additional variation to the experience can be driven by the level layout, narrative progression, or player inventory.

With this in mind, there are limits to how much a single piece of music can score the experience. Linear, looping music becomes repetitive and will not change along with the quickly shifting state of the player (or enemies). Cross-fading music tracks from one of many combat states to another will create dissonant transitions (especially for an orchestra-based score) and will often break existing tempos.

After plenty of research and prototyping we found ourselves pushing for an algorithmic or procedural solution. In the end we landed on using the Dynamic Percussion System middleware (licensed by Intelligent Music Systems, LLC), with a primary focus on procedurally composing and playing back percussion tracks in real time during combat.

The middleware analyzes MIDI and sample data provided by our composer, Bobby Tahouri, in order to procedurally compose new music in real time. The percussion never loops, adapts dynamically to game events, player actions, signals from enemy behavior states, and is different for each play through. Furthermore, since the transitions between musical states are procedurally composed and not the result of crossfading audio files, players hear meaningful changes in several musical aspects during transitions: motives, ornamentation, orchestration, and even tempo! With this new system combined with the power of our combat sequences, we feel we’ve hit a new benchmark in the expressiveness of game music.

Check out the attached video capture of the procedural percussion in action. You will hear the percussion transition quickly according to different game states such as concealment, enemy A.I awareness, take down, weapon raised, etc. You’ll also notice that the percussion never loops and is constantly being generated in real time. Please note that video features percussion only. The full music mix in the game includes additional layers of orchestral instruments that are synchronized with the percussion. We can’t wait for you to play Rise of the Tomb Raider soon to hear it all!

- Jack Grillo and Philip Lamperski

68 notes

  1. iamthedyinglight reblogged this from tombraider
  2. croftworldbr reblogged this from tombraider
  3. hail-trinity reblogged this from tombraider
  4. deliberatelyunremarkable reblogged this from tombraider
  5. stfusamm reblogged this from laras-tomb
  6. laras-tomb reblogged this from tombraider
  7. kellisanth reblogged this from tombraider
  8. atlasliddell reblogged this from tombraider
  9. theworldtravelinggiraffe reblogged this from tombraider
  10. darlingkahnum reblogged this from tombraider
  11. tombraider posted this