Optimization/Level Design: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
(Maybe add a note about Propper++ here ? The reason is why yes is because it's very easy and quick to use.)
 
(94 intermediate revisions by 35 users not shown)
Line 1: Line 1:
For advanced information on optimizing your map please visit [[http://www.student.kun.nl/rvanhoorn/Optimization.htm zombies Optimizing-page]]
{{LanguageBar|title = Optimization (Level Design) }}
{{Abstract Mapping}}


It's easy to create a map that older (or even newer!) computers will struggle to draw at (or higher than) sixty frames per second. This article is the hub for all information on how to to prevent that by '''optimizing your map'''.


== Areas ==
; [[Leak]]s
:There's no excuse! Leaks will invalidate almost all of your efforts elsewhere.
; [[VIS optimization|Visibility]]
: Reducing the number of surfaces and objects that are drawn in the first place. The single most important area.
; [[Physics optimization|Physics]]
: Various tricks to avoid overloading the CPU with physics calculations.
; [[Material optimization|Materials]]
: Correct material choices will allow your map to scale down its demands on slower computers.
; [[Lighting optimization|Lighting]]
: Performance and file-size optimisation.
; [[Skybox Optimization|Skybox]]
: A properly optimized skybox will significantly reduce lag and map size


NOTE::: I Am so lost on this page its not FUNNY!, how the heck do I add an article! hehe :) Without further delay, I guess this falls under "Optimization" in some way shape or form. Someone feel free to move this for me to a more appropriate spot, eek, SorrY!
== Brushes ==
== A Competitive Gamers Look on MODing ==
; [[Areaportal]]
; [[Hint brush|Hint]] + [[Skip]]
; [[Occluder]]


Hi people, let me first introduce myself,
== Models ==
My name is Mark im 20 years old, I currently am doing a Bachelor of MultiMedia at University here in Australia.
; [[Static Prop Combine]] {{csgobranch|since}}{{also|{{teamspen}}{{h++}}}}
At the age of 17 I was project lead for a HL1 mod, Mututally Assured Destruction, like most HL mods run by a 17 year old, the project collapsed and was never released to the public, dispite so much work going into the project and many playable inhouse betas.
: Maps using large amounts of static props can reduce GPU drawcall overhead by combining individual static props into batches.


After the collapse of the mod, I re-started playing Counter-Strike, which I swore to hate for the rest of my life, here I am today, STILL playing CS 1.6 competitively over Source, many reasons which I wont enduldge on my entry post, perhaps at a later day, but the main point is GAMEPLAY. What i'm going to talk about relates to what you as a developer should look to in terms of GAMEPLAY when designing your mod for the Competitive scene.
== Commands ==
There are many more useful console commands than the ones listed here—find them in their relevant articles.


Firstly, let me talk about the Flashbug,
{{Note|Most performance-related commands require {{Command|sv_cheats}}.}}
For those that don't know what this is, I will explain it.
Many mappers to reduce polys in there map create items such as boxes/trains just one single unit above the map, to reduce polys on the map, HOWEVER, in doing so, they open up one of the most frustrating bugs to ever hit the competitive scene, the flashbug, If a flashbug is thrown under that one unit under the crate, the flash will flash the entire room, no matter what stance you are in, the simple solution is obviously not to throw a flash there, however the most common time this is done is on de_nuke going into ramp room, every match over 100 flashbangs are thrown at that crate, not to try and flashbug it, but to genuinely throw a flash into that room.


Whilst i'm sure that your mod may not have flashbangs so this bug doesnt mean anything to you, it is a perfect example of Gameplay over a map design technique which floods the game with bugs.
; {{Command|cl_showfps}}
: A simple output of framerate. <code>1</code> is real-time, <code>2</code> is averaged over the past second, while also displaying the lowest and highest FPS, aswell the latency.
; [[showbudget|ShowBudget]]
: A panel which displays how your computer is spending its [[budget]] for each frame. It's the premier tool for working out exactly what's sucking up performance in your map.
: It's invoked with <code>+showbudget</code> and <code>-showbudget</code>, which means that you can bind the former to a key (e.g., {{Code|bind <key> +showbudget}}) and it will only appear when you hold that button down.
; {{Command|mat_leafvis}}
: A console variable that (when active) displays visleaves. The number of the leaf, area and cluster of the current leaf is reported in the console.
; {{Command|mat_wireframe}}
: A console variable that lets you see exactly what is being rendered - for reasons described in [[visibility optimization]], often more than you might think is sensible.
; {{Command|r_lockpvs}}
: Locks the [[PVS]] so you can walk around and inspect what is being drawn.


I can not stress to you enough game testing, SURE, its great for you and your team, and some of your mates that you love and have begged for your beta for 6 months now to test it, but you need a REAL game testing group, not just a bunch of people that can top score a pub server either.
== External links ==
To the competitive scene Public players are the scum of the Earth, they get what they want because there a majority, and there REALLY REALLY bad at the game, most changes that are made for the competitive scene arnt even NOTICED by the pub players, and even if they do, they dont care or understand for its meaning.
* [http://www.nodraw.net/2009/12/optimization-in-source-a-practical-demonstration/ Optimization in Source: A Practical Demonstration] - Pictorial demonstrations of optimization by [http://www.nodraw.net NoDraw.net]
 
* [http://www.shamusyoung.com/twentysidedtale/?p=4759 The Truth About The BSP] - Step-by-step explanation on BSP and its application by Twenty-Sided
My advice to you is to pick 4 dedicated clans from another game on the same engine to test your mod and give you feedback,
* [https://www.mapcore.org/articles/development/displacement-vs-func_detail-a-comparative-fps-study-r73/ Displacement Vs. Func_detail - A comparative fps study] by Will2K on MapCore
They will pick up gameflaws that you didnt even imagine were possible, inbalances in the wepaonry which you didnt consider, and bugs that exploit the game so bad that you hadnt even thought of.
[[Category:Level Design]]
A great place to try and recruit your gametesters is
Http://www.gotfrag.com
Which is the heart of competitive gaming in America.
Listen to there feedback carefully, as they are the true gamers that you want to be playing your game.
 
Thank you, depending upon the feedback, I may write more, I have alot in my head about many many topics,

Latest revision as of 13:17, 4 February 2025

English (en)Deutsch (de)Français (fr)Русский (ru)中文 (zh)Translate (Translate)
Abstract Mapping series Discuss your thoughts - Help us develop the articles or ideas you want

Ammunition | List of HL2 Animals and Creatures | Mapping with Antlions | Beams and Lasers | Cables and Ropes | Moving Clouds | Color Theory in Level Design | Combat | Combine | Compression (Source 1) | Doors | Dust, Fog, & Smoke | Elevators | Level Transitions | Environmental Lighting, Sun, Weather, & Outdoors | Explosions | Fire | Half-Life 2 Foliage | Glass & Windows | Headcrab | Health | Ladders | Lighting | Optimization (level design) | Physics | Retinal scanners | Sound and Music | Special effects | Terrain | Trains | Turrets | Water | Weapons | Zombie

It's easy to create a map that older (or even newer!) computers will struggle to draw at (or higher than) sixty frames per second. This article is the hub for all information on how to to prevent that by optimizing your map.

Areas

Leaks
There's no excuse! Leaks will invalidate almost all of your efforts elsewhere.
Visibility
Reducing the number of surfaces and objects that are drawn in the first place. The single most important area.
Physics
Various tricks to avoid overloading the CPU with physics calculations.
Materials
Correct material choices will allow your map to scale down its demands on slower computers.
Lighting
Performance and file-size optimisation.
Skybox
A properly optimized skybox will significantly reduce lag and map size

Brushes

Areaportal
Hint + Skip
Occluder

Models

Static Prop Combine (in all games since CS:GO engine branch)(also in TeamSpen's Hammer AddonsHammer++)
Maps using large amounts of static props can reduce GPU drawcall overhead by combining individual static props into batches.

Commands

There are many more useful console commands than the ones listed here—find them in their relevant articles.

Note.pngNote:Most performance-related commands require sv_cheats.
cl_showfps
A simple output of framerate. 1 is real-time, 2 is averaged over the past second, while also displaying the lowest and highest FPS, aswell the latency.
ShowBudget
A panel which displays how your computer is spending its budget for each frame. It's the premier tool for working out exactly what's sucking up performance in your map.
It's invoked with +showbudget and -showbudget, which means that you can bind the former to a key (e.g., bind <key> +showbudget) and it will only appear when you hold that button down.
mat_leafvis
A console variable that (when active) displays visleaves. The number of the leaf, area and cluster of the current leaf is reported in the console.
mat_wireframe
A console variable that lets you see exactly what is being rendered - for reasons described in visibility optimization, often more than you might think is sensible.
r_lockpvs
Locks the PVS so you can walk around and inspect what is being drawn.

External links