How Did Brushify Appear and Develop?
At first, I was focusing entirely on creating the Brushify packs themselves, and I pushed to release as many as possible. In business terms, this is called a ‘Minimum Viable Product’. It’s basically a way to get something out of the door and judge whether or not it’s actually useful for people. The reception of the product then lets you know if you’ve found a viable business. It’s all about answering the question: is this something people actually need or want to use?
After Brushify received such a positive reception in the first year, I was absolutely certain this is a tool that the Unreal Engine community can benefit from. Going forward I want to focus more on Brushify as a tool for learning and development. It’s less about me showing off these fancy scenes and screenshots on Artstation that you never get access to, and more about helping real people build games, movies, artwork, and simulations.
Content & Price
Right now, my setup revolves around building in-depth tutorials that show how Brushify and Unreal Engine work, and then providing all the assets I show in the tutorials via Unreal Engine Marketplace in the form of packs. That means the knowledge is all absolutely free, but the assets and technology that took a lot of time/energy for me to build come at a small price. The revenue from those sales can then go back into the business and keep it growing and expanding. I’m also participating in Unreal Marketplaces ‘Free for the month’ program, which means every once in a Brushify pack becomes totally free and available to the entire community.
In the future, I’m going to stick to this approach and simply upgrade the quality and quantity of assets.
Brushify Purpose
The main goal of Brushify is to make developing games more accessible and user-friendly. Obviously, I love to strive for photorealism and create high-quality projects/portfolio pieces, but I see a huge problem with game engines and the industry in general. The biggest issue is that while engines like Unreal Engine 4 are super powerful that power comes with a steep learning curve. There’s a lot of extra discipline that’s required to get things running well in real-time, such as LODs, shader setups, understanding of how to get the best out of real-time lighting. These challenges are very difficult to overcome.
When it comes to game development, most beginners just want to start sculpting heightmaps and painting terrain. The sooner that someone learning the engine has a nice result, the more enthusiastic they’ll be to continue learning and creating. Unreal Engine 4 becomes even more powerful when combined with Brushify’s easy to use shaders and example content. My goal with Brushify is to create a toolkit and ready-made library of natural environments. The idea is that users are able to take assets and shaders off the shelf and immediately start to use them to build games. This cuts out a huge amount of manual labor and technical hurdles that slow down development, especially during the early prototyping stages.
Recent Updates
In this latest update, I’ve had the chance to focus on re-lighting every example map. Every pack has received new more realistic lighting. I’ve also had time to improve the landscape shader. I’ve added flowmaps support so that users can plug in flowmap masks and use them for things like scree, lava or rivers. I’ve also had a lot of time to clean up the underlying shader graph, adding better commenting and categorization. There are also tooltips that help users understand what the individual parameters are used for.
Crafting Landscapes
I think the first step in an open natural environment production is to try to build everything to scale. That really helps everything feel huge and gives you a big advantage from the get-go. The Brushify approach to landscape generation also speeds things up for me quite a lot. I feel like a lot of people get stuck trying to generate a huge map in world machine, but don’t realize that it’s just not the right approach. Most MMO’s have some internal editor that allows designers to sculpt terrain directly in the map-making tools. It should be no different with Unreal Engine. Brushify packs let you sculpt the terrain in more detail using Alpha Brushes.
Alpha brushes are an amazing shortcut to generate really interesting and detailed terrain directly in the engine. That means you have more control of what the player is actually going to see, rather than generating something super detailed in world machine and then realizing it all needs to change anyway. The other real game-changer is the automatic texturing, this is sometimes called a Landscape Auto Material. An automatic material means that as you sculpt the terrain the texture is automatically created. It can then be adjusted in the material instance settings to get the exact look you want.
I think a common mistake is making a terrain that’s too detailed/spiky and try to strive for detail in the heightmap itself. This is generally a bad idea because players and vehicles running around on the terrain will have bumpy collisions. It’s usually far better to have a smooth terrain and achieve closeup details in the textures.
Variations & Natural Roads Pack
Generally, I try to include a lot of variations in each pack. The Natural Roads pack has 12 different road variations, so there’s a good selection of pebbles, mud and dirt textures to pick from.
Another way that I try to add variety is by duplicating assets and then translating/rotating and scaling them. It’s possible to take the same asset and make it look totally different by changing the angle. This is also great for performance as it saves on texture memory, each mesh is pretty much just an instance so the more repetition the better. At the end of the day, it’s the overall image/scene composition that matters more than the assets themselves, it’s best to focus on getting the right light values and textures and trying to match your reference.
Roads are very tricky in Unreal and the spline system isn’t ideal, so any tricks in the shader that help to integrate the splines go a long way. I use a few tricks to help with the blending. The main one is to Pixel Depth Offset parameter of the material to introduce some object/terrain blending. It allows the user to change the fade distance and offset.
I also have an opacity fade at the edges of the road, so there’s never a hard line where the spline suddenly stops. I also use parallax mapping to give the roads a nice bumpy look.
Optimization
All of the Brushify packs are optimized to run at 100FPS+ on an older GPU (HD7970 or GTX680 equivalent). This is achieved via efficient use of LODs, both for meshes and textures. Each asset whether it’s a huge cliff or a tiny bush comes with several LODs that are switched depending on the screen space usage of that asset. This means that if an asset is very far away, or scaled-down very small, the LODs will automatically switch to a less detailed version. The same goes for textures, while mip maps take care of the 3D assets, the Brushify Landscape shader also has a custom texture LOD system. There are textures for Detail (for when the player looks directly down at the ground), Macro (medium distance) and Global (very very far away… think continents/huge landmass).
Future Plans
There are huge quality increases that I can make and that’s going to be something I’ll be working on. This month I just released what I’m calling ‘Brushify: Revision 2’. Revision 2 is a revisiting of all my previous packs, increasing consistency and quality across them all. I also made more user-friendly additions to the interface, like tooltips, better organization of parameters, and more detailed commenting in the shader graph itself. Trying to make Brushify as simple as possible for people to learn and expand upon will be essential to its success. This process is ongoing and there’s certainly a ton of work to do, but I think it’s worth doing to create more value for my existing customers, as well as encouraging more people to try out the tool.
There’s also the new Tropical Pack that’s pictured above, that will be available in a few weeks. The plan is for Brushify to expand to encompass all the world’s Biomes. If you want to build a certain scene, no matter where it is on planet earth… it should be just a case of browsing the Brushify catalog and picking the closest match. Once you have a solid base to work with you can quickly produce complex and realistic looking scenes. That also makes Brushify quite an interesting proposition for concept artists, as it’s easy to take an example scene, rework it a bit and paint over. I’d absolutely love to hook up some talented concept artists with free copies of Brushify and see what they can do with it. So if you have a kick-ass ArtStation already just reach out to me and we can work something out!
Joe Garth, Creator of Brushify
Interview conducted by Kirill Tokarev