<?xml version="1.0"?>
<rss version="2.0"><channel><title>Articles: Articles</title><link>https://www.mapcore.org/articles/development/?d=1</link><description>Articles: Articles</description><language>en</language><item><title>De_coralline</title><link>https://www.mapcore.org/articles/development/de_coralline-r119/</link><description><![CDATA[<p style="text-align:center;">
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="29023" data-ratio="56.21" style="height:auto;" width="1200" alt="thumb_PRINCIPAL.jpg.f31c162d595173ca17434d61ccad5ddd.jpg" src="https://www.mapcore.org/uploads/monthly_2022_01/thumb_PRINCIPAL.jpg.f31c162d595173ca17434d61ccad5ddd.jpg" /></p>

<p style="text-align:center;">
	<strong>de_Coralline is a map I've been making since the release of the not very desired map de_veteran_10, from the beginning I started to develop it in silence without talking much about well... a lot of time passed and my map was already in beta, version that I wanted to launch it but the computer had some problems causing me to lose all the files including all the maps I was making at the beginning until 4 months before the year ended and then I started to redo it with an entirely new layout;</strong>
</p>

<p>
	Welcome to de_coralline, de_coralline is a map that takes place in a village / castle of the <span style="color:#e67e22;">queen</span> coralline well... the map has a history and since the beginning of the creation of the map concept I always thought of placing statues de_piranesi style that would tell the map history in general this is the basic understanding of the map concept
</p>

<p>
	Currently it is in <strong>BETA version 1.5</strong> and the final version of the beta is 3.0, my concept of the beta is as follows
</p>

<p>
	<span style="font-size:16px;"><strong>Beta Phase:</strong></span>
</p>

<ul><li>
		<span style="font-size:16px;"><strong>Version 1: work on the constructions, make sense of them</strong></span>
	</li>
	<li>
		<span style="font-size:16px;"><strong>Version 2: Detail the ground and buildings from the inside</strong></span>
	</li>
	<li>
		<span style="font-size:16px;"><strong>Version 3: Put Developer Props on the entire map, and make the map make more sense, ending the beta</strong></span>
	</li>
</ul><p>
	Well... the concept is very simple but I ended up changing the layout a little making the map stay in the middle of the 3 phases so the number 1.5,<em> and any english mistakes.. just sorry i'm not usa american.</em>
</p>

<p>
	<span style="font-size:18px;"><strong>Downloads</strong></span>
</p>

<ul><li>
		<span style="font-size:18px;"><strong><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=2709657398" rel="external nofollow">STEAM WORKSHOP</a></strong></span>
	</li>
	<li>
		<span style="font-size:18px;"><strong><a href="https://gamebanana.com/wips/64271" rel="external nofollow">GAME BANANA</a> (SUBJECT TO CHANGE)</strong></span>
	</li>
</ul><p>
	<strong><span style="font-size:22px;">THE RADAR / LAYOUT</span></strong>
</p>

<p>
	<span style="font-size:11px;"><img class="ipsImage ipsImage_thumbnailed" data-fileid="29022" data-ratio="100.00" style="width:700px;height:auto;" width="1024" alt="1615074287_De_coralline_overview-Imgur.png.3ad5e716bb773366e3c0f7970fa86bdd.png" src="https://www.mapcore.org/uploads/monthly_2022_01/1615074287_De_coralline_overview-Imgur.png.3ad5e716bb773366e3c0f7970fa86bdd.png" /></span>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">119</guid><pubDate>Mon, 17 Jan 2022 12:02:32 +0000</pubDate></item><item><title>Designing Highly Replayable Stealth Levels for Payday 2</title><link>https://www.mapcore.org/articles/development/designing-highly-replayable-stealth-levels-for-payday-2-r102/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2018_05/header.jpg.f34c48d51f3bdfb642bf6fe8af551609.jpg" /></p>

<p style="text-align:center;">
	<img alt="screens_1_combine.jpg.4c0d79949063077cd8576c90d7df0087.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17552" src="https://www.mapcore.org/uploads/monthly_2018_05/screens_1_combine.jpg.4c0d79949063077cd8576c90d7df0087.jpg" /><span style="font-size:48px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">The Making of Murky Station: Payday 2</span></span>
</p>

<p>
	Payday 2 is a four player cooperative first-person shooter with RPG elements that centers around robbing banks and stealing rare loot. It was released on August 13, 2013 and has since shipped over 50 DLC packs and counting. With a thriving subreddit, it has consistently been in the top ten games played on steam. Today, I wanted to talk about my adventures designing stealth levels for Payday 2 before leaving Starbreeze in January 2018. While parts of this article are specific problems and solutions for Payday level design, I made sure to discuss them in a broader sense. The skill level of this article is for junior to mid-tier level designers, if you are a senior designer some of this article may sound familiar to you.
</p>

<p dir="ltr">
	I'll start off by saying that Payday's stealth mechanics are not perfect and can be flawed in some areas, but I wanted to focus on the decisions behind the map design, specifically for the heist Murky Station. I'll also break down how we consider using RNG (randomization), and the ways we apply it to objectives and mechanics to keep the level fresh and replayable. This map took 6 weeks to make between 2 people. My partner took the role of Level Builder / Environment Artist and I took the role of Designer / Scripter. Between the two of us, we figured out the scale of the project based on the needs of our studio. The idea was to create a small heist that took around 10-15 minutes to finish with high replayability. There's a lot to go over, so let’s get started!<br />
	 
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="header_sm.jpg.31ef6302a34ed755a6e34c2e745f9d5d.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17549" src="https://www.mapcore.org/uploads/monthly_2018_05/header_sm.jpg.31ef6302a34ed755a6e34c2e745f9d5d.jpg" style="width:900px;height:auto;" /></p>

<p dir="ltr" style="text-align:center;">
	 
</p>

<p dir="ltr">
	<span style="font-size:28px;"><strong><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Let's start from the beginning</span></strong></span>
</p>

<p dir="ltr">
	Before we start drawing or building layouts, we make the call if we are going to create a Loud level (combat only), Stealth level (avoid combat), or Mixed style map. For the short period of time given to us, we decided to stick to stealth only. Making this decision early on helped us create better movement options for the player and focus our efforts towards balancing patrols and objective placement. We decided that the theme of the level was a small train depot run by a group of mercenaries shipping large weapons. The main objective was to infiltrate the depot and steal an EMP bomb. Keeping the objective simple and intuitive is important in multiplayer games where players can drop in and out of the experience at any point in time.
</p>

<p dir="ltr">
	We decided to shoot for 10 - 15 minutes of gameplay. Breaking down our main objective into smaller sub-goals that could take about 2 minutes each (this is based on our extensive knowledge of payday 2). It should be noted that this time assessment will change once the player has completed the level a few times. These numbers tend to get cut by a third, or in some cases, by half. With our main objective in mind, we can construct a simple flow diagram for the heist and start to think about possible dynamic and RNG elements that can be used to create a re-playable experience.
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="scripting_1.jpg.92dcc461351b46d40a022b6971644e07.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17553" src="https://www.mapcore.org/uploads/monthly_2018_05/scripting_1.jpg.92dcc461351b46d40a022b6971644e07.jpg" style="width:900px;height:auto;" /><br />
	(This is a scripting example from our editor, each entity has it's own function)
</p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Testing your ideas before scripting them? Wait... What?</span></span>
</p>

<p dir="ltr">
	Since 90% of Payday levels are hand scripted, it's important we don't waste time building the wrong things. Testing your objectives and complicated RNG elements has to be fast and efficient. The last thing you want to do is build an entire system and find out it sucks. Most of the time you don't even need animations or even a model to properly test your ideas. At such an early stage some floating debug text will do just fine. You might be asking, what if I don't have debug text or the ability to script? When playtesting levels for Payday 2, a lot of the time we'll get a simple block-out done and then ... here it comes ... pretend we're doing the objectives.
</p>

<p dir="ltr">
	It might sound crazy (and not everyone can get through it without laughing) but we'll have one of the designers act out the role of Bain, our mission giver, and just spout objectives at us. We'll move through the space and pretend to see guards or hack laptops and delay time based on things we expect to happen. You can basically break down how your systems might work and try out a few possibilities. For example, knowing that you might have two escapes at either side of the map gives you enough knowledge to make pretend decisions. Telling your fellow devs the van is arriving up top and pointing out where to secure loot can help you find out if a location is interesting for the escape or not.
</p>

<p dir="ltr">
	Even though the artists might giggle, or people from the other teams walking by stop and wonder why they can't see that hoard of enemies. It really works, and can often steer the level in the right direction and prevent us from investing too much time on the wrong objectives. Now, I know this approach won't work for all studios or situations, but all I gotta say is... don't knock it till you try it...  
</p>

<p dir="ltr" style="text-align:center;">
	   <img alt="57EcRG0.gif" class="ipsImage" src="https://i.imgur.com/57EcRG0.gif" /></p>

<p dir="ltr" style="text-align:center;">
	 
</p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Constructing our Sandbox Layout </span></span>
</p>

<p dir="ltr">
	Now that we've pretended to run through our objectives and have gotten used to our basic block-out, let's talk about the layout we built for Murky Station. We went for what i'd like to call "the onion approach", which is pretty much what it sounds like. You'll have multi-layered rings that give you the sense of progression towards the center (or a goal). Essentially, we use the outer layer as the player start and each sub-objective is based inside a different layer until the player reaches the main objective (at the figurative center). This approach is very useful when working with sandbox type levels, especially when the player can virtually go anywhere they want.<br /><br /><strong>Side Note:</strong> We also layer our music track each time a sub objective is finished, creating more suspense and a sense of agency.<br /><br />
	You can see that the outer onion layer is the player spawn (colored green) on the overpass which gives them a full view of the trainyard. From here they can study patrol routes, train-car positions, and possibly objective locations. The overpass can also be used by a player with a sniper rifle to mark guards in the different lanes, helping provide accurate information on guard positions for the players on the ground floor.
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="5ULac5R.gif" class="ipsImage" src="https://i.imgur.com/5ULac5R.gif" /></p>

<p dir="ltr">
	The next layer is breaking into the train yard through a fence around the perimeter. The fence is here to guide the player and give them a visual boundary for the "safe zone" (where no guards patrol). The next layer is searching the train cars to discover where the main goal is hiding, followed by breaking through the vault doors inside of the trains themselves. These onion layers have to be carefully managed to give the proper impression to the player. Too many layers and you might confuse the player or make them forget what they're doing, too few and you might leave them feeling unchallenged or unaccomplished.<br />
	 
</p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Player Mobility is key!</span></span>
</p>

<p dir="ltr">
	Mobility is key to providing players opportunities to express themselves and make better decisions while traversing a level. I felt that it was pretty important for Murky Station to allow for different play styles ranging from slow and methodical to fast and dirty. The last thing I wanted was to force players to play a certain way or for the routes to become predictable and linear. In order to do this, I spent the first week of development prototyping and testing out different layout ideas that would maximize paths and choices for the player.
</p>

<p dir="ltr" style="text-align:center;">
	<span style="background-color:transparent;color:#000000;font-size:11pt;vertical-align:baseline;">(Here is a simplified top-down of the routes in the train yard area)</span>
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="topdown_paths.jpg.cf32daecbb37fbb9a5074701af36e093.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17555" src="https://www.mapcore.org/uploads/monthly_2018_05/topdown_paths.jpg.cf32daecbb37fbb9a5074701af36e093.jpg" style="width:900px;height:auto;" /></p>

<p dir="ltr">
	<br />
	It became obvious that we would need to allow players to traverse through and under the trains as they cover most of the real estate in the train-yard. Unfortunately the older train assets were not built to go underneath, but lucky for us, the nighttime setting of the level would cover up this fact. There being only 2 of us on this project, I took a crash course in Maya and cleaned up the bottom half of the trains by removing collisions and remodeling them for readability purposes.
</p>

<p dir="ltr" style="text-align:center;">
	<br /><img alt="train_underside_combo.jpg.647aa3f4cde0ba76141e74fb6962cd23.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17556" src="https://www.mapcore.org/uploads/monthly_2018_05/train_underside_combo.jpg.647aa3f4cde0ba76141e74fb6962cd23.jpg" style="width:900px;height:auto;" /><br />
	 
</p>

<p dir="ltr">
	The next challenge was to teach the player they could hide under trains and be safe. Payday players haven't been under the trains in any other heist up until this point, so we needed to call attention to that but also show them it was a safe place. Making these spaces dark and in the shadows helped create an illusion of safety but also made it harder for players to find them.
</p>

<p dir="ltr">
	To help solve this issue we added yellow caution tape as a trim and a dim red light under the wheels to catch the players eye. These combined elements would then be used as visual vocabulary in other parts of the level to teach players something should be explored.
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="under_the_train_2.jpg.b6f956adac8b8bbd6ea1c61e7cb61f70.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17557" src="https://www.mapcore.org/uploads/monthly_2018_05/under_the_train_2.jpg.b6f956adac8b8bbd6ea1c61e7cb61f70.jpg" style="width:900px;height:auto;" /></p>

<p dir="ltr" style="text-align:justify;">
	<br />
	One of the other ways we added more routes to the level was to build a ventilation system in the lower tunnels. Leveraging the fact that this was a stealth level to create these smaller spaces, especially since they didn't have to accommodate 40+ police officers. The vents allowed players to safely view guard patrols, search for objectives, and move loot. To prototype this, I built a modular vent system using basic mock-up units that allowed for rapid construction and testing. Funnily enough, the first iteration of the vents was too small and caused players’ bodies to clip through the floor. I was able to rework my mock-up units and we settled on standing height instead of a crouching one. Once again we used yellow caution tape as our visual vocabulary to highlight the vent entrance on the wall.
</p>

<p dir="ltr">
	Modifying the trains and vents is one of the factors that contributed to the map’s success and gave new players more confidence to explore the trainyard and lower claustrophobic tunnels. So now that we've explored the different possibilities for movement and giving the player more choices, it's time to buckle down and get our randomization system built.<br />
	 
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="vent_1.jpg.cb38c13b4f79a0bf67fd3cf7d06eb066.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17559" src="https://www.mapcore.org/uploads/monthly_2018_05/vent_1.jpg.cb38c13b4f79a0bf67fd3cf7d06eb066.jpg" style="width:900px;height:auto;" /><br /><img alt="patrol_over_grate_1.gif.6773a5d5e3942ec34366bd2a010ecd14.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="17560" src="https://www.mapcore.org/uploads/monthly_2018_05/patrol_over_grate_1.gif.6773a5d5e3942ec34366bd2a010ecd14.gif" /></p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Randomizing Objectives to Maximize Replayability</span></span>
</p>

<p dir="ltr">
	RNG is one of the core pillars of Payday, so every decision we make is looked at through a lense of RNG. We strongly believe randomization should be meaningful to gameplay and not just added for the sake of it. It’s important to ask questions like: was it worth changing all the cups in your level? Did you gain anything from swapping out all of your cars and buildings? Was creating a third entrance valuable to the level? Maybe one day we'll completely randomize every object in a building down to the smallest cups, but in a game like Payday I personally feel these types of things have diminishing returns and can often ruin a planned design.
</p>

<p dir="ltr">
	When working with RNG it's important that you ask yourself as many questions as possible to start with a strong foundation, especially if you plan on finishing on time. Something I often see junior to mid-tier level designers forget is to build for scope and set priorities on their objectives. It might sound trivial, but forgetting your priorities can send you down a black-hole that eats away all of your time.
</p>

<p dir="ltr">
	So how did we go about adding RNG into Murky Station? Breaking down our objectives, we can start to consider what RNG options are available and doable within our one month time frame. I've also labeled them with my personal priorities (low - high).
</p>

<ul dir="ltr"><li>
		<strong>Break into the train yard</strong>

		<ul><li>
				randomize breach locations (low)
			</li>
		</ul></li>
	<li>
		<strong>Locate the Bomb Train</strong>
		<ul><li>
				randomize train configurations (high)
			</li>
		</ul></li>
	<li>
		<strong>Hack into the train</strong>
		<ul><li>
				randomize panel to flip sides (low - medium)
			</li>
		</ul></li>
	<li>
		<strong>Open the Vault</strong>
		<ul><li>
				4 different vault door / key types (high)
			</li>
		</ul></li>
	<li>
		<strong>Find the Vault keys</strong>
		<ul><li>
				The map supported up to 40 hiding locations (med - high)
			</li>
		</ul></li>
	<li>
		<strong>Secure the EMP bomb parts</strong>
		<ul><li>
				2 escape locations, 1 chosen per playthrough (medium)
			</li>
		</ul></li>
</ul><p dir="ltr">
	I focused most of my efforts on randomizing the train configurations, vault doors and key placement. These objectives were critical in influencing how the player would move through the main space and how they could tackle the same area in different ways through multiple playthroughs. In order to accomplish this, I broke down my sub-goals into digestible points of interest and isolated them into their own prefabs (shown below). Doing so allowed me to script one prefab and teleport it to as many locations as I wanted. This approach made the randomization more manageable to script and cut down the amount of bugs that might have formed if I built everything by hand each time.<br /><br /><strong>Side note:</strong> We gave each one of our key / vault prefabs its own unique visual and audio so that players could identify them from a distance or listen if they were close by. Providing them with this level of feedback is critical in helping them make proper decisions while traversing the level.
</p>

<p dir="ltr" style="text-align:center;">
	<br /><img alt="keys_sm.jpg.e1821a1eb8fcc5a48813b5f67c871497.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17550" src="https://www.mapcore.org/uploads/monthly_2018_05/keys_sm.jpg.e1821a1eb8fcc5a48813b5f67c871497.jpg" style="width:900px;height:auto;" /><br /><img alt="okdhXAJ.gif" class="ipsImage" src="https://i.imgur.com/okdhXAJ.gif" /><img alt="vaults_sm.jpg.30e99ad83eab8c3577b8b8a8cbc05c47.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17558" src="https://www.mapcore.org/uploads/monthly_2018_05/vaults_sm.jpg.30e99ad83eab8c3577b8b8a8cbc05c47.jpg" style="width:900px;height:auto;" /><br />
	 
</p>

<p dir="ltr">
	Now that we have our vault doors and keys figured out, I can begin the planning process of placing them throughout the level. When placing them, each location must meet certain conditions before being finalized. The main goal is to provide the player with a challenge and also encourage them to be creative in tackling the surrounding area. Having designed the layout to have many interesting choke points and traversals, it was fairly straightforward where I could place them. Collecting the keys is one of the more RNG based objectives in Murky Station, sometimes all of the keys are in different corners of the map and other times they are all next to each other. Eventually there was a script clean up to prevent overpowered locations or terrible RNG possibilities, but overall it was a huge success for the level.
</p>

<p dir="ltr">
	We generally kept the key locations central to the layout and tried not to place them too close to the player’s safe zones. Placing several keys along the outskirts was a nice change of pace from the main lanes, providing a different type of challenge due to the openness of the layout.
</p>

<p dir="ltr">
	This is what the upper train yard looks like and how the keys are distributed. The lower tunnels have the same amount of keys placed.
</p>

<p dir="ltr" style="text-align:center;">
	<br /><img alt="topdown_keys.jpg.af966943953477d372dcb9544fa731b9.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17554" src="https://www.mapcore.org/uploads/monthly_2018_05/topdown_keys.jpg.af966943953477d372dcb9544fa731b9.jpg" style="width:900px;height:auto;" /></p>

<p dir="ltr" style="text-align:justify;">
	 
</p>

<p dir="ltr">
	We also used the same method for spawning the train interiors and vault doors. By creating one prefab and scripting it four times inside the level (one per vault door type) we were able to randomize the location of the players’ main goal with little effort. The engine also allows us to rotate our prefabs, giving us the option to flip the train interiors.  This added a whole new layer to their configurations, since some of the interior layouts were asymmetrical.
</p>

<p dir="ltr">
	We ended up with roughly 600 train configurations, 2000 vault door combinations, and 256 sub objective configurations. With 1 of 2 exits being chosen randomly each playthrough, this really changed what types of decisions got made by the players. It also influenced how they would flow through the level and took advantage of their diverse set of movement options.
</p>

<p dir="ltr">
	On top of that we use non-linear objectives, which basically means you can do multiple objectives at the same time or in some cases, different orders. In Murky Station, players can simultaneously be looking for keys, searching through trains, marking guards from the overpass, and securing extra loot they find. This allows 4 players to comfortably split up to cover more ground and work off each other. A well coordinated team might have two players hacking into the trains to find the EMP bomb, while the others are looking for the vault keys. I find it very important to provide all players an opportunity to contribute towards the main goal.
</p>

<p dir="ltr">
	<strong>Side note:</strong> With all of this randomization, you might be wondering how QA can test it all. The short answer: they don’t. We need to build efficiently to insure 90% of the level is solid, and then catch as many edge cases as possible. On the Payday team, the frontline of defense for QA is the designer making the level, It’s our job to test our own work thoroughly! The way the systems above were built would only required 1 prefab to be maintained for each example. This provides us the freedom to go nutty with the customization in the level, knowing it has a low chance at affecting our prefabs. So, as long as we build smart we can cut down the amount things QA needs to test and help speed up production.<br /><br />
	With the objectives off to a good start, let's take a look at how RNG might affect our guard patrols and cameras in the level.<br />
	 
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="patrol_title.jpg.f6858332585971167fd9573687d87b1a.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17551" src="https://www.mapcore.org/uploads/monthly_2018_05/patrol_title.jpg.f6858332585971167fd9573687d87b1a.jpg" style="width:900px;height:auto;" /><br />
	 
</p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Guard Patrols and RNG</span></span>
</p>

<p dir="ltr">
	Randomization can have a large effect on how smooth or frustrating a level turns out to be. One of the things we have to keep an eye on when designing stealth levels is frustrating the player through poor patrol placement, amount of guards, and how long they pause at each location. The goal is to create a fun puzzle-like challenge, not a terrible waiting game. Bad RNG might have you sitting in a corner for one minute waiting for the guard to leave, only to have another guard take his place when that minute is up. It's our job as the level designer to help prevent such situations from happening by adjusting our timings, reworking the layout, or possibly the level’s mechanics. This is why it's so important to create a solid base for player movement options from the beginning.
</p>

<p dir="ltr">
	Since we don't want our guard patrol RNG to get out of hand, we need to be careful about how they flow through a space. Doing this requires it's own personal attention and multiple iterations. Tilt too far in one direction and you'll end up with bare areas that have no guards, tilt too far in the other direction and you'll have too many guards stacked on each other with no wiggle room. The last thing you want is the possibility of a death chain reaction. This is caused when you kill 1 guard, only to have another guard 10 meters away spot that body... forcing you to kill that guard, who eventually gets spotted by the next, ect. In Payday 2, players have a limit of 4 guards they can kill before the alarm goes off (on all difficulties). In our levels, we have to actively manage the amount of crossover between paths and how often guards might meet.
</p>

<p dir="ltr">
	In the first test pass for Murky Station I ended up with a good amount of coverage for my level, but the downside was that some sections could randomly get 8 guards piled up.  After a bit of playtesting and redesign, I decided to break up my patrols into smaller loops and add more points. This increased the amount of coverage and kept the patrols more consistent. It also lowered the maximum guard stacking to around 4 and drastically reduced the amount of death chain reactions that could happen.
</p>

<p dir="ltr" style="text-align:center;">
	<br /><span style="font-size:18px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">First pass patrol locations</span></span><br /><img alt="guard_patrol_first_pass.jpg.ee0392aac79bda4a5dcf6ff23745f887.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17547" src="https://www.mapcore.org/uploads/monthly_2018_05/guard_patrol_first_pass.jpg.ee0392aac79bda4a5dcf6ff23745f887.jpg" style="width:900px;height:auto;" /></p>

<p dir="ltr" style="text-align:center;">
	<span style="font-size:18px;">Second pass patrol locations</span><br /><img alt="guard_patrol_second_pass.jpg.8436e8c100b11efd68ad5c0c68470bd7.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17548" src="https://www.mapcore.org/uploads/monthly_2018_05/guard_patrol_second_pass.jpg.8436e8c100b11efd68ad5c0c68470bd7.jpg" style="width:900px;height:auto;" /><br /><span style="background-color:transparent;color:#000000;font-size:11pt;vertical-align:baseline;">(the new paths provide the same amount of level coverage with a less chance of guard over-stacking) </span>
</p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">A fresh take on an old mechanic</span></span>
</p>

<p dir="ltr">
	In most of our stealth levels we use random static security cameras to challenge the players’ skill at avoidance or sabotage. The players have multiple mechanics in order to deal with them in a variety of ways, but we hit a brick wall when discussing options for Murky Station. Due to the hallway nature of the layout and the surrounding structures, we were left with very few options when it came to camera placement. With so few options, the cameras would be no longer modifying the level in a positive way. We also found them at odds with the design of the level, since you were supposed to be searching for a specific train car. If we had cameras pointing at it, you would be able to identify it too quickly and negate the challenge of finding it.
</p>

<p dir="ltr" style="text-align:center;">
	<img alt="camera_static_grey.jpg.5456146c30f8954c35d72cef0f3e5a56.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17544" src="https://www.mapcore.org/uploads/monthly_2018_05/camera_static_grey.jpg.5456146c30f8954c35d72cef0f3e5a56.jpg" style="width:900px;height:auto;" /><br />
	 
</p>

<p>
	So how did we fix these issues? Getting rid of the cameras was not really an option, so we began brainstorming and looking for assets that might be of use. It's important the core camera functionality remain intact and also continue to meet our core pillar of randomization. We discovered an old drone asset for one of the previous levels and began prototyping a few ideas. The design we ended up going with provided us the coverage we needed, while also creating a new challenge for the players to overcome.
</p>

<p style="text-align:center;">
	<br /><img alt="drone_2c.jpg.c22de4ecb16582d513e4e4d93446d1a1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17561" src="https://www.mapcore.org/uploads/monthly_2018_05/drone_2c.jpg.c22de4ecb16582d513e4e4d93446d1a1.jpg" style="width:900px;height:auto;" /><img alt="drone_layout.jpg.7150d2dffcdc3a20cae2d3abbadca803.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17546" src="https://www.mapcore.org/uploads/monthly_2018_05/drone_layout.jpg.7150d2dffcdc3a20cae2d3abbadca803.jpg" style="width:900px;height:auto;" /><br />
	 
</p>

<p dir="ltr">
	Each train can spawn up to two drones, which will then fly around the perimeter of the train and scan for players and bodies. Randomly throughout the level, three to four drones will be activated to begin their scan. The loop takes about 30 seconds before they return to their trains and deactivate. The cycle continues like this every few minutes until the level is finished.
</p>

<p dir="ltr">
	On harder difficulties, more drones will spawn and they will become indestructible.
</p>

<p dir="ltr">
	What's great about the drones from a design perspective, is that we can dynamically modify how the level gets played and prevent players from getting comfortable in using the same routes each play-through. Some players will avoid lanes with drones, more skilled players will dodge them using their movement options, and some players might even get trapped and need to think of a new routes. Let's take a look at the patrols and drones in action.
</p>

<p dir="ltr" style="text-align:center;">
	(This clip is sped up about 8x and set to the hardest difficulty to help illustrate pathing and drone movement)<img alt="9pfcCLX.gif" class="ipsImage" height="305" src="https://i.imgur.com/9pfcCLX.gif" width="900" /></p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Closing thoughts</span></span>
</p>

<p>
	Murky Station was such an enjoyable experience to work on that I still play it to this day. When you break down the objectives and how they influence one another in a co-op space, you can begin to see the bigger picture and how a well-planned level with controlled RNG elements can stay fresh and replayable. Experimenting with different types of RNG is something I find very interesting, especially when you combine it with level design. I hope my article gave you some more insight into how we build with RNG and why we consider it one of our core design pillars. If you found this article helpful, let us know in the comment section!
</p>

<p dir="ltr">
	<strong><span style="font-size:16px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Thanks for reading, here is my Info :</span></span></strong>
</p>

<p dir="ltr">
	<strong>Twitter: </strong>@generalvivi <br /><strong>Email:</strong> generalvivi [at] gmail . com<br /><strong>Website:</strong> www.generalvivi.com
</p>

<p dir="ltr">
	<span style="font-size:28px;"><span style="background-color:transparent;color:rgb(0,0,0);vertical-align:baseline;">Before you go!</span></span>
</p>

<p dir="ltr">
	If you enjoyed this article and would like to hear how we used RNG in other ways, check out<b><a href="https://www.mapcore.org/articles/development/dynamic-levels-in-payday-2-and-beyond-r89/" rel=""><span style="background-color:transparent;color:#000000;font-size:11pt;vertical-align:baseline;"> </span><span style="background-color:transparent;color:#1155cc;font-size:11pt;vertical-align:baseline;">Patrick Murphy's article on the Payday 2 level "Hoxton Breakout"</span></a><span style="background-color:transparent;color:#000000;font-size:11pt;vertical-align:baseline;">. </span></b>
</p>

<p dir="ltr">
	<span style="background-color:transparent;color:#000000;font-size:11pt;vertical-align:baseline;">I also have a  speedrun (1min) of the level for you to check out and a playthrough on the hardest difficulty (10 mins) by one of the pros from the community.  </span>
</p>

<p dir="ltr">
	<strong><span style="background-color:transparent;color:#000000;font-size:11pt;vertical-align:baseline;">Fastest time 2018 (warning to lower volume)</span></strong>
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="true" frameborder="0" height="270" src="https://www.youtube.com/embed/qaiguUHLvk0?feature=oembed" width="480"></iframe>
	</div>
</div>

<p>
	 
</p>

<p>
	<span style="background-color:transparent;vertical-align:baseline;"><b style="color:rgb(0,0,0);font-size:11pt;">10 min </b><font color="#000000"><span style="font-size:14.6667px;"><b>gameplay video</b></span></font><b style="color:rgb(0,0,0);font-size:11pt;"> showing off a lot of variety in the heist. </b></span>
</p>

<div class="ipsEmbeddedVideo">
	<div>
		<iframe allowfullscreen="true" frameborder="0" height="270" src="https://www.youtube.com/embed/5-LXSbbaDTA?feature=oembed" width="480"></iframe>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">102</guid><pubDate>Sat, 19 May 2018 00:35:00 +0000</pubDate></item><item><title>Level Design in Max Payne: Roscoe Street Station</title><link>https://www.mapcore.org/articles/development/level-design-in-max-payne-roscoe-street-station-r101/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2018_04/max_payne_max_noir_2225_1920x1080.jpg.a30cb4bb42f0cba3a633b5591f28e169.jpg" /></p>

<p style="text-align:center;">
	<img alt="test232.jpg.c6942b6e8c06cddb3aa83e1e058ca234.jpg" data-fileid="17417" src="https://www.mapcore.org/uploads/monthly_2018_04/test232.jpg.c6942b6e8c06cddb3aa83e1e058ca234.jpg" /></p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="font-size:26px;"><span style="color:#000000;"><strong>Level Design in Max Payne: Roscoe Street Station</strong></span></span>
</p>

<p>
	 
</p>

<p>
	<span><span style="font-size:16px;">Max Payne is a third person shooter developed by Remedy Entertainment and published on July 2001. At the time of its release, the game gained critical acclaim for its use of the bullet time mechanic - a special ability that slows down time around the character. Inspired by Hong Kong action films and hard boiled detective novels, the game focuses on intense action sequences and the protagonist's internal struggle as he attempts to avenge his murdered family.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">The game's story is structured under three parts, each containing several chapters. For the purposes of this article, we will take a look at Chapter One: Roscoe Street Station, from the first part of the game, and deconstruct the level progression as well as state design decisions when encountered.</span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="image0001.png.89c8df48eb6c09ea5bc2e4a7edb114dd.png" data-fileid="17404" src="https://www.mapcore.org/uploads/monthly_2018_04/image0001.png.89c8df48eb6c09ea5bc2e4a7edb114dd.png" /></p>

<p>
	<span style="color:#000000;">                                                                                 1                                                                                                                   2                                                                                                                3</span>
</p>

<p>
	<span><span style="font-size:16px;">The level begins with a cutscene of Max riding the subway train towards Roscoe Street Station to meet with his friend Alex. As soon as Max gets off the train, he remarks that “The station was drenched in gloom. Alex was a ghost nowhere to be seen. I’d have to look for him”. Although we aren’t given much information to work with, it’s enough to build a sense of mystery and give the player a goal.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">Taking control over the character, we discover that our main path is blocked (1) and are forced to explore a side area (2) where more narrative is to be revealed. As we burst open the doors of the personnel room, we stumble over the body of a transit police officer (3). Once again, a quick cutscene centers on Max while he delivers his lines and sets the tone accordingly: "Death was in the air at Roscoe Street. I'd have to find Alex fast." At this point, Max pulls out his pistol and we can either return to the starting area or explore the room for hidden ammunition and health. Doing the latter teaches the player that exploration is rewarded through much needed supplies.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">On our way back, we encounter our first two enemies and notice that the main path is no longer blocked. Though, If the player takes his time and waits around the corner before engaging the enemies, bits of story will be delivered by them, explaining their reason for being there or informing on the overall situation. And as trivial as that sounds, it can have a major impact on immersion and believability. Clearly this is something the developers have identified early on and implemented throughout the game. Giving the player the option to advance at his own pace goes a long way and makes for a more dynamic experience. Those who want to rush through the levels can do so. Others that want to explore and listen to bits of story can do that as well. It’s an ideal situation that satisfies both worlds.</span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="image0003.png.8ac8cfd15caaa2edc5aef585d0e06563.png" data-fileid="17405" src="https://www.mapcore.org/uploads/monthly_2018_04/image0003.png.8ac8cfd15caaa2edc5aef585d0e06563.png" /></p>

<p style="text-align:center;">
	<span style="font-size:14px;">4</span>
</p>

<p>
	<span><span style="font-size:16px;">After our first encounter, we can proceed through the main path where we immediately find two more enemies. As previously mentioned, we have the option to directly engage in combat or wait for the enemies to reveal additional information. An important thing to make note of is that despite the fact that the gameplay space is tailored around the player’s needs, the environment always feels natural. A good example is this specific bit (4), where the player is now emerging from a set of stairs and can dive on his side towards a nearby mail box for cover.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">When designing a space that is supposed to represent a real life location, it's essential for the level designer to always keep in mind that everything placed in the scene must abide by the real location's logic. Of course, adding something unusual or out of place is a good way to draw the player's attention, but in general we all have expectations of what kind of objects to find in most environments. Meeting those expectations is key to creating a believable game world.</span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="image0005.png.80fbd79e8c603150e04e55c576d0346d.png" data-fileid="17411" src="https://www.mapcore.org/uploads/monthly_2018_04/image0005.png.80fbd79e8c603150e04e55c576d0346d.png" /></p>

<p>
	                                                                                  5                                                                                                                   6                                                                                                                 7
</p>

<p>
	<span><span style="font-size:16px;">Going down the corridor, we hear another enemy, but this time located behind an inaccessible gate (5). Although his placement seems odd, this set-up accomplishes two things. Firstly, it creates an audio cue to draw the player forward. Secondly, it gives the illusion that the environment is much larger than it actually is. It's a simple trick and probably one of the oldest in the level design book, one which the developers have used extensively throughout the game to their advantage. If you find yourself creating a fairly linear level, simply adding a few inaccessible areas is a quick and painless way of providing some visual depth to your environment. As in real life, there are plenty of areas that we cannot access.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">Continuing with the idea of guiding the player, we begin to notice even more ways of doing that. This time our direction is implied through arrow signs in combination with an enemy audio cue (6). And after encountering the said enemy we acquire a new weapon type, the pump action shotgun, as well as discover the Subway Control Room (7). Unable to access it, Max elaborates that “The security panel let off a mocking cackle. I’d need the right code”. Without knowing specifically why we need to gain access, we can nonetheless conclude that opening the Subway Control Room is somehow tied to the level progression in some way. Turning to our immediate left, we begin to descend to a closed station.</span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="image0006.png.a178a850c11622cbc13ba48e1bc9e2b1.png" data-fileid="17408" src="https://www.mapcore.org/uploads/monthly_2018_04/image0006.png.a178a850c11622cbc13ba48e1bc9e2b1.png" /></p>

<p>
	                                                                                   8                                                                                                                 9                                                                                                                10
</p>

<p>
	<span><span style="font-size:16px;">At this point, having also acquired the shotgun, the difficulty starts to increase as we encounter three enemies on our path. Once they have been dealt with, we find ourselves in a fairly elaborate space with two options for exploration:</span></span>
</p>

<p>
	<span><span style="font-size:16px;">Taking the path to our right, we end up in a room (8) designed to replenish the player’s ammunition and health. Going to the back of this room, we locate a corridor leading to a locked grate door. Even though we cannot open it, reaching the end will deliver additional information through the means of dialogue between two enemies situated on the other side. In contrast to previous encounters, this time we have the option to kill our enemies by shooting a nearby propane canister. After dealing with them, Max notes that "The gate was locked. I would need to find another way to get to the tunnel". This gives us a hint as to where we need to go in order to progress with the main goal.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">Opting for the path to our left, towards the end of the station, we locate a personnel room, a bright yellow maintenance train (9) and a small supply room. Checking out the maintenance train, Max states that "The power to the rail had been cut. I'd have to get it back on to get the train moving". Looking to the opposite side of the train, we notice a tunnel blocked by a series of wooden boards. Putting two and two together, we must find a way to power up the maintenance train and crash though the boards to reach the level's final area. Of course, now we realize why we must gain access to the Subway Control Room. Turning our attention away from the train, we open the door to the nearby personnel room. Inside, we find a transit police officer held at gun point by an enemy (10). After killing the thug, the officer informs us that he can access the Subway Control Room and so we begin to backtrack. Having reached the security panel, the officer unlocks the door, but is shot dead by an enemy already on the inside.</span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="5adce164004a4_maxpayne2018-04-2216-38-31-23.png.68ed6d1cdb2b8cd4d9a5ba76787bcfdf.png" data-fileid="17410" src="https://www.mapcore.org/uploads/monthly_2018_04/5adce164004a4_maxpayne2018-04-2216-38-31-23.png.68ed6d1cdb2b8cd4d9a5ba76787bcfdf.png" /></p>

<p style="text-align:center;">
	11
</p>

<p>
	<span><span style="font-size:16px;">Reopening the door, we notice the enemy has retreated to a secondary room. Pursuing him, we encounter 3 additional thugs, totaling 4 enemies, the most we have yet to fight at once. It's important to notice that, as we advance through the level, the number of enemies we encounter at a given point increases, but in a manner that is fluid and balanced. So far, the pattern has been to include single enemy encounters between group encounters. This way, the player doesn't constantly feel overwhelmed and has time to recuperate before a larger fight. </span></span>
</p>

<p>
	<span><span style="font-size:16px;">After dealing with the enemies, we discover a third smaller room to the back. Inside this room there is an electric panel (11) that controls the subway power lines, a cabinet with health supplies and a series of camera displays. Using the button on the electric panel triggers a green line to rise on it's display, giving the player visual confirmation that power is now back on for that specific line. Additionally, using the nearby camera display will show an image of the bright yellow maintenance train and compel Max to state that "The train lit up like a Christmas tree. The power was back on". </span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="image0007.png.389324c7c3a3f1dd88fb8684df6f2a2b.png" data-fileid="17409" src="https://www.mapcore.org/uploads/monthly_2018_04/image0007.png.389324c7c3a3f1dd88fb8684df6f2a2b.png" /></p>

<p>
	                                                                                       12                                                                                                           13                                                                                                              14
</p>

<p>
	<span><span style="font-size:16px;">We then proceed to backtrack to the train. Backtracking again. Sometimes, and especially if overdone, this design decision can become tedious and potentially confuse players. However, when used sparingly in design and with a bit of logic, forcing the player to go back and fourth between parts of the level in order to progress can make the environment seem more connected as a whole. Backtracking can also prove to be a good way of making the most out of a given environment by squeezing as much gameplay as possible.</span></span>
</p>

<p>
	<span><span style="font-size:16px;">Once we have reached the train, we can either immediately operate it or explore the area behind it for ammunition. Manning the wheel (12), the train begins to accelerate and shortly crashes through the wooden barricade. Advancing in the tunnel (13), we encounter 3 enemies and reach the area seen previously from the locked grate door. Our only path to follow now is through a rusty door leading to the next level (14). While we didn't accomplish our primary goal in this level, we still managed to gather information about the situation, be it directly from Max's lines or indirectly from the enemy dialogue. </span></span>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<strong><span style="color:#000000;"><span style="font-size:26px;">Conclusion</span></span></strong>
</p>

<p>
	 
</p>

<p>
	<span><span style="font-size:16px;">Despite it's ever growing age, Max Payne still proves to be relevant even today. Examining how the gameplay unfolds in Roscoe Street Station, we can only conclude that the people at Remedy Entertainment are without a doubt true masters of their craft. And for those passionate about designing single player levels, here are 10 principles that we can learn from them:</span></span>
</p>

<p>
	 
</p>

<ul><li>
		<span><span style="font-size:16px;">Story is revealed in small amounts to keep the player interested for more</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Exploration is rewarded through useful items</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Inaccessible areas can give more depth to the environment</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Players that want to be engrossed in the game world are rewarded with additional information</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Environments are designed with a certain logic to meet player expectations </span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Players are guided through subtle visual language or audio cues</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Progression obstacles are designed to be relevant to the story</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Intelligent backtracking uses the gameplay space to it's full potential and makes the environment seem more connected</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Interaction with the environment is reinforced through audio-visual feedback</span></span>
	</li>
	<li>
		<span><span style="font-size:16px;">Properly balanced difficulty allows the player moments of rest and doesn't constantly overwhelm with enemies</span></span>
	</li>
</ul><p>
	 
</p>
]]></description><guid isPermaLink="false">101</guid><pubDate>Mon, 23 Apr 2018 17:00:00 +0000</pubDate></item><item><title>Effect and Cause - Titanfall 2 Level Breakdown</title><link>https://www.mapcore.org/articles/development/effect-and-cause-titanfall-2-level-breakdown-r96/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2018_02/1.jpg.1cd947682d64a6408a71f38a65e66237.jpg" /></p>

<p style="text-align:center;">
	<img alt="1.jpg.27358c16ec188585fefa8c02bbd63b1a.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17006" src="https://www.mapcore.org/uploads/monthly_2018_02/1.jpg.27358c16ec188585fefa8c02bbd63b1a.jpg" /></p>

<p style="text-align:center;">
	<span style="font-size:26px;"><strong>Intro</strong></span>
</p>

<p>
	Titanfall 2 was one of the best FPS titles of 2016, featuring a very strong single-player campaign with interesting combat and puzzle gameplay for both players and their Titan. Additionally, each level featured its own special twist: "Effect and Cause", for example, presents players with a memorable time-traveling mechanic.
</p>

<p>
	The time-travel mechanics of "Effects and Cause" serve couple of purposes, influencing not only the way players traverse the environment and its associated obstacles, but also how they fight through the level's combat scenarios. Two different time periods are a threat to the player, so the designers decided to allow players to see where the enemies from the past are located.
</p>

<p>
	Once you move from past to the present, enemies leave a small blue particle in the place where they had been standing. Although the effect lasts no longer than two seconds, it’s enough to help players plan their next move. This twist on encounters makes them much more interesting and dynamic.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="2.jpg.29e7b6c57f44b85b41076c188149a3bf.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17007" src="https://www.mapcore.org/uploads/monthly_2018_02/2.jpg.29e7b6c57f44b85b41076c188149a3bf.jpg" /></p>

<p>
	 
</p>

<p>
	For "Effect and Cause", the developers created distinct enemies archetypes with different engagement distances and attacks for each time period. In the present (a destroyed version of the map) the player deals with robots and wildlife. In the past, players face armed guards in the facility. Eliminating the danger in one reality does not make it disappear in the other, forcing players to think constantly about their position versus the enemies in the different time frames.
</p>

<p style="text-align:center;">
	<em>Let’s discuss three selected encounters from "Effects and Cause" in-depth to see how they work in action!</em>
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:26px;">Encounter 01</span></strong>
</p>

<p>
	The first encounter where players freely use the time-shift mechanic starts shortly after players exit a lab area. Here, enemies are located only in the past, when the facility is operating and functional. This prevents players from becoming overwhelmed with two types of enemies in two different realities within the first big encounter of the level.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Layout</span></strong>
</p>

<p style="text-align:center;">
	<img alt="3.jpg.1ae2f4f0e89ff9a21bf4adaa0ccd076b.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17008" src="https://www.mapcore.org/uploads/monthly_2018_02/3.jpg.1ae2f4f0e89ff9a21bf4adaa0ccd076b.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Combat space</span></strong>
</p>

<p>
	This encounter is set up in two distinct spaces. The first space is a big room with a single entry point in the form of a double door opened by a panel, with combat focused at the far end of the room. The second space is a large corridor with a pocket in the middle and a security room at the end. A panel in the security room must be used in order for the player to progress.
</p>

<p>
	Both encounter spaces are divided by a time-shift puzzle, the only way to continue onto the next arena. This time-shift puzzle serves as combat gating and also adds variety to encounters that are otherwise only about shooting. The gating also teaches the player that some spaces cannot be traversed in any time period, and that the only solution to the obstacle is to find alternative routes.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="4.jpg.2e8836b419ce86c39a900d5eff635c82.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17009" src="https://www.mapcore.org/uploads/monthly_2018_02/4.jpg.2e8836b419ce86c39a900d5eff635c82.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Enemies</span></strong>
</p>

<p>
	There are eleven enemies in this encounter: four located in the first room, and seven in the second room. Once you eliminate the two enemies in the first room, the remaining two enemies get into position. The second space has a fixed number of soldiers, with no additional waves. All the soldiers are using guns or rifles. The advantage/challenge to the player in this encounter comes from the number of the enemies, not their abilities.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="5.jpg.4033e6b04195a8aeb24eaaa5d7f2b8d1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17010" src="https://www.mapcore.org/uploads/monthly_2018_02/5.jpg.4033e6b04195a8aeb24eaaa5d7f2b8d1.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Encounter design</strong></span>
</p>

<p>
	Once the player enters the first space, they see two soldiers talking to each other. It’s up to player to start the fight and pick their preferred attack method. Once the first two enemies are eliminated, players enter an area with clearly defined architecture and a no-man’s-land inbetween. Players should also see a weapon lying on the desk, a gameplay "carrot" which helps to draw players into the fight. The enemies will hold their positions and try to shoot the player from behind the safety of cover.
</p>

<p>
	The second area gives players more options, and also allows them to scan the area earlier (both from the first room through the lasers, and also from a vent). The designers ramp up the difficulty here, introducing more enemies into a tighter space.
</p>

<p>
	With the time-switching mechanics at hand, players can prioritize threats in order to set up their own tactics. It’s clearly up to player how to plan and play this encounter. As there is no threat in the past timeline, players can experiment with going back in time without punishment, ‘escaping’ the combat at any given moment in order to reload, reposition and jump back to the action. This encounter is memorable as it is the first time that players fully use their time switching mechanic, functioning as a safe environment to learn. In other words, it's a skill check and a preparation for what lies ahead...
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:26px;">Encounter 02</span></strong>
</p>

<p>
	The second encounter worth analysis is much more varied with how it positions enemies throughout the level. It also places enemies in both time periods, serving as a playground for prioritization strategies and other interesting player tactics. This encounter also features more verticality, which helps prevent players from feeling too overwhelmed with enemy forces, while also allowing players to use more of their Titan-piloting skills.
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Layout</strong></span>
</p>

<p style="text-align:center;">
	<img alt="6.jpg.c4267f8036362c10bb09fe3dcebeb95e.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17011" src="https://www.mapcore.org/uploads/monthly_2018_02/6.jpg.c4267f8036362c10bb09fe3dcebeb95e.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Combat space</strong></span>
</p>

<p>
	This encounter is located in a fairly large room with ample verticality. Players enter the space on the upper floor through a single entry point and continue their way onto a balcony, letting players familiarize themselves with the space from above. At the far end of the room, players will spot a staircase going down to the lower level where elevators are located. This area has two big areas of standing cover, accessible on both heights, and a variety of crouch-height cover such as railings, desks and potted plants. This space also has a small side-room allowing further tactical options. This whole area is gated with an elevator door which does not open until the combat encounter is over.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="7.jpg.b9e5ea222c56c233f43510e211a2c2d2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17012" src="https://www.mapcore.org/uploads/monthly_2018_02/7.jpg.b9e5ea222c56c233f43510e211a2c2d2.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Enemies</strong></span>
</p>

<p>
	This encounter is quite varied in terms of the enemies players face. In the past timeline, players face eleven soldiers: nine regular soldiers and two heavy soldiers with shields. These soldiers come in four groups of two or three each. The solders come with short intervals inbetween each wave, so that the player has time to react and make more intellectual choices.
</p>

<p>
	In the present, players face three robots appearing almost at once when they walk along the balcony at the top of the space. Once the player goes down, they have to fight four prowlers which appear one after another with a couple of seconds delay between each new spawn.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="8.jpg.da518b33c821edbc5c80bdc0bd583580.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17013" src="https://www.mapcore.org/uploads/monthly_2018_02/8.jpg.da518b33c821edbc5c80bdc0bd583580.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Encounter design</span></strong>
</p>

<p>
	We start the encounter in the present timeline, with the gate blocked in the past timeline. On the way to the staircase, three enemy robots spawn but do not pose a big threat to players. Once players move down, their attention is drawn to a desk with guns. This helps players to immediately position into a location in front of the elevators.
</p>

<p>
	Once players shift to the past, enemies start to appear from the elevators. There is not enough cover to fight off all of the attackers, forcing players to prioritize and switch in time to better position themselves for attack. Once players go back into the present, prowler enemies will start to appear, forcing players to continue constant movement.
</p>

<p>
	This encounter may feel a bit hectic, but it is a good test of both pilot skills and thoughtful time switching. It's the first encounter which forces players to prioritize which enemies they want to deal with first in different time periods. Due to the designer's smart use of the elevators, vents, and robot storage, enemies are brought into the field in an interesting way. But at the same time, enemies are introduced to the player with clear sound and visual cues, so they remain alert to upcoming surprises.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:26px;">Encounter 03</span></strong>
</p>

<p>
	The third encounter I want to breakdown is by far the most robust yet. It features different height levels, space divided into two areas, and flanking paths which can be accessed only through certain time periods. It serves as the "final skill check" for all of the pilot abilities and time-shifting gathered thus far in "Effect and Cause".
</p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:18px;">Layout</span></strong>
</p>

<p style="text-align:center;">
	<img alt="9.jpg.f73a06757e3259b25a078d42cedb5fec.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17014" src="https://www.mapcore.org/uploads/monthly_2018_02/9.jpg.f73a06757e3259b25a078d42cedb5fec.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Combat space</strong></span>
</p>

<p>
	This encounter is spread across two areas of vertical space, connected by multiple paths that create nice loops for players to use to their advantage. There is one clear entry point with a wide view of the whole combat space and one exit located in the second area, but the space inbetween offers a great deal of choice in terms of how players can tackle the encounter.
</p>

<p>
	Playing through the encounter, players will learn that there is a geometry difference between the two different time frames that can be overcome with some of the pilot skills at their disposal. A big catwalk goes around the whole room with additional rooms with guns and ammo on the bottom level, for example. The amount of space available is needed, because the combat space is packed with enemies.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="10.jpg.aeb0284db37d5e66b94e547ccfaa9ad1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17015" src="https://www.mapcore.org/uploads/monthly_2018_02/10.jpg.aeb0284db37d5e66b94e547ccfaa9ad1.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Enemies</strong></span>
</p>

<p>
	In the past, players have to fight twelve soldiers: nine regular soldiers and three heavies with shields, as well as three robots. The enemies are spread out across the whole space of the encounter, but because the areas are connected with each other through multiple paths, the enemies will try to chase and eliminate the player. This means that the encounter feels very dynamic and tense.
</p>

<p>
	In the present, players face robots: eight prowlers inside, and even more of them outside fighting with BT (the player's Titan). The enemies in the present are hostile to each other, showing players an example of how the enemy AI can actually fighting eachother: information which players can then use to their advantage.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="11.jpg.735f4558773e6dd1e7c365d92fa441ff.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17016" src="https://www.mapcore.org/uploads/monthly_2018_02/11.jpg.735f4558773e6dd1e7c365d92fa441ff.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:18px;"><strong>Encounter design</strong></span>
</p>

<p>
	Players enter this area in the past, where they witness a single back-facing enemy, instantly inviting them to perform a takedown. From this point, the encounter is very open to experimentation: the player can either continue in the past and fight a big wave of soldiers coming through the main path (a staircase in the middle), or they can switch to the present, where they will find open flanking paths on both sides of the level. Going with the latter option offers a moment to breathe before prowlers are spawned, but it will also disable an ammo dispenser in the first area, adding consequence to player choices.
</p>

<p>
	Staying in one place will result in a massive pile-up of enemies in the area, so players are motivated to move around a lot, time shifting when needed. The second area of this encounter is one of the level's biggest in-door combat spaces. If players choose to go into this second area in the past, the encounter will be quite vertical with soldiers located both on the ground and on the upper catwalk. Switching to the present will cause a bigger concentration of enemies on the ground floor.
</p>

<p>
	Players are given enough space to fully use pilot’s zip-line ability to create shortcuts across the room, accessing the various loops and ammo dispensers needed to create a fair fight despite overwhelming enemy forces. There are very few conditions placed upon this encounter, so players can leave the area and jump into his Titan to deal with different threats at any time. Overall, this encounter serves as a test of everything learned previously, with players having the option to ‘lower’ the difficulty of the encounter using their titan.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<img alt="12.jpg.a67417f63a0f07cd6adc497ac7fbbec9.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="17017" src="https://www.mapcore.org/uploads/monthly_2018_02/12.jpg.a67417f63a0f07cd6adc497ac7fbbec9.jpg" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<strong><span style="font-size:26px;">Conclusion</span></strong>
</p>

<p>
	The above examples are just a slice of Titanfall 2 gameplay contained within the excellent level "Effects and Cause", but in my opinion clearly shows how this great game was enhanced by its time shifting mechanic. The idea is fairly simple: time-shifting is nothing more than teleportation between two different levels, one layered on top of another, but the strong execution makes for a memorable experience that really stands out in comparison with other shooters. I highly recommend playing "Effects and Cause" as it is both challenging and fun, a level where Titanfall 2's time-shift mechanics comes into focus, providing additional depth to the whole game.
</p>

<p>
	 
</p>

<p style="text-align:center;">
	<span style="font-size:20px;"><em>Thanks for reading!</em></span>
</p>
]]></description><guid isPermaLink="false">96</guid><pubDate>Mon, 26 Mar 2018 16:08:50 +0000</pubDate></item><item><title>Climbing DOOM's Argent Tower</title><link>https://www.mapcore.org/articles/development/argent/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1920.JPG.326529ec0dbae079d11064b2598fed07.JPG" /></p>

<div dir="ltr" style="text-align:center;">
	<em>This article may contain slight spoilers</em>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	DOOM's Argent Tower is a superb Single-Player level. The Argent Tower motivates players with an obvious goal, expands in scope (almost unbelievably), and masterfully controls pacing. A playground for new a ability and a giant environmental puzzle, the Argent Tower is the best level in this excellent reboot of the franchise.
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	Now, let's explore the reasons why this level feels so memorable!
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<span style="font-size:24px;">OBJECTIVE</span>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	Players will know their goal from the outset: climbing the Argent Tower. In addition to verbal instructions, the level's construction and composition never fails to aim you upward. Warm lighting moves up vertically, so that players' eyes are always drawn upwards.
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15133" href="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1933.JPG.f1c231c74c330973a4a8f2c76387dec8.JPG" rel=""><img alt="IMG_1933.thumb.JPG.83e0d71ab6de13d6435c809d49a6603f.JPG" data-fileid="15133" src="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1933.thumb.JPG.83e0d71ab6de13d6435c809d49a6603f.JPG" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	Even the item you acquire in the level's prelude is a double-jump upgrade, which the level then associates with an oft-repeated green light motif. Players will be doing a LOT of double-jumping in the Tower, so the game articulates a method to guide them.
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15134" href="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1934.JPG.dfec85e9938d1af49ba9dd54c4c78acb.JPG" rel=""><img alt="IMG_1934.thumb.JPG.615e3b8821ddd9010b670db67b5bd0d7.JPG" data-fileid="15134" src="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1934.thumb.JPG.615e3b8821ddd9010b670db67b5bd0d7.JPG" /></a>
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	While players may or may not consciously respond to this green-light motif, the designers clearly believe it works as a navigational aid: it is repeated with brutal consistency throughout the level.
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<span style="font-size:24px;">SCOPE</span>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	When players reach the Tower's inner core, the vast power of DOOM's engine is indisputable. Great music kicks in, monsters spawn all around the player, and the game "gates" engagements without muddying players' central, long-term gameplay goal.
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15135" href="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1935.JPG.f3bbee5e69fbe1df69452ba3f8b7cff7.JPG" rel=""><img alt="IMG_1935.thumb.JPG.6d96f414e33ee23aa63193054230ca76.JPG" data-fileid="15135" src="https://www.mapcore.org/uploads/monthly_2017_09/IMG_1935.thumb.JPG.6d96f414e33ee23aa63193054230ca76.JPG" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	The symmetrical, circular design of the Tower's core proves extremely useful in several respects. Because players can only progress upwards, they get to experience fun combat engagements and jumping puzzles before they are neatly stuffed into small corridors adjoining the main core.
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	This contrast between the core's verticality and its cramped side passages makes for easily controlled progression through the level and amplifies the awe of returning to the core. In one side area of the Argent Tower, players experience a "monster closet" ambush, a classic DOOM design trope in which a demon emerges from a closet adjacent to a corridor. Here, the designers chose an exploding demon for extra "oomph"!
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15118" href="https://www.mapcore.org/uploads/monthly_2017_09/4de.jpg.e13e4ce48804a8371ee89b034675ce03.jpg" rel=""><img alt="4de.thumb.jpg.0fdadd4923b0c5410bd142cd7c627743.jpg" data-fileid="15118" src="https://www.mapcore.org/uploads/monthly_2017_09/4de.thumb.jpg.0fdadd4923b0c5410bd142cd7c627743.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	There's just something timeless about monster closets. That the game dives down to its most granular level (the monster closet) additionally provides contrast to the heights of the massive core. 
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15119" href="https://www.mapcore.org/uploads/monthly_2017_09/7de.jpg.c357581b99d3fcfd38d8ef65ac7098f5.jpg" rel=""><img alt="7de.thumb.jpg.09d73f7c47b3f299ae5574ce57e5606f.jpg" data-fileid="15119" src="https://www.mapcore.org/uploads/monthly_2017_09/7de.thumb.jpg.09d73f7c47b3f299ae5574ce57e5606f.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<span style="font-size:24px;">PACING</span>
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	DOOM carefully reminds players of their progress ascending the Tower. In one cramped side-area, players are faced with the seemingly trivial task of shooting canisters that underpin an elevator blocking their path. After destroying the canisters, the elevator falls down its shaft. 
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15109" href="https://www.mapcore.org/uploads/monthly_2017_09/1e.jpg.c715c447225316831ea93193133a34a5.jpg" rel=""><img alt="1e.thumb.jpg.c3c3d320307e03cf539e996ff5ccbb49.jpg" data-fileid="15109" src="https://www.mapcore.org/uploads/monthly_2017_09/1e.thumb.jpg.c3c3d320307e03cf539e996ff5ccbb49.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15117" href="https://www.mapcore.org/uploads/monthly_2017_09/3de.jpg.c323332eaf21432e5425f352c860fa7a.jpg" rel=""><img alt="3de.thumb.jpg.c6b6559734afc6dedc60cf059339d888.jpg" data-fileid="15117" src="https://www.mapcore.org/uploads/monthly_2017_09/3de.thumb.jpg.c6b6559734afc6dedc60cf059339d888.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	Half-Life 2 used similar imagery to convey the scale (and ongoing destruction) of The Citadel:
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15111" href="https://www.mapcore.org/uploads/monthly_2017_09/half-life-2-episode-one-unlocker_1.jpg.fe3f59ffa31790e7e11cfbc4872e3146.jpg" rel=""><img alt="half-life-2-episode-one-unlocker_1.thumb.jpg.17a2d8cd313c97b9d169a4fc8a2eaf68.jpg" data-fileid="15111" src="https://www.mapcore.org/uploads/monthly_2017_09/half-life-2-episode-one-unlocker_1.thumb.jpg.17a2d8cd313c97b9d169a4fc8a2eaf68.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	An additional point of this elevator diversion was to slow players down, to keep them away from the showpiece core a little while longer. 
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	New players will take a minute to identify the canisters overhead and discern that they need to be destroyed, because this is a novel task and because FPS players notoriously fail to look upward. Later in the game, the designers repeat the canister mechanic before providing players the BFG, the defining weapon of the series. Without the subtle change in momentum the canisters provide, gaining access to the Tower's rooftop or the BFG would feel too straightforward and simplistic. 
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	Having artificially lengthened the break players take from the core, the designers have guaranteed that environmental contrast will enhance perception of the Tower's scale AND that player intelligence and momentum has been challenged by a new problem. (...but because this is DOOM, problem solving is still ultimately about destroying shit.)
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<img alt="Rip_and_tear.png.43c70e3cfdf576c59d6d93caed0c3230.png" data-fileid="15112" src="https://www.mapcore.org/uploads/monthly_2017_09/Rip_and_tear.png.43c70e3cfdf576c59d6d93caed0c3230.png" /></div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	Players complete more than six different jumping tasks including riding a flying drone to climb the Argent Tower and enter a portal into Hell. 
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15115" href="https://www.mapcore.org/uploads/monthly_2017_09/5de.jpg.d3ce46f99796356ecac8542c367bd104.jpg" rel=""><img alt="5de.thumb.jpg.a32450ecda74c0a8a84cc57b45baa51a.jpg" data-fileid="15115" src="https://www.mapcore.org/uploads/monthly_2017_09/5de.thumb.jpg.a32450ecda74c0a8a84cc57b45baa51a.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr">
	Such a variety of jumping puzzles and hazards makes the level memorable and is another technique enlarging perception of the Tower. To be clear, jumping puzzles are universally terrible in every FPS game, but their annoyance here is dulled by the focused grandiosity of the level and the ability to grapple onto ledges. The designers ultimately cared a lot more about giving players a memorable locale than sparing them falling deaths.
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<span style="font-size:24px;">CONCLUSION</span>
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	After reaching the top of the Argent Tower, players are greeted by a giant, climactic battle which ends with a wonderful fade to white.
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	Only now are players ready to enter Hell confident that they've truly gotten to experience Mars. 
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15110" href="https://www.mapcore.org/uploads/monthly_2017_09/DOOM-1.jpg.4ee69333b21f0debdb9a7335400c26f5.jpg" rel=""><img alt="DOOM-1.thumb.jpg.ebdc8f53f5297d153f731945e8f1b928.jpg" data-fileid="15110" src="https://www.mapcore.org/uploads/monthly_2017_09/DOOM-1.thumb.jpg.ebdc8f53f5297d153f731945e8f1b928.jpg" /></a>
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	It's important to remember that, fundamentally, the Argent Tower is about going from point A (the foot of the tower) to point B (the top). Faced with a similar Tower-landmark, some designers might path this route with nothing more than a simple elevator cinematic or miss countless opportunities to do something special. DOOM's designers, however, missed nothing: they recognized the need to offer players dense and varied challenges, careful pacing, and spatial design rich with contrast.
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	Later, when players return to Mars, the destroyed husk of the Tower provides an instantly recognizable landmark re-orienting players on their adventure and a tantalizing hint that things are different now.
</div>

<div dir="ltr">
	 
</div>

<div dir="ltr">
	The Argent Tower goes to show that great levels are not about the destination, but the journey -- and all the controlled chaos along the way!
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	<a data-fileid="15120" href="https://www.mapcore.org/uploads/monthly_2017_09/59aeae87d0c62_story2.jpg.9f62ab9a0319ae54a34aa7a63f267307.jpg" rel=""><img alt="59aeae88248cb_story2.thumb.jpg.d5d817b810b86626a05e7a78f396827d.jpg" data-fileid="15120" src="https://www.mapcore.org/uploads/monthly_2017_09/59aeae88248cb_story2.thumb.jpg.d5d817b810b86626a05e7a78f396827d.jpg" /></a>
</div>

<div dir="ltr" style="text-align:center;">
	 
</div>

<div dir="ltr" style="text-align:center;">
	Thanks for reading!
</div>

<div style="text-align:center;">
	 
</div>

<p style="text-align:center;">
	 
</p>
]]></description><guid isPermaLink="false">95</guid><pubDate>Wed, 06 Sep 2017 21:33:00 +0000</pubDate></item><item><title>Dynamic levels - in Payday 2 and beyond</title><link>https://www.mapcore.org/articles/development/dynamic-levels-in-payday-2-and-beyond-r89/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_11/thumbnail.jpg.e066146694c8121c2f6ec2e70719dfc7.jpg" /></p>

<p style="text-align:center;">
	<img alt="rKJhPgx.jpg" class="ipsImage" src="http://i.imgur.com/rKJhPgx.jpg" /></p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Payday 2 is a cooperative first person shooter where players band together to commit various crimes in the endless pursuit of wealth, infamy and cool masks to cover their criminal faces with. The game recently celebrated it’s third birthday, yet it still retains a steady player base. How then has the game kept players engaged throughout the years? The many and regular content updates are surely a big part of it. Another draw must be the fleshed out progression systems that offer tons of customization. I would argue that the lifeblood of the game is its dynamic level design; it is what keeps the game replayable and fun. In this article I will discuss what dynamic level design is and how it was used to build “Hoxton Breakout”, one of the game’s most popular missions.</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<img alt="DMk7Oar.jpg" class="ipsImage" src="http://i.imgur.com/DMk7Oar.jpg" /></p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<span style="font-size:12px;"><em>Payday 2, Left 4 Dead 2 and even XCOM2 all use some form of dynamic level design.</em></span>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">What is dynamic level design?</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Dynamic level design is all about creating levels that are as replayable as possible; it is about retaining the challenge and keeping players on their toes. This is achieved by introducing elements that change between playthroughs, things that make the level a bit different each time you play. Dynamic levels are still designed and built by hand, so to speak, which makes them different from procedural levels which are created from automated algorithms.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Dynamic levels are useful in games where the developer wants the levels to provide more gameplay than a single playthrough would. This approach has the added benefit of allowing different players to come together and enjoy the same level, irrespective of whether they have played it many times before or not at all. This can make dynamic level design ideal for co-op games and it can be essential for retaining players over longer periods of time, just like Payday 2 has done.</span></b>
</p>

<h2 dir="ltr" style="line-height:1.38;margin-top:18pt;margin-bottom:6pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Building a dynamic level</span></b>
</h2>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The process of building a dynamic level certainly differs from more traditional single player level design. Instead of crafting a linear experience in meticulous detail, a designer must seek to create a broader structure of what will happen in the level and then design dynamic elements, things that change between playthroughs, within that structure. These dynamic elements need to be designed with care, so that the level actually changes in meaningful ways between playthroughs. The process of making a dynamic level will vary from game to game; it all depends on the game's mechanics, setting and other details. By sharing the design of a Payday 2 level I hope to illustrate what a dynamic level can look like and also showcase the overall possibilities of dynamic level design.</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;"><img alt="p1raSzs.jpg" class="ipsImage" src="http://i.imgur.com/p1raSzs.jpg" /><br /><span style="font-size:12px;"><em>Hoxton in all his glory, featured here in this promotional art. Shortly after his breakout, he leads a daring break-in at the FBI to uncover who ratted him out.</em></span></span></b>
</p>

<h1 dir="ltr" style="line-height:1.38;margin-top:20pt;margin-bottom:6pt;">
	<span style="font-size:36px;"><b style="font-weight:normal;"><span style="font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Hoxton Breakout</span></b></span>
</h1>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">In the Payday 2 mission “Hoxton Breakout” players are tasked with breaking their old heisting comrade Hoxton out of custody. During the breakout Hoxton shares his suspicion that his capture was caused by an unknown snitch. To uncover the truth, the PAYDAY gang set their sights on the headquarters of the Federal Bureau of Intervention (not to be confused with any real life organization...). This sets the stage for the mission’s second level and the one I will be discussing here.</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Level Structure</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">In this level, the players will enter the FBI headquarters together with Hoxton (an NPC). They will fight their way to the “Operations Room”; the place where the FBI servers are kept and where the Payday gang is hoping to find the information which reveals the identity of the snitch. Hoxton will search through the servers and when he has found what they need, the gang will escape. No matter how many times you play the level, the overall structure will stay the same. Instead, it’s the dynamic elements within this structure that change and make it replayable. What are those, you ask? Let’s take a look!</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<img alt="hNFGRhk.jpg" class="ipsImage" src="http://i.imgur.com/hNFGRhk.jpg" /></p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<span style="font-size:12px;"><b style="font-weight:normal;"><span style="font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;"><em>Clockwise from top right: The FBI HQ lobby, a central area in the level. The FBI director hides behind his desk. Hoxton and the Payday gang enter the lobby.</em></span></b></span>
</p>

<h2 dir="ltr" style="line-height:1.38;margin-top:18pt;margin-bottom:6pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The Operations Room</span></b>
</h2>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Players will spend a lot of time in the FBI Operations Room. Hoxton will be hard at work searching through the servers, leaving players to defend him from relentless police assaults. The combat space will change in a number of ways between playthroughs.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<ul style="margin-top:0pt;margin-bottom:0pt;"><li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Entrances </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- Most of the entrances to the Operations room are selected dynamically in various combinations, which changes which choke points the player must defend.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Windows</span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;"> - The ‘Operations’ room is two floors in height and the second-floor windows overlooking the room are placed in different positions. Players must watch them for enemy fire.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Fuse box</span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;"> - The fuse box, which enemies use to cut the power to the servers and pause your progress, can be placed in a few different positions. Players must defend it.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Ceiling breaches </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- SWAT troops can breach the ceiling of the ‘Operations’ room and rappel down right into the thick of it! There are a few places where this can happen (it doesn't always).</span></b>
		</p>
	</li>
</ul><div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">These dynamic elements will vary and change independently. This can be very desirable, as it will give you a large set of different combinations and improve the replayability of the level. For example, even if the fuse box is in the same location in two separate playthroughs, the positioning of the entrances and windows will change how the players approach the situation, which will help reduce level fatigue.</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<img alt="zTq5sA8.jpg" class="ipsImage" src="http://i.imgur.com/zTq5sA8.jpg" /><br /><span style="font-size:12px;"><em>The Operations Room. The Servers are kept in the room under the illuminated FBI logo. </em></span>
</p>

<h2 dir="ltr" style="line-height:1.38;margin-top:18pt;margin-bottom:6pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The Quests</span></b>
</h2>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">There are four servers Hoxton must search through in the Operations Room. Between the searching of each server, Hoxton will need the player's assistance and send them on a “quest”. There are five different quests, though only three are selected and used in each playthrough. They can be selected in any order and combination. Each quest and its gameplay have been designed to have a slightly different flavor.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<ul style="margin-top:0pt;margin-bottom:0pt;"><li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Security Office </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- T</span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">he next server happens to be heavily encrypted. You need to break into the Security Office, download the encryption keys and get them back to Hoxton.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">IT Department </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The next server is missing and the log states it was taken to the IT Department for maintenance. You must locate the IT Department, find the missing server and bring it back to Hoxton.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Archives </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Hoxton finds a reference to some physical files kept in the archives. You need to go down to the basement, search through the archives and bring the paper files to Hoxton. </span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Forensics </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Hoxton learns that the FBI has evidence related to the traitor. Players need to break into the evidence locker, find the right piece of evidence and then scan it in the nearby laboratory for clues before returning to Hoxton.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Director’s Office </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Hoxton encounters some files on the next server that can only be accessed by gaining direct approval from the FBI Director. You must head to the director’s office and use his computer to approve all of Hoxton’s security clearance requests.</span></b>
		</p>
	</li>
</ul><div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">What this means is that players won’t know exactly which “quests” they will tackle each time they play the mission, or in which order they will face them. As the difficulty slowly ramps up during the mission and the players’ supplies generally are lower towards the end, completing the same quest as either your first or last one can become quite a different experience, even though the quest itself doesn’t change that much. Allowing the quests to be arranged in any order and combination simply gives the mission a slightly different flow each time.</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;"><img alt="IU2RlIY.jpg" class="ipsImage" src="http://i.imgur.com/IU2RlIY.jpg" /></span></b><br /><span style="font-size:12px;"><em>The five quests, clockwise from top right: IT Department, Security Office, Archives, Forensics. Center: Director's Office</em></span>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:18pt;margin-bottom:6pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The Combat</span></b>
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Now, it’s about time we talked about the combat. It is essential for the replayability of a level that the combat isn’t static and that encounters vary between playthroughs. To solve this, Payday 2 has a spawning system that serves up dynamic enemy encounters. The system unburdens individual level designers and creates a consistent and tweakable way for the game to spawn enemies in all levels. For those of you who have played the Left 4 Dead games this may sound very familiar. The system isn’t completely automated and the level designer can control a few variables.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<ul style="margin-top:0pt;margin-bottom:0pt;"><li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Difficulty </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The player selects the overall difficulty of a level before starting, but a designer can tweak the difficulty to a factor between 0 and 1. This can be adjusted at any point during the mission and can be tied to certain events.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Spawn locations </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">A designer designates spawn locations manually. The designer can toggle spawn locations on and off, change how often they can be used to spawn enemies and which kind of enemies are allowed to spawn from them.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Enemy Wave Mode </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Police assaults occur regularly and this is generally handled by the system, but a designer can force a police assault or a complete break from them.</span></b>
		</p>
	</li>
	<li dir="ltr" style="list-style-type:disc;font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;">
		<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
			<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Snipers/Harassers </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">- </span><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The placement of snipers and so called harassers, regular SWAT troops who harass players from vantage points, is done manually. It is up to the designer to place them in challenging, but fair, positions and script logic which decides when and if they appear.</span></b>
		</p>
	</li>
</ul><div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">What this all means is that while the spawning system does the heavy lifting and creates varied combat encounters, a designer can fine-tune the experience and still direct the combat somewhat. For example, in Hoxton Breakout the difficulty is slowly ramped up after each completed server, the spawn locations are continuously tweaked throughout the mission to make fights fair and when it is time to escape an endless police assault is forcefully triggered to increase the stakes!</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<br /><img alt="bZmmdn2.jpg" class="ipsImage" src="http://i.imgur.com/bZmmdn2.jpg" /></p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<span style="font-size:12px;"><em>A dynamically spawned enemy squad moves towards the Payday gang.</em></span>
</p>

<h2 dir="ltr" style="line-height:1.38;margin-top:18pt;margin-bottom:6pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The keycard economy</span></b>
</h2>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">In Payday 2, keycards are single-use items that are occasionally used to open certain doors. In order to add depth and strategy to the level, I added something to this level which I like to call “the keycard economy”. In every playthrough, players can find 3-4 keycards which can be used, i.e. “spent”, on a variety of options like overriding doors to seal them off from enemies, unlocking rooms that contain precious resources or opening doors that lead to objectives. The value of the different options can change between playthroughs, depending on dynamic variables and which loadouts the players have. Since players can’t have all the options, they must choose wisely. This allows players to refine their strategy over the course of multiple playthroughs, adding to the level’s replayability.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:21.333333333333332px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The little things</span></b>
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">We’ve discussed all the major dynamic elements of the level at this point, but it is worth mentioning that replayability also arises from smaller dynamic elements too. These smaller surprises can throw players off and force them to adapt accordingly. A good example can be found in the Security Office, where the police sometimes pumps in tear gas when players are trying to complete the objective inside. This forces players to leave the relative safety of the room and charge head first into the police forces which are surely waiting outside. Part of making a dynamic level should be to identify and implement these little game changers!</span></b>
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<img alt="Kvyixap.jpg" class="ipsImage" src="http://i.imgur.com/Kvyixap.jpg" /></p>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align:center;">
	<em><span style="font-size:12px;">Clockwise from top right: The Security Room fills with gas. A keycard has been used to seal a security door. An innocent keycard. A SWAT team rushing to thwart the payday gang.</span></em>
</p>

<h1 dir="ltr" style="line-height:1.38;margin-top:20pt;margin-bottom:6pt;">
	<span style="font-size:36px;"><b style="font-weight:normal;"><span style="font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:400;font-style:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">Discussion</span></b></span>
</h1>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">To summarize, the level we’ve looked at is about defending a location and completing short “quests”,</span></b><b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;"> with both activities changing in different ways between playthroughs. In addition to this variety, enemies are dynamically spawned, occasional surprises appear and players are able to learn and master the keycard economy over the course of multiple playthroughs. These dynamic elements, this variety between playthroughs, is what turns the level into a dynamic one.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">This level was made for Payday 2 and, as mentioned, dynamic levels will look a bit different depending on the game and its needs. The Left 4 Dead games have less emphasis on objectives and focus more on linear progression through a level, with dynamic enemies, items and minor path changes along the way. The Killing Floor games have arena levels that suit the game’s wave-based horde mode and these levels feature fairly simple dynamic elements: enemy and item spawning as well as the location of the weapon and item shop. The revived XCOM franchise uses levels which have designated areas or “slots” where different buildings and structures can fit in and shift the layout accordingly. The XCOM games also allow different missions to be played on the same level, enabling levels to provide even more gameplay mileage.</span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">The dynamic level design approach may fit these games, and others like them, but it is not suitable for all kinds of games and it definitely comes at a price. Since dynamic levels are designed to be replayable, heavily scripted story moments and set pieces may have to be deemphasized or removed outright. Playing through such sections may be thrilling once or twice, but they generally lose their appeal very quickly. Furthermore, some degree of polish is generally lost in the process of making dynamic levels. The fact that you are making an experience that can’t just happen “in one way” means you can’t necessarily polish, and control, every moment of gameplay to an insane standard, like you would expect in an Uncharted game for example. Additionally, an incredibly strong core gameplay loop is almost a requirement for a game with dynamic level design. Since the levels can’t be overly scripted, directed and set-piece heavy, the levels can’t compensate and “lift up” a slightly weaker core gameplay. Finally, one must also consider that creating dynamic elements in a level takes time, time which could be spent polishing or making more non-dynamic levels. </span></b>
</p>

<div dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	 
</div>

<p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;">
	<b style="font-weight:normal;"><span style="font-size:14.666666666666666px;font-family:Arial;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre-wrap;">These drawbacks must be weighed against the potential benefits. After all, the value of replayability should not be underestimated. As I mentioned in the beginning of the article, dynamic levels seem to be almost ideal for co-op games. Playing games together definitely adds something to the experience and this can help to compensate for some of the potential drawbacks like the lack of set-pieces. Adversarial multiplayer games, i.e. player vs player, don’t necessarily stand much to gain with the dynamic level design approach as the element of human unpredictability and challenge is usually enough to keep players engaged and entertained. By looking at XCOM, we can see that dynamic levels can be used to great effect in a game that isn't a shooter nor a cooperative one. And if we compare them to procedural levels, dynamic levels requires less sophisticated technology to create, but more human labor, and can offer something that feels a bit more handcrafted and unique. Ultimately, game makers need to look at the dynamic level design approach, its pros and cons, and ask themselves: is it the right approach for us?</span></b>
</p>
]]></description><guid isPermaLink="false">89</guid><pubDate>Mon, 05 Dec 2016 13:35:00 +0000</pubDate></item><item><title>Optimizing An Open Map in Source Engine</title><link>https://www.mapcore.org/articles/development/optimizing-an-open-map-in-source-engine-r88/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_thumb.jpg.03d0508e9ba7b99e0e9b8a6035d3f5ed.jpg" /></p>

<p style="text-align:center;">
	<img alt="openmap_web.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11657" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_web.jpg.a5de4db20e94944df7d9b05a5cc968d8.jpg" /></p>

<p>
	<span style="font-size:18px;"><strong>An open map?</strong></span>
</p>

<p>
	Source engine, which is funnily a Quake engine on steroids (a bit of exaggeration but still), inherited the same limitations of its parents in terms of visibility calculations: BSP and PVS. This fact makes Source, as was Quake engine before, more suitable to rooms and hallways separated by portals where the BSP shines in all its glory.
</p>

<p>
	Inheritably, Source does not like large open maps where the PVS is of considerable size and the over-rendering is a real issue.
</p>

<p>
	If you work with Source engine, then you already know the importance of optimization in a large, detailed map. Optimization becomes even more imperative when the said map is open.
</p>

<p>
	What’s an open map? Good question. The word “open” is an umbrella term to denote any map that does not have traditional hallways and corridors that connect indoors to outdoors. The map is mostly large, outdoors with an unbroken skyline; in other words, the same stuff that source engine nightmares are made of in terms of PVS and BSP.
</p>

<p>
	In a traditional “hallway’d” map with twisted corridors leading to open areas followed by other hallways, and even if you “forgot” to place hints and areaportals, the geometry itself allows the engine to cut visleaves and limit visibility; granted the visleaves’ cuts will be subpar and messy and the PVS will be in excess, but still, the visibility and fps will be relatively under control. A twisted hallway is a remedy to long sight lines after all.
</p>

<p>
	In an open map, and without hallways and enough geometry to help the engine, the PVS risks to be huge and the whole map could be rendered at once from any point (over-rendering). We are talking here about a severe fps killer and a potential slideshow on a medium to low range computer. Source does not like over-rendering; I repeat, Source does not like over-rendering.
</p>

<p>
	I believe a screenshot should be welcome at this stage to illustrate an open map. I’ve chosen a nice medium-size map from CSGO to showcase the issue: de_stmarc.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11658" href="https://www.mapcore.org/uploads/monthly_2016_10/stmarc_open.jpg.5befec655ae4d313371e9ad75096339e.jpg" rel=""><img alt="stmarc_open.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11658" src="https://www.mapcore.org/uploads/monthly_2016_10/stmarc_open.thumb.jpg.ed4839832a52448af68dc0d445b82773.jpg" /></a>
</p>

<p>
	The shot is taken in Hammer obviously, and you can immediately see that the skybox is one big unbroken body from one edge of the map to the opposite one. This is the classic definition of open map.
</p>

<p>
	Let’s see this map in 2D view from the side.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11659" href="https://www.mapcore.org/uploads/monthly_2016_10/stmarc_side.jpg.16db3112a11a2ebdd8b40df9606656eb.jpg" rel=""><img alt="stmarc_side.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11659" src="https://www.mapcore.org/uploads/monthly_2016_10/stmarc_side.thumb.jpg.4ca863065f8ad1d7fccba2d41bf0667c.jpg" /></a>
</p>

<p>
	I have highlighted the skybox in blue so you could see the continuous sky body all over the map. Please note that an open map can have varying skybox shapes but I’ve chosen the simple and classic one to showcase my point where it is easier to see and visualize the concept of open map.
</p>

<p>
	In contrast, a “traditional” map will have several skyboxes, often not connected directly but rather through a system of indoor rooms or hallways, varying in size and shape.
</p>

<p>
	I will have my map de_forlorn as example here.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11647" href="https://www.mapcore.org/uploads/monthly_2016_10/forlorn_side.jpg.a6470e7b34b4f3053d469e948b8e8fb5.jpg" rel=""><img alt="forlorn_side.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11647" src="https://www.mapcore.org/uploads/monthly_2016_10/forlorn_side.thumb.jpg.a970e4e06df0943618cf1f100f0db9ee.jpg" /></a>
</p>

<p>
	I have also highlighted the skybox in blue and you can easily notice several skyboxes for CT spawn, T spawn, and Mid/bombsites. These skyboxes are not directly connected to each other but the areas related to them are linked on the lower levels through various indoor locations, some vast (like garage, tunnels…) and some small (like lab hallway…).
</p>

<p>
	If you are not that comfortable with source optimization or feel that certain terms are alien to you, then please read my previous optimization papers and articles before proceeding further in this article (Previous papers can be found here <a href="https://www.mapcore.org/topic/20087-source-engine-optimization-roadmap/" rel="">Source Engine Optimization roadmap</a>).
</p>

<p>
	<span style="font-size:18px;"><strong>The necessary tools</strong></span>
</p>

<p>
	I’m not revealing a secret when I tell you that the same tools used to optimize any map in Source are exactly the same ones used for optimizing an open map. If you were expecting some magical additional tools, I’m sorry to bust your bubble.
</p>

<p>
	Since the tools are the same (nodraw, func_detail, props, hints, areaportals, occluders…), it is more about how to use them in open maps that makes all the difference.
</p>

<p>
	So, how to properly optimize an open map? Well, you could always pay me to do so for you (joking…not…maybe…I dunno!!)
</p>

<p>
	If the above option is off the table, then read on the rest of this article <img alt=":)" data-emoticon="" height="15" src="https://www.mapcore.org/uploads/emoticons/default_mapcore_smilies/emot_smile.gif" srcset="https://www.mapcore.org/uploads/emoticons/smile@2x.png 2x" title=":)" width="15" />.
</p>

<p>
	<span style="font-size:18px;"><strong>Horizontal hints</strong></span>
</p>

<p>
	While in a traditional map one might get away without using horizontal hints, it is virtually impossible to skip them (pun intended) in an open map unless you want to witness single digit fps burning your eyes on the screen. They are of utmost importance to negate the "tall visleaves across the map" issue.
</p>

<p>
	In a traditional map, even if you bypass adding horizontal hints, the damage in fps will mostly be local since the skyboxes are not connected and areas are mostly autonomous in terms of PVS. In case of my map “Forlorn” and referring to the 2D diagram above, if I remove horizontal hints from CT spawn, then only this area will suffer from tall visleaves and over-rendering. Obviously, this is not cool in terms of optimization, but at least the effect will be somehow restricted to this area only.
</p>

<p>
	In the case of “Stmarc”, you can certainly see that not including horizontal hints will have tall visleaves seen from across the map as the skybox is one unit. The PVS will grow exponentially and the over-rendering will take its toll on the engine.
</p>

<p>
	Let’s move on to some screenshots and diagrams, shall we.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11650" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints1.jpg.f6d6e5b44152ffaaa73e6c1bdc1d5eb3.jpg" rel=""><img alt="openmap_hints1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11650" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints1.thumb.jpg.8059b982f25ffb389a87586ee6c68fd2.jpg" /></a>
</p>

<p>
	This is our glorious open map in side view. The blue lines denote the skybox, the dark grey one is the ground, and the green rectangles represent solid regular world brushes such as building bases for example. The red <s>starfish</s> little-man-with-arms-wide-open is the player. The orange hollow rectangles denote the various visleaves that the engine would probably create in the map (most go from ground level to skybox level and this is what I refer to as “tall visleaf”).
</p>

<p>
	If you know your optimization, then you certainly remember that BSP relies on “visibility from a region” approach (for a refresher, please consult my papers <a href="http://gamebanana.com/articles/71" rel="external">Demystifying Source Engine Visleaves</a> and <a href="http://gamebanana.com/articles/72" rel="external">Source Engine PVS - A Closer Look</a>. This simply translates to the following: the player is in visleaf A and visleaf A has direct line of sight to visleaves B, C, D, E, F, and G. The PVS for A in this case would be stored as BCDEFG. Once the engine recognizes that the player is in A, and regardless of the exact position in A, it will proceed to render the whole PVS content. Everything in visleaves BCDEFG will be rendered even though the player is at the extreme end of A and has no line of sight to most of this content.
</p>

<p>
	You can immediately notice the extent of damage you will inflict on your open map if you neglect adding horizontal hints: excess PVS with additional useless content to be rendered at all times.
</p>

<p>
	Now that we established the importance of these horizontal hints in open maps, the question remains: where shall I put these hints?
</p>

<p>
	In the diagram above, the most logical places would be on top of the 3 green rectangles.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11651" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints2.jpg.8a61f2aff4655e0d664b4b3d1a047880.jpg" rel=""><img alt="openmap_hints2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11651" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints2.thumb.jpg.9493fbc131d1419539fab126a253a306.jpg" /></a>
</p>

<p>
	We added 3 horizontal hints (H1, H2, H3) on top of the 3 regular brushes in our map (the hint face neatly resting on the top of the regular brush while other faces are textured with “skip”). This will create more visleaves as can be clearly seen in the above diagram, and vvis will take more time to calculate visibility due to the increased number of leaves and portals but this is done for the greater good of <s>humanity</s> your map’s fps.
</p>

<p>
	Now the player is in visleaf A1 and the PVS is reduced to (sit tight in your chair) A2, A3, A4, B1, B2, C3, C4, D1, E4, F3. On top of the nice result of a greatly reduced PVS (and therefore content to render), keep in mind that leaves A4, B2, C4, D1, E4, and F3 are mostly empty since they are way up touching the skybox.
</p>

<p>
	Some folks will start complaining and whining: <em>what the hell dude, I don’t have 3 green rectangles in my map; where would I put my hints??</em> My answer would be: <em>deal with it!!</em>
</p>

<p>
	Joking aside, open maps will greatly differ in size, shape, geometry, and layout. What you need to do is choose 1 to 5 common height locations in your map where you would implement these hints. Medium maps with mostly uniform building heights can get away with 1 horizontal hint, while complex, large maps with various building heights can do with 4-5 hints.
</p>

<p>
	If your map has a hill made of displacements that separates 2 parts of the map, then it is also a candidate for horizontal hints. You just need to insert a nodraw regular world brush inside the displacement to be used as support for the horizontal hint (the same technique can be used if you have a big non-enterable hollow building made mostly of func_detail/props/displacements).
</p>

<p>
	<span style="font-size:18px;"><strong>Vertical/corner hints</strong></span>
</p>

<p>
	These might not come into play as much as their horizontal siblings, however they could see a growing potential use depending on the map’s layout, geometry tightness versus openness.
</p>

<p>
	I cannot go through all combinations of open maps obviously to show you how to lay vertical and corner hints; what I will do is choose one diagram representing a typical open map scenario with some scattered houses, streets, and surrounding fields. Once you see how I proceed with these hints, it will become a lot easier for you to implement them in your own map regardless of the differing geometry and layout.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11652" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints3.jpg.f8512e7c940b8f4071667b4e6d9124ed.jpg" rel=""><img alt="openmap_hints3.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11652" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints3.thumb.jpg.d148d32687c822e5114508edd23209be.jpg" /></a>
</p>

<p>
	Here’s our typical map viewed from top with grey lines being map borders, green rectangles being houses (solid world brushes), and our tiny red player at the rightmost part of the map. The map has a main street that goes in the middle between houses but the player is not restricted to this path only.
</p>

<p>
	The diagram below shows how I would proceed with my hints for such setup.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11653" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints4.jpg.cd82c5b2550587fa9c4cdeaefabf4f6f.jpg" rel=""><img alt="openmap_hints4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11653" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_hints4.thumb.jpg.7db8eb5152f63545a7328bf58b44e156.jpg" /></a>
</p>

<p>
	This is basically what you get when you give a 5-year-old some crayons.
</p>

<p>
	Seriously though, I just gave each hint a different color so you could discern them on the spot, otherwise it would be hard to tell where each one starts and ends.
</p>

<p>
	Most of these hints go from one side of the map to the other while going from ground level to skybox top; don’t be afraid of having big hints that cross your entire map.
</p>

<p>
	Notice that we have both straight vertical hints (shown from above in the diagram obviously) and corner hints; what I did is that I compartmentalized the map so wherever the player is, chances are they will have the least amount of leaves to render in the PVS (this is just a basic hint system and more fine tuning and additions could be done but you get the gist of it).
</p>

<p>
	To get more details on hint placement, please refer to my paper <a href="http://gamebanana.com/articles/59" rel="external">Hints about Hints - Practical guide on hint brushes placement</a>
</p>

<p>
	<span style="font-size:18px;"><strong>Areaportals</strong></span>
</p>

<p>
	If your map has enterable buildings, then it is imperative to separate indoors from outdoors using areaportals; this is top priority.
</p>

<p>
	Make sure to slap an areaportal on each door, doorway, cellar door, window, roof opening, chimney, etc. that leads inside the house in question.
</p>

<p>
	What about outdoor areaportals? Good call. In an open map without much regular world brushes to maneuver, it could get very tricky to set up an outdoor areaportal system to separate areas. However, you should always strive to have one, even if it is one or two areaportals across the map. The reason is very simple: the view frustum culling effect, which, coupled with hints, will yield the best results in cutting visibility around the map.
</p>

<p>
	Continuing with our previous diagram, a simple outdoor areaportal system setup could be as follows (top view).
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11648" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_areaportals1.jpg.cec04cd2cbbc9f3d432744debad8d5d4.jpg" rel=""><img alt="openmap_areaportals1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11648" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_areaportals1.thumb.jpg.d784ea19857ce2fbf4a1240c6bebb336.jpg" /></a>
</p>

<p>
	This setup will make sure that the map is split into 4 areas and whenever you are in one of them as player, the view frustum culling effect will kick in to cull as much detail as possible from the other areas.
</p>

<p>
	Let me show you the setup from a side view to make it easier to visualize.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11649" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_areaportals2.jpg.f8853a3088582163a0ec12b3b1848972.jpg" rel=""><img alt="openmap_areaportals2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11649" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_areaportals2.thumb.jpg.1b0a255519abd139f5ad6ac58340dded.jpg" /></a>
</p>

<p>
	This is the same areaportal that was closest to the player in the top down view diagram but this time viewed from the side. Unlike hints where it’s fine to have one big hint going across the map, for areaportals, it is best to have several smaller ones that tightly follow the contour of the geometry eventually forming one big areaportal system.
</p>

<p>
	Another possibility for outdoor areaportal system is to have a combination of vertical and horizontal (yes horizontal) areaportals.
</p>

<p>
	If your map is a village for example with a highly detailed central square where most of the action takes place, a potential system could be made of several vertical areaportals that sit in every entrance to the square from adjacent streets, and a horizontal areaportal that “seals” the area and works as a “roof”.
</p>

<p>
	For a practical guide on areaportals placement, please check out my article <a href="http://gamebanana.com/articles/64" rel="external">Practical guide on areaportals placement</a>
</p>

<p>
	<span style="font-size:18px;"><strong>Props fade distance</strong></span>
</p>

<p>
	This is a really, really important tool when optimizing large open maps. In case you got distracted while I was making the announcement, I’ll go again: props fading is definitely vital when tackling open maps optimization.
</p>

<p>
	What you need to do is to set an aggressive fade distance for all trivial props that do not contribute to gameplay. Players will look closely at how detailed your map is when they check it out solo on the first run; however, when the action starts and the round is underway, adrenaline, focus, and tunnel vision kick in, and all the details become a blur.
</p>

<p>
	During an intense firefight, players will not notice small props and details up close, let alone at a distance. We need to use this to our advantage to fade props thus releasing engine overhead; a faded prop is not rendered anymore and engine resources will be freed and allocated elsewhere.
</p>

<p>
	Your map geometry will dictate the proper fade distances, but as a rough guideline, small props could have a fade distance anywhere from 800 to 1200 units (flower pot on a window sill, small bucket at the back door, a bottle on the sidewalk…), while medium props could do with 1400-1800 range (a shrub, a power box on the wall, an antenna on the roof, wood plank, gutter pipe, fire hydrant…).
</p>

<p>
	Be very careful though not to prematurely fade critical props used for cover or game tactics (car in the middle of the street, sandbags, stack of crates, dumpster on the sidewalk…).
</p>

<p>
	<span style="font-size:18px;"><strong>Cheap assets</strong></span>
</p>

<p>
	Many people forget about this technique which is more than needed when it comes to open maps that tend to have larger average PVS than traditional maps.
</p>

<p>
	I showcased in a previous article of mine the fps cost of cheap and expensive assets (<a href="https://www.mapcore.org/articles/development/source-fps-cost-of-cheap-and-expensive-assets-r76/" rel="">Source FPS Cost of Cheap and Expensive Assets</a>).
</p>

<p>
	Get in the habit of using the low-poly model version as well as the cheap texture version in the distant non-playable areas and the high unreachable areas where players won’t have much of close contact with the environment. Potential candidates could include a distant field, the unreachable opposite bank of a river, a garden behind hedges/walls, high rooftops, the 3D sky…).
</p>

<p>
	<span style="font-size:18px;"><strong>Fog/Far-z clip plane</strong></span>
</p>

<p>
	This technique, when correctly used, can provide a big boost to your frame rate as parts of the world beyond the opaque fog won’t be rendered at all.
</p>

<p>
	For this technique to work properly, your map should have a foggy/rainy/stormy/dusty/hazy/night setting (use as applicable) where a fully opaque fog won’t appear out of place. Obviously, if your map takes place in a sunny and clear day, this technique won’t work much and it will look inappropriate.
</p>

<p>
	Using this is simple: For example, if your map is set in a rainy and foggy day, you just need to set the fog end distance while having its density set to 1. You will then set the far-z clip plane to something slightly higher than the maximum fog distance (if the fog end distance is 8000 units for example, the far-z could be set to 8200).
</p>

<p>
	<span style="font-size:18px;"><strong>3D skybox</strong></span>
</p>

<p>
	This is another good technique to reduce engine overhead and the cost of rendering.  
</p>

<p>
	It is true that the 3D sky is used to expand the limits of your level and decorate its surrounding, however, since it is built at 1/16 scale (and expanded in-game), it is also a nice way to decrease rendering costs. Use this to your own advantage and relocate assets in the non-playable areas with limited player interaction to the 3D sky.
</p>

<p>
	One thing to keep in mind though, the 3D sky’s visleaf is rendered at all times on top of the PVS in the playable area. Do not go overboard and make an extra complex, highly expensive 3D sky or you would be defeating the purpose of this optimization technique.
</p>

<p>
	<span style="font-size:18px;"><strong>Occluders</strong></span>
</p>

<p>
	You thought I forgot about occluders? Not a chance as these are the big guns when it comes to large open maps with little world brushes to use for other optimization techniques.
</p>

<p>
	Let’s clear one thing first; if your map is made mostly of brushwork and displacements with little to no props, then there is absolutely no need to resort to occluders as they’d be totally useless in this case. Only when the map is loaded with models and props in an open setup with little regular world brushes that occluders come to play in force.
</p>

<p>
	To place occluders, you would search for areas where these occluders could make the most impact (low fps, high traffic, props abundance) since they run in real time and are expensive, otherwise their cost would outweigh their benefit in terms of frame rate variation.
</p>

<p>
	Remember that occluders rely on the player’s position and field of view relative to the occluder to calculate what gets culled. You need to place them in a way to maximize the number of props to be culled behind them when the player stands in front of these occluders.
</p>

<p>
	Let’s see some examples.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11654" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_occluders1.jpg.95e9907339e784881851f8a1bb7c6ed2.jpg" rel=""><img alt="openmap_occluders1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11654" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_occluders1.thumb.jpg.0d30002e2d8468192e9cbe85052fc188.jpg" /></a>
</p>

<p>
	We go back to our famous top down diagram; the occluder is dark blue placed on the left wall of the large house while the little black stars represent various props and models. The 2 diagonal black lines denote the player’s FOV relative to the occluder. Anything behind the occluder and within the view frustum will be culled.
</p>

<p>
	That’s nice; we are able to cull 4 props but is it enough? It is not optimal as we can still do better. What if we move the occluder to the right wall of the house?
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11655" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_occluders2.jpg.43c0c88d1606661a4f9860fd8aa538ea.jpg" rel=""><img alt="openmap_occluders2.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11655" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_occluders2.thumb.jpg.e85a8c4a5ae29fa4e576a9815af2fd9b.jpg" /></a>
</p>

<p>
	Much better if you ask me. 5 additional props were added to the culling process meaning less overhead and fewer resources to render for the engine. That is why I said earlier it is all about maximizing the impact of the occluder by placing it in a way relative to the player’s position that maximizes the number of culled models.
</p>

<p>
	Here’s another example (still top down view).
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11656" href="https://www.mapcore.org/uploads/monthly_2016_10/openmap_occluders3.jpg.b19f7c89cf609b7f41cd8dcbb7c552f2.jpg" rel=""><img alt="openmap_occluders3.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="11656" src="https://www.mapcore.org/uploads/monthly_2016_10/openmap_occluders3.thumb.jpg.ed7d3a08ed612a0f9a7cc3603ad9c331.jpg" /></a>
</p>

<p>
	The player has moved to the middle of the central street, and beyond that L-shaped house is an open field with a lot of props scattered around. One way to implement occluders is as showcased in the above diagram. Notice how I arranged 2 perpendicular occluders along the walls for the maximum occlusion effect as all of these props in the field are not rendered from that player location.
</p>

<p>
	Another way to arrange occluders in this case would be diagonally across the L-shaped house (split into 2 or 3 occluders if needed to accommodate the nearby geometry; they can be floating without the need to seal an area).
</p>

<p>
	If you’re feeling brave enough (you should be after reaching this far in this article), you could also add an extra occluder along the wall of the house to the left of the L-shaped house to further enhance the view frustum occlusion effect and cover more props in the field.
</p>

<p>
	The most common places to add occluders in open maps include a displacement hill that separates parts of the map, a hedge that stands between a street and a field full of props, a floating wall between a house garden and the street, the walls of a large house, the walls of a tall building, a ceiling when it separates multiple levels…
</p>

<p>
	To read more about occluders placement and cost, please consult my article <a href="http://gamebanana.com/articles/65" rel="external">Practical guide on occluders placement</a>
</p>

<p>
	<span style="font-size:18px;"><strong>In conclusion</strong></span>
</p>

<p>
	The foundation of optimization in Source engine will be the same whether it is a traditional map or an open one. You will heavily rely on func_detail, nodraw, displacement, props… to achieve your goals but it is the way you use these tools in an open map that makes all the difference.
</p>

<p>
	One might get away with being a bit sloppy with optimization in a traditional map, however, make no mistake that an open map won’t be any forgiving if you decide to skip a beat in your optimization system.
</p>

<p>
	Talking about different open maps and formulating varying optimization systems for them could fill articles; I hope this article has shed enough light on the open maps optimization approach to let you easily design a system for your own map.
</p>
]]></description><guid isPermaLink="false">88</guid><pubDate>Mon, 24 Oct 2016 11:50:00 +0000</pubDate></item><item><title>Creative Airlocking: streaming in action games</title><link>https://www.mapcore.org/articles/development/creative-airlocking-streaming-in-action-games-r87/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_09/half-life_loading.png.e0ba1f0acbaaeabe381b239d8919aa98.png" /></p>

<p style="text-align:center;">
	<img alt="wolf3d_loading (1).png" class="ipsImage ipsImage_thumbnailed" data-fileid="11388" src="https://www.mapcore.org/uploads/monthly_2016_09/57e1742474de0_wolf3d_loading(1).png.ab7b8b20d1f59c03ebdf9fa6ae02b149.png" /></p>

<p style="text-align:center;">
	 
</p>

<p style="text-align:center;">
	<span style="font-size:26px;"><span style="font-family:Georgia, serif;">Creative Airlocking: streaming in action games</span></span>
</p>

<p>
	This article will discuss the loading and unloading of areas in linear single-player action titles, and look at contemporary examples of how the best games mask these so they appear seamless.
</p>

<p>
	<strong>Background</strong>
</p>

<p>
	When designing levels, Level Designers and Environment Artists must consider that their assets all have to fit within memory at once. While older action games like Wolfenstein 3-D and Doom would load the entire level with a Loading Screen at the start of each map, games like Half-Life started a trend of loading smaller sections gradually so they could squeeze in more detail and also provide a more seamless experience for players, making the game feel like one long adventure.
</p>

<p>
	At the time, going from one space to the next in Half-Life resulted in a seconds-long hitch with the word “Loading” on screen. There was no warning that it was going to happen, although Valve’s Level Designers oftenplaced these level transitions in smart places; usually down-time between combat and in a natural chokepoint. In later years, with faster computers, these load times decreased and are now almost seamless.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11377" href="https://www.mapcore.org/uploads/monthly_2016_09/half-life_loading.png.f25eb262f54be274c6c32afca59435f6.png" rel=""><img alt="half-life_loading.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11377" src="https://www.mapcore.org/uploads/monthly_2016_09/half-life_loading.thumb.png.3dbdf6b6262b2b5d5fc60096ce6abd60.png" /></a>
</p>

<p style="text-align:center;">
	<em>Half-Life displays a small loading message when transitioning between levels.</em>
</p>

<p>
	Currently, blockbuster series like Gears of War and Uncharted provide truly seamless transitions. After one long initial load for a new chapter with a completely new location (with new art) – sometimes masked behind a pre-rendered movie – “buffer” Streaming Sections are used, in which the previous area is unloaded, and the next loaded, on the fly. Since a lot of the globally-used entities are already loaded, and the environment is usually the same, assets can be shared, which can reduce these transition load times to much less than the initial level load.
</p>

<p>
	Essentially, these games take the smaller loading bar/screen of a more continuously-laid-out game like Half-Life, Portal 2 or Fallout 4 and make the player spend that time in the game world. If done creatively, players won’t even notice it. They might even enjoy the down-time if it’s well-paced, like The Last of Us where it can be spent on a thought-provoking puzzle or with the characters discussing something interesting.
</p>

<p>
	<strong>Overview</strong>
</p>

<p>
	Most action games budget out large areas, and then connect those with these smaller Streaming Sections.<br />
	 
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11378" href="https://www.mapcore.org/uploads/monthly_2016_09/streaming_overview.png.77b6242b2363e579eaa1c08fea64f38b.png" rel=""><img alt="streaming_overview.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11378" src="https://www.mapcore.org/uploads/monthly_2016_09/streaming_overview.thumb.png.30976758defeae03a02e0ca2e04099ae.png" /></a>
</p>

<p>
	Section (A) is a huge space with lots of combat, Section (C) is another. Players in Streaming Section (B) can’t see into both (A) and (C) at once. Section (B) is where Section (A) is dropped from memory and (C) starts to load in. Section (A) being dropped shouldn’t happen in view of the player, and unless the game supports backtracking it is wise to place a back-gate to stop players returning, for maximum efficiency. As soon as Section (A) has been dropped, Section (C) can start loading in. It must have been loaded by the time the player exits Section (B), so it is also wise to front-gate players in case they rush through.
</p>

<p>
	The best way to think of a Streaming Section is as an airlock; the “door” behind the player is locked, the next area is loaded, and the “door” ahead opens. Ideally, these sections aren’t literal airlocks but instead nicely-disguised puzzles or narrative spaces between the action.
</p>

<p>
	<strong>Back-gating, and Unloading</strong>
</p>

<p>
	Back-gating, as the term suggests, is when the player is prevented from returning to a previous area. The ‘gate’ behind them is closed, in a lot of cases locked. This doesn’t have to be a literal gate or door, though. A ceiling can collapse causing debris to block the path behind the player, the player can fall through the floor and not be able to climb back up, they can pass through a one-way portal and not get back.<br />
	Back-gating after entering the Streaming Section is usually done around a corner where the player can’t see Section (A) being unloaded.
</p>

<p>
	One-way animations are the main manifestation of these in modern action titles. Think of how many doorways your player character has held open, only to have it collapse behind them. The level section behind that door is now being unloaded, to make space in memory for the next large section. In co-op games, these animated interactions are a great way to bring players back together so that Player 2 isn’t left behind, only to fall through the world, in the section that is just about to be unloaded!
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11379" href="https://www.mapcore.org/uploads/monthly_2016_09/tlou_backgate.png.a29d0ff7c2a3df1cdc9df1bfa8c08d24.png" rel=""><img alt="tlou_backgate.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11379" src="https://www.mapcore.org/uploads/monthly_2016_09/tlou_backgate.thumb.png.67d0f315c33c056d322ee9cdc040d342.png" /></a>
</p>

<p style="text-align:center;">
	<em>The Last of Us has a huge variety of bespoke, painstakingly-animated back-gates.</em>
</p>

<p>
	A cut-scene can also serve as a good back-gate, as long as it makes sense in the context and/or story so as to not feel tacked on, and is within development budget!
</p>

<p>
	One-way drop-downs are also a great and less flow-breaking back-gate. If the L-shaped area just before the drop-down can be kept in memory, as soon as the player drops down a ledge they can never climb back up, the previous area can be unloaded. The only down-sides to this softer back-gate are that they can feel contrived unless the game’s art and world can support it (terrain and collapsed structures are great for this), and that co-op players may have to be teleported to the dropping player so that they don’t fall through the world when Section (A) is unloaded.
</p>

<p>
	<strong>Slowing the player down, and Loading</strong>
</p>

<p>
	As Streaming Sections are usually connectors between two larger areas, they naturally make for slower-paced breaks in the action. Since Section (C) is being loaded in, slowing the player down in (B) – either literally as with Gears of War’s infamous forced walks or cerebrally with light puzzle gameplay – can be more efficient and interesting than just making a large footprint which has to cater for a player, say, sprinting for 30 seconds.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11380" href="https://www.mapcore.org/uploads/monthly_2016_09/tlou_puzzle.png.7acd4c8d724e2bb7d106c261e82a9e3d.png" rel=""><img alt="tlou_puzzle.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11380" src="https://www.mapcore.org/uploads/monthly_2016_09/tlou_puzzle.thumb.png.bca607518756235dd395d04181ef4907.png" /></a>
</p>

<p style="text-align:center;">
	<em>Even when rushed, this plank puzzle in The Last of Us takes time and offers a nice respite.</em>
</p>

<p>
	“Popcorn” encounters with just 1-2 enemies can be a good trick to allow loading to finish and slow players down and prevent them from simply rushing through a short Streaming Section. They also keep players on their toes and vary the flow from, for example, combat to puzzle to combat.
</p>

<p>
	Interactive Objects such as the slow-turning valves in Killzone 2 and the Gears of War games can also buy some loading time, as can environmental obstacles such as jumps or mantles or animations where the player’s buddy looks around for, and then finds, a ladder to kick down for the player to climb (also a good front-gate).
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11381" href="https://www.mapcore.org/uploads/monthly_2016_09/gears_valve.png.bab237ef9b666431ae1852f538ea3563.png" rel=""><img alt="gears_valve.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11381" src="https://www.mapcore.org/uploads/monthly_2016_09/gears_valve.thumb.png.28455730abab23c830656e835a154bed.png" /></a>
</p>

<p style="text-align:center;">
	<em>Interactions like the valve in Gears of War slows players down and can also act as a front-gate.</em>
</p>

<p>
	These approaches can also be combined in ways that fit the feel of the game, such as a Grub locking the player in a room and flooding it with frightening enemies in the first Gears of War game.
</p>

<p>
	Batman Arkham Asylum does a great job with additional ‘softer’ methods of slowing players down by playing a captivating well-acted taunt on a monitor from The Joker, or by encouraging exploration with The Riddler’s location-specific riddles or any number of collectibles.
</p>

<p>
	<strong>Front-gating, and Loaded</strong>
</p>

<p>
	As with Back-gates, front-gates are quite self-explanatory – the exit to the area the player is currently in is locked until certain conditions, such as all the enemies in the room being dead or the next area having loaded in, are met. Again, this doesn’t have to be a literal gate or door, just an obstacle in the world that can change its state from closed and locked to open.
</p>

<p>
	A lot of games from the Call of Duty series to Killzone 2 to The Last of Us extensively use friendly characters to unblock a front-gate; chain-link fences are cut through, doors are kicked open, wooden beams are lifted. New waves of enemies can also open a front-gate for the player and offer the bonus in that noisy, gun-firing AI attract players, like carrots on a stick, to the newly-opened exit. Many action games have excellent examples of enemies blow-torching open a door to get in or a huge monster bursting in through a wall; not only are these cool enemy entrances, but oftentimes their new unorthodox entrance-ways become cool exits, sign-posted by their un-gating event.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11382" href="https://www.mapcore.org/uploads/monthly_2016_09/halo_frontgate.png.76911c34361a1c1e090725877a09aff5.png" rel=""><img alt="halo_frontgate.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11382" src="https://www.mapcore.org/uploads/monthly_2016_09/halo_frontgate.thumb.png.117df0fc2c543d6d4375ee393be296a5.png" /></a>
</p>

<p style="text-align:center;">
	<em>Previously-locked doors in Halo often flash and make noise when opened by new enemies.</em>
</p>

<p>
	Not all games front-gate the exits of their Streaming Sections because the time needed to load a Section (C) can usually be accurately gauged, and the acceptable fallback is a slight hitch. However, front-gates do provide that extra failsafe to ensure the next area is loaded before leaving a Streaming Section – in this case, a player with a scratched disk or corrupted file could see out of the world, at best, or get stuck or fall out of the world, at worst (though it could be argued someone with a scratch or corrupted files might see worse issues regardless).
</p>

<p>
	The biggest issue here is that front-gates need to fit the game or the level art – neat doorways or bottlenecks aren’t always possible. The other big issue is repetition; if a specific door interaction animation is always used, the game needs to provide a lot of variety in that animation!
</p>

<p>
	One trick that can be used to alleviate repetition, however, is if the front-gate is out of sight near the end of the Streaming Section (A). A check can be done to see if Section (C) has loaded, and if it has, the door can potentially be pre-opened saving the player another potentially-repetitive interaction but also holding as a true front-gate if a player does rush through.
</p>

<p>
	Batman Arkham Asylum had an interesting front-gate in the penitentiary sections; a security camera scanned Batman once before opening the door. Given the backtracking-heavy structure of the game, when racing through at full pelt, if the next area had not finished loading, the camera would loop the camera’s scanning animation. This is a great compromise because the camera scan completely fits the fiction of the world, and an extra scan animation would probably go unnoticed by many players.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="11383" href="https://www.mapcore.org/uploads/monthly_2016_09/arkham_asylum_doorscan.png.7a80950a805bcf0730ec01c3af9319e5.png" rel=""><img alt="arkham_asylum_doorscan.png" class="ipsImage ipsImage_thumbnailed" data-fileid="11383" src="https://www.mapcore.org/uploads/monthly_2016_09/arkham_asylum_doorscan.thumb.png.bf00e5b115e7f49cc79c69443e16f0d4.png" /></a>
</p>

<p style="text-align:center;">
	<em>Batman Arkham Asylum’s Penitentiary’s doors only open when loading is complete.</em>
</p>

<p>
	<strong>Conclusion</strong>
</p>

<p>
	In most linear action games, keeping the player immersed in the world is preferable to seeing a loading screen. If developers can create interesting activities, take advantage of slower pacing through narrative, or just make smart use of assets and an interesting space to traverse, Streaming Sections can be part of the world and not feel like generic winding corridors that stand out even to uninitiated players as padding.
</p>

<p>
	Copyright © Martin 'Alf-Life' Badowsky 2016
</p>
]]></description><guid isPermaLink="false">87</guid><pubDate>Tue, 20 Sep 2016 15:58:00 +0000</pubDate></item><item><title>Creating a Single-Player Combat Space</title><link>https://www.mapcore.org/articles/development/creating-a-single-player-combat-space-r80/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_05/CombatSpace_MapCore_Thumbnail.jpg.6656166f832f0e9731c79ebad2720746.jpg" /></p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9750" href="https://www.mapcore.org/uploads/monthly_2016_05/01-KZM_Panorama.jpg.a6a70b961cfbec378100df1d29251966.jpg" rel=""><img alt="01-KZM_Panorama.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9750" src="https://www.mapcore.org/uploads/monthly_2016_05/01-KZM_Panorama.thumb.jpg.c4c11d3d851e7023a8beb9abb8b7bf33.jpg" /></a>
</p>

<p>
	<em>This article is the first installment in a three-part article that looks at the considerations for creating a single-player combat space, using a walkthrough of the first battle in ‘Killzone Mercenary’ as a working example.</em>
</p>

<p style="text-align:center;">
	<span style="font-size:22px;"><span style="font-family:georgia, serif;">Creating a Single-Player Combat Space Part 1</span></span>
</p>

<p>
	This article will explain how to create a combat space for a single-player campaign, using my work on ‘Killzone Mercenary’ (hereon referred to as KZM) as an example.  There is already a fair amount of literature on the different methods you can use for creating a combat encounter, but I felt that none of it really discussed how to arrange the layout in closer detail, nor did they discuss where the different elements were appropriate.  In my early work I tried to jam in all the concepts for encounter design without fully understanding how they affected the player’s experience.  As strange as it sounds, I discovered there were times when it was better to restrict the number of elements being used to provide a much more focused and coherent experience; sometimes less is more. I will take you through an example to explain what I mean and how this can be the case.
</p>

<p>
	I will use the very first combat arena in KZM as it’s a small encounter where I can explain in depth what goes into even the most basic combat space. This encounter is a fight against assault troopers who are trying to stop the player from escaping the building and reaching the objective building; the ‘Halls of Justice’. I designed bigger encounters that featured many flanking opportunities and complex circular navigability but focusing on a simple encounter allows me to explain certain techniques in detail and where I purposely removed some elements to balance the difficulty and give the player different experiences.
</p>

<p>
	First of all I will explain two important aspects that must be considered for combat creation; AI metrics and weapon choice. I will then take you through a step by step walkthrough of this first encounter explaining in detail the reasons how it was designed and constructed for optimum player experience.
</p>

<p>
	<strong>Metrics</strong>
</p>

<p>
	The design mantra ‘form follows function’ should be the basis when creating an arena layout; that is that the arrangement of geometry should derive from its purpose. The arrangement should support the function not only of the style of experience you want to create (is it a tight corridor section with close quarters combat or an open space with multiple routes and options, for example) but it should also support the main element that makes up the combat encounter; the enemy AI.
</p>

<p>
	When considering the layout for the AI or non-player characters (NPCs) that will populate your environment you have to consider their metrics. These are the numerical values for how the NPCs move around and use the environment and the differences between various NPC enemy classes. This isn’t something people tend to talk about and so it can be easily forgotten or missed, yet it directly affects how your enemies will move and react.
</p>

<p>
	For example, in KZM the standard enemy NPC class were the Assault Troopers. These soldiers could be given patrols and animations to perform whilst they were in an ‘unalerted’ state, just like every other enemy class.  However, when they were in an alerted state their behavior changed so that they used cover points to move around the combat space. The maximum distance between cover points that an assault trooper would move was 10 meters. This meant that any cover point that was further away would not be considered, so we needed to make sure when creating combat spaces which used assault troopers that there were enough cover islands so they could move around. If there weren’t, the assault troopers would just stay in the same spot and could risk looking less intelligent.
</p>

<p>
	The assault troopers also tried to maintain a distance of 15m whilst they were trading shots with the player. The behavior was that if the player got closer than this range, but not so close that they were in melee combat distance (5m), the assault troopers would retreat to this mid-range distance of 15m. They would also never choose a cover position that was closer than 15m to the player, so when we created combat spaces we had to make sure that there was enough variety of cover positions in the &gt;15m range.
</p>

<p>
	For the production of KZM we used the ‘Killzone 3’ engine and modified it for the PS Vita. In ‘Killzone 3’ the assault troopers picked their cover within a range that was further than 25m from the player, but we discovered that this was too great a distance for the enemy to still be clear and readable on the PS Vita screen. In our modified version of the KZ engine we had to reduce the combat distance to 15m, which meant that the original combat spaces we had created using the ‘Killzone 3’ metrics also needed adjusting in order for the NPCs to still work. It is an unfortunate truth that the game metrics, be it for the AI or otherwise, can change within a game’s development, which means that your combat arenas will also need to be adjusted.
</p>

<p>
	<strong>Weapon Consideration</strong>
</p>

<p>
	The metrics for both the player and enemy weapons were also considered. As this is the start of the game we can be more certain that the player is using the default starting weapons, at least on their first playthrough, before they have earned enough credits to buy a new arsenal. Therefore, the combat distances of enemy placement were considered to be comfortably within range for the player’s assault rifle.
</p>

<p>
	The enemy assault trooper archetype used assault rifles that were balanced to have a short range of &lt;10m, and a long range of &gt;20m. This meant that their behavior was to try and keep the player within these ranges and would thus move around the environment to try and maintain this. This was important to consider when building the environment so we could determine the amount of movement the troopers were likely to perform. This is important for balancing difficulty as a moving target is harder to hit.
</p>

<p>
	<strong>Foreshadowing</strong>
</p>

<p>
	As this was the opening of the game, we wanted to make it compelling in order to grasp and hold the player’s attention; we wanted to start with a bang. If the first lot of encounters in the game only included assault troopers with nothing else to differentiate them it may not have been so compelling. Therefore, we decided to include a significant Killzone enemy vehicle; the Helghast Dropship.  Of course it would have been far too difficult to fight a Dropship at this point in the game, so instead it was used as an impressive introduction of enemies into the arena using the rappel ropes from the ship itself.
</p>

<p>
	Using the Dropship at the end of the encounter, it was important to foreshadow its existence prior to its introduction. The level’s opening cut scene introduces the buddy character, Ivanov, and the narrative that he and the player are infiltrating the building whilst trying to avoid the searching eye of the Dropship.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9751" href="https://www.mapcore.org/uploads/monthly_2016_05/02-Dropship.jpg.16985d3dccfe4e3d6ec3cac4d10e69d1.jpg" rel=""><img alt="02-Dropship.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9751" src="https://www.mapcore.org/uploads/monthly_2016_05/02-Dropship.thumb.jpg.34cc0e55cc0c202fdff2d2a6cf3a6882.jpg" /></a>
</p>

<p style="text-align:center;">
	<em>The foreshadowing of the Helghast Dropship</em>
</p>

<p>
	Once the player has control they make their way up a flight of stairs learning how the movement works and feels whilst being in a safe environment. Once at the top of the stairs they enter through a door where they are introduced to the new melee attack which utilizes the touch screen on the PS Vita.
</p>

<p>
	<strong>First Wave</strong>
</p>

<p>
	After a successful melee attack the player enters through the door to the first combat area. The composition shows the exit of the arena in the top left third of the frame.  Central to the player’s view is where the first pair of enemies enter from, ensuring that their arrival is not missed.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9752" href="https://www.mapcore.org/uploads/monthly_2016_05/03-OpeningComposition_Grid.jpg.84d258367d71a240dc494879c2388306.jpg" rel=""><img alt="03-OpeningComposition_Grid.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9752" src="https://www.mapcore.org/uploads/monthly_2016_05/03-OpeningComposition_Grid.thumb.jpg.464e07dd18b3c6765bb58e3886a8dcd6.jpg" /></a>
</p>

<p style="text-align:center;">
	<em>The exit to the arena is in the top left section of the opening composition</em>
</p>

<p>
	Starting on the level above, the two assault troopers vault down into the gameplay space, to give their presence a more dramatic opening than merely walking in through a door. Their animation and movement also ensures that they catch the player’s eye if they aren’t looking in the desired direction. These vault down animations were 4m high, the standard height for a room in KZM, which meant this was a metric we had for the balcony and floor above.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9753" href="https://www.mapcore.org/uploads/monthly_2016_05/04-OpeningEnemyArrival_Arrows.jpg.6e866854bce90243d2ce9cac84110d12.jpg" rel=""><img alt="04-OpeningEnemyArrival_Arrows.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9753" src="https://www.mapcore.org/uploads/monthly_2016_05/04-OpeningEnemyArrival_Arrows.thumb.jpg.7c59489a0e960a91a4de8110170843cf.jpg" /></a>
</p>

<p style="text-align:center;">
	<em>Two assault troopers drop into the environment from the level above</em>
</p>

<p>
	Once the assault troopers had landed in the arena they became a lot less mobile than their standard behavior so that they were easier to shoot because, as previously mentioned, a moving target is harder to hit.  As this is the very first section of combat the player encounters in the game it was important to ensure that it was easy to get to grips with.
</p>

<p>
	None of the enemies were waypoint/navmesh restricted to certain areas in order to limit their movement as this could potentially lead to NPCs not behaving correctly under differing circumstances. In fact, there were only a very select few instances where we waypoint/navmesh restricted any characters in the whole of KZM; we instead crafted the environments to support the behavior we wanted from the NPCs. This was important for consistency; if you restrict areas and zones for the AI then they won’t behave consistently with what the player has learnt. This would lead to the player not being able to predict their behavior and therefore won’t be able to plan how to attack effectively.
</p>

<p>
	Here, in this first section, the two assault troopers took cover at two upright pillars of high cover and an overturned sofa of low cover. They didn’t tend to venture further into the environment unless the player had for some reason retreated to the edges of the level. The reason they wouldn’t move and advance on, or flank the player was because the other cover options in front of them were within 15m of where the player was likely to be stood. This caused them to be more static and thus easier targets to allow the player to get to grips with the shooting mechanics.
</p>

<p>
	I also chose to mainly use higher cover here so that when the enemies lean out of cover their shooting positions allowed the player to shoot their full body, which was a bigger target than when they poked their heads over the top of the low cover positions.
</p>

<p>
	Low cover positions are great for seeing the enemies move around and change their positions, as the tops of their helmets are visible over the top of the cover. Enemies are much harder to track when they use high cover as it breaks line of sight to them, so this is usually the harder option. However, as they have restricted cover positions and weren’t moving around in this specific situation, it was the best option to use for less difficulty.
</p>

<p>
	<strong>First Combat Front</strong>
</p>

<p>
	A ‘front’ is the perceived line or boundary that faces the enemy and is the nearest position which combat should be engaged from. The ‘fronts’ used here create boundaries between the two sides; a front for the player and the buddy character and an opposing front for the two assault troopers. This was the simplest setup to start the player off with and it only required two sets of cover points as I didn’t want to encourage the enemy to flank the player at this stage. This section of the encounter only needed these few pieces of cover (in the image below) in order to work and the other pieces of cover were actually for further waves of combat.
</p>

<p style="text-align:center;">
	<img alt="05-Front_1.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9754" src="https://www.mapcore.org/uploads/monthly_2016_05/05-Front_1.jpg.dc3e404b6974b89239a0be4839083b63.jpg" /></p>

<p style="text-align:center;">
	<em>The two fronts and the cover setups providing it</em>
</p>

<p>
	It’s also worth noting that the cover object which the buddy character crouches behind is positioned further forward than the arrangement of cover that the player is drawn to. This is so that the buddy character is in the player’s view so they always see the buddy’s actions and involvement. It wouldn’t be optimal to have a buddy NPC that the player rarely saw. The buddy is also kept near to the player in order to maintain a close relationship and the feeling of being a team. Empathy is directly related to proximity between characters, so if the buddy was further away from the player they would experience a much more detached feeling towards them.
</p>

<p>
	Continue to <a href="https://www.mapcore.org/pages/creating-a-single-player-combat-space-part-2-r4/" rel="">part 2</a> or go back to the <a href="https://www.mapcore.org/" rel="">homepage</a>. 
</p>

<p>
	<strong>Index:</strong>
</p>

<p>
	<a href="https://www.mapcore.org/articles/development/creating-a-single-player-combat-space-part-1-r80/" rel="">Creating a Single-Player Combat Space Part 1</a><br /><a href="https://www.mapcore.org/pages/creating-a-single-player-combat-space-part-2-r4/" rel="">Creating a Single-Player Combat Space Part 2</a><br /><a href="https://www.mapcore.org/pages/creating-a-single-player-combat-space-part-3-r5/" rel="">Creating a Single-Player Combat Space Part 3</a>
</p>

<p>
	<em>Copyright ©Peter Ellis 2016. Killzone™ Mercenary is the property of Sony Computer Entertainment © 2013. Killzone is a trademark of Sony Entertainment Europe. Killzone: Mercenary is a trademark of Sony Computer Entertainment America LLC.</em>
</p>
]]></description><guid isPermaLink="false">80</guid><pubDate>Mon, 09 May 2016 07:31:00 +0000</pubDate></item><item><title>Source FPS Cost of Cheap and Expensive Assets</title><link>https://www.mapcore.org/articles/development/source-fps-cost-of-cheap-and-expensive-assets-r76/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_03/cheapexpensive_thumb.jpg.e2e1545749b3ce2d60aaf588bae5458f.jpg" /></p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9081" href="https://www.mapcore.org/uploads/monthly_2016_03/cheapexpensive_web.jpg.0aa34dc7557cb1bb453042d3da0d85c7.jpg" rel="external"><img alt="cheapexpensive_web.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9081" src="https://www.mapcore.org/uploads/monthly_2016_03/cheapexpensive_web.thumb.jpg.9a51e600b1ac8678c8bc53f1fcabd2fe.jpg" /></a>
</p>

<p>
	<span style="font-family:georgia, serif;"><span style="font-size:22px;"><strong>A new question?</strong></span></span>
</p>

<p>
	After successfully solving the eternal mystery of func_detail vs. displacement in my last article (<a href="https://www.mapcore.org/articles/development/displacement-vs-func_detail-a-comparative-fps-study-r73" rel="">here</a>), I was contacted by the High Council of Source Engine Optimization. Apparently, there seems to be another enigma to be uncovered and a major question to be answered.
</p>

<p>
	What is the fps cost of cheap and expensive assets in Source engine? Is there a significant difference between the two in terms of frame rate? (that’s 2 questions but I’ll let this one slide)
</p>

<p>
	<span style="font-family:georgia, serif;"><span style="font-size:22px;"><strong>The study</strong></span></span>
</p>

<p>
	As with the last article, this one is also going to be a short but sweet article; fewer words, more numbers and screenshots. The systematic approach is also going to be very similar: 2 similar test maps where one contains expensive assets while the other has cheap versions of these assets. The assets will be the same and will be located in the same locations in both test maps.
</p>

<p>
	The recent assets added with the new de_nuke update in CSGO will be the perfect candidates for our study as Valve made most of these in cheap and expensive versions. For props, the expensive version is high-poly models while the cheap one is low-poly. For textures, the expensive version gets a normal map (up to 2), specular map, advanced reflections, detail map, and Phong shading in some cases; the cheap version is basically the diffuse map with the occasional detail map.
</p>

<p>
	I will record the localized fps in both versions and compare, then draw conclusions that will hopefully answer the High Council’s question(s).
</p>

<p>
	<span style="font-family:georgia, serif;"><span style="font-size:22px;"><strong>The testbeds</strong></span></span>
</p>

<p>
	The first map to test is the one made of cheap assets. It’s basically a simple map consisting of 4 walls and a floor on which are spread several props and textured blocks at predetermined locations. Textures are mostly concrete while props contain crates, cars, pipes, wires, doors, and vents.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9084" href="https://www.mapcore.org/uploads/monthly_2016_03/test_cheap.jpg.c8ac0bb6cf96183921215ce41ae6e6ec.jpg" rel="external"><img alt="test_cheap.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9084" src="https://www.mapcore.org/uploads/monthly_2016_03/test_cheap.thumb.jpg.1fac8d70aa9fa311fa7b33d770b46aed.jpg" /></a>
</p>

<p>
	The fps recorded is 330 fps. The expensive version is exactly the same but with props replaced with their high poly versions and textures swapped with their expensive versions.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9086" href="https://www.mapcore.org/uploads/monthly_2016_03/test_expensive.jpg.5e12fed8c2e8675637e08c6fffddbae0.jpg" rel="external"><img alt="test_expensive.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9086" src="https://www.mapcore.org/uploads/monthly_2016_03/test_expensive.thumb.jpg.b0ffc1f5f9ee39ba0b88a6252c825ce8.jpg" /></a>
</p>

<p>
	The fps is now 286 fps; interesting. All right, let me call the High Council to relay the news.
</p>

<p>
	Hold your horses right there. We are men of Science and you know that…yes, yes, I know, one map is not enough to draw conclusions.
</p>

<p>
	I’m going to take this map and quadruple it, in area and in content, and test again (Nobel prize here I come). The new map will have 4 times the amount of props and textured brushes (the same ones of the initial map cloned into the new areas) as well as having its total area increased fourfold. We start with the cheap version that we will refer to as test map (4x).
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9085" href="https://www.mapcore.org/uploads/monthly_2016_03/test_cheap4.jpg.02596d69115c50860af93cc9f4722dfd.jpg" rel="external"><img alt="test_cheap4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9085" src="https://www.mapcore.org/uploads/monthly_2016_03/test_cheap4.thumb.jpg.b699211874f7b7dd8e7690c2e853a4a4.jpg" /></a>
</p>

<p>
	The fps decreased to 279 (from the 330 in the simple cheap map) due to the extra content that the engine has to render. Our main point of concern would still be to compare this version against the expensive one.<br />
	You know the drill by now; we will also create the (4x) expensive version.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9087" href="https://www.mapcore.org/uploads/monthly_2016_03/test_expensive4.jpg.308751d82dd3cbd4ee5f9e74fc4af77c.jpg" rel="external"><img alt="test_expensive4.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9087" src="https://www.mapcore.org/uploads/monthly_2016_03/test_expensive4.thumb.jpg.b2ec7ab2e6b125dd0aca34890d829ec0.jpg" /></a>
</p>

<p>
	The fps is 229. The decrease in (4x) version is more or less in line with the one in the simple version. Let’s recap in a table for easier viewing.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9083" href="https://www.mapcore.org/uploads/monthly_2016_03/test_assets_fps.jpg.845153ec149482d103d3c5febf9d123c.jpg" rel="external"><img alt="test_assets_fps.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9083" src="https://www.mapcore.org/uploads/monthly_2016_03/test_assets_fps.thumb.jpg.d99eaaa68dd557da1d0f9243b8274827.jpg" /></a>
</p>

<p>
	As you can see, the fps dropped 44 fps in the simple version and 50 fps in the 4x version, between the cheap and expensive maps respectively.
</p>

<p>
	We can draw 2 conclusions from the above table:
</p>

<p>
	There is a significant drop between the cheap and expensive version (44/50fps), and there is also a substantial drop within the same version (51/57fps) when you add much more content that is all visible in the PVS.
</p>

<p>
	These results can shed some light on the latest update of de_nuke where the overall fps is lower than the rest of the stock maps in CSGO. The high amount of props/details that can be seen/rendered from one location coupled with the expensive assets in the playable area contribute to further decrease in the overall fps in that map (in addition to the open skybox/layout). I have tackled a revised optimization system for de_nuke in a topic of mine last month that can be read here (<a href="https://www.mapcore.org/topic/19909-de_nuke-a-revised-optimization-system/" rel="">https://www.mapcore.org/topic/19909-de_nuke-a-revised-optimization-system/</a>)
</p>

<p>
	As a bonus, I’ll throw in the compile times of the above maps so you can witness the effect of cheap vs. expensive, and the additional content in (4x) versions, on the compile time, especially on vrad since it will mostly be affected by the extra faces in the high poly models and the additional vmt switches in the expensive materials.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="9082" href="https://www.mapcore.org/uploads/monthly_2016_03/test_assets_compile.jpg.96df59a8b67459d862a6e920d2e0bdb4.jpg" rel="external"><img alt="test_assets_compile.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="9082" src="https://www.mapcore.org/uploads/monthly_2016_03/test_assets_compile.thumb.jpg.1dcce8ad1390b190e890257ad1641e5d.jpg" /></a>
</p>

<p>
	You can clearly see that vrad times increased considerably between the cheap and the expensive versions, as well as within the same version when we quadrupled the area/content.
</p>

<p>
	Now if you’ll excuse me, I still have a phone call to make; the grand council woman cannot wait any longer.
</p>

<p>
	<span style="font-family:georgia, serif;"><span style="font-size:22px;"><strong>The final cost</strong></span></span>
</p>

<p>
	Expensive assets bring visual eye candy to the map in hand which is a necessity in today’s ever-growing and continuously pushed graphics boundaries. Relying on low poly models and cheap textures won’t fare well on the visual fidelity front. However, expensive assets come at a cost of taxing the rendering engine and decreasing the overall fps in the map.
</p>

<p>
	These expensive assets are a requisite if you want your map to shine (pun intended) but one has to be careful not to overuse them. Use them wisely in the playable area and resort to cheap versions when decorating the non-playable areas of the map or any place that the player cannot see up close to discern the difference.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">76</guid><pubDate>Mon, 11 Apr 2016 20:03:05 +0000</pubDate></item><item><title>Displacement Vs. Func_detail - A comparative fps study</title><link>https://www.mapcore.org/articles/development/displacement-vs-func_detail-a-comparative-fps-study-r73/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_01/detaildisp_thumb.jpg.71b2e0c5d321f9ff186b0f8fdc0424ff.jpg" /></p>

<p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/detaildisp_web.jpg.0259997eca7b5ef28a5c7afa472863aa.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8178" alt="detaildisp_web.thumb.jpg.5416c2f8728c7e6" src="https://www.mapcore.org/uploads/monthly_2016_01/detaildisp_web.thumb.jpg.5416c2f8728c7e69e8f62824d9d80621.jpg"></a></p><h1><span style="font-size:22px;"><span style="font-family:georgia, serif;">What is the question?</span></span></h1><p>Ever since the dawn of humanity, this question was the center of a colossal debate. Greek and Roman philosophers tried to solve it to no avail. Alchemists in the Middle Ages gave it a go and failed miserably. Even Industrial Age scientists touched on the subject with no big breakthrough.</p><p>Luckily for everyone, I am here today to answer this question and put an end to a centuries-long argument: What is better in terms of fps, func_detail or displacement, in the context of the Source engine? If you were expecting an existential question, I am deeply sorry to disappoint you but hey, life is full of disappointment.</p><h1><span style="font-size:22px;"><span style="font-family:georgia, serif;">The study</span></span></h1><p>This is going to be a short but sweet article; fewer words, more numbers and screenshots. The study is pretty straightforward and systematic. To make things fair and square, I will create 2 exactly identical test maps: In one, everything will be turned to func_detail while the other will have everything switched to displacements. I will then proceed to record the localized fps in these maps from a preset location and compare. Pretty simple, isn’t it? Well, it should be as the whole purpose of this study is to compare func_detail vs. displacement in absolute terms while keeping all other parameters constant.</p><h1><span style="font-size:22px;"><span style="font-family:georgia, serif;">The cases</span></span></h1><p>The first map to test is the one made of displacements. Here is the screenshot showcasing the fps.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test2_disp.jpg.af2508615a4503d17f966bb31d3ec2eb.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8188" alt="test2_disp.thumb.jpg.291d5a7cff52959bcaf" src="https://www.mapcore.org/uploads/monthly_2016_01/test2_disp.thumb.jpg.291d5a7cff52959bcaff38c1cbb34a1a.jpg"></a></p><p>The map itself is very simple consisting of 7 identical houses placed at predetermined locations and surrounded by 4 walls. The houses are detailed enough to put some slight pressure on the rendering engine. For the skeptics among you, here is a wireframe in-game shot to show that everything is made of displacements.</p><p style="text-align:center;"><span style="font-size:12pt;line-height:115%;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test2_disp_wireframe.jpg.f067a4e287d6f1532ebb00617f1d116b.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8189" alt="test2_disp_wireframe.thumb.jpg.0a964abea" src="https://www.mapcore.org/uploads/monthly_2016_01/test2_disp_wireframe.thumb.jpg.0a964abea5230c5e4f8f72377603ce13.jpg"></a></span></p><p>To refresh your memories, in Source engine wireframe mode, green is displacements, pink is brushes (world, func_detail, brush entity, etc…), blue is props, and yellow is decals/overlays. The recorded fps in this map is 289. We now move to the second map, the func_detail version to check how the frame rate is faring. Here is the awaited screenshot.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test2_detail.jpg.0eb6bf48717622cf047c80c57ea9bb70.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8186" alt="test2_detail.thumb.jpg.2d8e9872906c10bf3" src="https://www.mapcore.org/uploads/monthly_2016_01/test2_detail.thumb.jpg.2d8e9872906c10bf3e3dfa036877c6b9.jpg"></a></p><p>Surprise, surprise. The fps is 330, much higher than the displacement version. Here’s the wireframe shot to put your mind at ease.</p><p style="text-align:center;"><span style="font-size:12pt;line-height:115%;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test2_detail_wireframe.jpg.6f6f24ec869140dee99b34d056a5580d.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8187" alt="test2_detail_wireframe.thumb.jpg.4c8452f" src="https://www.mapcore.org/uploads/monthly_2016_01/test2_detail_wireframe.thumb.jpg.4c8452f72d77556b34afddbbce422e73.jpg"></a></span></p><p>Honestly, I was thinking the figures would be more on par as the engine handles both details and displacements pretty well, but in the end, Source is about BSP so I guess brushes would get a slightly preferential treatment over polygon meshes (conspiracy theory ensues).</p><p>The question that forces itself now is: Should we rely solely on func_detail in our maps? Of course not. Both func_detail and displacement have their advantages and inconveniences and leaning exclusively on one will inevitably lead you to a dead end. The best thing to do is get the best of both worlds by using them together.</p><p>In our little test map, how about we mix things up in a third version: let us make the house walls out of displacements while having the doors, windows, frames, and roofs made of func_detail. Incoming screenshot, brace yourselves.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test2_mix.jpg.b77a4b3c2f1b0cfdf430d5c1a05cad92.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8190" alt="test2_mix.thumb.jpg.7c63b3e2497518c2bf5b" src="https://www.mapcore.org/uploads/monthly_2016_01/test2_mix.thumb.jpg.7c63b3e2497518c2bf5bf02a88f3ef03.jpg"></a></p><p>Much better, isn’t it? We have now 311 fps, a very nice middle ground between the 330 fps of func_detail and the not-so-bad 289 fps of displacements. The mandatory wireframe shot follows.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test2_mix_wireframe.jpg.8d049a108dc110fb036505862e51155c.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8191" alt="test2_mix_wireframe.thumb.jpg.a5370572c6" src="https://www.mapcore.org/uploads/monthly_2016_01/test2_mix_wireframe.thumb.jpg.a5370572c6447701070f098183b7af78.jpg"></a></p><p>So, what can we learn from all this? Well, apart from the obvious places where displacements are mandatory for the organic mesh sculpting (rock formations, cliffs, bumpy/twisted roads…), it is a good idea to spread some more displacements around your map to alleviate the total brush-count that you will inevitably hit the maximum in a highly detailed map. Your fps will remain high and you will enjoy the margin to keep adding structures to your map without fear of reaching the maximum allowed total brushes (substituting brushes with models/props is another viable solution that is not in the scope of this article).</p><p>I’m a man of science and I know that one example is not enough to draw conclusions. That’s fine, I have a second test map to investigate what we established before. The concept of having 2 identical maps is still the same, however, this time, we will spice things up by adding some static/physics props and some decals here and there. We will start with the displacement version.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test_disp_A.jpg.bc21d00dd2b3eea403992b77b065f6f7.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8183" alt="test_disp_A.thumb.jpg.c8d80ad02fc01f641a" src="https://www.mapcore.org/uploads/monthly_2016_01/test_disp_A.thumb.jpg.c8d80ad02fc01f641a4568a864078271.jpg"></a></p><p>230 fps, not too shabby. Let’s check another angle.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test_disp_B.jpg.0e049fc8852b9100c1f855cf57e6934c.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8184" alt="test_disp_B.thumb.jpg.57bf635ca0ff8ce87e" src="https://www.mapcore.org/uploads/monthly_2016_01/test_disp_B.thumb.jpg.57bf635ca0ff8ce87e9dd9cb3391c73e.jpg"></a></p><p>220 fps, more or less, on the same level as the previous number. Now for the wireframe shot.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test_disp_wireframe.jpg.941fbcdc6ec3443877042042c8c0f3e4.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8185" alt="test_disp_wireframe.thumb.jpg.ed4a1540cd" src="https://www.mapcore.org/uploads/monthly_2016_01/test_disp_wireframe.thumb.jpg.ed4a1540cd8bf46532a457b9ce7420ca.jpg"></a></p><p>The tree cards in the background are func_brush in both maps (the detail and displacement versions), so it’s a level playing field in this case.</p><p>Now for the moment of truth you all have been waiting for: will the detail version have better fps to support my earlier findings or will I be publicly embarrassing myself? A screenshot to the rescue.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test_detail_A.jpg.bec54b143d5df438ac4776a101dccf76.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8180" alt="test_detail_A.thumb.jpg.e6eb7ceb76e0c3a1" src="https://www.mapcore.org/uploads/monthly_2016_01/test_detail_A.thumb.jpg.e6eb7ceb76e0c3a1a06868dc83859dc3.jpg"></a></p><p>I knew I was right, never breaking a sweat (apart from the nervous cold sweat I just wiped off my forehead). 255 fps for the first location A. Let’s check the other angle or location B.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test_detail_B.jpg.1aee32c9bc99d7c237ab10eda696a3c8.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8181" alt="test_detail_B.thumb.jpg.37ec08c4ea21f8eb" src="https://www.mapcore.org/uploads/monthly_2016_01/test_detail_B.thumb.jpg.37ec08c4ea21f8ebd4bddd47cdca74ae.jpg"></a></p><p>250 fps. <em>Bam, sweet victory</em>…sorry I got carried away a bit. <em>Ahem</em>…Let’s get back to being scientific, shall we. Here’s the wireframe proof.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_01/test_detail_wireframe.jpg.c6048bef1fa17e1ab815746218e92cfe.jpg"><img class="ipsImage ipsImage_thumbnailed" data-fileid="8182" alt="test_detail_wireframe.thumb.jpg.5adec97d" src="https://www.mapcore.org/uploads/monthly_2016_01/test_detail_wireframe.thumb.jpg.5adec97dcd5c551e733be029b52a982b.jpg"></a></p><p>Let’s recap all the action and numbers in a nicely formatted table.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2016_02/56b120544cbfa_2016-02-02_22_30_22-Tabellen_fr_MapCore_Artikel_-_Sheet1_(8).pdf_-_Foxit_Reader.png.57385f24113147a37060d80941e8c8a9.png"><img data-fileid="8212" class="ipsImage ipsImage_thumbnailed" alt="56b1205477ee5_2016-02-02_22_30_22-Tabell" src="https://www.mapcore.org/uploads/monthly_2016_02/56b1205477ee5_2016-02-02_22_30_22-Tabellen_fr_MapCore_Artikel_-_Sheet1_(8).pdf_-_Foxit_Reader.thumb.png.f8e7d71a75f0a9befbde11467677b8f1.png"></a></p><p>You can notice the fps gap between the func_detail and displacement versions in both test maps whereas the “mixed” version considerably narrowed this gap. The numbers have spoken.</p><h1><span style="font-size:22px;"><span style="font-family:georgia, serif;">The bottom line</span></span></h1><p>The bottom line is, if you rely only on func_detail, you will hit the maximum brush-count allowed in Source and severely limit your map and creativity. You might also run into T-junction issues as well as parts of your geometry flickering and disappearing from certain angles in densely func_detail’ed areas.</p><p>On the other side, if you stick to displacements alone, then you will have lower fps than a func_detail map version. You might also run into visible seams and un-sewn displacement issues.</p><p>Having a clever distribution of both func_detail and displacement in your map is the way to go. You will have high fps, better lighting around the edges, and organic sculpting while not getting anywhere near the total brush limit; the best of both worlds.</p><p> </p>
]]></description><guid isPermaLink="false">73</guid><pubDate>Sun, 07 Feb 2016 15:34:00 +0000</pubDate></item><item><title>Viability of Hostage Rescue Scenario in CS:GO</title><link>https://www.mapcore.org/articles/development/viability-of-hostage-rescue-scenario-in-csgo-r71/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2016_01/hostage_rescue_thumb.jpg.b4a506a90c0e7ec1ba3b9a12ed969551.jpg" /></p>

<p style="line-height:22.4px;text-align:center;"> </p><p style="line-height:22.4px;text-align:center;"><img alt="hostage_rescue_webcover.jpg.4dd4f37d3616" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2016_01/hostage_rescue_webcover.jpg.4dd4f37d36165010c52bbb6b494ebb45.jpg"></p><p style="line-height:22.4px;text-align:center;"> </p><p style="line-height:22.4px;"><span style="color:rgb(82,82,82);line-height:22.4px;">This level design article is about the past and the present of the hostage rescue mode in Counter-Strike. Showcasing the inherent issues that accompanied the scenario allowing the bomb/defuse mode to gain traction and popularity. This article will also present what can be done, level design wise, to remedy some of the shortfalls and allow the scenario to be viable.</span></p><p style="line-height:22.4px;"><span style="font-size:22px;"><span style="font-family:georgia, serif;">A historical background</span></span></p><p style="line-height:22.4px;">Counter-Strike officially started life in June 1999 with the release of beta 1, and it shipped with four maps, that’s right, four whole maps. They were all hostage rescue maps and the prefix used for these maps was cs_ as opposed to the standard deathmatch maps starting with dm_. This prefix was an abbreviation of the game’s name (Counter-Strike) which hints to this hostage-rescue scenario being the only one in the minds of Gooseman and Cliffe, the creators of CS, at the time of launch.</p><p style="line-height:22.4px;">Fast forward a couple of months, beta 4 rolled out in November 1999 bringing to the table a new scenario, bomb defuse. The new maps carried the prefix de_ and while one would think that the hostage rescue maps would be switched to hr_ prefix, they kept the same prefix which started to be referred to as the “Classic Scenario”. Counter-Strike was built on hostage rescue scenario.</p><p style="line-height:22.4px;">I started playing CS in beta 2 in August 1999 (I totally missed beta 1, screw me) and maps like Assault and Siege were all the rage at LAN parties. The nearest LAN/internet café was a 5-minute drive from my place, and LAN parties with friends used to be a blast full of shouting, cursing, bluffing, noob-trashing; the standard menu for a CS session. Good times.</p><p style="line-height:22.4px;">Siege, the oldest CS map (beta 1), and Assault (beta 1.1) were the epitome of the game. You had to dive in as a CT deep into the T stronghold to rescue the hostages and bring them back to safety. These maps were the most played on LANs and embodied the style of early CS gameplay. At the LAN place where I used to wage my virtual battles, Assault equaled CS, literally. A fun fact is that when Dust came out, I started a LAN session with this map and everyone in the room shouted at me: "What the hell is this? We wanna play CS!" For my friends, Assault was CS.</p><p style="line-height:22.4px;">However, those rosy days for hostage rescue began to turn into grim grey when folks started playing bomb defuse scenario and realized how…fun it was. A map like Dust almost single-handedly pushed the scenario into higher ground with its bright environment/textures, clear/wide paths and its ease of use and noob-friendliness. A year later, around Summer 2000, Counter-Strike was now equivalent to Dust for my friends.</p><p style="line-height:22.4px;">How did this happen? What went wrong?</p><p style="line-height:22.4px;"><span style="font-size:22px;"><span style="font-family:georgia, serif;">Inherent flaws of hostage rescue</span></span></p><p style="line-height:22.4px;">Hostage rescue is a very delicate and tough scenario for law enforcement operators in the real world. It puts the assailing team at a great disadvantage against heavily-armed barricaded hostage-takers who are probably using civilian hostages as human shields and as a bargaining chip for a later escape.</p><p style="line-height:22.4px;">As you can deduce, transferring this scenario as realistically as possible into the game will not fare well, and this disadvantage will carry on for the CT team. The problem is only exacerbated when you add the more or less “flawed” game mechanics to the scenario. This is exactly what went wrong with hostage rescue scenario in case you are still wondering about the rhetoric questions at the end of the historical background introduction. The popularity of cs_ scenario started dwindling and the rise of the bomb/defuse scenario only made things worse.</p><p style="line-height:22.4px;">Almost all the early cs_ maps featured a relatively tiny hostage zone/room having one entryway usually sealed with closed doors that the CT must open to get access inside. This room was typically located behind T spawn which made the area a camping ground and made camping that zone an obvious and rewarding tactic for Ts. The doors having to be manually opened with a loudening sound made things worse and negated any surprise or sneaky rush towards the hostages. A classic example is the hostage area and T spawn in cs_assault.</p><p style="line-height:22.4px;text-align:center;"><img alt="assault_hostage_zone.jpg.95f68be672e7756" class="ipsImage" width="1000" height="562" src="https://www.mapcore.org/uploads/monthly_2016_01/assault_hostage_zone.jpg.95f68be672e7756ffe2a77fa28405d3a.jpg"><br><span style="font-size:12px;"><em>I dare not think of how many Ts are camping behind those doors</em></span></p><p style="line-height:22.4px;">Another equally important camp fest occurred in the hostage rescue zone. Early designs made the rescue zone relatively small with one or two access paths that can be defended from one location. If the CT team manages to reach the hostages and rescue them, the Ts could easily fall back to the rescue zone to camp and patiently wait for the CTs to show up. The hostage rescue zone in <em>cs_italy</em> is a nice example to showcase how one T could camp in the southernmost spot in the zone allowing him to monitor both entryways, from <em>market</em> and from <em>wine cellar</em>, within the same field of view. CT slaughter was almost a guaranteed thing to happen.</p><p style="line-height:22.4px;text-align:center;"><img alt="italy_rescue_zone.jpg.9665269f5f384899d6" class="ipsImage" width="1000" height="562" src="https://www.mapcore.org/uploads/monthly_2016_01/italy_rescue_zone.jpg.9665269f5f384899d6fdd2d264779afe.jpg"><br><em><span style="font-size:12px;">A CT will show up any second now; imminent slaughter commencing in ...3, 2, 1</span></em></p><p style="line-height:22.4px;">A third flaw was the hostages themselves. They were difficult to escort and protect and were easily stuck or left behind in various parts of the maps between their initial hostage zone and the final rescue zone. I lost count of how many times I rescued the hostages and ran as fast as I could to the rescue zone, reaching it with a big grin on my face only to turn around and find out that only one or two of the four hostages actually followed me; the others were randomly stuck on a ladder, door frame, window ledge, vent, chair, table…I could go on but my blood is starting to boil just thinking of this.</p><p style="line-height:22.4px;">To add insult to injury, hostages could also be killed or “stolen” for ultimate trolling. When Ts were stacked on money, they could easily kill all the hostages, basically turning the round to a frustrating terrorist hunt for CTs. In early CS versions, a CT teammate could press the “use” key on a hostage that you were already escorting to steal it. This would leave you helplessly wondering where the hell did the 4th hostage go in case you did not catch the teammate performing the action.</p><p style="line-height:22.4px;">Lastly, maps themselves contributed to the issues that were piling up against hostage rescue scenario. If you are a CS veteran and you were around the early betas in 1999, you would most certainly remember how quickly hostage rescue maps were pruned from one beta to another; some maps even had a life span of 1 week before being discarded out of the official roster. Most of these early cs maps featured dark, nightly environments that were unfriendly to both newcomers and established players. Other maps had a confusing-as-hell labyrinthine layout that confused even the most great-sense-of-direction players, and made remembering paths nigh impossible. Some of these maps had narrow twisted paths and choke points, vents, and ladders that not only frustrated players (especially CTs) but also made rescuing and escorting the hostages more of wishful thinking. The icing on the cake was the different gimmicks introduced in some maps that made a frustrating gameplay/layout even more annoying: some maps had a machine gun nest in T spawn allowing Ts to master and perfect the art of CT slaughtering while other maps had flammable drums that could be shot and blasted for the ultimate carnage right next to the hostage zone. Good example maps include cs_prison, cs_bunker, cs_iraq, cs_hideout, cs_facility, cs_desert, among many others.</p><p style="line-height:22.4px;">Meanwhile, bomb/defuse scenario was gaining grounds at an increased rate and before too long, hostage rescue was relegated to a distant second place in terms of popularity among players and level designers alike.</p><p style="line-height:22.4px;">As a small experiment, I tallied the number of custom hostage and defuse maps submitted on Gamebanana for Counter-Strike Source and Global Offensive. For CS:GO, there are 761 de_ maps against 157 hostage maps while for CS:S, the figures are 4060 de_ for 1244 cs_ maps. The disparity is rather meaningful as the ratio in CS:GO is 4.85:1 while for CS:S the number is 3.26:1. This means that for each hostage map in CS:GO there are almost five maps of bomb/defuse whereas this number drops slightly to almost three maps for CS:S. With CS:GO putting extra focus on competitive gameplay, this ratio is bound to further grow widening the rift between bomb/defuse and hostage rescue maps.</p><p style="line-height:22.4px;">That’s it? Is it done for cs_ maps? Shall we prepare the obituary or is there a magical solution to breathe some fire and life in them?</p><p style="line-height:22.4px;"><span style="font-size:22px;"><span style="font-family:georgia, serif;">Solutions for viability</span></span></p><p style="line-height:22.4px;">There is a magical solution that involves you transferring a large sum of cash to my bank account, then my “guys” will contact your “guys” to deliver the “solution”. The drop point will be at the…apparently, there has been a mix-up, this is for another “deal” <em>…nervous chuckle.</em></p><p style="line-height:22.4px;">Seriously though, while there is no magical solution that will lift hostage rescue onto the rainbow, there are a couple of things that level designers can do to start injecting some momentum to the scenario. Luckily for us, Valve has already paved the way (so these “Volvo pls fix <s>pls</s>” do work after all?). In March 2013, Valve introduced a major CS:GO update that completely overhauled the hostage rescue scenario mechanics and introduced cs_militia as well. The update was a game changer and a much needed tweak towards a better hostage rescue gamemode.</p><p style="line-height:22.4px;">We now have two hostages instead of four, and the CTs only need to rescue one of them to win the round. Moreover, the hostage does not stupidly follow the CT but instead is carried on the CT’s shoulders. Obviously the movement speed of the CT carrying the hostage is decreased but this “inconvenience” is countered with added bonus round time and the fact that the CT doesn’t have to glance over his shoulders every five seconds to make sure the hostages are still following him (this kind of distraction can prove fatal to the CT escorting the hostages). The hostages’ spawn location is randomized and can be controlled by the level designer. A nice change is that hostages don’t die anymore thus cutting any chance of Ts trolling (you still lose money when you shoot a hostage – shooting a hostage is pretty pointless now akin to shooting yourself in the foot).</p><p style="line-height:22.4px;">This is all good news if you ask me; hostage rescue is on the right path to become popular and viable again. With Valve doing the first half of the change, level designers have the duty to continue with the second half.</p><p style="line-height:22.4px;"><span style="font-size:22px;"><span style="font-family:georgia, serif;">Hostage defuse?</span></span></p><p style="line-height:22.4px;">As a first suggested solution, let us start treating hostage rescue as bomb defuse. Let’s be honest, bomb defuse works really well, so why not transfer this “experience” into hostage rescue. What we can do is to have a hostage rescue map’s layout mimic one of bomb defuse – that is have two hostage zones that are similarly placed as two bomb sites. We need to start treating a hostage zone like a bomb site with all accompanying techniques of rushing, pushing, faking, peeking, holding, smoking, flashing, etc. The good thing about this is that whatever knowledge, skill, and layout awareness that players have acquired from defuse scenarios will transfer effortlessly to the hostage rescue scenario; you do not need to learn new tactics and strategies. The roles will be inversed: instead of Ts rushing bomb sites and CTs defending, CTs will push hostage zones and Ts will defend and rotate.  </p><p style="line-height:22.4px;">Sounds logical, right? Some people might argue that having 2 separate hostage zones is not “realistic” and my answer is Counter-Strike was never about realism (carrying and running around with a 7 kg (15.5 lb), 1.2 m (47.2 inch) AWP sniper rifle with 25x telescopic sight, quickscoping and headshotting opponents is the epitome of “realism”). If you want a realistic hostage rescue scenario, then you are better off playing the original Rainbow Six Rogue Spear and SWAT 3 from 1999, or the more recent ARMA and Insurgency for a realistic military setting. I practice what I preach and I already implemented this technique in my last map “<a rel="external" href="https://steamcommunity.com/sharedfiles/filedetails/?id=405675581">cs_calm</a>”. The map was a remake of my CS 1.5 map from 2003 and obviously I made the “mistake” at that time to follow the trend set by official maps of having one hostage zone right behind T spawn. A playtest on Reddit CS:GO servers back in March 2015 confirmed that this setup won’t work well as Ts will inevitably abuse the hostage zone.</p><p style="line-height:22.4px;">I made some radical layout changes towards T spawn and hostage zone and created two new hostage zones on the upper and lower levels of the map that are connected by a back hallway to allow quick rotations (in addition to the one through T spawn). Obviously, there is no direct line of sight between hostage zones to prevent 1-zone camping. Ts have absolutely no incentive to camp one zone as CTs can reach the other one, rescue the hostage and head back to the rescue zone without being spotted from the other zone. CTs actually have a chance of winning the round by rescuing the hostages.<br>I like to believe the new layout worked well. Only time and more hostage rescue maps will tell.</p><p style="line-height:22.4px;text-align:center;"><img alt="calm_overview.jpg.0348247b95930e3ac6daf8" class="ipsImage" width="750" height="750" src="https://www.mapcore.org/uploads/monthly_2016_01/calm_overview.jpg.0348247b95930e3ac6daf821d6f7202f.jpg"><br><em><span style="font-size:12px;">Layout of the map "cs_calm"</span></em></p><p style="line-height:22.4px;"><span style="font-size:22px;"><span style="font-family:georgia, serif;">Rescue zone anti-camping</span></span></p><p>We have remedied the hostage zone camping but we still need to tend to the rescue zone camping issue. A solution to this is to have two rescue zones in a similar setup to what is nicely done in cs_office. While Ts can still camp one zone, they risk a big chance of having CTs reach the other rescue zone. Again, CTs will have a viable option to save the hostages without being shredded by camping Ts. If the layout does not allow or facilitate having two rescue zones, then one big rescue zone with multiple entrances (three is a good number) should work fine. The trick here is to have the entrances not easily covered within the same field of view to prevent camping.</p><p><span style="font-size:22px;"><span style="font-family:georgia, serif;">Into the zone</span></span></p><p>Just as we established that we should treat hostage zones like bomb sites, it goes without saying that each hostage zone should have at least 2 to 3 entry points. It’s pretty pointless to have only one entrance as this totally defeats the purpose of spreading hostages into two zones. The different entryways should also not be covered within the same field of view of one T; if a T decides to camp the zone, then he should be able to cover two entrances from one point leaving the third one more or less at a dead angle and viable for a CT rush or stealth/sneak surprise. </p><p style="text-align:center;"><img alt="calm_angles.jpg.b64703f998092930a327195b" class="ipsImage" width="1000" height="562" src="https://www.mapcore.org/uploads/monthly_2016_01/calm_angles.jpg.b64703f998092930a327195b933bfa20.jpg"><br><span style="font-size:12px;"><em>Showcase of Hostage Zone A on the map "cs_calm"</em></span></p><p>The above screenshot showcases “Hostage Zone A” in cs_calm. A terrorist will typically camp near the hostage covering the two encircled entrances. The third entrance from upper level denoted by the arrow is not in the direct FOV, and is prone to a surprise attack by CTs that could catch the camping T off guard. If possible, try to spread the entrances on different vertical levels to spice things up and keep Ts on their toes.<br>Lastly, it is a good idea to have a connector between hostage zones to allow fast rotations but without having a direct line of sight between hostage zones. We want to make the scenario fairer to CTs but not at the expense of Ts, inadvertently making it unfair for them.</p><p><span style="font-size:22px;"><span style="font-family:georgia, serif;">Conclusion</span></span></p><p>Hostage rescue is a fun scenario if you ask me. It had many inherited and added flaws that contributed to its waning but it’s nothing that can’t be reversed. We, as level designers, need to push some changes to put the scenario back on track. What I just showcased in this article might not be the only viable solutions but they certainly are a step in the right direction. Level designers are intimidated by players who shun away from cs_ maps, and this turns into a vicious circle where players avoid hostage rescue maps and mappers in return avoid designing them. We need to break this cycle and designers need to bravely embrace the solutions I presented here or come up with their own solutions. The more cs_ maps that come out and get tested, the more we could validate these solutions as viable.</p><p>In either case, we need to get proactive towards hostage rescue scenario; after all, this is the cornerstone that Counter-Strike was built upon.</p>
]]></description><guid isPermaLink="false">71</guid><pubDate>Tue, 05 Jan 2016 08:05:15 +0000</pubDate></item><item><title>Source Lighting Technical Analysis: Part Two</title><link>https://www.mapcore.org/articles/development/source-lighting-technical-analysis-part-two-r66/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2015_08/thumbnail2.png.d6b7ae383312d37793a1ef0a95d31c02.png" /></p>

<p style="line-height:22.3999996185303px;"><em>This is the second part of a technical analysis about Source Lighting, if you haven’t read the first part yet, you can find it <a href="https://www.mapcore.org/articles/development/source-lighting-technical-analysis-part-one-r65/">here</a>. </em></p><p style="line-height:22.3999996185303px;">Last time, we studied the lightmaps, how they are baked and how VRAD handles the light travel through space. We ended the part 1 with an explanation of what the <em>Constant-Linear-Quadratic</em> Falloff system is, with a website that allows you to play with these variables and see how lighting falloff reacts to them. We will now continue with basic examples of things you can do with these variables. </p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><span style="font-size:22px;">Examples of application</span></p><p style="line-height:22.3999996185303px;"><span style="font-size:18px;"><u>Constant falloff</u></span></p><p><img alt="100_percent_constant.png.1a6793a3d787006" class="ipsImage" style="width:187px;height:43px;border:1px solid #000000;margin:10px;float:right;" src="https://www.mapcore.org/uploads/monthly_2015_08/100_percent_constant.png.1a6793a3d787006b7b7be503dc3b49c0.png"><span style="line-height:22.3999996185303px;">The simplest type of falloff is the </span><strong style="line-height:22.3999996185303px;">100% constant</strong><span style="line-height:22.3999996185303px;"> one. Whatever the distance is, the lighting has theoretically the same intensity. This is the kind of (non-)falloff used for the sun lighting, it is so far away from the map area, that light rays are supposed to be parallel and light keep its intensity. Constant falloff is also useful for fake lights, lights with a very low brightness but that are here to brighten up the area.</span></p><p style="text-align:center;"><span style="line-height:22.3999996185303px;"> </span><img alt="fake_light.gif.e0866f8f531378256fc6759f8" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/fake_light.gif.e0866f8f531378256fc6759f8e3c4728.gif"></p><p style="line-height:22.3999996185303px;"> </p><p style="text-align:center;"><img alt="fake_light_hammer.png.d643f8e0ec4265609d" class="ipsImage" width="1000" height="565" src="https://www.mapcore.org/uploads/monthly_2015_08/fake_light_hammer.png.d643f8e0ec4265609d8c8439725bda96.png"></p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><u><span style="font-size:18px;">Linear falloff</span></u></p><p><img alt="100_percent_linear.png.85dba19c2b2c1ab85" class="ipsImage" style="width:187px;height:43px;border:1px solid #000000;margin:10px;float:right;" src="https://www.mapcore.org/uploads/monthly_2015_08/100_percent_linear.png.85dba19c2b2c1ab851dbc0517ba6469a.png"></p><p style="line-height:22.3999996185303px;">Another type of falloff is the <strong>100% linear </strong>one. With this configuration, light seems to be a bit artificial: it loses its intensity but goes way further than the 100% quadratic falloff. It can be very useful on spots, the lighting is smooth and powerful. Here is an example:<br> </p><p style="text-align:center;"><img alt="linear_vs_quadratic_falloff.gif.8ac60892" class="ipsImage" style="width:640px;height:360px;border:0px solid #000000;margin:0px;" src="https://www.mapcore.org/uploads/monthly_2015_08/linear_vs_quadratic_falloff.gif.8ac608925c991370c17865e2beb29287.gif"></p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><u><span style="font-size:18px;">Quadratic falloff</span></u></p><p><img alt="100_percent_quadratic.png.6ecbeaa2dccff4" class="ipsImage" style="width:187px;height:43px;border:1px solid #000000;margin:10px;float:right;" src="https://www.mapcore.org/uploads/monthly_2015_08/100_percent_quadratic.png.6ecbeaa2dccff4171c077ded28919af4.png"></p><p style="line-height:22.3999996185303px;">This is the default configuration for any light entity in Hammer, following as we said before the classic Inverse-Square law (100% Quadratic Falloff). It is considered to be the most natural and realistic falloff configuration. The biggest issue is that it boosts the brightness so much on short distances, that you can easily obtain a big white spot. Here is an example, with a light distant of 16 units from a grey wall:</p><p style="text-align:center;"><img alt="quadratic_white_spot.jpg.a6513137d4da431" class="ipsImage" width="1000" height="562" style="width:700px;height:382px;border:0px solid #000000;margin:0px;" src="https://www.mapcore.org/uploads/monthly_2015_08/quadratic_white_spot.jpg.a6513137d4da4316e8bb298207242701.jpg"></p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;">This can also happen with linear falloff but it is worse with quadratic. Simple solutions exist for that, the most common is not to use a light entity but a light_spot entity that is oriented to the opposite direction from the wall/ceiling the light is fixed to. You can make the opening angle of your light_spot wider, with the <strong>inner and outer angle parameters</strong> (by default the outer one is 45°, increase that to a value of 85° for example). If needed, you can also add a light with low brightness to light the ceiling/wall a bit.</p><p style="text-align:center;"><img alt="quadratic_tip_spot_plus_light.png.90fde3" class="ipsImage" width="1000" height="307" src="https://www.mapcore.org/uploads/monthly_2015_08/quadratic_tip_spot_plus_light.png.90fde391b0ad1ef812cf67908b591c95.png"></p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><u><span style="font-size:18px;">50% &amp; 0% FallOff</span></u></p><p style="line-height:22.3999996185303px;">A second light falloff system exists, overriding the constant-linear-quadratic system if used. The concept is much simpler, you have to configure only 2 distances:</p><ul><li style="line-height:22.3999996185303px;"><strong>50 percent falloff distance:</strong> Distance at which light should fall off to 50% from its original intensity</li><li style="line-height:22.3999996185303px;"><strong>0 percent fall off distance: </strong>Distance at which light should end. Well ... almost, it actually fall off to 1/256% from its original intensity, which is negligible.</li></ul><p style="line-height:22.3999996185303px;">The good thing with this falloff system is that you can see the 2 spheres according to the 2 distances you have configured in Hammer. Just make sure to have this option activated: <img alt="micro_image.png.9a5aaed9052012d95833ac8a" class="ipsImage" style="line-height:1.6;width:25px;height:23px;border:0px solid #000000;margin:0px;" src="https://www.mapcore.org/uploads/monthly_2015_08/micro_image.png.9a5aaed9052012d95833ac8a7b36dc53.png"></p><p style="text-align:center;"><img alt="50percent_0percent_falloff.gif.152da367a" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/50percent_0percent_falloff.gif.152da367a25b13bdddeaeba189d9ffe6.gif"></p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><span style="font-size:22px;">Models lighting</span></p><p style="line-height:22.3999996185303px;">An appropriate section for models lighting is needed, because it differs from brush lighting (but the falloff stays the same). In any current game engine, lightmaps can be used on models, a specific UV unwrap is even made specifically for lightmaps. But on Source Engine 1 (except for Team Fortress 2) you cannot use lightmaps on models. </p><p style="line-height:22.3999996185303px;">The standard lighting method for models is named <strong>Per-Vertex Lighting</strong>. This time, light won’t be lighting faces but vertices, all of the model’s vertices. For each one of them, VRAD will compute a color and brightness to apply. Finally, Source Engine will make a gradient between the vertices, for each triangle. For example:</p><p style="text-align:center;"><img alt="vertex_lighting_shading.png.32222080b0fc" class="ipsImage" width="1000" height="280" src="https://www.mapcore.org/uploads/monthly_2015_08/vertex_lighting_shading.png.32222080b0fc3d4fe5feebcb31999a6d.png"></p><p>If we take a simple example of a sphere mesh with 2 different light entities next to it, we can see it working.</p><p style="text-align:center;"><img alt="vertex_lighting_sphere.png.9eecb4b6b6e50" class="ipsImage" style="line-height:22.3999996185303px;text-align:center;" src="https://www.mapcore.org/uploads/monthly_2015_08/vertex_lighting_sphere.png.9eecb4b6b6e501710a9f64bbfac4f5bc.png">            <img alt="vertex_lighting_sphere_in_engine.png.cef" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/vertex_lighting_sphere_in_engine.png.cef2075fc27acc4a844d02a30af1660a.png"></p><p style="line-height:22.3999996185303px;">With this lighting method, models will therefore be integrated in the environment with an appropriate lighting. The good thing is that, if a part of the model is in a dark area, and another part is in a bright area, the situation will be handled properly. The only requirement for this is that the mesh must have a sufficient level of detail in it; if there is a big plane area without additional vertices on it, the lighting details could be insufficient. </p><p style="line-height:22.3999996185303px;">Here is an example of a simple square mesh with few triangles on the left and a lot on the right. With the complex mesh, the lighting is better, but more expensive. </p><p style="text-align:center;"><img alt="simple_mesh_complex_mesh_comarison.png.7" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/simple_mesh_complex_mesh_comarison.png.7194aba59303b0e33e81a9e352640a85.png"></p><p style="line-height:22.3999996185303px;">If you need a complex mesh for your lighting, you don’t want your model to be too expensive, you have to<strong> find a balance</strong>. </p><p style="line-height:22.3999996185303px;">Two VRAD commands are needed to make the Per-Vertex Lighting work:</p><ul><li style="line-height:22.3999996185303px;"><strong>StaticPropLighting</strong></li><li style="line-height:22.3999996185303px;"><strong>StaticPropPolys</strong></li></ul><p style="line-height:22.3999996185303px;">You have to add them <a href="https://www.mapcore.org/uploads/monthly_2015_08/vrad_vertexlighting_commands_position.png.081dbdb96d734dc8d927b0a1dba38fd7.png">here</a>. You can find <a rel="external" href="https://developer.valvesoftware.com/wiki/Expert_compile_mode">more information here</a>.</p><p style="line-height:22.3999996185303px;">Another system exists, that is much cheaper and simpler. Instead of focusing on the lighting of all the vertices, the engine will only <strong>deal with the model’s origin</strong>. The result obtained in-game will be displayed <strong>on the whole model</strong>, using only what has been computed at the model’s origin location. This can be an issue if the model is big or supposed to be present in an area with lots of contrast in lighting. The best example for that is at the beginning of Half-Life 2 with trains entering and exiting tunnels. We can see the issue: the model is illuminated at the beginning, but when it enters the tunnel it suddenly turns dark. And this moment is when the train’s origin gets in the shadow. </p><p style="line-height:22.3999996185303px;">This cheap lighting method will replace the per-vertex lighting for 3 types of models:</p><ul><li style="line-height:22.3999996185303px;">For <strong>prop_dynamic</strong> or any kind of dynamic models used in the game (NPCs, weapon models in hand, any animated models...)</li><li style="line-height:22.3999996185303px;">For <strong>prop_physics</strong></li><li style="line-height:22.3999996185303px;">For <strong>ANY MODEL USING A NORMAL MAP</strong> (vertex lighting causes issues with normal maps apparently), <strong>EVEN IF USED AS A PROP_STATIC</strong></li></ul><p style="line-height:22.3999996185303px;"><img alt="cheap_model_lighting_oriented.gif.11af93" class="ipsImage" style="height:187px;line-height:22.3999996185303px;text-align:center;width:180px;border:0px solid #000000;margin:0px;float:right;" src="https://www.mapcore.org/uploads/monthly_2015_08/cheap_model_lighting_oriented.gif.11af937c42eb1b45b0d7cf5539b2a44e.gif"></p><p style="line-height:22.3999996185303px;">The big problem with these models is their integration in the map, they won’t show any shadow and their lighting will be very flat and boring (because it’s the same used for the whole model). But hopefully there are 2 good things with this cheap lighting method. </p><p style="line-height:22.3999996185303px;">First, the orientation from which comes light is taken into account, if blue light comes from one direction, therefore all the faces oriented toward this direction will be colored in blue. And if you have different lighting colorations/intensities coming from different sides of your model, they should appear in game. </p><p style="line-height:22.3999996185303px;">Here is an example of a train model using a normal map with 2 lights on both side. If you look closely, you’ll see some blue lighting on the left, on faces that are supposed to be in the shadow of the blue light but are oriented toward the blue light.</p><p style="line-height:22.3999996185303px;"> </p><p style="text-align:center;"><img alt="cheap_model_lighting_oriented_example.jp" class="ipsImage" width="1000" height="562" src="https://www.mapcore.org/uploads/monthly_2015_08/cheap_model_lighting_oriented_example.jpg.38f504656758b78d704ccc9aadf3b94f.jpg"></p><p style="text-align:center;"> </p><p style="line-height:22.3999996185303px;">The second good thing is that there is still some kind of dynamic per-vertex lighting, but much simpler: it only works with <strong>light </strong>and <strong>light_spot</strong> entities (NOT with light_environment), and it just adds some light to the prop, it cannot cast any shadow (it only takes into account dynamically the distance between the light and the vertex). If we use again the high-poly plane mesh we had before as a <strong>prop_dynamic</strong>, being parented to a <strong>func_rotating</strong> that ... rotates. Light is dynamically lighting the vertices of the props. There is a limit of 3 dynamic lights per prop, it can’t handle more at the same time.</p><p style="text-align:center;"><img alt="vertex_lighting_light_dynamic.gif.fbbcb9" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/vertex_lighting_light_dynamic.gif.fbbcb949bb346ec263cbdb9fd370e459.gif"></p><p style="line-height:22.3999996185303px;">And if you add a normal-map in your model’s texture, this cheap dynamic lighting works on it:</p><p style="text-align:center;"><img alt="vertex_lighting_light_dynamic_with_bump." class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/vertex_lighting_light_dynamic_with_bump.gif.4fe3ad542be4cec99cfbb2a0008471a1.gif"></p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><span style="font-size:22px;">Projected texture and Cascaded Shadows</span></p><p style="line-height:22.3999996185303px;">Few words to finish the study with <strong>dynamic lighting</strong>. Projected textures is a technology that appeared with Half-Life 2: Episode Two in 2007, it consists of a point-entity projecting a texture in the chosen direction, with a chosen opening angle (fov). The texture is projected with emissive properties (it can only increase the brightness, not lowering it) and it can generate shadows or not. The great thing with this technology is that it’s fully dynamic, the <strong>env_projectedtexture</strong> can move and/or aim at moving targets. This technology is used for example on flashlights in Source games. But as usual, there is also a drawback: most of the time you can only use only 1 projected texture at a time, modders can change this value quite easily but on Valve games it is always locked on 1. </p><p style="text-align:center;"><img alt="projected_texture_ingame_example.jpg.5ea" class="ipsImage" width="1000" height="562" src="https://www.mapcore.org/uploads/monthly_2015_08/projected_texture_ingame_example.jpg.5ea9a2492e124199ca318f5682491712.jpg"></p><p style="line-height:22.3999996185303px;">The <strong>cascaded shadows system</strong> is only used on CS:GO. The concept is quite similar from a projected texture but it doesn’t increase the brightness, it only adds finer shadows. It is used for environment lighting, using much smaller luxels than for the lightmaps and it is fully dynamic. It starts from the tools/toolsskybox textures of the map and cast shadows if it meets any obstacle. Shadows from the lightmap are most of the time low resolution and the transition between a bright and a dark area is blurry and wide. Therefore, the cascaded shadow will be able to draw a clear shadow around the one from the lightmaps.</p><p style="text-align:center;"><img alt="cascaded_shadow_example_with_without.gif" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/cascaded_shadow_example_with_without.gif.1edae7ecab8dbcebf44ee68312ab0f22.gif"></p><p style="line-height:22.3999996185303px;">When an object is too small to get a shadow in the lightmap, it will be visible thanks to the cascaded shadows. There are 3 levels of detail for cascaded shadows on Counter-Strike, you can configure the max distance at which the cascaded shadows will work in the <strong>env_cascade_light</strong> entity at the parameter <strong>Max Shadow Distance</strong> (by default it’s 400 units). The levels of detail will be distributed within this range, for example: </p><p style="text-align:center;"><img alt="table3.png.aa6823c56fc2e8147c7b3120498b8" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_08/table3.png.aa6823c56fc2e8147c7b3120498b887d.png"></p><p style="line-height:22.3999996185303px;">Since cascaded shadows and projected textures share some technology, you can’t use them both at the same time.</p><p style="line-height:22.3999996185303px;"> </p><p style="line-height:22.3999996185303px;"><span style="font-size:22px;">Conclusion</span></p><p style="line-height:22.3999996185303px;">I really hope you have found this article interesting and learned at least few things from it. I believe most of these informations are not the easiest to find and it’s always good to know how your tools work, to understand their behavior. Source Engine 1 is old and its technologies might not be used anymore in the future, more powerful and credible technologies are released frequently but it’s always good to know your classics, right? </p><p style="line-height:22.3999996185303px;">I would like to thank <strong>Thrik</strong> and <span style="font-size:14px;"><strong>’RZL</strong></span> for supporting me to write this article, and long live the Core!</p><p style="line-height:22.3999996185303px;text-align:right;">// Written by Sylvain "Leplubodeslapin" Menguy</p><p style="line-height:22.3999996185303px;"><em><span style="color:#696969;"><span style="font-size:18px;">Additional commands for fun</span></span></em></p><ul><li style="line-height:22.3999996185303px;"><span style="color:#696969;">Mat_luxels 1                              // Allows you to see the lightmaps grids</span></li><li style="line-height:22.3999996185303px;"><span style="color:#696969;">Mat_fullbright 1                         // Disables all the lighting (= fullbright). On CS:GO, cascaded shadows stay and you should delete them as well (cf next command)</span></li><li style="line-height:22.3999996185303px;"><span style="color:#696969;">Ent_fire env_cascade_light kill  // KILL WITH FIRE the cascade shadows entity</span></li><li style="line-height:22.3999996185303px;"><span style="color:#696969;">Mat_drawgray 1                        <span style="line-height:22.3999996185303px;">// </span><span style="line-height:22.3999996185303px;">Replace all the textures with a monochrome </span><span style="line-height:22.3999996185303px;">grey texture, useful to work on your lighting</span> </span></li><li style="line-height:22.3999996185303px;"><span style="color:#696969;">Mat_fullbright 2                         // Alternative to Mat_drawgray 1</span></li></ul><p style="line-height:22.3999996185303px;"><span style="color:#696969;">Bonus:</span></p><ul><li style="line-height:22.3999996185303px;"><span style="color:#696969;">Mat_showlowresimage 1           // Minecraft mode</span></li></ul>]]></description><guid isPermaLink="false">66</guid><pubDate>Mon, 03 Aug 2015 17:58:14 +0000</pubDate></item><item><title>Source Lighting Technical Analysis: Part One</title><link>https://www.mapcore.org/articles/development/source-lighting-technical-analysis-part-one-r65/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2015_07/thumbnail.png.f4a0d400629069ec28be2e2720d156d1.png" /></p>

<p style="text-align:center;"><img alt="header_biiiig.jpg.abd3ae9ddc94c9668b5bce" class="ipsImage" width="1000" height="468" style="width:900px;height:421px;border:0px solid #000000;margin:0px;" src="https://www.mapcore.org/uploads/monthly_2015_07/header_biiiig.jpg.abd3ae9ddc94c9668b5bcec7675e96c1.jpg"></p><p style="text-align:center;"> </p><p>After the announcement of the <a href="https://www.mapcore.org/articles/special-events/reddit-mapcore-csgo-mapping-contest-r61/">Reddit + Mapcore mapping contest</a>, the website has welcomed many newcomers. A proof that, even if it is a twelve year old game engine, Source engine attracts map makers, and there are lots of reasons for that. It is common knowledge that technology has moved forward since 2003, and many new game engines have found various techniques and methods to improve their renderings, making the Source Engine older and older. Nevertheless, it still has its very specific visual aspect that makes it appealing. The lighting system in Source is most definitely one of the key aspects to that, and at the end of this article you will know why.</p><p> </p><p><span style="font-size:22px;">About the reality...</span></p><p>Light in the real world is still a subject with a lot of pending questions, we do not know exactly what it is, but we have a good idea of how it behaves. The most common physic model of light element is the <strong>photon</strong>, symbolized as a single-point <strong>particle </strong>moving in space. The more photons there are, the more powerful light is. But light is in the same time a <strong>wave</strong>, depending on the wavelengths light can have all kind of color properties (monochrome or combined colors). Light travels through space without especially needing matter to travel (the space is the best example; even without matter the sun can still light the earth). And when it encounters matter, different kind of things can happen:</p><ul><li>Light can <strong>bounce </strong>and continue its travel to another direction</li><li>Light can be <strong>absorbed </strong>by the matter (and the energy can be transformed to heat)</li><li>Light can <strong>go through</strong> the matter, for example with air or water, some properties might change but it goes through it</li></ul><p>And all these things can be combined or happen individually. If you can see any object outside, it is only because a massive amount of photons traveled into space, through the earth’s atmosphere, bounced on all the surfaces of the object you are looking at, and finally came into your eyes.</p><p style="text-align:center;"><span style="font-size:16px;"><em><span style="line-height:35.2000007629395px;">How can such a complex physical behavior from nature be simulated and integrated into virtual 3D renderings?</span></em></span></p><p>One of the oldest method is still used today because of its accuracy: the <strong>ray-tracing</strong> method. Just to be clear, it is NOT used in game engines because it is incredibly expensive, but I believe it is important to know how and why it has been made the way it is, since it probably influenced the way lighting is handled in Source and most videogame engines. Instead of simulating enormous amount of photons traveling from the lights to the eye/camera, it does the exact opposite. If you want a picture with a 1000x1000 resolution, you will only need to simulate the travel of 1 000 000 photons (or “rays”), 1 for each pixel. Each ray is calculated individually until it reaches the light origins, and at the end the result is 1 pixel color integrated in the full picture. </p><p>By using the laws of physics we discovered centuries ago, we can obtain a physically-accurate rendering that looks incredibly realistic. This method is used almost everywhere, from architectural renderings to movies. As an example, you can watch <a rel="external" href="https://vimeo.com/7809605">The Third &amp; The Seventh</a> by <strong>Alex Roman</strong>, one of the most famous CGI videos of all time. And because it is an efficient way to render 3D virtual elements with great lighting, it will influence other methods, such as the <strong>lightmap baking</strong> method.</p><p> </p><p><span style="font-size:22px;line-height:35.2000007629395px;">Lightmap baking</span></p><p>OKAY LET’S FINALLY TALK ABOUT THE SOURCE ENGINE, ALRIGHT!</p><p>A “lightmap” is a grid that is added on every single brush face you have on your map. The squares defined by the grid are called <strong>Luxels </strong>(they are kind of “lighting pixels”). Each luxel get its 2 own properties: a <strong>color </strong>and a <strong>brightness</strong>. You can see the lightmap grids in hammer by switching your 3D preview to 3D lightmap grid mode.</p><p style="text-align:center;"><img alt="lightmap_preview_in_hammer.png.655c3bb2e" class="ipsImage" width="1000" height="430" src="https://www.mapcore.org/uploads/monthly_2015_07/lightmap_preview_in_hammer.png.655c3bb2ec74736fd15c722c42bf5bfb.png"><br><span style="line-height:1.6;">You can also see them in-game with the console command </span><strong style="line-height:1.6;">mat_luxels 1</strong><span style="line-height:1.6;"> (</span><span style="line-height:1.6;color:rgb(255,0,0);"><a href="https://www.mapcore.org/uploads/monthly_2015_07/mat_luxel_without.jpg.befc9ff808306960a9f725771b22ef1b.jpg">without</a> </span><span style="line-height:1.6;">and </span><span style="line-height:1.6;color:rgb(255,0,0);"><a href="https://www.mapcore.org/uploads/monthly_2015_07/mat_luxel_with.jpg.f3f504f187d826de614ce66289fbd5cb.jpg">with</a></span><span style="line-height:1.6;">).</span></p><p>During the compilation process, a program named<strong> VRAD.exe</strong> is used. Its role is to find the color and brightness to apply for every single luxel in your map. Light starts from the light entities and from the sky (from the tools/toolsskybox texture actually, using the parameter values that has been filled in the light_environment entity), travels through space and when it meets a brush face:</p><ul><li>It is <strong>partially absorbed</strong> in the lightmap grid</li><li>A less bright ray <strong>bounces</strong> from the face</li></ul><p>Here is an animated picture to show how a lightmap grid can be filled with a single light entity:</p><p style="text-align:center;"><img alt="lightmap_compute.gif.741ae2a1ac11095b93a" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/lightmap_compute.gif.741ae2a1ac11095b93a6bf9bd03769e0.gif"></p><p>When you compile your map, at first the lightmaps are all full black, but progressively VRAD will compute the lightmaps with all the light entities (one by one) and combine them all at the end. Finally, the lightmaps obtained are applied to the corresponding brush faces, as an additive layer to the texture used on that face. Let us take a look at a wall texture for example.</p><p style="text-align:center;"><img alt="lightmap_application_example.png.b635371" class="ipsImage" width="1000" height="384" src="https://www.mapcore.org/uploads/monthly_2015_07/lightmap_application_example.png.b6353713eebecc5b0b371ba99e038893.png"></p><p>On the left, you have the texture as you can see it in hammer. When you compile your map, it generates the lightmaps and at the end you obtain the result on the right in-game. Unfortunately, luxels are much rougher, with a lower resolution, more like this.</p><p style="text-align:center;"><img alt="lightmap_application_realistic_example.p" class="ipsImage" width="1000" height="320" src="https://www.mapcore.org/uploads/monthly_2015_07/lightmap_application_realistic_example.png.82165042235ab531e65340ae861cccd0.png"></p><p>On the left you have a lightmap grid with the default luxel size of 16 units generated my VRAD, a blur filter is applied and you obtain something close to the result on the right in the game.</p><p>In case you did not know, you can change the lightmap grid scale with the “<strong>Lightmap Scale</strong>” value with the texture tool. It is better to use values that are squares of 2, such as 16, 8, 4 or even 2. Do not go below 2, it might cause issues (with decals for example). Only use lower values than the default 16 if you think it's really useful, because you will drastically increase your map file size and compilation time with precise lightmap grids. Of course, you can also use greater values in order to optimize your map, with values such as 32, 64 or even 128 on very flat areas or surfaces that are far away from the playable areas. You can get more infos about lightmaps on <a rel="external" href="https://developer.valvesoftware.com/wiki/Lightmap">Valve’s Wiki page</a>.</p><p style="text-align:center;"><img alt="lightmap_scale_option.png.0ac375e75b7d94" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/lightmap_scale_option.png.0ac375e75b7d94c63c18c33a320b229c.png"></p><p>But as we said before, light also bounces from the surface until it meets another brush, using <a rel="external" href="https://en.wikipedia.org/wiki/Radiosity_%28computer_graphics%29">radiosity</a> algorithms. Because of that, even if a room does not have any light entity in it, rays can bounce on the floor and light the walls/ceiling, therefore it is not full black. <br>Here’s an example:</p><p style="text-align:center;"><img alt="light_bounce_animation.gif.8664e857c8867" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/light_bounce_animation.gif.8664e857c8867de3992175978b51675e.gif"></p><p>The maximum amount of bounces can be fixed with the <a rel="external" href="https://developer.valvesoftware.com/wiki/VRAD">VRAD command</a> <strong><em>-bounce X</em></strong> (with X being the maximum amount of bounces allowed). The 100 default value should be more than enough.</p><p>Another thing taken into account by VRAD is the normal direction of each luxel: if the light comes directly against the luxel or brushes against it, it will not behave in the same way. This is what we call the<strong> angle of incidence of light</strong>.</p><p style="text-align:center;"><img alt="angle_of_incidence.png.0e8adff0277aabf1b" class="ipsImage" style="width:200px;height:160px;border:0px solid #000000;margin:0px;" src="https://www.mapcore.org/uploads/monthly_2015_07/angle_of_incidence.png.0e8adff0277aabf1b4f8f0707b24aeaa.png"></p><p>Let us take the example of a light_spot lighting a cylinder, the light will bright gradually the surface - from fully bright at the bottom to slightly visible at the top.</p><p style="text-align:center;"><img alt="angle_of_incidence_example_hammer_ingame" class="ipsImage" width="1000" height="346" src="https://www.mapcore.org/uploads/monthly_2015_07/angle_of_incidence_example_hammer_ingame.png.d376fbfa7440ca83740fe555b53d67d1.png"><br><em style="line-height:1.6;">In-hammer view on the left, in-game view on the right</em></p><p style="text-align:center;"> </p><p><span style="font-size:22px;line-height:35.2000007629395px;">Light Falloff laws</span></p><p>One of the things that made the Source Engine lighting much more realistic than any others in 2004 is the light falloff system. Alright, we saw that light can travel through space until it meets something, but how does it travel through space? At the same brightness, whatever the distance is between the light origin and destination? Maybe sometimes yes… but most of the time no.</p><p><img alt="3_bulbs.png.be8a5c1b06475dc8dacbb3593796" class="ipsImage" style="width:200px;height:570px;border:0px solid #000000;margin:10px;float:right;" src="https://www.mapcore.org/uploads/monthly_2015_07/3_bulbs.png.be8a5c1b06475dc8dacbb3593796241f.png"></p><p> </p><p>Imagine a simple situation of a room with 1 single point light inside. The light is turned on, it produces photons that are going in all the directions around it. As you might imagine, photons are all going in their own direction and have absolutely no reason to deviate from their trajectory.</p><p> </p><p> </p><p> </p><p>At one time, let’s picture billions of photons going in all the directions possible around the light, the moment after, they are all a bit further in their own trajectory, and all the photons are still there, in this “wave”. But, as each photon follows its own trajectory, they will all spread apart, making the photon density lower and lower.</p><p>As we said before, the more photons there are, the more powerful light is. And the highest the density, the more intense light is. Intensity of light can be expressed like this:</p><p style="text-align:center;"><img alt="equation1_intensity.png.3a83819c96791503" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation1_intensity.png.3a83819c9679150314e6b10e8833a226.png"></p><p style="text-align:center;"> </p><p>You have to keep in mind that all of this happens in 3D, therefore the “waves” of photons aren’t circles but spheres. And the area of a sphere is its surface, expressed like this:</p><p style="text-align:center;"><img alt="equation2_area_fixed.png.b682105df13662d" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation2_area_fixed.png.b682105df13662d18dd8fb808afe4232.png"><br><em>(R is the radius of the sphere)</em></p><p> </p><p>If we integrate that surface area in the previous equation:</p><p style="text-align:center;"><img alt="equation3_intensity2_fixed.png.7346b29c3" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation3_intensity2_fixed.png.7346b29c33398bb062787cf4facbc6d7.png"></p><p><span style="line-height:1.6;">With ♥ being a constant number. We can see the Intensity is therefore proportional to the reverse of the square of the distance between the photons and their light origin. </span></p><p style="text-align:center;"><span style="font-size:16px;"><em>So, the further light travels, the lower is its intensity. And the falloff is proportional to the inverse of the square of the distance.</em></span></p><p>Consequently, the corners of our room will get darker, because they are farther away from the light (plus they don’t directly face the light, the angle of incidence is lower than the walls/floor/ceiling).</p><p style="text-align:center;"><img alt="falloff_light_all_directions_result2.png" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/falloff_light_all_directions_result2.png.aca38aebc56cc7a0869d3d5b4d757ec7.png"></p><p>This is what we call the Inverse-Square law, it’s a very well-known behavior of the light in the field of photography and cinema. People have to deal with it to make sure to get the best exposure they can get.</p><p>This law is true when light spreads in all possible directions, but you can also focus light in one direction and reduce the spread, with lenses for example. This is why, when Valve decided to integrate a lighting falloff law in their engine, they decided to use a method not only following the inverse-square law but also giving to mapmakers the opportunity to alter the law for each light entity.</p><p> </p><p><span style="font-size:22px;line-height:35.2000007629395px;">Constant, Linear, Quadratic... Wait, what?</span></p><p>In math, there is a very frequent type of functions, named polynomial functions. The concept is simple, it’s a sum of several terms, like this:</p><p style="text-align:center;"><img alt="equation4_f.png.436b97c4c60318fbe5f7b88b" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation4_f.png.436b97c4c60318fbe5f7b88ba3ff207e.png"></p><p>Every time, there is a constant factor (the “a” thing, a0 being the first one, a1 the second one, a2 the third one...), multiplied with the variable x at a certain degree:</p><ul><li>x^0 = 1 : degree 0</li><li>x^1 = x : degree 1</li><li>x^2 : degree 2</li><li>x^3 : degree 3</li><li>...</li></ul><p>And</p><ul><li>a0 is the constant named “constant coefficient” (associated to degree 0)</li><li>a1 is the constant named “linear coefficient” (associated to degree 1)</li><li>a2 is the constant named “quadratic coefficient” (associated to degree 2)</li></ul><p>Usually, the function has an end, and we call it by the highest degree of x it uses. For example, a <em>“polynomial of the second degree”</em> is written:</p><p style="text-align:center;"><img alt="equation5_f2.png.236d6aa2b373f44ce855a68" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation5_f2.png.236d6aa2b373f44ce855a681dcf26ba1.png"></p><p>Then, if we take the expression from the inverse-square law, which was:</p><p style="text-align:center;"><img alt="equation6_intensity3.png.bdc80a91372c6e0" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation6_intensity3.png.bdc80a91372c6e0204532ec7ff35d0d9.png"></p><p>With a2 = 1 and <strong>D </strong>being the variable of <strong>distance </strong>from the light origin.</p><p>In Source, the constant ♥ is actually the <strong>brightness </strong>(the value you configure <a href="https://www.mapcore.org/uploads/monthly_2015_07/hammer_brightness_value.png.0486a750a80122a72014ba220127f972.png">here</a>).</p><p>It is simply an inverse polynomial of the second degree, with a0 and a1 equal to zero. And we could write it like this:</p><p style="text-align:center;"><img alt="equation7_intensity4.png.260f5c51d5134b6" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation7_intensity4.png.260f5c51d5134b6b85b6a2acfb5f3a76.png"></p><p style="text-align:center;">Or...</p><p style="text-align:center;"><img alt="equation8_intensity5.png.3205f541452db79" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation8_intensity5.png.3205f541452db79c60e55681f6e5b249.png"></p><p>And here you have it! This is approximately the equation used by VRAD to determine the intensity of light for each luxel during the compilation. And you can alter it by changing the values of the 3 variables <strong>constant</strong>, <strong>linear </strong>and <strong>quadratic</strong>, for any of your light / light_spot entity in your level.</p><p>Actually you set proportions of each variable against the other two, and only a percentage for each variable is saved. For example:</p><p style="text-align:center;"><img alt="table1.png.fd580ea156b1484a45382a55b1453" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/table1.png.fd580ea156b1484a45382a55b1453ca9.png"></p><p>Another example:</p><p style="text-align:center;"><img alt="table2.png.4402e418d192d6e6de1ff48255ec2" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/table2.png.4402e418d192d6e6de1ff48255ec231b.png"></p><p>By default, constant and linear are set to 0 and quadratic to 1, which means a 100%quadratic lighting attenuation. Therefore, <strong>by default lights in Source Engine follows the classic Inverse-Square law</strong>.</p><p>If you look at the page dedicated to the constant-linear-quadratic falloff system on <a rel="external" href="https://developer.valvesoftware.com/wiki/Constant-Linear-Quadratic_Falloff">Valve’s Wiki</a>, it’s explained that the intensity of light is boosted by 100 for the linear part of equation and 10 000 for the quadratic part of equation. This is due to the fact that inverse formulas in equations always drop drastically at the beginning, and therefore a light with a brightness of 200 would only be efficient in a distance of 5 units and therefore completely pointless.</p><p style="text-align:center;"><img alt="graph1.png.4cc9ee6c996c891a1aa861ccea004" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/graph1.png.4cc9ee6c996c891a1aa861ccea004e45.png"></p><p>You would have to boost your brightness a lot in hammer to make the light visible, that's what Valve decided to make automatically.</p><p>The following equation is a personal guess of what could be the one used by VRAD:</p><p style="text-align:center;"><img alt="equation9_intensity6.png.64f085b051bfaa5" class="ipsImage" src="https://www.mapcore.org/uploads/monthly_2015_07/equation9_intensity6.png.64f085b051bfaa561ead7e696202456e.png"></p><p style="text-align:center;">With <strong>constant</strong>, <strong>linear </strong>and <strong>quadratic </strong>being percentage values. The blue part is here to determine the<strong> brightness to apply</strong>, allowing to boost the value set in hammer if it is as least partially using linear or quadratic falloff. The orange part is the falloff part of equation, making the brightness attenuation depending of the distance the point studied is from the light origin. </p><p>The best way to see how this equation works is to visualize it in a 2D graph: <br><a style="line-height:22.3999996185303px;" rel="external" href="https://www.desmos.com/calculator/1oboly7cl0">https://www.desmos.com/calculator/1oboly7cl0</a></p><p>This website provides a great way to see 2D graphics associated to functions. On the left, you can find all the elements needed with at first the inputs (in a folder named “INPUTS”), which are:</p><ul><li>a0 is the <strong>Constant </strong>coefficient that you enter in hammer </li><li>a1 is the <strong>Linear </strong>coefficient</li><li>a2 is the <strong>Quadratic </strong>coefficient</li><li>B is the <strong>Brightness </strong>coefficient</li></ul><p>In another folder are the 3 coefficients constant, linear and quadratic, automatically transformed into a percentage form. And finally, the function <strong>I(D)</strong> is the Intensity function depending on the distance <strong>D</strong>. The drawing of the function is visible in the rest of the webpage. </p><p><strong>Try to interact with it!</strong></p><p>This concludes the first part, the second part will come in about two weeks. We will see some examples of application of this <strong>Constant-Linear-Quadratic Falloff system</strong>, and a simpler alternative. We will also see how lighting works on models and dynamic lighting systems integrated in source games.Thank you for reading!</p><p> </p><p style="text-align:center;"><span style="font-size:22px;">Part Two : <a href="https://www.mapcore.org/articles/development/source-lighting-technical-analysis-part-two-r66/">link</a></span></p>
]]></description><guid isPermaLink="false">65</guid><pubDate>Wed, 22 Jul 2015 18:14:00 +0000</pubDate></item><item><title>Making Agency, the popular CS:GO map</title><link>https://www.mapcore.org/articles/development/making-agency-the-popular-csgo-map-r62/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2015_06/thumbnail-agency.jpg.22b6e416bbfb4dd00ab1e1853b2d6a94.jpg" /></p>

<div style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_interior01-1024x640.jpg.d39f4a66222c9c3fdf5938ad08f3b407.jpg"><img data-fileid="4445" class="ipsImage ipsImage_thumbnailed" style="width:800px;border:0px solid #000000;margin:1px;" alt="agency_interior01-1024x640.thumb.jpg.371" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_interior01-1024x640.thumb.jpg.371b819ca1e11a317fa8ed450363a9e7.jpg"></a></div><div><h4><br><span style="font-size:22px;"><span style="font-family:georgia, serif;">What is Agency?</span></span></h4><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Just in case you have never heard of <a rel="external" href="http://store.steampowered.com/app/730/">Counter Strike: Global Offensive</a>, it's a <span style="font-family:georgia, serif;">hugely</span> popular online FPS, successor to Counter Strike: Source and the original Counter Strike. The original came out in 1999 and the core gameplay has remained almost unchanged. Players are split into two teams and challenge each other in various game modes such as Bomb Defusal (one team has to plant and detonate the bomb while the other tries to stop them) and Hostage Rescue (one team must rescue the hostages whilst the other attempts to prevent that). The Bomb Defusal mode is by far the most popular, with maps designed with such detail that players can predict down to the second when another player is due to arrive in a certain area of the level. It's also the only mode played in competitive events and for huge prize money.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">This leaves the poor Hostage Rescue mode sitting on the sidelines twiddling it's thumbs and feeling a little rejected. In part this is because the Hostage Rescue mode is far more of a roleplaying experience, often with very poor odds of success for the team tasked with doing the rescuing. Often the levels are designed in such a way that the defending team has a large positional advantage, where simply staying-put will give them a good chance of winning.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">That's where we can start talking about Agency. Agency is a Hostage Rescue level, created as a collaboration between level designer <a rel="external" href="http://www.patrickmurphy.se/">Patrick Murphy</a>, and myself doing the art. The basic idea being that Hostage Rescue could be just as precise and exciting as Bomb Defusal. It's been included in three official releases from the games creator, Valve, as part of their community level packs: <a rel="external" href="http://blog.counter-strike.net/operationbravo/">Operation Bravo</a>, <a rel="external" href="http://www.counter-strike.net/operationphoenix/">Operation Phoenix</a> and <a rel="external" href="http://www.counter-strike.net/operationbloodhound/">Operation Bloodhound</a>. Phoenix being a community-voted choice, which was especially great to see that players enjoyed the style of gameplay and visuals that Agency brought with it.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">In this article I will go over the process of creating the art, from props to set dressing, texture creation and lighting, while maintaining a visually pleasing aesthetic and serving to enhance the gameplay. This isn't a postmortem but rather a walk-through of the various stages, hopefully to give some ideas to others, with lessons learned both positive and negative.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br><span style="font-size:22px;">Iteration from Whitebox to Final</span></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Starting out you should always have an idea of what you're going to create, even if it is quite vague, as it'll point you in the right direction for both creating architectural spaces and letting your imagination fill in the blanks as you build the basic shapes of the level. We knew we were going to build an office space, but style was leaning towards an older government building with red bricks and musty wood. As I started to put in some basic textures we decided it felt too bland, and similar to other levels in the game. In order to stand out and create something really interesting and intriguing that would entice players to want to explore the level we decided to modernize the space and use white as the primary colour - this would help players see each other more easily and provide a striking visual setting it apart from other levels.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">"Modern Office" is not exactly a style that has a single look, if you search for images you'll get back a lot of contrasting designs and ideas, trying to put every single one of those into a level would create a visual mess with no consistency. It's important to choose the right references for what you are building, something that looks cool in a single image or from a specific location might not fit into the theme of the level, and in a worst-case-scenario it might actually start to detract from the level as a whole. Trying to cram in as much content as possible simply makes your level feel less unified and jarring.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Unfortunately when you are presented with so many fantastic designs and ideas it can be hard to pick out what is important. After settling on the location: a modern advertising agency's office, I broke down the needs of the level into a few different categories:</p><ul><li style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><strong>Area Specific</strong></li><li style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><strong>General Use</strong></li><li style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><strong>Overall Theme</strong></li></ul><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">The Area Specific content is "hero assets" for each location in the level. These are the things that help the player tell different areas apart from each other, a reception desk, a kitchen, a bathroom, etc. Assets that won't be used anywhere else except in their specific location.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/AreaSpecificAssets-436x1024.jpg.cc7e5445daa29fb5ac323bc939703af8.jpg"><img data-fileid="4452" class="ipsImage ipsImage_thumbnailed" alt="AreaSpecificAssets-436x1024.thumb.jpg.db" style="width:319px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/AreaSpecificAssets-436x1024.thumb.jpg.db89c778b808f07507bfb05567ac101d.jpg"></a><br><em>Examples of Area Specific Content</em></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>The General Use content is the backbone of the building, it's wall sockets, ventilation tubes, sprinklers, desks and chairs. The things that could be used anywhere and would blend in to the background and not stand out unless you were specifically looking for them.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/GeneralUseAssets-478x1024.jpg.d4d7745111c02419c8669f939f39e881.jpg"><img data-fileid="4454" class="ipsImage ipsImage_thumbnailed" alt="GeneralUseAssets-478x1024.thumb.jpg.3a84" style="width:350px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/GeneralUseAssets-478x1024.thumb.jpg.3a8473ca7b55d0251a6d8a6d8c255e8c.jpg"></a><br><i>Examples of General Use Content</i></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>The Overall Theme content is what sells the theme of the level to players, advertising boards, company logos, large art installations and so on. These can be used everywhere but sparingly and should only be used as a subtle reminder to the player of where they are thematically. They shouldn't detract from the Area Specific content but should stand out more than the General Use content. This came in the form of abstract paintings, corporate logos, rotating advertisement panels and so on - things that would subtly tie the level together.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Once these categories were laid out, searching through reference images became much simpler as you know what you need and only have to find an interesting design or detail that enhances a specific category.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">This isn't to say that everything was completely planned out or that development was flawless. Sticking to a plan only works until you open the editor, and if you try to force something you'll end up frustrated when it consistently fails to work. As an example we originally had the level set on the ground floor of a tall skyscraper. I spent a few weeks working on content for the ground but never really getting it to feel right within the theme of the level: the contrast between a dirty exterior street section and a spotless interior didn't feel right for the level, and felt a little too similar to another Counter Strike level. Patrick played around with some ideas and tried something I was afraid of: simply deleting everything I had done on the outside and adding an epic city vista. Instantly it felt right. The important thing to take away from this is that just because you have worked on something doesn't mean it's the right thing to be working on, and that getting input from other people with different ideas can vastly improve what you are working on.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_outside_before-1024x576.jpg.bb99c0ca81455a111092189a2e207523.jpg"><img data-fileid="4449" class="ipsImage ipsImage_thumbnailed" alt="agency_outside_before-1024x576.thumb.jpg" style="width:700px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_outside_before-1024x576.thumb.jpg.876661ca1384e4fd33f522d6eb59f400.jpg"></a><br><em>The first mockup of Agency's rooftop exterior</em><br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_outside_after-1024x576.jpg.7a0ade24d67a6f1c34edc0c312132d0e.jpg"><img data-fileid="4448" class="ipsImage ipsImage_thumbnailed" alt="agency_outside_after-1024x576.thumb.jpg." style="width:700px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_outside_after-1024x576.thumb.jpg.756278e005d0dfc2779871b383581d05.jpg"></a><br><i>The same space after an art pass</i></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>Another incredibly important thing I realised is making use of modular assets. If you are going to duplicate something in your particular modelling software you should ask yourself: is this efficient? Chances are you're just making things harder to change later and locking yourself into a particular shape; eg: a walkway has a railing around it, you model the entire railing as a single object. Now if you need to change that walkway a month later you're going to have to go back and change your railing model. It's better to create a smaller tiling mesh that can be used multiple times, as often you'll find you can use that model in other areas and in different ways than you had initially intended. You're simply applying the concept of tiling textures to models, and in the process saving yourself a lot of time.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br><span style="font-size:22px;">A Believable Clean Art Style</span></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Creating a clean environment can often be more difficult and time consuming than a very dirty and cluttered one, simply because any mistakes are magnified by the lack of other objects to disguise them. A room with a single chair in the middle is going to end up with the focus being on that chair, if you fill that room with a hundred chairs you're going to be less concerned with the details of the chair and more worried about why someone would fill a room with a hundred chairs.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">In the modern office setting of Agency it would have made little sense to fill it with props and clutter, but a large empty space would just feel unfinished. A delicate balance of larger architectural shapes and smaller objects was needed. I like to think of this as functional art: it serves a purpose in the lore of the game world. Window and door frames, electrical sockets, thermostats and card swipes along with the maintenance apparatus of ventilation systems. These are the general use objects mentioned earlier, they fill out space and prevent an empty wall or ceiling from actually looking empty and at the same time they contribute to the believability of the level. It's important to think of the infrastructure of the building when placing these assets - if a wall has an air vent on it then the wall needs to be thick enough to support the ventilation pipes that feed it, Card swiping mechanisms need to be placed near doors at the correct height, electrical sockets should be placed logically in areas where they would be of use to the fictional inhabitants of the level and so on.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/functional_details-832x1024.jpg.ac47145975b67a7b9a79071bfcb8c597.jpg"><img data-fileid="4453" class="ipsImage ipsImage_thumbnailed" alt="functional_details-832x1024.thumb.jpg.ae" style="width:609px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/functional_details-832x1024.thumb.jpg.aeca990f7f2a656615dd07f8faf3280b.jpg"></a><br><em>Several examples of functional art details</em></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>One of the most important things to do right when creating clean environments is to get the most out of the materials. It's not possible to cover every surface in dirt or decals, so the surfaces themselves become your way of showing detail.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">For Agency this was achieved by making liberal use of the <a rel="external" href="https://developer.valvesoftware.com/wiki/Phong_materials">phong shading techniques in the Source engine</a> for models, and <a rel="external" href="https://developer.valvesoftware.com/wiki/Cubemaps">cubemaps</a> for world textures. Almost all models in the level have some amount of phong shading, and although it doesn't produce a completely physically accurate result it can be used to create materials and surfaces that look relatively accurate. Simply by increasing or decreasing the intensity of the phong amount allowed for a vast majority of the levels surfaces to be rendered accurately. As I didn't need to have a lot of noisy detail in the materials due to the clean style I simply used a small phong texture as a mask for 75% of the models and let the lighting and general shapes of the models do the rest of the work.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/phong-485x1024.jpg.fb97eb5ff54437d50fd4e79666845d71.jpg"><img data-fileid="4456" class="ipsImage ipsImage_thumbnailed" alt="phong-485x1024.thumb.jpg.b48eb3b62fdd918" style="width:355px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/phong-485x1024.thumb.jpg.b48eb3b62fdd91817af59a16a4a37f78.jpg"></a><br><em>Simple phong shading to mimic real world materials</em></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>As most of the surfaces had a single layer of material, ie paint or coloured metal, the phong shading could be completely even without breaking the illusion; however some of the dirtier surfaces such ventilation tubes and water pipes had several layers: a painted metal surface with area peeled away to reveal with metal underneath or a layer of dust. These had specific masks that would enhance the different materials, and showing wear and tear in the background assets added an extra layer of depth without compromising the clean style.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Most of these textures were created with <a rel="external" href="http://quixel.se/dev/ddo">dDo</a>, an excellent tool for quickly creating textures. I generally started with quite a dirty texture preset and toned down the details and noise until they were barely perceptible surface imperfections.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Agency features probably close to 95% custom art, and that's a lot of work for a single person. Using dDo allowed me to make a lot of content relatively quickly, and kept it all visually consistent.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">The process of creating the assets with dDo was quite simple: first I modeled the basic ingame asset, then did a very quick and dirty placement of edge loops that allowed me to smooth the mesh and get a workable high poly. A very rough normal map was baked (along with a more solid ambient occlusion map), this rough normal map would never make it into the game, it was used purely for texturing with dDo. This rough-and-dirty technique was mostly used on the more general purpose assets that nobody would spend a lot of time looking at. For the objects that were in high traffic areas or that required finer detail a more robust normal map was created.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Tiling textures used throughout the world were <a rel="external" href="http://www.cgtextures.com/index.php">photo-sourced</a> and tiled in Photoshop. A few examples worth pointing out are the plaster wall textures and the marble floors:<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/plasterwall-341x1024.jpg.7dcbc26febf44d0896c5c1884cf36a68.jpg"><img data-fileid="4457" class="ipsImage ipsImage_thumbnailed" alt="plasterwall-341x1024.thumb.jpg.d5549a365" style="width:249px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/plasterwall-341x1024.thumb.jpg.d5549a36509b417d7dd1561047781cc7.jpg"></a></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>The image above shows the ingame result, the diffuse texture, and the normal map of the standard plaster that is used throughout the level. The normal map was authored at 1024x1024 compared to the diffuse texture which was 512x512. I created several colour variations of the diffuse texture and for a very plain surface using a 1024x1024 diffuse didn't make much sense. The final touch was to add a subtle <a rel="external" href="https://developer.valvesoftware.com/wiki/%24envmap">cubemap effect</a> to bring out the normal map and add interesting coloured reflections in various areas.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/marblefloor-341x1024.jpg.2732c6b1781a5788005d1b9e577f9aa3.jpg"><img data-fileid="4455" class="ipsImage ipsImage_thumbnailed" alt="marblefloor-341x1024.thumb.jpg.db5000838" style="width:249px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/marblefloor-341x1024.thumb.jpg.db500083895c5ca00c8d2affa8a117a7.jpg"></a></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>Another example is a marble floor used throughout the level. The normal map is unrealistic in that it portrays an uneven bumpy surface when in fact it is more likely to be uniformly flat. However to break up the reflections and add some visual interest to such a large and empty area I added a subtle bumpy normal map which warps the reflections, but is subtle enough that it doesn't get picked up by the lighting and actually appear like a lumpy mess.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Good shading only gets you part of the way there, however. A poorly scaled model can break immersion instantly, especially when you are trying to create a believable real-world environment. There are <a rel="external" href="https://developer.valvesoftware.com/wiki/Dimensions">tried-and-true metrics</a> for Counter Strike so having a base to work from helped immensely, but these only give you a good starting point or a bounding box for your object. It's important to study real world reference and make sure your object is proportional to the world around it and also to itself. A unit in Hammer is an inch, so having wood that's 2 units thick, or a doorway that is 1.5m wide quickly makes things look wrong.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br><span style="font-size:22px;">Working with Designer Blockouts, and not Destroying Gameplay</span></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Agency was a collaboration, with Patrick doing the design work and me doing the visuals, this meant there was a lot of potential for overlap and working on the same areas, the potential for breaking things was huge.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Often when you create things as an individual you don't have to worry about version control or stepping on someone else's toes, however when you work with other people either for pleasure or business you, as an artist, need to change your mindset. You are not creating a portfolio piece but rather something functional that has to withstand hundreds of hours of real people playing it.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Your first role is to support the designer, and this benefits you as well. By creating the basic structures of the level: doorways, window frames, stairs, railings, cover objects etc, you are allowing them to work with the final assets and tweak gameplay according to those assets. Nothing needs to be finalized instantly, it's better to provide a rough mockup of the intended asset so the designer can play around with it and give feedback on the shape, size and silhouette. Once you are both confident it's going to work they can populate the level with these assets which saves you time in the long run, and once you finalize the model and textures they are going to be updated across the entire level without having to manually replace assets.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">It can be difficult to determine exactly when you should start an art pass, especially when a level is constantly evolving. Rather than sitting idly by whilst Patrick was ironing out the design of the level I started on the creation of a few visual test levels to explore materials, lighting and modular assets. Once the first iterations of Agency were created, with rough shapes for important cover and controlling lines-of-sight. I went in and created an art pass and altered many of these original gameplay ideas, simply experimenting with different shapes and designs for the rooms. We had a constant dialogue and never considered something finalized just because it was finished. Playtests would determine whether an idea was valid or not in a way that speculation can only hope for. The most important lesson learned during this process of constant iteration was that work is very rarely wasted, and it is far more important to stay true to a gameplay ideal than to have an area that looks interesting in a screenshot but utterly fails when players get their hands on it. A box is a box is a box, it is down to you as an artist to imagine how that box can be interpreted within the context of the environment.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_lobby_comparison-819x1024.jpg.325e5c2707b55726a3afbb561dd476fe.jpg"><img data-fileid="4447" class="ipsImage ipsImage_thumbnailed" alt="agency_lobby_comparison-819x1024.thumb.j" style="width:599px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_lobby_comparison-819x1024.thumb.jpg.1c58d2b087c013e399d6dffa2af50ffd.jpg"></a><br><em>Initial art pass ideas for the central area (above) versus the end result (below)</em><br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_reception_comparison-819x1024.jpg.e158769c554553e983193d3efaa76455.jpg"><img data-fileid="4450" class="ipsImage ipsImage_thumbnailed" alt="agency_reception_comparison-819x1024.thu" style="width:599px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_reception_comparison-819x1024.thumb.jpg.756a5ad8183c3ef1598e38c7f1554050.jpg"></a><br><em>Initial art pass ideas for the reception (above) versus the end result (below)</em><br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_tspawn_comparison-819x1024.jpg.33e5d28482065bee88f0fa319f644c19.jpg"><img data-fileid="4451" class="ipsImage ipsImage_thumbnailed" alt="agency_tspawn_comparison-819x1024.thumb." style="width:599px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_tspawn_comparison-819x1024.thumb.jpg.4e63b4ea117bd6708d1609d7cea13984.jpg"></a><br><em>Initial art pass ideas for a hostage (above) versus the end result (below)</em></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br><span style="font-size:22px;">Lighting</span></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">An important part of any environment is the lighting. Too contrasted and moody and it becomes hard to identify players, too bright and monotone and it becomes boring and a strain on the eyes. For Agency I used a series of instanced lighting setups: a model to visualise the light source, a spot light to direct the light, and a sprite or light cone to add a visual effect around the light. Each light setup was unique to the type of model used for the actual light source, ie: all spotlights were identical, all fluorescent lights were identical etc. This meant I could change a single light and have the others update automatically, and always get an accurate result.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Then it was just a case of placing these different types of lights where they logically made sense in the environment, and if an area was too dark an appropriate light source was added, and if an area was too bright lights could be moved around or removed entirely. This made it quite easy to light as everything was guided by reality, which has plenty of reference material, and had the side effect of helping to make the environment more believable. By using various colours on the floor and walls I could direct lights towards them and take advantage of the Source engine's excellent radiosity and spread interesting colours to nearby surfaces.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">In many areas the ceiling was opened up to reveal the sky and to let natural sunlight into the interior spaces, this was done to provide contrast to the electrical lights and to get extra radiosity bounces into the environment. Some areas had lights removed or toned down to allow other more important gameplay areas to stand out, for example the image below shows how the corridor here was darkened both by using darker textures and by using restrained lighting to make the room in the distance appear brighter as this is an area that enemy players will appear from.<br> </p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://www.mapcore.org/uploads/monthly_2015_06/agency_lighting_comparison-910x1024.jpg.6fed9bb93252c96b93d2103e46be219c.jpg"><img data-fileid="4446" class="ipsImage ipsImage_thumbnailed" alt="agency_lighting_comparison-910x1024.thum" style="width:666px;border:0px solid #000000;margin:1px;" src="https://www.mapcore.org/uploads/monthly_2015_06/agency_lighting_comparison-910x1024.thumb.jpg.f047fdf5eeaebe6203f274be10a53453.jpg"></a></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br>This could have been taken even further by possibly using emergency exit signs to add hints of colour to important gameplay areas and chokepoints. A consistent lighting language would have helped guide players during the first few times playing the level. There are some large open spaces that would have benefited from some coloured screens or lighting panels, or possibly making some of the larger glass surfaces tinted, to add a little extra colour and prevent such a monotone look whilst not being over-bearing or detracting from the realistic style of lighting I was aiming for.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><br><span style="font-size:22px;">Final thoughts</span></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">During the course of developing Agency I had a chance to learn a few things and come out the other end a, hopefully, better artist.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><strong>So, what went well?</strong></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">The iteration process never had any hiccups, by using modular content and being prepared to discard ideas and art styles that weren't working we ended up with a better level. If we had tried to force the original idea of a ground-level government office we would have ended up with a completely different level, complete with underground parking lots and elevator shafts. Exciting stuff!</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">The power of iteration cannot be understated, and understanding that a mockup or a blockout of a level is simply a temporary phase that doesn't represent the end result. Areas changed drastically between versions, sometimes due to design requirements, and sometimes of shifts in art style; but each version was better than the last, more refined and polished.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;"><strong>What went less well?</strong></p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">In direct contrast to the statement above, sometimes the iteration interfered with more important tasks. I got stuck on areas trying to get them to work instead of letting them sit for a while and returning to them later. I tried to force an idea for the exterior part of the level and it never felt right and consumed way too much time, when all it took was getting some outside perspective. Luckily during the process I learnt to trust designers when it comes to art, just because they might not build high poly meshes doesn't mean they aren't artistic.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Another problem was building too much content completely unique for an area which meant when we inevitably changed things it became time consuming to shift assets around, and makes it less easy for others to re-use that content without creating an almost replica of the area it was designed for. These unique assets helped sell the realism of the level but made them harder to work with.</p><p style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;font-size:16px;line-height:24px;">Hopefully this has been interesting and insightful!</p></div>
]]></description><guid isPermaLink="false">62</guid><pubDate>Thu, 04 Jun 2015 20:50:00 +0000</pubDate></item></channel></rss>
