Of Mice and Men – Making a Meaningful Scent System

What makes your game special?

It’s one of the first things people ask about Soma Games’ on-again-off-again project that goes back as far as 2014. So I’ve had to get pretty good at offering a compelling answer quickly.

My answer: It Smells.

Our current game project, The Scout (Steam, Xbox, PlayStation), is based on the wildly popular series of children’s books titled Redwall. It’s a set of fantastic adventures set in a fantasy world populated entirely by anthropomorphic animals. When we were considering interesting game mechanics one thing rose to the top almost immediately was scent. After all, animals experience the world through their noses far more than people do so what could be more immersive than to give the player a feature of fragrance?

Concept

It should be noted that other games have included some manner of scent mechanics in the past. Games like Dog’s Life and Arkham Asylum have tinkered with the idea but we wanted to provide much more than hidden tracks or gimmicky screen filters. We wanted the player to experience the entire world through their noses and that required a dynamic, robust, and world-encompassing vision of scent and wind.

First, we found that the science of smell is surprisingly thin and nearly devoid of sure answers. Dozens of scent classification systems exist but they are all industry-specific and entirely subjective. The Army once spent millions of dollars searching for an odor that could be used as a non-lethal deterrent but found that not a single scent exists that is universally unpleasant.

Felling legitimate freedom to plot our own course we created a gracefully degrading classification system that starts from the familiar “Animal, Vegetable, Mineral” framework and adds a fourth category, Organic, to capture scents like soil or cedar that don’t neatly fall into the other categories. Each scent is comprised of a long-lasting base note, a clarifying mid-note, and a volatile high note. The potent scent of garlic, for instance, is made up of Pungent, Vegetable, and Spicy notes respectively.

We also knew we needed scent to operate both statically and dynamically. An object, like a coat, can smell like a specific character but stay localized, where a volatile scent, like an onion’s, can travel on the wind and be traced to its source. What’s more, we knew we wanted wind currents and the ability to manipulate them, to feature strongly in the game.

All of this lead us to a multi-tiered system that included passive and active scent, real-time dynamic-wind sources, and character-specific abilities to discern gradations of scent at multiple levels of sensitivity.

Visualization

Conceptually this progress took relatively little time. Once we had the core concept, the details worked themselves out in a matter of days. But visualizing this information was the biggest UI/UX challenge we’ve ever had to wrestle with. Humans don’t use their noses much anyway so the whole point of exploring the world with scent was a tough UX problem that requires imagining oneself as a creature reliant on invisible information. And, being invisible to start with, the effort of translating scent to pixels and sound took many iterations. In fact, as I write this in early September 2019, the visuals shown here aren’t even in the live build – a testament to the fact that we continue to work on this knotty problem to this day.

First and foremost was the problem of passive scent and the associated matter of depicting wind. It was the second issue that eventually solved the first as several games like Sea of Thieves and Breath of the Wild have visualized wind elegantly in the past. By taking the sinuous, simple lines of wind we tinted wafts to reflect the three scent notes and made them appear more vaporous and oily to distinguish a present scent from clean air. 

These scents all exist in an ever-present vector field that describes wind-speed and direction across every level and scents will travel downwind like a leaf in a stream until they diffuse and disappear with time. This allows a player to catch a scent far downwind and track it to its source like a hound on a trail. What’s more, the player’s enemies can also smell you when you’re upwind so staying cognizant of your own scent is important too.

Atop the passive scent system we added the ability to take a deep breath and learn even more. Active Sense allows the player to see even more distinction between available colors, recognize specific known scents among competing unknown scents, and find static scent clues left behind by others.

Scent Prints can reveal who passed through the room only minutes earlier and they fade with time. Scent Prints on bare earth might last longer than those on cold stone and some materials, like a stream bed, suffer no Scent Prints at all. Scent Marks, on the other hand, can reveal an object’s owner, a recent battle in the grass, or the deliberate territorial marks left by an aggressive enemy.

All in all we endeavored to create a wide-ranging, thoughtfully robust and visually complex system of scent that allows the player to experience the world of Redwall that keeps scent at the center.

Implementation

The hardest implementation challenge was in creating a system of wind and wind-driven scent particles that was performant at the levels seen on current generation gaming consoles.

Our first pass used a Unity plug-in called Megaflow which is a feature dense tool for defining static and changing vector fields that can effect in-game particles at run-time. We used this system through most of primary development but toward the end we found that it was eating too many CPU cycles and we needed to find an alternative. For that we were glad to leverage a brand new feature in Unity, particle forcefields. While we lost a degree of fine control over scent and wind currents the forcefield system provided a dramatic performance update with a tolerable reduction in the details that really are only visible to the developers.

Particle system optimization was also a major roadblock. The passive scent system requires tens of thousands of particles with exceptionally long decay rates in order to simulate a steady scent stream that travels downwind over long distances. A typical level might include 50 unique emitters, both moving and stationary, and the presence of a scent must be immediately and reliably visible to the player. This presents a serious performance challenge that was eventually solved by pooling particles into a much smaller number of particle systems that can be visually updated local to the player without the need to track and render all the particles in a level at run-time.

Lastly, and still vexing, is the challenge of asking level designers to think a little like an animal and design compelling interactions that leverage this as a core mechanic in a way that is both different from our every day experience but still understandable to the average player…we’re getting better and better at this every day, but it’s tricky.

Conclusion

We’ve come a long way with this system and to my knowledge we are the only game to approach scent in such a robust way. Every time I hear about a new game that includes a “scent mechanic”, like the recent Red Dead Redemption II, I look to see if our ideas have caught on somewhere else. But each time I find something far simpler, far more canned and scripted, and I’m again excited to be exploring new territory in the realms of gameplay and immersive gameplay.

What we’ve learned and built thus far however, is little more than a good start. Our experience with building, and then meaningful using, vector fields, fluid dynamics, and highly optimized particle systems leads me to think forward to still more applications like white water rafting, black hole surfing, and more…