after reading this incredible article, im still left with the question..."but, HOW?!"
More of these please! I need some good beginner tutorial!
ahahahah Luke hahaha comment of the day !
Vytautas Katarzis talked about making his beautiful Seaside Town modular environment inspired by Dishonored 2 style using Substance Painter, 3ds Max, and UE4.
Hi, my name is Vytautas Katarzis, I’m a self-taught 3D artist from Lithuania. My first experience with the game design was making custom maps for Warcraft 3. I then got really into Unreal Tournament, started making maps for it and learning Unreal Engine. After school, I decided to pursue more “normal” carrier path by studying law, which lasted for 4 years, but my calling was the game art. I dropped law studies about 4-5 years ago and started learning computer graphics and game design all on my own.
Little by little, learning more each day I got better at the craft and my good friend and now colleague Tomas Narbutaitis suggested that we team up and start working in the field, and so we did. Now, for several years, we’ve been doing freelance work and selling assets in marketplaces. Our website is here.
The Start of the Project
When I’m working on personal stuff with no clearly defined goal I tend to veer and change the project a lot, to work towards what interests me the most at the moment. Same happened here. The starting idea for this project was a small-ish island with a lighthouse, some building, pier etc. When I’m starting a new project I tend to start from the hardest part for me, which in this case was the buildings. My original idea was more focused on interiors than exteriors and when I started working on exteriors I soon realized that my exterior approach was very boring. Walls were just rectangles, windows were just smaller rectangles inside bigger rectangles. I needed to change my style so I started looking for inspiration.
When I first started learning CG, Dishonored 1 was a game that blew me away as a player and an artist, and I’ve been following artists from Arcane, creators of Dishonored, closely. Their work on Dishonored 2 was just crazy and I went to see how they made their buildings. I was running around in the game for hours, dissecting every little detail about how their levels were constructed and the elegance with which their architecture was constructed. It was just brilliant. I started experimenting with their architectural style and improved my exteriors so much. But that vertical style didn’t fit a small lighthouse island, so I moved towards more continental town.
I experimented with the style to see what suited my goals and eventually, other bits like a pier and wood structures were done in Dishonored style too. I managed to make textures in the similar style as well. I was trying to be as modular as possible, without making everything look copy-pasted. A lot of effort was put into making sure that modularity is broken up and repeated elements have variations.
While individual assets were shaping up good, I was still struggling with the scene (or map) itself. I wanted to make something unique in the art style, not just a plain copy of it. I had a good number of assets done but had no clear vision of the scene. I experimented with several different ideas, each being slightly better but ultimately not good enough. After not getting any good progress for a couple of weeks you could say I’d hit an artistic block. And from my experience, if that happens, and if you can afford it, just take a break. And so I did, took a break from the project for almost a week. Meanwhile, I saw an ad from a traveling agency, advertising some really cool place. I thought “Man, ain’t that a cool place to chill”, and managed to find the name of the place. It was one the towns in Cinque Terre, Italy. I started seeing a lot of similarities with Dishonored 2’s Karnaca, so I thought maybe it’s possible to combine the two together. I looked up some more images about the region and one town, Manarola, – it was especially beautiful to me.
Inspired by the newfound discoveries, I attempted to construct some basic layout from the pieces that I had from previous scenes and even the early work was much better than anything I’d done before that. I knew I was on the right track. Even though the finished scene isn’t looking exactly like Manarola, it was never intended to, it was just a way for me to find the right workflow and start moving in the right direction.
I knew from the start that I got to stay modular and efficient. Like I mentioned before, I took a lot of reference from Dishonored 2 and dissected their way of making meshes. For walls and whatnot, I tried to replicate their style. While the walls themselves are fairly flat, there is a lot of detail around windows, doors and sometimes corners. Almost all of the meshes are combinations of trim sheets and tiling textures. Once I figured what I want to do, I made base mesh in 3ds Max, made low-poly/bake base/in-game representation mesh along with it, put base mesh into ZBrush and started sculpting some details like damage. Once I was done I baked normal in 3ds Max and the rest of the bakes were done in Substance Painter. I bake normals in 3ds Max because from all the software I tried 3ds Max produce the crispest normals out there, and even though a lot of that gets lost in compression and whatnot I still like the quality. I then went ahead and started working on textures in Substance Painter and modeling in 3ds Max.
There is nothing particularly fancy about modeling process. I have the bits I need from the low-poly that I made at the start. Then I go on and assemble the meshes while following the art style. I have to get the scale right from the start, as I don’t want to adjust it later (which I had to do a bit anyway). For scale and size, I was just following general Unreal scale, one that suits default Unreal mannequin. I made one wall mesh with windows, then created another variation based on the previous one. I followed this basic approach for all the walls, pillars, piers etc. I think it’s much more efficient to start with a complex asset and continuing from there when you are satisfied with the first one.
Vertical exaggeration & Modularity
Now, to be frank, the scale is a bit exaggerated vertically, but not by a huge margin. Dishonored has a very vertical art style, partly because it needs to support all kinds of crazy movement from the player, partly because it looks good and partly because in some ways it emulates older architectural styles. I wanted some verticality, but not too much, so I had to scale it down a bit. Even though I had to reduce it, I re-introduced it back again with some vertical wood constructions. Most of them don’t serve any practical purpose within the world but they look good. Same with drain and water pipes. They increase verticality, break up modularity and help the eyes to follow the flow of the scene.
So, when you look at the finished scene, it looks pretty damn complex, but it is made from fairly simple pieces, and those pieces are made from even simpler bits. You go down long enough and it all just boils down to some rectangles cobbled together to form interesting shapes. If something looks too detailed or too complex to follow, try to break it down into simpler, smaller pieces until you can see the simplicity of those pieces. And keep breaking it down until you reach the point at which you can replicate it and then start moving up the complexity ladder.
Key of the Environment Scene
For me, when working on the environment, the most important aspect is unity. Everything that is in the scene has to be there for a reason and it has to make the scene better, otherwise, there is no reason for it to exist. Unification of different elements and parts was challenging. Making a wall, a window, a pipe or a box isn’t particularly hard but making it all part of the same believable, natural and pleasant environment, in my opinion, is what makes the environment to stand out.
To achieve that you have to think what happened to the environment as it (theoretically) existed in the world. Piers got covered in moss, walls got dirty from the water and rain, windows got covered in dust, foliage started growing where it wasn’t supposed to etc. And vertex painting helped to bridge the gap between these different elements. Like a wall that is overgrown with ivy is also partially covered in moss. A bit of pier that is close to the water, so it is wetter than the other side.
There is always something connecting one bit of the scene to another or, in other words, unifying it. Vertex painting helps with that a great deal, decals help too as well as break up modularity. Placing small props like foliage, ivy, rocks in corners or between edges helps to bridge gaps between them. Vertex painting is also helpful for just bringing variation to an otherwise repetitive surface.
And finally set dressing and decoration is cherry on top. Pipes, wood structures, wires etc. wrap the scene in details.
Working with Textures
All of the textures that were done in Painter started with sculpts in ZBrush. My overall workflow in Painter was similar to Designer’s workflow, the main difference being that Painter needs data like masks to feed into their generators to work. Having AO, Cavity, ID etc. maps is essential and that’s why you need a sculpt. And to get those masks Painter has some really fast and easy-to-use baking tools (even though the quality is subpar compared to 3ds Max’s, for example. But they are good enough to be used as masks for texturing).
Sculpts themselves were fairly simple. I made the brick base mesh in 3ds Max, put it into ZBrush, then I was just following slightly stylized art style, with clean chips on edges and not a whole lot of details (I was using custom Orb brushes mostly, made by Michael Vincente and available for free on Gumroad). Small details would either come from Painter or shader in Unreal, I just needed bigger forms that define the texture.
When I started testing if I can even do this properly in Painter, I was throwing a bunch of things and seeing what sticks. I was mostly following the footsteps of Arcane’s artists (lots of great artists in there, but I was mostly following Yannick Gombart and Geoffrey Rosin), referencing their texture work and trying to achieve similar results. I did this basically by overlaying lots of different shades of the same or similar colors with different leaky (paint-like) noise patterns. And that was basically the backbone of the whole approach. Find a color that suits as a base, for example, stone/sand color, then put noise on top of it with different shades of that color. You could argue that it’s basically supposed to be done in Designer, but Painter allows you to manually paint masks (or just directly paint in a color or a pattern you want). I used this feature quite a bit. When I wasn’t satisfied with how the generated mask looked, I did some quick manual tweaks to it and that was priceless in my opinion. Also, the water leaks were all manually painted with custom masks, no procedurals.
Also, I used sharpening on stuff. It gives this kind of painterly look, especially when used on a layer that has a bunch of colors, just a small trick.
Making Water in UE4
Water shader is something I’ve been tweaking and working on for a long time now. I think I used variations of it for most of the UE4 environments that needed water. Frankly, I don’t think there is something spectacularly magical happening in there, it’s just things that are required in real-time CG water. The rest is mostly just about getting the right colors for the type of water you do, but I’m glad everyone likes it. I guess outside of bigger mainstream games there aren’t many good examples of high-quality real-time water out there.
It’s got wave patterns that are driven by panning the normal map. They are also a little displaced by sine wave-ish math pattern, same desaturated normal produces heightmap for world position offset to simulate wave displacement. It’s got translucency that becomes opaque with depth. You can also control the colors of the depth as it goes from the surface to deep water. Foam is just a single panning texture (made by an artist at Epic, not me) that is manually vertex painted on the water plane. I could have gone for a more procedural approach by using mesh distance fields, but I felt that at least for this project I’d prefer to manually put it where and how I want it instead of relying on automatic placement by distance fields. I’m also using Screen Space reflections (SSR) for the translucent surface, which isn’t cheap. That option alone, depending on the quality, can cost up to 150-300 instructions.
Like I mentioned before, currently, world position offset for wave displacement is driven by panning texture, which isn’t particularly good looking. You need some kind of mathematical solution, like Gerstner wave implementation. I’m not a programmer or shader artist, but perhaps for next iteration, I can get a hand of some freely available solution for Gerstner waves which would make my waves look more natural in motion.
Water Normal Texture
The water normal texture that I’m using is something I have since I first started doing game stuff. I wanted to make some basic water all by myself, so I started asking how people make water normal. Most people just said, those were rendered clouds from photoshop, which didn’t produce realistic water, but someone suggested checking out some plugin for 3ds Max that I don’t even remember the name for. Even back then it basically wasn’t supported anymore, so finding it for the download was tricky. What the plugin did was generate wavy patters on a tessellated place in 3ds Max. Sadly it wasn’t tiling so I had to make that work myself (which was pretty difficult for me). Eventually, I made it work, and that’s the texture that I’ve been using for years now. I guess it’s time to upgrade if someone got any suggestions for making water normals.
I was frankly a bit surprised that a lot of people were complimenting lighting a lot. That’s mostly because I kept lighting fairly simple and was mostly just doing small color grading like adjusting white balance, color LUT, saturation etc. in post processing. I also tweaked tone mapper values just a bit and that’s something you have to be careful about. I’ll just post my PP volume settings, I think they’ll tell the story better. But basically, light and textures are fairly warm and PP makes it a bit cooler and contrasting.
Light setup is fairly simple, pretty much just basic lights. The main light source is the directional light of 7.0 intensity acting as a sun and some colored point lights/spotlights where needed. Also, the project was made on 4.16 engine version so it didn’t yet have a multibounce skylight, but I used moded lightmass with multibounce skylight. I’ve also increased diffuse boost to 2.0 in lightmass settings. It produces more bounce light from diffuse surfaces. Diffuse boost is mostly useful for stylized environments as it exaggerates the amount of bounce and bathes the scene in a lot of colors, which does look good sometimes but isn’t particularly realistic.
Height and atmospheric fog acts as a skybox and also helps to bridge the sky and water together. I use faked volumetric fog in a couple of places, basically spheres with the translucency that looks like scattering.
If you want to learn more about lighting, check Lighting Academy by the awesome lighting artist Tilmann Milde. I learned so much from there about how to prep textures, scene, lightmaps to have a good bake, and a bunch of other things. All videos are here.
One more trick: I used a fake bounce for rocks when baking lightmass. Basically, I put a node in material that switches to alternative color when baking, just a small thing I did but maybe you can find it useful.
I’m not sure about the exact time it took to finish the project as I was working on several other things in between, but it was 4+ months. I can’t say I ran into any particular bottlenecks, it’s rather that iteration, polish, and learning SP inside out took time. When you start doing something new it always takes more time than something you’ve already done ten times before, this is no different. I could have said with the first iteration “ok, that’s good enough” and moved on, but I didn’t, as I wasn’t satisfied. I wanted to make it better rather than faster.