Jump to content

Interview with Thiago 'Minos' Klafke, Blizzard Environment Artist


Sprony
Oilá! You recently released your very impressive “Sampa” scene for UE4. What gave you this idea?

Hello! I already had a pretty good idea of what I wanted to work on as a new personal project: a near-future city with architectural influences from the cities of Sao Paulo and Tokyo (among other sources).

I didn't settle for a specific city or country in order to have total creative freedom though.

 

ccs-1-0-70416700-1409330231.jpg
 
 
You made everything from scratch. It would be very interesting to go through your entire process for creating “Sampa”. Could you walk us through it?

Of course! But before we start, I want to add that this is by no means a how to guide on how to make environments but more of a general breakdown of my process and the many lessons I learned during this production.

Blockout

The very first thing I did was to blockout the entire space in 3ds max. I didn't want to spend too much time on this, so I avoided thinking too much about how I would build this and instead just focused on making cool shapes. By importing everything as one single file into the engine, I could quickly check out how the map looked ingame.

 

ccs-13101-0-74534600-1409334475.jpg

 

As game artists, we tend to get too technical so modeling blockouts is a great exercise to let creative juices flow freely and focus on art and gameplay. This blockout also enabled me to get the correct scale from the start which is very important when working on urban environments. I always work with a scale model from the ingame character inside my modeling program, this way I can quickly check how high a door handle or a handrail should be for example. The blockout level took me about 3 days to complete and even though the final scene looks nothing like it several ideas did make it into the final level, including geometry pieces.

 

ccs-1-0-99268200-1409330238.jpg

 

Production

The initial production phase for this environment was in fact the hardest part that I went through. I started to seriously question if I would be able to realize the full blockout in a timely manner. Learning how to work with PBR materials also took a bit longer than I had anticipated.

I initially explored making every building uniquely on top of my blockout, but after working for days on a single building I decided to go for a mix of unique geometry and modular "lego pieces". I made sure all my unique pieces fit the same grid as my modular pieces so I could mix and match different pieces to get more variation easily.

 

ccs-13101-0-90279500-1409334481.jpg

 

Mood

One of the things that was very clear in my mind when I started this environment was that I wanted it to take place early in the evening and leverage indirect lighting and ambient occlusion more than harsh shadows. With this in mind, the basic mood was one of the first things I set up in Unreal. Some people like to do this at the end of a project and while it might be more time consuming to do it as you go (since you will probably be noodling quite a lot more!), this enabled me to learn Unreal's post processing system much better and in the end I managed to get the exact mood I was looking for.

 

ccs-1-0-33360200-1409330260.jpg

Some of the lighting iterations

At this point I was pretty much certain on what style to go for and how to build this level so I spent the next weeks building modular pieces and small test scenes.

 

Materials & Textures

This scene makes heavy use of tiling textures, one big generic trim sheet and a few unique textures. I struggled a bit with PBR materials at the beginning (as was expected) but eventually got the hang of it, and while my materials were not looking stellar they did the job for a while…

 

ccs-13101-0-30155800-1409334744.jpg

Some material examples

 

Normal maps were created for each asset as I saw fit. Some of them were baked from high poly models from 3ds max, some were sculpted in Zbrush and some were made entirely with nDo. Normal maps are even more important these days than they used to be, since PBR relies heavily on good normal mapping for lighting. Gone are the days where details had to be faked in the diffuse and specular maps.

 

ccs-13101-0-76327300-1409334799.jpg

Sidewalk sculpt

 

At one point I finally decided that my materials were lacking definition and fine detail and started experimenting with the new Quixel Suite tools. I fell in love with dDo immediately because it gave me exactly what I wanted: Great material bases. I could just add my flavor on top of them.

My process with dDo usually goes like this: I create an ID map to define all the different materials in the texture. I then apply a few basic presets (which give you perfectly calibrated Roughness/Metalness/Albedo values) and once I'm happy with the base I add my own hand-painted details. This proved to be a win-win situation, as it made my materials look much more believable and I was also able to reuse 100% of all the hand-painted layers I had done on the old textures.

 

ccs-13101-0-81584500-1409334868.jpg

 

A comparison of the original sidewalk texture (made by hand) vs the dDo version

Tip: You can get much sharper looking textures in Unreal by changing the “Mip Gen Settings” to Sharpen under the textures’ Level Of Detail settings (double-click a texture map to access this).

Working with PBR can be pretty daunting, especially when it comes to metals, so I definitely recommend exploring dDo or some other automatization tool for texture production, even if you have to tweak them heavily to match your style.

 

Material Instances

One of the best features of the Unreal Engine is that you can create Material Instances very easily from regular materials. These instances are much easier to work with and save you a lot of time setting up new materials since you don’t have to build a node network everytime you need a new material. One extra benefit of using Instances, is that you can also fine tune your materials much faster because changing instanced parameters don't force a shader reload, whereas saving a regular material does.

 

ccs-1-0-77736100-1409330275.jpg

A simple material with Albedo, Roughness/Metallic/AO and Normal map support. Original material on the left vs material instance on the right.

 

I didn't want to create one big material to fit all my needs (not very performance friendly), so every time I created a new material type I also made sure that it could be used for instances.

 

Some of the material bases I created

Architecture_Parallax_3Layers: A material with parallax mapping support, mostly used for windows.

ccs-1-0-65313700-1409330277.jpg

 

The actual Parallax node network is pretty simple:

ccs-1-0-74433800-1409330390.jpg

 

Asphalt: This special material uses World Space mapping with a "stain" texture multiplied on top for large scale details. This material was later reused on a "Wet" version (described below) for the roads.

ccs-1-0-88039400-1409330393.jpg

 

Architecture_Wet_Dirty: This material uses vertex colors to blend the base material with two other materials: A "dirty" version of the albedo map and a flat 100% reflective material (to simulate water puddles). Explaining what each individual node does is beyond the scope of this article so I'll just leave the shader network here:

ccs-1-0-46158000-1409330399.jpg

 

The wet material in action:

ccs-13101-0-28957400-1409334464.jpg

 

Creating Variation With Symmetry

You can create lots of variations quickly using symmetry. The AC kit consists of two base pieces and several variations created with the Symmetry modifier in 3ds Max:

ccs-1-0-95849500-1409330437.jpg

 

I also used this trick to make more variations out of this Storefront:

ccs-1-0-22887900-1409330451.jpg

 

Lighting & Post-Processing

To light this map I used standard lightmaps. While making fully dynamically lit environments in Unreal 4 is a possibility I found that the performance loss is not worth the time saved by not baking lightmaps.

I kept the lighting simple, contrasting small "gold" light sources with the ambient blue color. Instead of lighting the level as a whole, I created several "small" scenes. This makes the level look less "art directed" and more like a real city would. I also placed some strategic light sources to highlight the wet look in some areas. While I imagine this kind of "wet" look will be abused until everyone hates it in the near future I kept it very simple and restricted to where it made sense and would look good.

 

ccs-1-0-72825800-1409330419.jpg

Carefully placed water puddles close to strong light sources

 

When it comes to Post-Processing, I like to keep image adjustments outside the engine to a minimum. I really took the time to tweak the exposure values to get a good range of details in shadows and also to avoiding bright areas being way too bright. This can be accomplished by a combination of tweaking exposure and Tint/Contrast settings under a Global Post Process volume.

One of the last steps to finalizing this scene was to bring a few screenshots into Photoshop, tweak the levels and saturation values until they were exactly what I wanted, and then create a lookup table for the color correction. However, for some reason I was getting horrible banding with the color correction enabled, so in the end I just placed my screenshots from Photoshop next to the viewport and tweaked the post-process values until both of them looked exactly the same.

 

Wrapping Up

This is the 10% part of the process that makes everything look 200% better. During this phase, I created small interest areas and dressed them with props, particles and decals. I also scavenged several pieces from unfinished scenes and from my initial blockout. One of the examples is the News Stand which I just polished the geometry from the blockout and applied final materials on it:

 

ccs-13101-0-44662100-1409334991.jpg

Again, never discard any ideas/assets, you never know when they might come in handy!

 

ccs-13101-0-54482200-1409334984.jpg

The light glows are simple particle emitters consisting of two emitters: A regular "round" glow and a horizontally scaled one to simulate anamorphic flares.

 

Example of decal usage:

ccs-1-0-17724900-1409330435.jpg

 

Some of the pieces used in the level:

ccs-1-0-68576200-1409330457.jpg

 

Now that was a very detailed break down. I’m sure people will really benefit from the information you just shared. Thank you for that! In the beginning of this interview you said that you learned a lot of lessons during the production of this scene. Could you share those as well?

Yes, I learned quite a few lessons with this project. Namely:

  • Modeling a blockout level without thinking too much about clean geometry or precise dimensions enabled me to focus purely on art and architecture instead of processes and tools.
  • Never underestimate how much time consuming it is to make current gen art. My initial blockout turned out to be way too ambitious for the amount of time and resources I had for this piece.
  • Never discard any ideas! Several pieces I made for the blockout level were actually polished later on to be used in the final level.
  • Don't try to find a one rule that fits all when it comes to asset production. As long as you work with reasonable dimensions that adhere to the grid you can mix unique and modular pieces easily. The same applies for using Unique or Tiling textures, find a balance to use either where it makes sense.
  • Don't think twice about pausing work on something when you feel you are noodling too much or if it isn't going anywhere. It's usually better to trust your instincts than trying to make up for the "wasted" time by forcing yourself to finish it.
  • Don't be a dinosaur and embrace progress! My initial reason for not using dDo at first was because I thought that all my textures would look the same but this is not the case if you use it wisely.
  • A texture artist needs to be versed in several different tools to get good materials. Don't stick to just one, explore all options to find the one that’s best suited for each specific situation.
  • There's no such thing as wasted time or wasted work. Even if imperceptible at first, every time you work on something you are making progress towards being a better, more experienced artist. Most of the time this means working on "failed" projects. But if you really think about it they are not failures at all as we learn both from mistakes and from the things we get right. Several ideas that I spent hours and hours on didn't make it to the final level but that's fine. In the end, they gave me a broader perspective at environment creation which enabled me to make the right choices towards the end of the project.
  • Fun fact: I've been trying to make this environment for over a year now, exploring several ideas before. I'd say this is the third iteration of this idea and the good thing is that in the end, with a bit of polish, I managed to use most of the stuff I made for the previous iterations.
  • This is a bit cliché but very important: Don't be afraid of making stuff. Work on a lot of crap and only show what's worthy showing (usually a small percentage of what you make). That's the only way to find your own style and gain confidence in your abilities.

 

Very motivational and inspiring Minos. I’m sure it will be appreciated. Before we wrap this up I have to ask about something terrible that happened. Something unforgivable (even though the above makes up for it but just a bit). There’s an Polycount logo in scene but Hurg is missing. What blasphemy is this?

Haha! Yeah my mistake… While polishing the assets for the final version I removed the Mapcore sign from the building I was using it on (so that not every instance in the map had the sign) and completely forgot to add it back while rushing to finish the scene. I only noticed that when I was publishing the video.

 

It’s really a shame because that logo looked awesome in the level!

Just kidding Minos. I think everybody will agree that the time you took to write this down will be appreciated by and helpful to all (aspiring) designers. So in short, thank you again.

Thanks for the opportunity Sprony and I hope you guys learned a thing or two with this!

 

ccs-1-0-89499500-1409330463.jpg

ccs-1-0-43168800-1409330468.jpg

ccs-1-0-86186900-1409330472.jpg




User Feedback

Recommended Comments



Pericolos0

Posted

Awesome interview! About the banding happening with the color lookup table: it probably was because the texture was compressed. Lookup tables need to be uncompressed.. I had this same problem happen to me before :).

Minos

Posted

Awesome interview! About the banding happening with the color lookup table: it probably was because the texture was compressed. Lookup tables need to be uncompressed.. I had this same problem happen to me before :).

 

Damn that's right, completely forgot to set the texture settings to uncompressed...

Bunglo

Posted

Awesome sauce!

 

Thanks for this, Minos. I always like reading when artist know the concept they want to accomplish but don't get bound to their references or ideas (a problem I find my self constantly running into myself.)

 

Good stuff :)

Sprony

Posted

I'm glad you all like it. Minos really went all out with this one. Enjoy! Now that you all know Unreal don't forget our upcoming challenge :P

 

Thrik

Posted

Was approved on reddit at last, hope some guys over there enjoy it. :)

 

Thanks again for the splendid article Minos, that point about always moving on when you lose motivation is so valuable. Nothing can destroy your desire to work on hobby stuff more than getting too attached to a particular project, and in fact working on something else can easily give you fresh ideas for the original project.

Squad

Posted

Once again a great article. Thanks you, Minos and Sprony!

I particularly like the lessons Minos mentioned learning throughout the project, as most of them can be applied to a broader range of projects/engines/...

 

Keep those intervieuws comings :)




Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Mapcore Discord

  • Mapcore Supporters

    Our incredible Patreon supporters keep Mapcore's lights on. If you'd like to donate, check out our Patreon announcement.

    Note: This is brand new! The format will be tweaked and rolled out to more pages soon.

  • Our picks

    • [CS:GO] Shore
      One of the projects I worked on after I made de_austria.

      Yeah, I know the timing is really bad (CS2!), but can't change it... 🙁

      In general a lot went wrong during this project. Had a lot of problems with the layout, but I think I found a good compromise in the end. Also learned many new things. Maybe I would even be ready to create a really good map now after all, but I think that it's gonna be the final one. I really like making maps, but it has become too time consuming over the years for just being a hobby. Unfortunately I never managed to get a job in the games industry. So that's it. I hope it's a worthy ending of 20 years of making maps for me. 🙂

      Shore is a bomb defusal map for CS:GO that takes place on Lofoten Islands, Norway. (Also have a Hostage version of this that works well imo)

      Workshop link: https://steamcommunity.com/sharedfiles/filedetails/?id=2955084102

      I took some inspiration from this place in Norway:


      Layout:


      Some pictures:
      • 18 replies
×
×
  • Create New...