<?xml version="1.0"?>
<rss version="2.0"><channel><title>Articles: Articles</title><link>https://www.mapcore.org/articles/tutorials/?d=1</link><description>Articles: Articles</description><language>en</language><item><title>Customizing the loading screen for your map in CS:GO</title><link>https://www.mapcore.org/articles/tutorials/customizing-the-loading-screen-for-your-map-in-csgo-r120/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2022_03/thumbnail.png.998ddeae3ba65adafb7141d7d38037f5.png" /></p>
<p>
	<font><span style="font-size:26px;"><strong>Introduction</strong></span><br />
	<span style="font-size:14px;">Have you ever looked at Valve's map loading screens and can't figure out how they added those damn icons, backgrounds, and more? This article will provide some information about it.</span></font><br />
	<br />
	<span style="font-size:14px;">A <a href="https://github.com/redesaile/csgo-dungeon" rel="external nofollow">repository</a> on <span>Github</span> that will allow you to better understand the location of the files.</span><br />
	<br />
	<span style="font-size:10px;"><strong><img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f4cb.png" class="ipsEmoji" alt="📋"></strong></span><span style="font-size:14px;"><strong> Note:</strong> Text surrounded by arrows indicates what needs to be entered here. Arrows should not be written, it is only necessary for a more convenient understanding of important elements. For example, instead of <span style="color:#c0392b;">&lt;mapname&gt;</span>.png I will write de_dust2.png</span><br />
	<span style="font-size:10px;"><strong><img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f4cb.png" class="ipsEmoji" alt="📋"></strong></span><span style="font-size:14px;"><strong> Note:</strong> Spoiler blocks replaces code blocks</span>
</p>

<p>
	<br />
	<font><span style="font-size:26px;"><strong>Background</strong></span><br />
	The loading screen uses PNG images as background. You need to create two images, where the first image will be have resolution 640x360 and the second will be have 1920x1080. After creation, you need to put the images in these paths<span style="font-size:14px;">:</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<font><strong>640x360</strong><br />
			../Counter-Strike Global Offensive/csgo/materials/panorama/images/map_icons/screenshots/360p/<span style="color:#c0392b;">&lt;mapname&gt;</span>.png <br />
			<br />
			<strong>1920x1080</strong><br />
			../Counter-Strike Global Offensive/csgo/materials/panorama/images/map_icons/screenshots/1080p/<span style="color:#c0392b;">&lt;mapname&gt;</span>.png</font>
		</p>
	</div>
</div>

<p>
	<br />
	<font><span style="font-size:26px;"><strong>Radar</strong></span><br />
	<span style="font-size:14px;">Loading screen uses default radar file. If you want to use some image instead of the radar that the player should not see on the map (for example, a screenshot of the map with heroes, as is done in some of Valve's cooperative maps), then you should use heights that will hide the unnecessary image somewhere in 32 thousand units from the zero point of the map.<br />
	<br />
	In the already created TXT file of the radar, we prescribe this code that adjusts the high-altitude images:</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<font><span style="font-size:14px;">"verticalsections"</span><br />
			<span style="font-size:14px;">{</span><br />
			<span style="font-size:14px;">    "default" <span style="color:#999999;">// &lt;mapname&gt;_radar.dds</span></span><br />
			<span style="font-size:14px;">    {</span><br />
			<span style="font-size:14px;">            "AltitudeMax" "<span style="color:#c0392b;">&lt;valueMax&gt;</span>"<br />
			            "AltitudeMin" "<span style="color:#c0392b;">&lt;valueMin&gt;</span>"</span><br />
			<span style="font-size:14px;">    }</span><br />
			<span style="font-size:14px;">    "<span style="color:#c0392b;">&lt;sectionname&gt;</span>" <span style="color:#999999;">// &lt;mapname&gt;_&lt;sectionname&gt;_radar.dds (you can create multiple sections)</span></span><br />
			<span style="font-size:14px;">    {</span><br />
			<span style="font-size:14px;">        "AltitudeMax" "<span style="color:#c0392b;">&lt;valueMax&gt;</span>"<br />
			        "AltitudeMin" "<span style="color:#c0392b;">&lt;valueMin&gt;</span>"</span><br />
			<span style="font-size:14px;">    }</span><br />
			<span style="font-size:14px;">}</span></font>
		</p>
	</div>
</div>

<p>
	The final version of the files needed for the radar:
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-size:14px;"><strong>Configuration</strong><br />
			../csgo/resource/overviews/<span style="color:#c0392b;">&lt;mapname&gt;</span>.txt</span><br />
			<br />
			<strong><span style="font-size:14px;">Default Radar, Loading Screen</span></strong><br />
			<span style="font-size:14px;">../csgo/resource/overviews/<span style="color:#c0392b;">&lt;mapname&gt;</span>_radar.dds</span><br />
			<br />
			<strong><span style="font-size:14px;">High-Altitude Image</span></strong><br />
			<span style="font-size:14px;">../csgo/resource/overviews/<span style="color:#c0392b;">&lt;mapname&gt;</span>_<span style="color:#c0392b;">&lt;sectionname&gt;</span>_radar.dds</span><br />
			<br />
			<strong><span style="font-size:14px;">For Spectators</span></strong><br />
			<span style="font-size:14px;">../csgo/resource/overviews/<span style="color:#c0392b;">&lt;mapname&gt;</span>_radar_spectate.dds</span>
		</p>
	</div>
</div>

<p>
	<br />
	<strong>The problem with vertical sections of the radar</strong><br />
	<font><span style="font-size:14px;">If the sections contain the same values in AltitudeMax and AltitudeMin, then the game just crashes without any messages. The same values can only be in one of the parameters!<br />
	<br />
	Problem code example:</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-size:14px;">"aim_underground_build1"<br />
			{<br />
			    "material" "overviews/aim_underground_build1"<br />
			    "pos_x" "-1688.000000"<br />
			    "pos_y" "1328.000000"<br />
			    "scale" "1.930000"<br />
			    "verticalsections"<br />
			    {<br />
			        "default"<br />
			        {<br />
			            "AltitudeMax" "10000"<br />
			            "AltitudeMin" "5000"<br />
			        }<br />
			        "layer0"<br />
			        {<br />
			            "AltitudeMax" "5000"<br />
			            "AltitudeMin" "160"<br />
			        }<br />
			        "layer1"<br />
			        {<br />
			<span style="color:#c0392b;">            </span>"AltitudeMax" "160"</span><br />
			<span style="font-size:14px;">            "AltitudeMin" "-10"<br />
			        }<br />
			        "layer2"<br />
			        {<br />
			<span style="color:#c0392b;">            </span><span style="color:#999999;">// The problem is that layer1 has the same parameters</span><br />
			<span style="color:#c0392b;">            "AltitudeMax" "160"<br />
			            "AltitudeMin" "-10"<br />
			        }</span><br />
			    <span style="color:#c0392b;">}<br />
			}</span></span>
		</p>
	</div>
</div>

<p>
	<span style="font-size:14px;">Correct code example:</span>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-size:14px;">"aim_underground_build1"<br />
			{<br />
			    "material" "overviews/aim_underground_build1"<br />
			    "pos_x" "-1688.000000"<br />
			    "pos_y" "1328.000000"<br />
			    "scale" "1.930000"<br />
			    "verticalsections"<br />
			    {<br />
			        "default"<br />
			        {<br />
			            "AltitudeMax" "10000"<br />
			            "AltitudeMin" "5000"<br />
			        }<br />
			        "layer0"<br />
			        {<br />
			            "AltitudeMax" "5000"<br />
			            "AltitudeMin" "160"<br />
			        }<br />
			        "layer1"<br />
			        {<br />
			            "AltitudeMax" "160"<br />
			            "AltitudeMin" "-10"<br />
			        }<br />
			        "layer2"<br />
			        {<br />
			            <span style="color:#27ae60;">"AltitudeMax" "-10"<br />
			            "AltitudeMin" "-10000"<br />
			        }<br />
			    }<br />
			}</span></span>
		</p>
	</div>
</div>

<p>
	<br />
	<font><span style="font-size:26px;"><b>Title</b></span><br />
	<span style="font-size:14px;">I tried to find a file that regulates the names of official maps, but nothing came of it. For now, the name depends on the Steam Workshop and some sort of Valve magic file.</span></font>
</p>

<p>
	<br />
	<font><span style="font-size:26px;"><strong>Map icon</strong></span><br />
	<span style="font-size:14px;">The loading screen uses SVG for the map icon. Valve uses Adobe illustrator to create and export the svg.</span><br />
	<br />
	<span style="font-size:14px;"><strong>Export your svg</strong></span><br />
	<span style="font-size:14px;">You need to create a document with the resolution you want (Valve use 35x35 or 80x80), create your nice gamemode/map icon, and then save it (File &gt; Save As) to this path:</span><br />
	<span style="font-size:14px;">"../Counter-Strike Global Offensive/csgo/materials/panorama/images/map_icons/map_icon_&lt;mapname&gt;.svg"</span><br />
	<br />
	<span style="font-size:14px;"><strong>Settings for the Save As panel</strong></span><br />
	<span style="font-size:14px;">SVG Profiles: SVG 1.1</span><br />
	<strong><span style="font-size:14px;">Fonts:</span></strong></font><br />
	• Type: SVG<br />
	• Subsetting: None (Use System Fonts)<br />
	<font><span style="font-size:14px;"><strong>Advanced Option:</strong></span></font><br />
	• CSS Properties: SVG<br />
	• Decimal Places: 3<br />
	• Encoding: Unicode (UTF-8)<br />
	• Addaptive SVG / Responsive: Disabled
</p>

<p>
	 
</p>

<p>
	<font><span style="font-size:26px;"><strong>Description</strong></span><br />
	<span style="font-size:14px;">Go to the map folder and create a blank TXT there and name it with the BSP name, for example: de_dust2.txt</span><br />
	<br />
	<span style="font-size:14px;"><strong>Adding an official command with a list of authors</strong></span><br />
	<span style="font-size:14px;">Open an TXT file and write code like this:</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#e53935;"><span style="font-size:14px;">COMMUNITYMAPCREDITS:</span></span><br />
			<span style="font-size:14px;">THE OWL<br />
			Garry<br />
			Robert<br />
			Box<br />
			<br />
			RGB</span>
		</p>
	</div>
</div>

<p>
	<img alt="CommunityMapCredits01.png.d92f7d911bf4f7a524de90fd03504f4b.png" class="ipsImage ipsImage_thumbnailed" data-fileid="29214" data-ratio="65.51" width="345" src="https://www.mapcore.org/uploads/monthly_2022_03/CommunityMapCredits01.png.d92f7d911bf4f7a524de90fd03504f4b.png" /><br />
	<br />
	<font><span style="font-size:14px;"><strong>Using HTML syntax</strong></span><br />
	<span style="font-size:14px;">You can use the html syntax without COMMUNITYMAPCREDITS, but I am giving an example with this command.</span><br />
	<br />
	<span style="font-size:14px;">Open an TXT file and write code like this (</span></font><span style="font-size:14px;">Use HEX or RGB for colors)</span><font><span style="font-size:14px;">:</span></font>
</p>

<div class="ipsSpoiler" data-ipsspoiler="">
	<div class="ipsSpoiler_header">
		<span>Spoiler</span>
	</div>

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:#e53935;"><span style="font-size:14px;">COMMUNITYMAPCREDITS:</span></span><br />
			<span style="font-size:14px;"><span style="color:#e53935;">&lt;b&gt;</span>THE OWL<span style="color:#e53935;">&lt;/b&gt;</span></span><br />
			<span style="font-size:14px;">Garry</span><br />
			<span style="font-size:14px;"><span style="color:#e53935;">&lt;font </span><span style="color:#f39c12;">color</span>=<span style="color:#91b859;">"rgb(255,255,0)"</span><span style="color:#e53935;">&gt;</span>Robert<span style="color:#e53935;">&lt;/font&gt;</span></span><br />
			<span style="font-size:14px;"><span style="color:#e53935;">&lt;font </span><span style="color:#f39c12;">color</span>=<span style="color:#91b859;">"#00FFFF"</span><span style="color:#e53935;">&gt;</span>Box<span style="color:#e53935;">&lt;/font&gt;</span></span>
		</p>

		<p>
			<span style="font-size:14px;"><span style="color:#e53935;">&lt;font</span><span style="color:#2980b9;"><span style="font-size:14px;"> </span></span><span style="color:#f39c12;">color</span>=<span style="color:#91b859;">"rgb(255,0,0)"</span><span style="color:#e53935;">&gt;</span>R<span style="color:#e53935;">&lt;/font&gt;&lt;font</span><span style="color:#2980b9;"><span style="font-size:14px;"> </span></span><span style="color:#f39c12;">color</span>=<span style="color:#91b859;">"rgb(0,255,0)"</span><span style="color:#e53935;">&gt;</span>G<span style="color:#e53935;">&lt;/font&gt;&lt;font</span><span style="color:#2980b9;"><span style="font-size:14px;"> </span></span><span style="color:#f39c12;">color</span>=<span style="color:#91b859;">"rgb(0,0,255)"</span><span style="color:#e53935;">&gt;</span>B<span style="color:#e53935;">&lt;/font&gt;</span></span>
		</p>
	</div>
</div>

<p>
	<img alt="CommunityMapCredits02.png.6edc3957ec9770b279da3e9f61133be7.png" class="ipsImage ipsImage_thumbnailed" data-fileid="29215" data-ratio="63.66" width="344" src="https://www.mapcore.org/uploads/monthly_2022_03/CommunityMapCredits02.png.6edc3957ec9770b279da3e9f61133be7.png" />
</p>

<p>
	 
</p>

<p>
	<span style="font-size:26px;"><font><strong>Final result</strong></font></span><br />
	<img alt="FinalResult01.png.944bfd47ce01907e0a62c620f69c6c5f.png" class="ipsImage ipsImage_thumbnailed" data-fileid="29216" data-ratio="75.00" width="1200" src="https://www.mapcore.org/uploads/monthly_2022_03/FinalResult01.png.944bfd47ce01907e0a62c620f69c6c5f.png" /><br />
	<br />
	<img alt="FinalResult02.png.f7c09d09d8e8775dade1e8bb37c1c214.png" class="ipsImage ipsImage_thumbnailed" data-fileid="29217" data-ratio="75.00" width="1200" src="https://www.mapcore.org/uploads/monthly_2022_03/FinalResult02.png.f7c09d09d8e8775dade1e8bb37c1c214.png" />
</p>

<p>
	<font><span style="font-size:14px;"><strong>Tags for search engines:</strong> Counter-Strike: Global Offensive, csgo, cs, mini-map.</span></font>
</p>
]]></description><guid isPermaLink="false">120</guid><pubDate>Fri, 18 Mar 2022 15:56:56 +0000</pubDate></item><item><title>Static Prop Combine in CS:GO</title><link>https://www.mapcore.org/articles/tutorials/static-prop-combine-in-csgo-r111/</link><description><![CDATA[
<p style="text-align:center;">
	<img alt="spc_header.png.849b454905c458e59dac78c81f6a4201.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22611" data-ratio="16.67" width="1200" src="https://www.mapcore.org/uploads/monthly_2019_10/spc_header.png.849b454905c458e59dac78c81f6a4201.png" /></p>

<p style="text-align:center;">
	<span style="font-size:36px;"><strong>Static Prop Combine in Counter-Strike: Global Offensive</strong></span>
</p>

<p style="text-align:center;">
	<span style="font-size:24px;"><strong>A step by step guide</strong></span><br /><span style="font-size:16px;">thanks to <a contenteditable="false" data-ipshover="" data-ipshover-target="https://www.mapcore.org/profile/31536-untor/?do=hovercard" data-mentionid="31536" href="https://www.mapcore.org/profile/31536-untor/" rel="">@untor</a></span>
</p>

<p>
	<span style="font-size:20px;"><strong>What is Static Prop Combine?</strong></span>
</p>

<p>
	<span style="font-size:16px;"><em>Static prop combine, or informally speaking "autocombine", is a new feature in CS:GO's VBSP.<br />
	It allows VBSP to merge together multiple static props into a single static prop, either automatically or with user-defined rules.</em></span>
</p>

<p>
	<img alt="prop_combine.png.9320d8a89bb30d8d286a9f61daa498e5.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22612" data-ratio="50.00" width="1024" src="https://www.mapcore.org/uploads/monthly_2019_10/prop_combine.png.9320d8a89bb30d8d286a9f61daa498e5.png" /></p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>What is static prop combine good for?</strong></span><br /><span style="font-size:16px;">Static prop combine is another feature to optimize your maps. Most people might think that "the less geometry rendered the better". So if you use small props, it's easier to hide what is not visible.<br />
	That's not wrong. But there is a problem:<br />
	In Source, there is <strong>one draw call per model per material</strong>. And these draw calls are very performance-hungry.<br />
	That's where static prop combine comes into play:<br />
	By combining models sharing the same materials, less draw calls are performed, which greatly helps optimization.<br />
	Valve has stated that Nuke runs 40% faster after they implemented static prop combine.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>How do I use static prop combine?</strong></span><br /><span style="font-size:16px;">The static prop combine feature was added in 2016 with the release of the reworked de_nuke. But since then it was not (?) used by community mappers, there are no (?) guides on the Internet except <a href="https://developer.valvesoftware.com/wiki/Static_Prop_Combine" rel="external nofollow">this documentation</a>.<br /><span><a contenteditable="false" data-ipshover="" data-ipshover-target="https://www.mapcore.org/profile/31536-untor/?do=hovercard" data-mentionid="31536" href="https://www.mapcore.org/profile/31536-untor/" rel="">@untor</a></span> helped me to make static prop combine feature do its job. So we decided that it's time to publish a step by step guide how to use static prop combine.</span>
</p>

<ul><li>
		<span style="color:#c0392b;"><span style="font-size:16px;">We presuppose that you are already familiar with the creation of props</span></span>
	</li>
</ul><p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>0. Backup your CS:GO folder (optional)</strong></span><br /><span style="font-size:16px;">We do not take responsibility for any damage done to your files. So it's time to backup your game files now if you have not already. In general we recommend to duplicate your "Counter-Strike Global Offensive" folder, so you can use a separate installation of CS:GO for mapping while keeping the other one clean for playing.</span>
</p>

<p>
	<br /><span style="font-size:20px;"><strong>1. Source files</strong></span><br /><strong><span style="font-size:16px;">You must have the source files of the models you want to be combined. </span></strong><span style="font-size:16px;">Usually 3 files for each prop: </span>
</p>

<ul><li>
		<span style="font-size:16px;">*.qc</span>
	</li>
	<li>
		<span style="font-size:16px;">reference mesh (supported formats are *.smd, *.dmx and *.fbx)</span>
	</li>
	<li>
		<span style="font-size:16px;">physics mesh</span>
	</li>
</ul><p>
	<span style="font-size:16px;">So if you want to combine props made by you, you should already have these files.<br />
	If you want to combine props made by Valve, you will need to decompile them first. And then change the names - otherwise, the version of the prop that is packed in the VPK would overwrite your version.<br />
	    <br /><strong>In this guide we will use two different pipe props:</strong></span>
</p>

<p>
	<img alt="single_props.png.f7995a2573a5693fda9b5ca837f72dc7.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22613" data-ratio="50.00" width="1024" src="https://www.mapcore.org/uploads/monthly_2019_10/single_props.png.f7995a2573a5693fda9b5ca837f72dc7.png" /></p>

<p>
	<span style="font-size:16px;"><strong>You can download the example files here </strong>(contains the *.qc and *.smd files) <strong><span>:</span></strong></span>
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="22623" href="https://www.mapcore.org/applications/core/interface/file/attachment.php?id=22623" rel="">example.zip</a>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><strong>Browse to "...\Steam\steamapps\common\content\csgo\</strong>"<br />
	Create a folder "models". In our example we have another subfolder "example". <strong>Save the model source files there:</strong></span><br />
	 
</p>

<p>
	<img alt="source_files.png.75852e01893bfa32660049205b1162f2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22614" data-ratio="33.33" width="768" src="https://www.mapcore.org/uploads/monthly_2019_10/source_files.png.75852e01893bfa32660049205b1162f2.png" /></p>

<p>
	<strong><span style="font-size:16px;">These are our QCs:</span></strong>
</p>

<p>
	<strong><span style="font-size:16px;">pipe_straight.qc</span></strong>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			<strong><span style="color:#2980b9;"><span style="font-size:16px;">$modelname         "props\example\pipe_straight.mdl"<br />
			$staticprop<br />
			$body "pipe_straight"    "pipe_straight_reference.smd"<br />
			$surfaceprop         "metal"<br />
			$cdmaterials         "models\props\de_nuke\hr_nuke\metal_pipe_001"<br />
			$collisionmodel     "pipe_straight_physics.smd" { $concave }<br />
			$sequence "idle"    "pipe_straight_reference.smd"</span></span></strong>
		</p>
	</div>
</blockquote>

<p>
	<strong><span style="font-size:16px;">pipe_curved.qc</span></strong>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			<strong><span style="color:#2980b9;"><span style="font-size:16px;">$modelname         "props\example\pipe_curved.mdl"<br />
			$staticprop<br />
			$body "pipe_curved"    "pipe_curved_reference.smd"<br />
			$surfaceprop         "metal"<br />
			$cdmaterials         "models\props\de_nuke\hr_nuke\metal_pipe_001"<br />
			$collisionmodel     "pipe_curved_physics.smd" { $concave }    <br />
			$sequence "idle"    "pipe_curved_reference.smd"</span></span></strong>
		</p>
	</div>
</blockquote>

<p>
	<br /><span style="font-size:16px;">Notes:<br />
	Restrictions for the *.qc:</span>
</p>

<ul><li>
		<span style="font-size:16px;">Only the first $body is recognized.</span>
	</li>
	<li>
		<span style="font-size:16px;">$model is not recognized.</span>
	</li>
	<li>
		<span style="font-size:16px;">$appendsource and $addconvexsrc are not recognized.</span>
	</li>
	<li>
		<span style="font-size:16px;">You can only use $upaxis Z or Y.</span>
	</li>
</ul><p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>2. Compile your props</strong></span><br /><span style="font-size:16px;">Your models have to be compiled from this directory now:<br />
	Open your model compile tool (I use <a href="https://steamcommunity.com/groups/CrowbarTool" rel="external nofollow">Crowbar</a>)<br /><strong>Then browse to "...\Steam\steamapps\common\content\csgo\models\example\" and compile the QCs.</strong><br />
	The compiled model files should be in "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\models\props\example\" now.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>3. spcombinerules.txt</strong></span><br /><span style="font-size:16px;"><strong>Browse to "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\scripts\hammer\spcombinerules\"</strong></span>
</p>

<p>
	 
</p>

<p>
	<img alt="spcombinerules.png.2bbf124abc6857afa2057ab6e3770041.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22621" data-ratio="16.67" width="768" src="https://www.mapcore.org/uploads/monthly_2019_10/spcombinerules.png.2bbf124abc6857afa2057ab6e3770041.png" /><br /><span style="font-size:16px;">There you will find "spcombinerules.txt". In this file the combine rules for Valves props are defined. It is a standard KeyValues-formatted text file. Each entry follows the format below.<br />
	Rename it to "spcombinerules_valve.txt" (or whatever you want) and create a new text file "spcombinerules.txt".</span>
</p>

<p>
	<strong><span style="font-size:16px;">Then copy and paste the following into "spcombinerules.txt" and save it.</span></strong>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			<strong><span style="color:#2980b9;"><span style="font-size:16px;">"combine rules"<br />
			{<br />
			    "pipe_combine"<br />
			    {<br />
			        // this is a stub qc that will be used to generate combined models<br />
			        "qc_template_path"    "scripts/hammer/spcombinerules/qc_templates/example/pipe_combine.qc"<br />
			        <br />
			        // max models per cluster using these peers<br />
			        "cluster_limit" 24<br />
			        <br />
			        // don't cluster models greater than this far apart<br />
			        "distance_limit" 500</span></span></strong>
		</p>

		<p>
			<strong><span style="color:#2980b9;"><span style="font-size:16px;">        // these are models that can combine with each other<br />
			        "peers"<br />
			        {<br />
			            "models/props/example/pipe_straight.mdl" ""<br />
			            "models/props/example/pipe_curved.mdl" ""<br />
			        }<br />
			    }<br />
			}</span></span></strong>
		</p>
	</div>
</blockquote>

<p>
	 
</p>

<p>
	<br /><span style="font-size:20px;"><strong>4. Stub QCs</strong></span><br /><span style="font-size:16px;">Stub QCs are QCs which contain a base template for the QCs which static prop combine generates. Generally, they should only include:</span>
</p>

<ul><li>
		<span style="font-size:16px;">$staticprop</span>
	</li>
	<li>
		<span style="font-size:16px;">$surfaceprop</span>
	</li>
	<li>
		<span style="font-size:16px;">$cdmaterials</span>
	</li>
	<li>
		<span style="font-size:16px;">Any $texturegroups used by the models.</span>
	</li>
</ul><p>
	<span style="font-size:16px;"><strong>Browse to "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\scripts\hammer\spcombinerules\qc_templates\".</strong><br />
	In our example we create a new subfolder "example", open it and then <strong>create a text file and rename it to "pipe_combine.qc":</strong></span><br /><br /><img alt="stub_qc.png.4d07aa575196d1414e4a63e7bfa8b42f.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22615" data-ratio="16.67" width="768" src="https://www.mapcore.org/uploads/monthly_2019_10/stub_qc.png.4d07aa575196d1414e4a63e7bfa8b42f.png" /></p>

<p>
	<strong><span style="font-size:16px;">Copy and paste the following into "pipe_combine.qc" and save it:</span></strong>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			<span style="color:#2980b9;"><strong><span style="font-size:16px;">$staticprop<br />
			$surfaceprop     "metal"</span></strong></span>
		</p>

		<p>
			<span style="color:#2980b9;"><strong><span style="font-size:16px;">$cdmaterials    "models\props\de_nuke\hr_nuke\metal_pipe_001\"<br />
			$texturegroup     metal_pipe<br />
			{<br />
			        { "metal_pipe_001" }<br />
			}</span></strong></span>
		</p>
	</div>
</blockquote>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>5. Compile your map</strong></span><br /><span style="font-size:16px;"><strong>Add some of our example props to your map in Hammer and compile the map.</strong><br />
	In our example we use the following compile parameters for VBSP</span>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			<span style="font-size:16px;"><span style="color:#2980b9;"><strong>-staticpropcombine -staticpropcombine_mininstances 3 -keepsources -game $gamedir $path\$file</strong></span></span>
		</p>
	</div>
</blockquote>

<p>
	<span style="font-size:16px;"><strong>Compile parameters</strong> (full list <a href="https://developer.valvesoftware.com/wiki/VBSP" rel="external nofollow">here</a>) <span>:</span></span>
</p>

<p>
	<em><span style="font-size:16px;">-StaticPropCombine: Merges static props together according to the rules defined in scripts/hammer/spcombinerules/spcombinerules.txt. This lowers the number of draw calls, increasing performance. It can also be used to lower the number of static props present in a map.<br />
	-StaticPropCombine_AutoCombine: Automatically generate static prop combine rules for props that VBSP deems should be combined.</span><span style="font-size:16px;"> Note: This does not write to spcombinerules.txt.<br />
	-StaticPropCombine_ConsiderVis: Instead of using the distance limit, combine all props in the group that share visclusters.<br />
	-StaticPropCombine_SuggestRules: Lists models sharing the same material that should be added to spcombinerules.txt.<br />
	-StaticPropCombine_MinInstances &lt;int&gt;: Set the minimum number of props in a combine group required to create a combined prop. Tip:Valve had this set to 3 for the new Dust 2.<br />
	-StaticPropCombine_PrintCombineRules: Confirm: Prints the combine rules?<br />
	-StaticPropCombine_ColorInstances: Instances of combined props get colored.<br />
	-KeepSources: Don't delete the autogenerated QCs and unpacked model files after finishing.<br />
	-CombineIgnore_FastReflection: Combine props, even if they have differing Render in Fast Reflections settings.<br />
	-CombineIgnore_Normals: Combine props, even if they have differing Ignore Normals settings.<br />
	-CombineIgnore_NoShadow: Combine props, even if they have differing Disable Shadows settings.<br />
	-CombineIgnore_NoVertexLighting: Combine props, even if they have differing Disable Vertex lighting settings.<br />
	-CombineIgnore_NoFlashlight: Combine props, even if they have differing Disable flashlight settings.<br />
	-CombineIgnore_NoSelfShadowing: Combine props, even if they have differing Disable Self-Shadowing settings.<br />
	-CombineIgnore_DisableShadowDepth: Combine props, even if they have differing Disable ShadowDepth settings.</span></em>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>6. Success?</strong></span><br /><span style="font-size:16px;">The combined props look exactly like the single props. So how can you be sure that the static prop combine process was successful?<br />
	- Once the map is compiled, the combined props will be packed into your *.bsp automatically.<br />
	- If you add -keepsources to the compile parameters, you can also find the combined props in "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\models\props\autocombine\*name of your map*\"<br />
	and their QCs in "...\Steam\steamapps\common\content\csgo\models\props\autocombine\*name of your map*\".<br />
	- If you add </span> <em><span style="font-size:16px;">-StaticPropCombine_ColorInstances</span></em> <span style="font-size:16px;"> to the compile parameters, instances of combined props are colored in CS:GO.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>7. Additional notes</strong></span>
</p>

<p>
	<span style="font-size:16px;"><strong>Hammer:</strong></span><br /><img alt="keyvalues.png.d790dd8ff542fda7acf63d3ab445c5cb.png" class="ipsImage ipsImage_thumbnailed" data-fileid="22616" data-ratio="88.55" width="664" src="https://www.mapcore.org/uploads/monthly_2019_10/keyvalues.png.d790dd8ff542fda7acf63d3ab445c5cb.png" /></p>

<p>
	<br /><span style="font-size:16px;">- You can manually disable static prop combine for individual props with the "Disable Prop Combine" keyvalue.<br />
	- Prop scaling (Uniform Scale Override) is not supported yet (?)<br />
	- If the original props don't have a collision model, you will have to set collisions to "Not Solid" in the properties. Otherwise the combined prop will be solid (automatically generated collision mesh; causes problems).<br />
	- If the props differ in specific keyvalues, in most cases the default (e.g. Alpha) or the higher value will be used (e.g. fade distances)<br />
	- Props that differ in the below keyvalues will NOT be combined, unless manually overridden with the appropriate VBSP option:</span>
</p>

<ul><li>
		<span style="font-size:16px;">Render in Fast Reflections (-combineignore_fastreflection)</span>
	</li>
	<li>
		<span style="font-size:16px;">Ignore Normals (-combineignore_normals)</span>
	</li>
	<li>
		<span style="font-size:16px;">Disable Shadows (-combineignore_noshadows)</span>
	</li>
	<li>
		<span style="font-size:16px;">Disable Vertex lighting (-combineignore_novertexlighting)</span>
	</li>
	<li>
		<span style="font-size:16px;">Disable Flashlight (-combineignore_noflashlight)</span>
	</li>
	<li>
		<span style="font-size:16px;">Disable Self-Shadowing (-combineignore_noselfshadowing)</span>
	</li>
	<li>
		<span style="font-size:16px;">Disable ShadowDepth (-combineignore_disableshadowdepth)</span>
	</li>
</ul><p>
	<span style="font-size:16px;">- Props that differ in the below keyvalues will NOT be combined:</span>
</p>

<ul><li>
		<span style="font-size:16px;">Skin</span>
	</li>
	<li>
		<span style="font-size:16px;">Color</span>
	</li>
	<li>
		<span style="font-size:16px;">Disable Flashlight</span>
	</li>
</ul><p>
	 
</p>

<p>
	<span style="font-size:20px;"><strong>TO DO</strong></span>
</p>

<ul><li>
		<span style="font-size:16px;">some fps tests with an actual map!</span>
	</li>
	<li>
		<span style="font-size:16px;">which gives better results: " -StaticPropCombine_ConsiderVis" or prop combining based on distances?</span>
	</li>
	<li>
		<span style="font-size:16px;">Is there a console command to display the number of performed draw calls/props?</span>
	</li>
	<li>
		...
	</li>
</ul><p>
	 
</p>

<p>
	<span style="font-size:16px;">______________________________________________________________________<br /><em>Sources:<br /><a href="https://developer.valvesoftware.com/wiki/Static_Prop_Combine" rel="external nofollow">https://developer.valvesoftware.com/wiki/Static_Prop_Combine</a><br /><a href="https://developer.valvesoftware.com/wiki/QC" rel="external nofollow">https://developer.valvesoftware.com/wiki/QC</a><br /><a href="https://developer.valvesoftware.com/wiki/VBSP" rel="external nofollow">https://developer.valvesoftware.com/wiki/VBSP</a></em></span>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">111</guid><pubDate>Wed, 09 Oct 2019 14:11:52 +0000</pubDate></item><item><title>Creating your own 4wayblend material with Danger Zone style grass</title><link>https://www.mapcore.org/articles/tutorials/creating-your-own-4wayblend-material-with-danger-zone-style-grass-r110/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2022_03/thumb01-4wayblend-part2.png.3c1bb5f3716c599620232bb4b3489543.png" /></p>
<p>
	<span style="font-size:20px;"><strong>Cre</strong></span><span style="font-size:20px;"><strong>ating a custom grass variant for the Danger Zone</strong></span>
</p>

<ol>
	<li>
		<span style="font-size:14px;">Open your </span><a href="http://nemesis.thewavelength.net/?p=26" rel="external nofollow">GCFScape</a> <span style="font-size:14px;">and after open </span>pak01_dir.vpk<span style="font-size:14px;"> in "</span>Counter-Strike Global Offensive/csgo" go to "materials/hr_massive" and found there broken_road_1_4wayblend_1.vmt. Extract that file into your materials folder, for example: "../csgo/materials/my_project_folder", and rename it, example: <span style="font-size:14px;">my_custom_4wayblend_material.vmt</span>.<br />
		 
	</li>
	<li>
		<span style="font-size:14px;">Go back to pak01_dir.vpk and find the detailsprites_survival.vmt file in "materials/detail", then extract it to "../csgo/materials/detail"</span><br />
		<span style="font-size:10px;"><strong><img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f4cb.png" class="ipsEmoji" alt="📋"></strong></span><span style="font-size:14px;"><strong> Note:<span style="color:#e67e22;"> </span></strong>Rename "detailsprites_survival.vmt", for example: "detailsprites_test.vmt".</span><br />
		 
	</li>
	<li>
		<span style="font-size:14px;">Open the extracted file and delete the lines below to remove the texture that controls the density of the grass.</span>
		<blockquote class="ipsQuote" data-ipsquote="">
			<div class="ipsQuote_citation">
				Quote
			</div>

			<div class="ipsQuote_contents">
				<p>
					<span style="font-size:14px;">$worldspacetint "detail/test_massive9_grass_tint"<br />
					$worldspacetype "detail/test_massive9_grass_type"</span>
				</p>
			</div>
		</blockquote>
		<img alt="Screenshot_91.png.6cd9e819c8cc81adac17903e41aa058d.png" class="ipsImage ipsImage_thumbnailed" data-fileid="21964" data-ratio="33.94" width="819" src="https://www.mapcore.org/uploads/monthly_2019_08/Screenshot_91.png.6cd9e819c8cc81adac17903e41aa058d.png" /><br />
		 
	</li>
	<li>
		<span style="font-size:14px;">Go to "../Counter-Strike Global Offensive/csgo"<strong> </strong>and find there<strong> </strong>detail.vbsp<strong>. </strong>Open it (You can use <a href="https://notepad-plus-plus.org/download/v7.7.1.html" rel="external nofollow">Notepad++</a>)<strong> </strong>and find there the cluster<strong> </strong>"survival_grass_2"<strong>. </strong>Copy that and paste after that cluster, but with new name, for example: survival_grass_theowl.</span><br />
		<span style="font-size:14px;">Find line (inside the cluster) "associated_material" "detail\detailsprites_survival" and replace "detail\detailsprites_survival" to your custom texture which you created recently. Example: </span>"associated_material" "detail\detailsprites_mycustommap")<br />
		<img alt="Screenshot_92.png.6c85c4bb8b4e1ee5672b1d4ae97d7298.png" class="ipsImage ipsImage_thumbnailed" data-fileid="21965" data-ratio="36.47" width="521" src="https://www.mapcore.org/uploads/monthly_2019_08/Screenshot_92.png.6c85c4bb8b4e1ee5672b1d4ae97d7298.png" /><br />
		 
	</li>
	<li>
		<span style="font-size:14px;">Inside your custom vmt file ("my_custom_4wayblend_material.vmt") you should replace %detailtype survival_grass_2 to %detailtype &lt;your name of cluster inside detail.vbsp&gt;", for example: %detailtype survival_grass_theowl</span><br />
		<img alt="Custom 4WayBlend .vmt file" class="ipsImage ipsImage_thumbnailed ipsAttachLink_image" data-fileid="21963" data-ratio="75.43" style="width:818px;height:auto;" width="818" src="https://www.mapcore.org/uploads/monthly_2019_08/Screenshot_90.png.98ce4d53ed35cfdf31cd9ba87c992ffa.png" />
	</li>
</ol>

<p>
	<span style="font-size:20px;"><strong>Links</strong></span><br />
	• <span style="font-size:14px;"><a href="https://nemstools.github.io/pages/GCFScape-Download.html" rel="external nofollow">GCFScape</a></span><br />
	• <span style="font-size:14px;"><a href="https://gira-x.github.io/VMT-Editor/" rel="external nofollow">VMT Editor</a></span><br />
	• <span style="font-size:14px;"><a href="https://notepad-plus-plus.org/download/v7.7.1.html" rel="external nofollow">Notepad++</a></span>
</p>
]]></description><guid isPermaLink="false">110</guid><pubDate>Fri, 23 Aug 2019 17:46:06 +0000</pubDate></item><item><title>Using official 4wayblend materials from Danger Zone</title><link>https://www.mapcore.org/articles/tutorials/using-official-4wayblend-materials-from-danger-zone-r109/</link><description><![CDATA[
<p><img src="https://www.mapcore.org/uploads/monthly_2022_03/thumb01-4wayblend-part1.png.8269e942932cd3ebc9ba49e4dae714c6.png" /></p>
<p>
	<span style="font-size:20px;"><strong>First connection with Mapcore</strong></span><br />
	<strong>Hello!</strong> On Mapcore for the first time, so I don’t know if you write something like that here. In general, I recently encountered a problem I had been thinking about for a long time, and the solution was the simplest...<br />
	<br />
	4wayblend textures stumped me and I didn't understand how to work with them. Since I could not find any articles about this issue, I decided to write about them.
</p>

<p>
	<br />
	<span style="font-size:20px;"><strong>Connecting and using grass sprites on your map</strong></span><br />
	<span style="font-size:14px;">In order for 4wayblend textures to use grass, you must write the path to these details in the <strong>Map Properties </strong>(The path you must follow is shown below).<br />
	<br />
	Find the <strong>Map </strong>menu on the top panel in Hammer World Editor &gt; Further <strong>Map Properties</strong> &gt; Property Name <strong>Detail material file</strong> &gt; Set the value of <strong>Detail material file</strong> to <strong>detail/detailsprites_survival</strong>.<br />
	<br />
	<strong>List of Danger Zone values for Detail material file:</strong></span><br />
	• <span style="font-size:14px;">detail/detailsprites_survival [dz_blacksite]</span><br />
	• <span style="font-size:14px;">detail/dust_massive_detail_sprites [dz_sirocco]</span><br />
	<br />
	<img alt="screenshot01-base.png.e7e163d065931365ae9091976e68d994.png" class="ipsImage ipsImage_thumbnailed" data-fileid="29202" data-ratio="53.04" width="1054" src="https://www.mapcore.org/uploads/monthly_2022_03/screenshot01-base.png.e7e163d065931365ae9091976e68d994.png" /><br />
	<br />
	<span style="font-size:14px;">To set the grass to the material, use "<strong>Paint Alpha</strong>" in the Displacement settings, but be aware that the official materials are governed by a mask that will not allow you to set the grass manually, more on that in <a href="https://www.mapcore.org/articles/tutorials/dz_blacksite-info-about-use-4wayblend-textures-2-r110/" rel="">another thread</a>.<br />
	If you are using a mask and are experiencing performance troubles due to grass, click "<strong>Invert Alpha</strong>" to remove the already placed grass.</span>
</p>

<p>
	<br />
	<span style="font-size:20px;"><strong>Let's start blending</strong></span><br />
	<span style="font-size:14px;">Go to the settings "<strong>Displacement</strong>" and select there "<strong>Sculpt</strong>"<strong>,</strong> then find the button "<strong>Blend</strong>" and there select the desired texture.<br />
	<br />
	<strong>Blending control:</strong></span><br />
	• [<span style="font-size:14px;">Left mouse button</span><u><span style="font-size:14px;">]</span></u><span style="font-size:16px;text-align:left;"> – </span><span style="font-size:14px;">Apply selected texture.</span><br />
	• [<span style="font-size:14px;">Ctrl<u>]</u> + [Left mouse button<u>]</u> </span><span style="font-size:16px;text-align:left;">– </span><span style="font-size:14px;">Remove selected texture.</span><br />
	• [<span style="font-size:14px;">Right mouse button] + Mouse movement left or right </span><span style="font-size:16px;text-align:left;">– </span><span style="font-size:14px;">Resize blending area.</span><br />
	<br />
	<span style="font-size:10px;"><strong><img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f41e.png" class="ipsEmoji" alt="🐞"></strong></span><span style="font-size:14px;"><strong> <span style="color:#e74c3c;">Bug:</span> </strong>If the camera mode in 3D view is set to "3D Shaded Textured Polygons", then you will not see the drawn part of the texture. Camera mode should be set to "3D Textured" when drawing (fixed in <a href="https://ficool2.github.io/HammerPlusPlus-Website/" rel="external nofollow">Hammer++</a>).</span><br />
	<img alt="screenshot02-base.png.bbee5ffd686185f7f676ff9096730811.png" class="ipsImage ipsImage_thumbnailed" data-fileid="29204" data-ratio="56.52" width="1200" src="https://www.mapcore.org/uploads/monthly_2022_03/screenshot02-base.png.bbee5ffd686185f7f676ff9096730811.png" />
</p>

<p>
	<span style="font-size:14px;"><strong><a href="https://www.mapcore.org/articles/tutorials/creating-your-own-4wayblend-material-with-danger-zone-style-grass-r110/" rel="">Creating your own 4wayblend material with Danger Zone style grass →</a></strong></span>
</p>
]]></description><guid isPermaLink="false">109</guid><pubDate>Sat, 13 Jul 2019 11:15:25 +0000</pubDate></item></channel></rss>
