Efficient planning and modular workflow for game environments

Learn to create game environments with efficient planning and modular workflows

In this theory lesson we will be taking a look at some tips for planning and building modular game environments. These theory lessons are non application specific, and although I delve into some practical examples at points throughout the video this is more focused on the theory and fundamentals.

Below you will find the notes from this theory lesson for quick reference after watching the video.

Reference Images used:
http://adin-jenks.deviantart.com/art/Alleyway-Stock-164030882
http://eirian-stock.deviantart.com/art/BG-Medieval-Street-II-106764702
http://joshnixonart.com/gallery/environments/
Angry Bots – Unity

What are Modular Environments and Why do we want them?

The first thing we really want to know, is what a modular environment actually is, what does it mean to be modular.
Basically a modular environment is built out of pieces or ‘modules’ that we instance around the scene. For example a stone pillar may be used throughout the scene, so we can use the same geometry for each one, or we can re-use that concrete texture from that wall for that window cover by painting it orange with vertex painting. It’s all about re-using what we have to make various things. Rather than creating a new piece of geometry can we take existing geometry and use that?

Well this is all fine and dandy, but why do we want to do this? How will this be useful?

For starters, a modular environment is much easier to create as we don’t have to build as much. It’s also great for whipping up a few variations if your client isn’t sure exactly what they want. A modular environment  takes up less space, it is more memory efficient, and often you will have a lot fewer files to manage. Because of all this awesome time saving and free memory, we have a lot of spare time and memory to put somewhere else.

So to recap:

  • A modular environment is an environment built out of reusable textures and models.
  • It will make use of a “Texture Atlas”.
    – This is a texture made out of several smaller textures.
  • Uses a lot of instancing.
    – This makes for more efficient use of our assets.
  • Because of this it has a low memory footprint.
    – Meaning the environment will take less time to load, and will run faster.
  • It does require more planning, but less production time.
    – Leaving more time to spend on other things.
  • It has less unique pieces, meaning less work is required
    – “work smarter, not harder”
  • You can put your time, polygons and texture memory into something more important.
    – Such as your hero props, characters or even sleep!

What makes up a modular environment?

A modular environment is made up of two core pieces.

  • We have the texture atlas
    – This is the images and textures that make up the environment.
  • And the modules themselves
    – These modules are any repeated shape in your environment such as a barrel, roofing iron or power pole.
Now there is also modularity within modules, such as re-using some pipes somewhere else on the model, but we will delve deeper into this later.

modularity

Using vertex colors to your advantage

Vertex colors are amazing, everyone who knows me knows I am a little obsessed with vertex colors. This is for good reason too as vertex colors allow us to create so much variety without requiring alpha masked textures.

Here’s a few examples:

  • Vertex colors allow you to ‘tint’ the texture on a per vertex basis.
    – You can simply paint blue on concrete and it will become blue concrete.
  • You can use this to change one texture into another.
    – For example you can take concrete, stretch it and paint it to make it wood. Or paint it to become wallpaper.
  • You can split the vertex color channels to use them individually.
    – For example you can use the red channel to control saturation, green to control specular intensity and blue to control bump depth.
  •  You can blend between different textures.
    – For example you can use vertex colors to ‘paint’ damage and dirt onto a road.

If you don’t know how to do any of this, don’t worry. They are a little more advanced and we will be covering some of these in future tutorials, for now we will just say vertex colors are awesome and well worth learning, but not required by any means.

However, if you can’t wait for our Unity tutorial on vertex colors then here’s a tutorial I made a while back showing some vertex blending in blender :

http://metalix.co.nz/tutorial/ten-awesome-blender-tips/#blending

 

Efficient planning for an environment

In my opinion, the most important part of making a modular environment is planning. The longer you spend planning an environment the easier it will be to make and the more things will make sense to the player.

We must grab as much research as we can. Somewhere around 200-300 images is great for making an environment. We can then take a few of those and jot down what textures and modules we need and what modules will become units. We also look at what we like and dislike about images, what style do we want to achieve. We could also break into level design, such as how did the player get here, why are they here etc. But as that is such a huge topic we will leave that for another lesson.

Let’s break this down:

Looking for research

  • Get as many reference images as you can. Look at the mood – how does this image make you feel.
  • What do you like about this environment, what do you dislike.
  • Try and figure out what you can take from this environment and what you should avoid.

Categorize your research.

  • Put your research into folders and organize by types such as Models | Textures | Mood | Style
  • This will help you find things later on.
  • If something fits into more than one category, duplicate it.
    – This will make it much easier to locate later.

Analyzing Research

  • Find the forms and repetition.
  • Start by blocking out the basic primitives that make up the scene.
  • What objects are repeated throughout the scene?

Take a look at the textures.

  • How many textures do you need to make up the scene?
  • Where can you re-use textures to make various objects?
  • Where do you need to color with vertex colors?
  • Where do you need to use vertex colors to blend between two textures?
With all of these questions you will get a clear understanding of what you are trying to create, and it will make the process much easier.

 

Creating our modular environments

With our environment all planned out it’s time to create our modules and environment. There are a few different methods that I have used during my environments.

The first is to create our texture atlas, then create our modules to fit it. This is great for beginners and creates really speedy environments, but it’s a little more challenging to add in finer details and can result in some messy mesh and unused textures.

The second method is to model first and create the texture atlas later, which is great for creating a good level of detail, but is more suited to experienced users as it requires a little more knowledge of modular environments to get right.

The third method is to create our texture atlas, model to it, then completely make a new atlas from scratch. This is better for advanced users as it requires more knowledge of how things work and what is required.

In the video we go over the different steps I take for each process.

Model or Texture first?

There is no right or wrong way to do this, these are simply my methods that I use. However, each method comes with their own pro’s and con’s. Let’s take a look at the benefits and downfalls of each method.

Create texture atlas, then model to it:

Pros:

  • You can see the final results as you go.
  • UV unwrapping is very easy.
  • Very optimized for exterior environments or environments without technical details.

Cons:

  • Can result in some mesh fixing such as flipped normals and intersecting polygons.
  • Can be tricky when working with more complex scenes.

Create modular models, work with textures later:

Pros:

  • You can have a clean, efficient mesh to start with.
  • Can work with higher intensity details.
  • Very good at interior scenes, especially sci-fi.

Cons:

  • Requires some technical UV mapping,
  • Cannot see final result while working.

Both methods combined:

Pros:

  • You can see a preview of the result as you go.
  • Good for any scene.
  • Can have high or low intensity details as required.
  • Is a very efficient way to work

Cons:

  • Can result in a very messy mesh/atlas if you don’t know what you are doing.
  • Is difficult for beginners and can result in abandoned projects.
So there you can see that there is a lot of pros and cons for each method, and it’s all about finding what works best for you.

 Tips for efficiency

There is a few things to take into account when creating a game environment, let’s talk about three good tips on how you can make this easier on yourself.

Plan your environment before you start.

The more you plan the better it will be. If you do not plan, your environment can end up with no emotion, no connection to anything or worst of all. Not finished

Use vertex colors to better reuse textures

Vertex colors have a low memory footprint and can be used to color your textures, fake shadows|lighting|Ambient Occlusion, or even blend between two textures. If you want to learn more about vertex colors let us know and I will be happy to help out as it can be a very confusing topic.

Always return to the viewers angle

Your environment might look perfect from a birds eye view, but that’s not very useful for a first person shooter. Don’t ruin your environment because it looks bad from an angle that will never be seen.

Conclusion

In this theory lesson we have covered all you need to get started with modular environments. Try and challenge yourself to help learn the process by creating your own modular environments.

I am going to set a challenge for you guys. Go out and find an image of an environment and create it from scratch in 6 hours. This may sound extreme but having such extreme limitations makes you forget about lining things up perfectly or making that extrusion the exact depth. The goal is to work smarter, not harder.

Think it’s impossible?

Break it down into steps. Collect research images before you start, then proceed using method 1 for fast results.

Here are some rough time frames for the project:

  • 30 minutes: Take your research into photoshop and break down what textures, modules and setting you want for the environment.
  • 15 minutes: Create a texture atlas comprising of all the textures you think you will need, don’t worry about normal maps or spec maps for now.
  • 15 minutes: Any decals? Perhaps have a second atlas for any alpha mapped decals such as graffiti and signs.
  • 1 hour 30 minutes: Create some modules, what are the basic forms and props that build up the environments.
  • 1 hour 30 minutes: Arrange these to fit the scene.
  • 1 hour 30 minutes: Add any further modules, props and decals to make the scene work really great.
  • 15 minutes: Finally add any post effects if you have time.

Now at 6 hours put down the mouse, and upload a screenshot or two here. Don’t go back to work on it as it defeats the purpose of the exercise. It’s all about speed, and removing the perfectionist side of you to get an environment out. As this is what we do when we are creating fast environment variations. I don’t expect an amazing result, but I do expect you to have a go, and have fun :)

Here’s a short video of me making a six hour ruins environment. This has been done mostly in Blender, but end result is in Unity.
Feel free to use any application you like as this is not application specific.

https://www.youtube.com/watch?v=RZqAy5fNFhI

 

We will have more timelapses that are more Unity focused, but for this one I want you to focus how little attention to detail I am using, notice how I leave space on my atlas for more stuff which never gets filled. These speed environments are great for previz and getting you into modular environments so I don’t want you guys to fret about how optimized it is for the game engine, I just want you to have fun and get a taste for it.
We will look into fully optimized modular environments at a later date

I hope you enjoyed this lesson and if you have any questions or feedback please post them below.

Leave Comment

Discussion

54 Responses to “Efficient planning and modular workflow for game environments”
  1. Posts: 2
    wccrawford says:

    Thanks for this insight into the workflow! I’ve been working at learning to model (I’m a programmer) so any insights are helping at this stage. :)

  2. Posts: 47

    Great info! I’m going to have to watch all the other links you posted because I’m a bit lost on how to take an atlas and then actually use it. Also, is it more efficient than Substance designer, cause I recently purchased that.

    • Posts: 158
      Metalix says:

      Hi Chris, an Atlas is effectively a bunch of images stitched together so your UV’s will map to which part of the texture they need.
      This will not work with substance designer and is more efficient but more work.
      What you can do is create awesome textures in substance and then stick the resulting textures into an Atlas to save on memory.
      -Alex

      • Posts: 47

        Maybe if I slow down the timelapse I can figure it out. Very interesting. I pulled down the source files and am going to dig into it as well. Of course, it will take me much longer than 6 hours.

      • Posts: 1

        Hi Alex, do you have plans to do a tutorial on how to use a texture atlas across multiple objects/buildings, as i have no idea how this is done. Video was really useful

        Andy

      • Posts: 158
        Metalix says:

        Hi Andy, Not currently but basically once you create an atlas you can map faces to it for any building and just share the material.
        -Alex

  3. Posts: 1

    Very nice! Lots of good info. I would like some more detail on how to setup models/materials/shaders to use vertex colors to do all the things in this video. Not exactly sure how to do that in Blender and then take that into Unity.

    • Posts: 158
      Metalix says:

      We will be covering how to use vertex colors in a future tutorial, though if you download the source files there is the source files to the 6 hour environment that uses vertex colors and has a matching unity and blender shader.
      -Alex

  4. Posts: 1

    Hey,

    very nice tutorial on topic that seems to be neglected, hard to explain.

    1. Your texture blending link is broken.
    2. I found the video but have some problems. I managed to get it blending (1st time using nodes) but it also highlited/darkened my object at the same time a lot. I also wasnt able to see textures on object unless in vertex paint mode.
    3. I saw your time lapse and it was fantastic. Is this way to go? Make whole level as single file in blender and then export? Do you just let unity make coliders etc…

    Feel free to ignore me.

    Again very nice tutorial, thanks for sharing.

    • Posts: 158
      Metalix says:

      1. Updated! – http://metalix.co.nz/tutorial/ten-awesome-blender-tips/#blending
      Thanks for the keen eye
      2. The node setup can be a little finnicky, here is my node setup for reference: http://www.pasteall.org/pic/43287
      3. It depends, for speed environments this is perfectly fine as it is a quick workflow, though in a studio environment usually all props and landscapes etc are sourced and placed individually within the level editor. It is better but slower, so a little more difficult in a speed environment.

      Hope this answers your questions!
      -Alex

      • Posts: 7

        I was going to ask something along those lines. Unity occludes by object so is there a good rule of thumb for module size that unity handle well?

        As a side I have an idea. I wonder if in blender you could place some kind of place holders(perhaps empties) at the origins of separate modules, export just the placeholders and use unity script to place objects using the placeholders. if that would work you could even have several game objects that could fit the same location and randomize it.

      • Posts: 158
        Metalix says:

        Hi Travis, unity likes modules of 300 vertices I believe, but in general just avoid having hundreds of separate objects as it will slow things down a lot.
        And yes this is possible, though you could just place things inside unity :)
        -Alex

  5. Posts: 1
    calixto says:

    Alex, great presentation, very useful…if I knew what VERTEX COLORS were. Yes, you forgot to explain “vertex colors” and to provide a simple example of how this color shifting magic of yours works.

    Calixto

      • Posts: 3

        Sooo… the vertex colors with all 3 channels will work in Unity as well ? :D

        btw: i see this work awesome for landscape etc, but how about lets say wall – same method can be used to add ‘text’,’graffiti’ ?

      • Posts: 158
        Metalix says:

        Hi Daniel, yep it all works, graffiti is usually a 2D plane with a texture on it really close to the wall.
        -Alex

  6. Posts: 34

    Hi Alex, Is it ok to re-use some of your textures?

    I have used the wood texture in my own project, do you require credit for this use?

    Currently. I just do not enough free time to take up the challange, but look forward to trying it.

    Watched your timelapse and learned a lot :)

    If you could do a smaller tut for us all that would be a excellent tutorial.

    My current project is making good progress.

    I would like to send you my WIP, just for helpful advice is this possible?

  7. Posts: 1
    Patrick Kern says:

    First of all I wanna thank you for this awesome tutorial and the time-lapse. It really inspired me.

    It would be cool if you could make a tutorial about texturing a model with vertex colours and import it into unity.

    Patrick

    • Posts: 158
      Metalix says:

      Your welcome, Sure this is on the agenda
      -Alex

  8. Posts: 1

    Thank you for the amazing video! I’ve learned tons from it and have begun experimenting with using texture atlases but have run into a problem with Unity’s mip mapping. Since the textures are touching each other the mip mapping bleeds the boarders together creating a seam. How do you get around this? Do you make padding zones on the outer edge of your textures in the atlas or is there a way to mess with the shaders in Unity to dodge this problem? I would refer to your timelapse but I’m not sure what your doing is perfect practice or is just being done for the sake of time saving.
    Anyways again amazing video! Can’t imagine what I would do without Unitycookie!

    • Posts: 158
      Metalix says:

      You are very welcome.
      Yes I tend to have a small buffer between each piece, you can mess with shaders to circumvent this, The timelapse is not perfect practice but was done for time and simplicity sakes.
      I like to have a 3 pixel buffer between my tiles in practice which helps with any color bleeding.
      -Alex

  9. Posts: 1

    Just Watched you Time laps of the 6 hour Ruins. Wow… Correct me if I am wrong but, did you not UV unwrap with seams? just as the faces them self? that may not be the best wording from what I could catch it looked like you selected the face unwrapped it and just positioned it? Would love to see the follow up Tuts on this process. Thank you.

    • Posts: 158
      Metalix says:

      Yep, we start with a texture atlas and map the faces to whatever texture we need on the atlas. This is a very quick and easy workflow for speed environments, though you will still need to UV unwrap properly for final projects.
      -Alex

  10. Posts: 2

    Wow, great tutorial. Just the kind of information that is hard to get.
    Can we get more like this?
    Do you have more planned?

    Thanks.

    • Posts: 158
      Metalix says:

      Yep we certainly have more of these planned. I’d like to go into level design at some point as well.
      -Alex

  11. Posts: 1
    Michael says:

    Thanks for the really great tutorial Alex. I am currently building a modular level on a project. This tutorial was just what I was looking for.

    Looking forward to your vertex painting in Unity tutorial as I think it will make everyone’s work 10x better.

    -Mike

    • Posts: 158
      Metalix says:

      Yep really want to get onto that one soon ;)
      -Alex

  12. Posts: 1
    Chris Smith says:

    I guess what I am having trouble with is using a Texture Atlas combined with the Vertex Colours. If i want to blend between two textures using the Vertex Colours, can said textures be contained within the same atlas? Or do textures I am blending between need to be in separate Texture Atlases?

    • Posts: 158
      Metalix says:

      This is usually for multiple tileable textures, for example set up your atlas, then blend a tileable dirt texture over the top using the red channel of the vertex colors.
      You can do this with atlased blends but you will have to set up your shader to change the uv-coordinates for each channel. This would be more efficient on memory, but at a higher cost on cpu.
      -Alex

  13. Posts: 3
    D3D says:

    You guys touched on vertex painting in your ‘Efficient planning and modular workflow for game environments’ video. Could you please make an extended ‘applied’ tutorial for both Blender and Modo and also show us how to follow it up and get it working in Unity? This would be a great help.

    • Posts: 158
      Metalix says:

      It is on the production list, we will be dealing with vertex colors in the near future, I can do for Blender, Maya and Max but I don’t know Modo, perhaps Wes may do a follow up at some point.
      -Alex

  14. Posts: 2
    Jack says:

    You mentioned in the video, “scale this texture down and tile it” in one of your research scenes. Could you give some details on how you accomplish tiling and scaling when using a texture atlas?

    • Posts: 158
      Metalix says:

      You need to specify where to clip the image within the shader, you can do this on a per material or pass values to it for clipping from within a vertexColor change script – we will be looking into this at a later date.
      -Alex

      • Posts: 2
        Jack says:

        Per material would send drawcalls through the roof, requiring a separate material for each variance in region/scale.

        Passing a rect and a scale to a shader would be optimal, but far beyond my capabilities. That’s why I’m watching your tutorials after all.

        Hopefully ModularBumpedSpecular will be the first shader you teach us to write in your advanced tutorial series!

    • Posts: 158
      Metalix says:

      Not if you only do it on a few objects, but yes we will be covering passing variables to shaders without affecting draw calls soon.
      -Alex

  15. Posts: 6

    I am so happy I watched this. Such a good lesson. They don’t offer game design in my school so I have to learn everything on my own and I want to learn it in as if I was going to school for it.

    These methods for level/environment design are so efficient. The whole texture atlas thing is brilliant. I never used/made one of those but now Im going to start making that an important part of my work flow.

    In my previous projects I would always model about three items first such as a bush, a tree, mushroom, etc and unwrap then texture each one separately. Then make duplicates and spread it around. so not very efficient.

    But I have some questions, is this technique where you have all your textures on a single atlas only ideal for creating environments with a lot of block models such as buildings, props like benches or dumpsters or can it be used for environments with a lot of foliage. (I know in the video you gave an example of a foliage environment) but for things like trees, bushes and what not is it better to just texture each one separately or make it part of the texture atlas? And also from what I picked up in the video its mainly for common objects that are reused and in the scene.

    So say you wanted to have a very unique building in game that is more interactive, like you go in it and what not (like a shop), then it would be better to model it separately and texture it by itself instead of making it part of the texture atlas?

    Also, when texturing with the texture map, your not even marking any seams or anything, are you just Projecting from view in blender and get that piece properly on the texture atlas?

    Oh yeah and one more question, I love how this allows for rapid environment development for games but I was just wondering, are these same techniques for environments used in animation studios as well? or is it just something used in the games industry?

    sorry for the long comment and all the questions, I just found this really interesting and I want more :)

    Great time lapse by the way and I look forward to your future lessons/ theory’s

    • Posts: 158
      Metalix says:

      Hi Snowconesolid,
      You can use this for foliage as well, everything in fact.
      If you have only a couple of instances of a unique object, they can get their own texture as there is no point them taking up room for the texture map.
      I tend to have a texture map per material.
      And to an extent, this is mostly for games, but it is used in film as well for background props.
      -Alex

      • Posts: 6

        Thanks Alex! I have been doing some more practice with foilage. :)

        I have another question though, Im stuck at the moment. So I have been working on a simple modular enviorment scene and I created my moduels, such as buildings, signs, dumpsters, fences.

        But now, I don’t know how to approach making the ground. Things like adding in a road, side walk etc. In the past I would just use a huge plane, and paint the textures on it like a road, grassy patches, etc. But i know thats not good at all, a) the texture comes out very blurry and ugly and b) I have no geometry, just a square world that is very flat.

        so, heres my new technique, now I am using Unity’s terrain to create things like hills, blend different ground materials like dirt/ grass. Is it a good idea to also just paint other things like maybe a road onto the terrain? And what about things like side walks? for this practice project I made a small sidewalk model and duplicated around to make it extended. Is it better to just also paint on a side walk or use the terrains geometry for the side walk and road?

        So what do you think? How do you create your terrains, roads, etc? do you also use unitys terrain system or model it in blender?

        I use to do it with blender but found its probably better to use unitys terrain system for these things.

        I have the moduels, but no proper environment (or proper techniques to make the floor) to place them on

        sorry again for all the questions :)

    • Posts: 158
      Metalix says:

      Personally I create my terrains in blender, but I use vertex colors to blend tileable textures.
      To explain further:
      Let’s say I have a terrain that consists of grassy, dirt and paved areas, as well as a road.
      I can use vertex colors as a mask to blend between several tileable textures resulting in an efficient and high quality result.
      My base texture would be grass, the red vertex color channel would blend in dirt, the blue channel would blend in pavement, and the green channel would blend in a road.
      To do the road I would separate out the vertices that mark the road, flood them with pure green and join them back in to get a crisp vertex color edge rather than the usual soft edge you get from painting manually.
      -Alex

      • Posts: 6

        Oh ok! I understand now. When I first watched the video and saw you painting other details onto the road example I was confused a little. How is he doing this? what kind of blender magic is this? haha. I guess I just never really played with the vertex color mode in blender much.

        I have just been examining terrains/environments in other games and trying to figure out how they created them. For example I have been examining this screen shot from “Deadly Premonition”
        http://images.eurogamer.net/2013/articles/1/5/5/2/9/3/5/135967509868.jpg/EG11/resize/487×-1/quality/91

        And other screens and trying to figure out how they did things such as the road, sidewalks, and blended areas.

        Thanks for explaining. I will start doing my terrain in Blender since I have more control than unity’s terrain system.

        One more question though, sometimes terrains end up in way to much geometry. For a game environment, what would be an ideal limit for the amount of geometry on the games terrain?

    • Posts: 158
      Metalix says:

      We will actually be covering this in a tutorial on blender cookie soon :)
      To limit geometry you can use dynamic topology, remesh or the limited dissolve function.
      -Alex

      • Posts: 6

        Yes! I really look forward to that tutorial. I have been researching it and I watched the vertex paint tutorial you have up on your site. Can’t wait for the blender cookie one.

        Thanks once again for answering all my questions and sharing your knowledge Alex.

  16. Posts: 8
    zaffer says:

    Hi Alex,

    I’m watching your 6-hour ruins timelapse, which is great. Hope you don’t mind a question about the modeling. At about time 12:30, after you have made the basic walls and cut them up into ruins with the knife tool, you start “roofing over” the walls where you made the cuts by making faces that join the inside of the wall with its outside. This happens very fast and I can’t quite see how you are doing it. Are you just selecting edges and using the F key or do you have some more efficient method? Thanks.

    Zaffer

    • Posts: 158
      Metalix says:

      Yep that is selecting edges and using F to fill the faces, then U to unwrap.
      -Metalix

  17. Posts: 8
    zaffer says:

    Hi Alex,

    Another ruins question: Around time 15:16, what script are you using, and what are you using it for? Thanks.

    Zaffer

    • Posts: 158
      Metalix says:

      Oh that took all the ngons on the active model, coverted them to tris and the converted them to quads where possible.
      -Metalix

  18. Posts: 1
    Dan Kent says:

    Hello Alex,
    First, I am enjoying your tutorials very much, they are very well done.

    When you set up your models in Blender, how do you map the same vertex to multiple textures in your texture atlas? I have been searching the internet and Blender documentation and can’t figure it out. I would like my shader to take texcoord0 to 2 or 3 all from the same atlas and blend them but I’m not quite sure how to go about it. Can you tell me quick or show me where to look?

  19. Posts: 46

    When you create the vertex colors in Blender, do you have to have a specific shader or write a shader in Unity for it to work?

Leave a Comment

You must be logged in to post a comment.