Jump to content

Pivac

Members
  • Content Count

    79
  • Joined

  • Last visited

  • Days Won

    1

Reputation Activity

  1. Awesome
    Pivac reacted to Radix for an article, Static Prop Combine in CS:GO   
    Static Prop Combine in Counter-Strike: Global Offensive
    A step by step guide
    thanks to @untor
    What is Static Prop Combine?
    Static prop combine, or informally speaking "autocombine", is a new feature in CS:GO's VBSP.
    It allows VBSP to merge together multiple static props into a single static prop, either automatically or with user-defined rules.

     
    What is static prop combine good for?
    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.
    That's not wrong. But there is a problem:
    In Source, there is one draw call per model per material. And these draw calls are very performance-hungry.
    That's where static prop combine comes into play:
    By combining models sharing the same materials, less draw calls are performed, which greatly helps optimization.
    Valve has stated that Nuke runs 40% faster after they implemented static prop combine.
     
    How do I use static prop combine?
    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 this documentation.
    @untor 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.
    We presuppose that you are already familiar with the creation of props  
    0. Backup your CS:GO folder (optional)
    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.

    1. Source files
    You must have the source files of the models you want to be combined. Usually 3 files for each prop:
    *.qc reference mesh (supported formats are *.smd, *.dmx and *.fbx) physics mesh So if you want to combine props made by you, you should already have these files.
    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.
        
    In this guide we will use two different pipe props:

    You can download the example files here (contains the *.qc and *.smd files) :
    example.zip
     
    Browse to "...\Steam\steamapps\common\content\csgo\"
    Create a folder "models". In our example we have another subfolder "example". Save the model source files there:
     

    These are our QCs:
    pipe_straight.qc
    pipe_curved.qc

    Notes:
    Restrictions for the *.qc:
    Only the first $body is recognized. $model is not recognized. $appendsource and $addconvexsrc are not recognized. You can only use $upaxis Z or Y.  
    2. Compile your props
    Your models have to be compiled from this directory now:
    Open your model compile tool (I use Crowbar)
    Then browse to "...\Steam\steamapps\common\content\csgo\models\example\" and compile the QCs.
    The compiled model files should be in "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\models\props\example\" now.
     
    3. spcombinerules.txt
    Browse to "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\scripts\hammer\spcombinerules\"
     

    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.
    Rename it to "spcombinerules_valve.txt" (or whatever you want) and create a new text file "spcombinerules.txt".
    Then copy and paste the following into "spcombinerules.txt" and save it.
     

    4. Stub QCs
    Stub QCs are QCs which contain a base template for the QCs which static prop combine generates. Generally, they should only include:
    $staticprop $surfaceprop $cdmaterials Any $texturegroups used by the models. Browse to "...\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\scripts\hammer\spcombinerules\qc_templates\".
    In our example we create a new subfolder "example", open it and then create a text file and rename it to "pipe_combine.qc":


    Copy and paste the following into "pipe_combine.qc" and save it:
     
    5. Compile your map
    Add some of our example props to your map in Hammer and compile the map.
    In our example we use the following compile parameters for VBSP
    Compile parameters (full list here) :
    -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.
    -StaticPropCombine_AutoCombine: Automatically generate static prop combine rules for props that VBSP deems should be combined. Note: This does not write to spcombinerules.txt.
    -StaticPropCombine_ConsiderVis: Instead of using the distance limit, combine all props in the group that share visclusters.
    -StaticPropCombine_SuggestRules: Lists models sharing the same material that should be added to spcombinerules.txt.
    -StaticPropCombine_MinInstances <int>: 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.
    -StaticPropCombine_PrintCombineRules: Confirm: Prints the combine rules?
    -StaticPropCombine_ColorInstances: Instances of combined props get colored.
    -KeepSources: Don't delete the autogenerated QCs and unpacked model files after finishing.
    -CombineIgnore_FastReflection: Combine props, even if they have differing Render in Fast Reflections settings.
    -CombineIgnore_Normals: Combine props, even if they have differing Ignore Normals settings.
    -CombineIgnore_NoShadow: Combine props, even if they have differing Disable Shadows settings.
    -CombineIgnore_NoVertexLighting: Combine props, even if they have differing Disable Vertex lighting settings.
    -CombineIgnore_NoFlashlight: Combine props, even if they have differing Disable flashlight settings.
    -CombineIgnore_NoSelfShadowing: Combine props, even if they have differing Disable Self-Shadowing settings.
    -CombineIgnore_DisableShadowDepth: Combine props, even if they have differing Disable ShadowDepth settings.
     
    6. Success?
    The combined props look exactly like the single props. So how can you be sure that the static prop combine process was successful?
    - Once the map is compiled, the combined props will be packed into your *.bsp automatically.
    - 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*\"
    and their QCs in "...\Steam\steamapps\common\content\csgo\models\props\autocombine\*name of your map*\".
    - If you add -StaticPropCombine_ColorInstances to the compile parameters, instances of combined props are colored in CS:GO.
     
    7. Additional notes
    Hammer:


    - You can manually disable static prop combine for individual props with the "Disable Prop Combine" keyvalue.
    - Prop scaling (Uniform Scale Override) is not supported yet (?)
    - 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).
    - 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)
    - Props that differ in the below keyvalues will NOT be combined, unless manually overridden with the appropriate VBSP option:
    Render in Fast Reflections (-combineignore_fastreflection) Ignore Normals (-combineignore_normals) Disable Shadows (-combineignore_noshadows) Disable Vertex lighting (-combineignore_novertexlighting) Disable Flashlight (-combineignore_noflashlight) Disable Self-Shadowing (-combineignore_noselfshadowing) Disable ShadowDepth (-combineignore_disableshadowdepth) - Props that differ in the below keyvalues will NOT be combined:
    Skin Color Disable Flashlight  
    TO DO
    some fps tests with an actual map! which gives better results: " -StaticPropCombine_ConsiderVis" or prop combining based on distances? Is there a console command to display the number of performed draw calls/props? ...  
    ______________________________________________________________________
    Sources:
    https://developer.valvesoftware.com/wiki/Static_Prop_Combine
    https://developer.valvesoftware.com/wiki/QC
    https://developer.valvesoftware.com/wiki/VBSP
     
  2. Like
    Pivac reacted to Radu for an article, 2017: Mapcore's Year in Review   
    (New logo by Yanzl)
    I'm sure that by now most of us have our sleeves rolled up and are ready to tackle yet another year, but before we move forward let's take a moment to look back at what 2017 meant for our community. It was a time of immense growth for both professionals and amateurs alike. A time when everyone seemed to have surpassed their former selves. And without slowing down, some have even managed to land their first job in the industry. I don't know what this new year holds, what challenges to overcome will arise, but I know for certain that I'm excited to see everyone become even greater!
     
    2017: Mapcore's Year in Review
     

    Overwatch - Oasis
    by Phillip K, Bram Eulaers, Helder Pinto and others
     

    Dishonored 2: Death of the Outsider - Curator level
    by electrosheep, kikette and others
     

    Payday 2 - Brooklyn Bank level
    by General Vivi
     

    Sniper Elite 4 - Regilino Viaduct
    by Beck Shaw and others
     

    Counter-Strike: Global Offensive - Offtime
    by Squad
     

    Team Fortress 2 - Shoreleave
    Art pass, props and sound by Freyja
     

    Wolfenstein II: The New Colossus - Farmhouse
    Modeled, textured and composed by BJA
     

    Half-Life 2: Downfall
    by marnamai
     

    Counter-Strike: Global Offensive - Studio
    by ZelZStorm, TanookiSuit3 and Hollandje
     

    Portal 2 - Refraction
    by Stract
     

    Counter Strike: Global Offensive - Breach
    by Yanzl and Puddy
     

    Counter-Strike: Global Offensive - Berth
    by grapen
     

    Counter-Strike: Global Offensive - Kaizen
    by Andre Valera and Jakuza
     

    Counter-Strike: Global Offensive - Asylum
    by Libertines
     

    Half-Life 2: Episode 2 - FusionVille: The Shadow over Ravensmouth
    by Klems
     

    Unreal Engine 4 scene
    by Dario Pinto
     

    Counter-Strike: Global Offensive - Grind
    by The Horse Strangler, `RZL and MaanMan
     

    Counter-Strike: Global Offensive - Aurelia remake
    by Serialmapper
     

    Counter-Strike: Global Offensive - Tangerine
    by Harry Poster
     

    Counter-Strike: Global Offensive - Abbey
    by Lizard and TheWhaleMan
     

    Counter-Strike: Global Offensive - Apollo
    by Vaya, CrTech, Vorontsov, JSadones
     

    Counter-Strike: Global Offensive - Sirius
    by El Exodus
     

    Unreal Engine 4 scene
    by Corvus
     

    Counter-Strike: Global Offensive - Subzero
    by FMPONE
     

    Counter-Strike: Global Offensive - Biome
    by jd40
  3. Like
    Pivac reacted to FMPONE for an article, 2015: Mapcore's Year in Review   
    (Art by Thurnip)
     
    This overview proves how talented our community is. We share, give feedback and learn from one another. Lots of our members have made it into the game industry and continue to make their mark working for high-profile studios. Our articles were shared around the world and our collaborative CS:GO contest was a huge success. We can only conclude that 2015 was again a stellar year for the Core and we are looking forward to an even better 2016!   
     
    2015: Mapcore's Year in Review
    It was a banner year. Here’s a taste of what our community created:

    Temple of Utu by Minos 

    Corridor by JonnyPhive

    Rails by Deh0lise

    Cold Fusion by Rusk

    Half-Life 2 Scene by Psy

    Resort by 'RZL and Yanzl

    Zoo by Squad and Yanzl

    Santorini by FMPONE and Dimsane

    Corridor by RaVaGe

    Seat by penE

    Half-Life 2 UE4 Corridor by PogoP

    Tulip by catfood

    Volcano by 2d-chris

    Chilly UE4 Scene by TheOnlyDoubleF
    Articles
    High-quality original content:






    Grand Prize Winner Announced


    Hurg Smiles Upon You All!
     
     
  4. Like
    Pivac reacted to FMPONE for an article, Reddit + Mapcore CS:GO Mapping Contest Finalists Announced!   
    (Art by Thurnip)
     
    Contest finalists have been chosen!
    Before announcing our finalists, we want to thank everyone for participating and giving your feedback: with over 150 entries, this event has thus far exceeded expectations in every way.
    We strongly considered adding an “honorable mentions” addendum to this announcement, but realized there were simply too many maps which came extremely close to becoming finalists, lacking only one of our “big three” judging criteria components.
     
     
    Now, without futher ado…
     
    THE FINALISTS:
    (in no particular order)
     
    DE_ROYAL
    By Jakuza

    Workshop Link
     
    DE_EMPIRE
    By Andre Valera

    Workshop Link
     
    DE_BOURG
    by Klems

    Workshop Link
     
    DE_COAST
    By Ornate Baboon

    Workshop Link
     
    These exciting levels exhibit competitive potential, excellent visual presentation, AND a satisfying level of polish, making them truly strong representatives for our talented community. As finalists competing for the grand prize, the authors of these levels will be able to update their work based on your feedback, including fine-tuning their competitive layouts using public playtesting over on Reddit. Let's support them on their journey!
    To check out the excellent prizes awaiting our finalists (including money prizes + official Valve merchandise), click here.
     
     
     
    Congratulations, finalists!
    ...but who will be the Grand Prize Winner? Find out September 30th.
     
     
     
     
    P.S. – To all our wonderful participants: don't despair. Level design is an art to be pursued for its own sake, and brilliant work should always be celebrated and studied. Additionally, Valve has consistently supported CS:GO community mapping, and Valve Operations remain a lucrative and thrilling opportunity for community mappers such as yourself. Valve’s criteria for Operations can be found here.
     
    "Never give up." - Hurg

×
×
  • Create New...