Lennart Johansen is an expert in 3D visualization and mapping systems. And now he’s helping more than 400 developers apply procedural vegetation and run-time masking to myriad games and virtual experiences.
Unexpectedly, his part-time hobby has blossomed into a full-time job. And he’s got some cool growth plans too.
Based in northern Norway, with a background developing complex systems for military and civilian purposes, Lennart Johansen is well acquainted with harsh environments. While preparing those systems – some of which are used for search-and-rescue operations – many of his pre-Unity development challenges were like those faced by Unity developers.
“We had to solve a lot of similar kinds of problems when creating the mapping systems, where we used real-world data for the rulesets and spawning systems.”
“We all have a game inside us”
Johansen brought his hard-earned work experience to his first Unity project – a virtual-reality piece.
“I truly believe we all have a game inside us waiting to come alive, so it was just a matter of time and circumstances before I started mine, which inadvertently led to Vegetation Studio.”
But how did he get started with Unity?
“When I began that VR game project a few years back I chose Unity for a number of reasons, including that it supports new hardware quickly.”
Johansen’s primary motivation for using Unity, however, was actually people not technology. “My main reason was the strength of the Unity communities and the well-stocked Asset Store. When you’re a small team with limited resources, these things can really help kickstart a project.”
Turning game dev into an asset
So what gave Johansen the idea for Vegetation Studio, his first asset?
“When we were working on our VR game we wanted to let players use a level editor with complex outdoor scenes and vegetation on large areas. After prototyping the functionality, it occurred to us that we had created something that other developers could leverage for their own games. So with the idea of filling a niche in the Asset Store, we decided to spin it off into a product.”
For further inspiration, Johansen went back to the source: nature itself.
“When evaluating the different tools available, I realized that while they let you place objects individually or using brushes, real vegetation actually grows everywhere it possibly can. That made us want to use a different approach with rule-based procedural vegetation everywhere and a run-time masking system for roads and structures. For example, our idea was that a house prefab could contain the masking info you need to control the vegetation as you drag and drop it on your terrain.”
The users apply rule-based vegetation throughout a scene or game, using their existing trees, plants, grass, etc., then they can do manual editing to add the artist’s final touch. And that was a large part of Johansen’s impulse for helping developers build great-looking environments for fun games, as well as making their lives simpler.
“I would like users to spend their time on game content and functionality, not solving the hard problems of creating an optimized render loop, for example, because I’d like to think we’ve already done that for them.”
Bumps on the road
As a neophyte asset publisher, however, Awesome Technologies had a lot to learn about users and use cases. “One of our biggest challenges has been understanding user workflow for tools and how developers use and combine different systems. A surprise for us was that they never seem to use it as we imagined when we started development.”
And another thing he did not expect was how many developers out there work with large world projects with hundreds if not thousands of terrains streaming in as players move around. So, due to the multitude of different workflows and use cases, one of Johansen’s big challenges has been to develop and support a flexible toolkit that can work well in any kind of workflow, letting users enable just the parts they need for their project.
A further challenge for him was low-level access in Unity itself. “Earlier, the game engine was more like a black box and many times we wanted to have better control on the API level. Happily, things are looking much better now with the Package Manager and more code moving to C#. It’s easier now for us to see what’s going on ‘under the hood’ and to extend our modules.”
Not always an uphill battle
As Johansen hoped when he started using Unity, the passionate user community was quite helpful. “Their feedback from the beta to official release was great. There have been many friendly developers of all experience levels giving invaluable comments, info and advice. We really appreciate it.”
And so far, Vegetation Studio is being used in everything from indie games to large simulations by a wide range of studios. While the majority of games filling their landscapes with Awesome’s procedural vegetation are still in development, some games will be entering early access and release soon.
Regarding the Asset Store, Johansen appreciates the help and feedback he’s received, which allowed the burgeoning publisher “to reach a much larger market than they could with direct sales.”
Vegetation is a growth industry
As well as supporting and adding features to the base asset, which takes up approximately 20% of his time, Johansen has many vegetation-related projects on the go, including a terrain-shadow system and Vegetation Studio Professional, which is available in beta for current users of the asset.
With the introduction of Unity’s C# Job System and Burst Compiler, Johansen saw the possibilities for run-time procedural vegetation. Consequently, for their upcoming Pro version, Awesome completely rewrote Vegetation Studio from the core up using the C# Job System to multi-thread vegetation instance-generation and preparation for rendering.
Later this year, in another blog post, Awesome will be sharing their experience adapting Vegetation Studio for the C# Job System and Burst Compiler.
Running through the biomes
Finally, in terms of new features, Johansen and crew at Awesome are also adding mesh terrain support and biomes (i.e., distinct regions/environments like deserts, grasslands, rainforests and tundra).
“This will let developers create multiple rulesets for both vegetation and terrain splat-maps, and apply them on user-defined areas. That will make it easy to create, for example, an oasis in a desert or a green forest at the base of a snow-covered mountain. Users will be able to combine and blend between many environments across multiple terrains and meshes.”
With fine-tuned controls in assets like this, the grass is always greener . . . exactly where you want it to be.