This guide will go over some basic principles of basic structures. How do we build roofs? Why are they built that way? These are principles used in the construction of real buildings, and the aim of this guide is to provide a better understanding of how buildings are built so that buildings you design for games can look more realistic. Part 1: Supporting A Roof To start, here is a basic scenario. We have a 512 x 384 piece of ground we want to cover with a roof. For this example, we will be using metal panels for the roof. How can we go about this? We may try placing a column at each corner and resting a metal sheet on top, like this: However, there are multiple issues with this design. First of all, metal sheets are not made in this size. How would you make something this large as a single piece of material? How would you carry it to the location of the building (this is rather large to fit on a truck) and install it in place (this would possibly require a crane to lift into place, which is expensive)? Second of all, if you were to get a sheet of metal in this size, the metal would be too thin to not just collapse under its own weight. Every material has a maximum distance it can span, which depends also on how thick the material is. Creating a piece of metal thick enough to span this distance would be incredibly heavy and it may buckle under its own weight, meaning it is impossible to do. Lastly, nothing will stop this structure from blowing over in the wind. We will start by addressing the first two points: Metal sheets are small, thin, and light, and can't span very far on their own. Let's suppose that a metal sheet can, at most, span 64 units. It will need something supporting it underneath every 64 units. We can do that like this: Great! Now our metal will be held in place. However, we've just created another problem for ourselves by adding these beams underneath. They adhere to the same principles as the metal - they can only span so far for a given thickness. Fortunately, wood, unlike metal, comes in a variety of sizes for different tasks, with thin beams for short spans and thick beams for long spans. In our case, we've used thin beams for a long span, which doesn't work. These thin beams can probably only span 128 units on their own. How can we address this? Two ways: make the beams thicker, or use more beams to support them. Let's try the first option: These beams look strong enough to span 512 units. However, they also take up a lot of room, and there's a lot of them. This roof will be very heavy. Let's try the other way, with adding more beams: This looks a bit better. The thin white beams are being supported every 128 units by the thicker grey beams, which are spanning 384 units. These beams are still thick like in the previous example, but they are thinner (because they are only spanning 384 units instead of 512) and there are fewer of them (five instead of seven). Our roof will be lighter, the ceiling is a bit higher, and it will be easier to do things in the ceiling (like run wires, pipes, lighting, etc.). All we need to complete this is a couple of beams on the edges to support our floating beams: This system of using gradually thicker and thicker materials to carry the weight of the roof back to the columns is the fundamental principle of how to hold a roof in the air. (There are exceptions but we will not get into those because they are complicated and Source isn't good at curves. Maybe later.) (Note: When deciding on sizes for beams, you have two options. The first option, which I recommend, is to just do what looks right. The second option is to research a "depth to span" ratio for the material you are working with, which will tell you about how thick a beam should be for how long it needs to span. Google can provide this to you relatively easily. You may also want to look up what the maximum span of that given material is.) Part 2: Trusses And Sloped Roofs The structure we have can now stand up (besides blowing over in the wind, which we will address later). However, it does nothing to protect against rain. Nobody ever builds perfectly flat roofs* - any flat roof you see in the real world is (or should be) designed as a very slight slope. Often times, these "flat" roofs don't age gracefully and materials will sag, creating pools, which is why "flat" roofs will often end up pooling water in certain areas and creating leaks. Because of this, many buildings are built with steeper roofs to avoid the rain leakage issue as much as possible. This includes most "shed"-type buildings in the TF2 universe. *Except maybe in regions with little to no rainfall. Enter trusses. They help us build slanted roofs. A truss is a structure built out of multiple structural members that acts as a single solid piece. Here are some examples: (Image source: International Association of Certified Home Inspectors) A truss allows us to get the benefits of a very thick piece of material spanning a long distance while still being constructed out of thin pieces. A truss more or less spans the same distance as a solid beam of the same top-to-bottom thickness. As such, trusses allow us to make existing beams much lighter, as well as span distances we otherwise would not be able to with a solid beam (as solid beams will collapse under their own weight at a certain distance). In the image above, you can see that it is possible to build both triangular and flat trusses. Flat trusses are most often useful for supporting an additional story in the building. Triangular trusses are most often useful for roofs. Let's apply that to our example from before by replacing the main thick beams with trusses: This gets us a lot of benefits - the ceiling is once again slightly higher than before, there's room within the ceiling for storage, and the roof now repels water. Great! This is more or less the ideal way of building this roof. (Note: The direction of the metal sheets matters. The "grain" of the metal should run in the same direction as the slope of the roof. Otherwise, the ridges in the metal sheets will collect rainwater.) Part 3: Lateral Resistance Now we need to address the final problem, which is preventing this structure from blowing over in the wind. As it is, there isn't much stopping a strong gust of wind from turning the rectangular openings in this structure into parallelograms: This is because our structure lacks any lateral bracing. Without lateral bracing, we are relying entirely on the joints between the individual pieces of material to resist all wind and earthquake forces. Some materials can do this (reinforced concrete, specially designed steel pieces), but for simple wooden sheds, this is not a possibility. There are a couple of solutions to this issue. We can use more structure to reinforce the joints, or we can add walls. Both of these solutions rely on triangles, which cannot lose their shape without entirely breaking. Let's take a look: By adding small braces to each joint in the structure, we are creating small triangles in each corner. If that rectangle tries to become a parallelogram, it will first need to break one of the joints holding each triangle in place. It should be noted that this solution is not always ideal, as these braces will push back into the middle of the column rather than just the top or the bottom. This can cause the column to buckle more easily than it would otherwise. This solution is also not nearly as strong as building a wall, and should mostly be used when you need large openings. The other solution is to build a wall: On the left is a typical wood beam construction of a wall. There are vertical studs to provide support, and diagonal braces to provide lateral resistance. This solution doesn't leave as many openings as the previous does, but the lateral bracing is much stronger and doesn't run the risk of compromising the corner columns. (Also note that the beam on top is now much thinner, as it is being supported every 128 units. The corner columns are also thinner because they carry less of the overall weight.) On the right is a solid wall, made from a material like concrete or brick. This provides more or less the same benefits as the wood stud wall, except that it is made from another material (for aesthetic concerns) and is considerably stronger (solid concrete walls are often the main structural component keeping a skyscraper from tipping over). In the back is an example of how you might structure a wall to allow an opening for a window or door. You do not need to add diagonal bracing to every possible spot within a wall in order to prevent it from falling over, but as a general rule of thumb you should provide at least one brace within every wall. (The actual rules on this are more complicated and I may go over them later, but not now.) After all of that, we now have a completed structure. You may or may not have noticed by now that we've basically recreated the point from Harvest: Part 4: Practical Application Now that we understand how structures are built, how do we apply that to level design? This question is impossible to answer in full, but I'll try to answer some of the more obvious and far-reaching implications. Perhaps most important is understanding how following these rules makes it difficult to construct any building that is not a rectangle in floor plan. Creating more complex shapes can complicate the structure needed to hold up the roof, and it can also look aesthetically unappealing. However, only using large rectangles for our layouts can easily make for boring spaces that aren't fun to play in. What can we do about that? The most common strategy is to compose spaces out of multiple adjacent rooms. Take a look at this space from Gravelpit: Instead of creating a more complex shape to accommodate the full floor plan of this area under one roof, it is divided into two rectangles and joined with a doorway. This is much easier to build and feels more architecturally sound. Plus, it makes for a more interesting roof on the outside, and it can help communicate what is happening on the interior to someone looking at the building from the outside: You start to see this strategy used in almost every Valve map once you start looking for it. It is incredibly useful, and possibly the most important part of making buildings believable without compromising your ability to create interesting spaces. The other main strategy for more interesting room shapes is to create rooms that are larger than what you need and putting other objects inside to form the space. This room from the second stage of Hoodoo provides us with some nice examples: While the structure of this room is a square, the shelf on the right alters the shape of the gameplay space. Building a structure with the same footprint as the gameplay space would be difficult and also look strange. You can see a second example in the back, with a cage surrounding a small piece of machinery. This strategy also has the added benefit of creating out-of-bounds spaces, which can be taken advantage of when artpassing to help make the world feel bigger than it really is. The last thing I will note is that, in many of these examples, the structure is often not entirely complete. Some of these rooms have beams on the walls while others are just flat textured walls (which, in reality, would need the wood structure to stand up). Building the complete structure may create unwanted visual noise or bloat your brush count, so often times you don't want to build the complete structure. However, you should still try to design your buildings such that you could build the structure if you wanted to. Part 5: Conclusion This guide has covered some of the basic principles of how to intelligently design a structural system for a building, as well as some applications of these principles in existing maps. This is not an exhaustive article on the topic, but more just an introduction aimed specifically towards level designers. My hope is that this knowledge will help others create better designed spaces within their own maps, as well as better appreciate how existing maps create more believable spaces through more than just a good artpass. I plan to cover more on this topic later, but this should do for now.