This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.
"What makes your game special?"
It’s one of the first things people ask about The Lost Legends Redwall, The Scout, 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 project, The Scout (Steam), is based on the NYT Bestselling 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?
…it’s been far easier said than done.
This post focuses on the technical aspects while a separate post will focus on the design considerations.
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 exist 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, admittedly arbitrary, category: Organic. This catch all is meant 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 onion, 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.
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, the current build as of May 2021 includes updates and improvements made as recently as three months ago - 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.
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 new feature in Unity, particle force fields. While we lost a degree of fine control over scent and wind currents the force field 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 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, and the subject of a future post.
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…