Dota 2
362 ratings
Getting Started: Dota 2 Cosmetics
By Wyk
This is the Steam Community port of my guide on my blog for those who cannot access it there.

Here is quick guide that will run you through all the required stuff that will allow you to begin creating your own content for the Dota 2 Store. I will try to keep the guide as detailed and visual as I can so that it will be easy to understand and follow.
Here is quick guide that will run you through all the required stuff that will allow you to begin creating your own content for the Dota 2 Store[]. I will try to keep the guide as detailed and visual as I can so that it will be easy to understand and follow.

This is the duplicate of my guide on my blog for those who cannot access it there.

With that being said, it is understood that you have a basic experience in 3d modeling, animation, texture work and related content. If you do not understand any terminology, please Google it or message me on my Facebook Page or Twitter and I’ll try to help you out.

NOTE: This guide was initially written a long long time ago and quite a few changes have been made to the Dota 2 Workshop since then. I've updated all the important information already but I will keep refining this guide to keep it updated. If I have missed out on something that should be here, please do let me know.
Step 1: Getting Your References
You might be an amazing 3D artist but it is very important that you get reference models from in the game to get started with on creating new content. This will not only make the job much easier for you but also help you design better.

So the first step would be to extract the models / materials / animations and other raw content from inside the game. Valve stores all of their packaged content (never code) under the VPK (Valve PAK) format. If you’re familiar with modding other games from the company, you will be familiar with GCF files. The VPK’s are more or less the successors to these files and can be extracted in the same way the GCF’s were done – using GCFScape[].

Download and install GCFScape. Now visit your Dota 2 folder (C:\Program Files (x86)\Steam\steamapps\common\dota 2 beta\dota) and find the “pak01_dir.vpk” which is the parent extraction file that will rip out all the content from all archives attached to it. Open this file in GCFScape and extract all the content you see to a new location or only the models and materials folder if you only wish to create new cosmetics.

Step 2: Understanding Models and Textures
Now that you have extracted your files, you can see that all your models and materials are now available and can be edited. But there are a couple of things you need to do before you get started on that. The models are stored and packed to be read by the Source Engine and unfortunately you will not be able to edit or modify them directly. So this will require you to decompile the models but that is the next step.

Valve stores all models in the form of MDL files which are more or less packages of SMD files which contain the actual object and the relevant data. It is these SMD’s that you will need to import to a 3d program such as Maya, 3D Studio Max or Blender and work on.

Each MDL file will be accompanied by two other similar named files of the formats VTX and VVD. All the mesh data including information such as the LoD (Level of Detail) for that model are stored in the VTX files while all the data of the vertices that comprise of the model are retrieved from the VVD (Valve Vertex Data) files.

On the other hand, the texture files are stored in the form of VTF (Valve Texture File) and can be extracted into a TGA, PNG or other familiar image formats for editing in Photoshop or other related tools.

Each VTF file is accompanied by a VMT (Valve Material Type) file that contains all the required information for the source engine to define and execute content present in the textures. In the example below, you can see how each of the above MDL packages has it’s own texture file..

Step 3: Decompiling the MDL’s
The next step will be to decompile the MDL’s that we gained from extracting the VPK’s. To do this we need to use one of the Valve suggested decompilers such as the StudioCompiler[].

One of the problems with StudioCompiler is that it is was not designed or upgraded to extract models from the Dota 2 files which are far newer than the program itself. So you will need to tinker the files a little bit to get this program to work with the files we have at hand. It is nothing complicated. Read on to find out how.

After installing the StudioCompiler, it is time to set it up. The program now works independent of Steam but it still makes use of the SDK to actually help decompile the files. Unfortunately there is no Dota 2 SDK available at this point of time so one will have to make do with the Alien Swarm SDK or the CS:GO SDK, both of which are available on Steam. Many do not have access to the CS:GO SDK, so I will make this guide based on the Alien Swarm SDK that you can find in Library > Tools.

NOTE: People have been reporting that the StudioCompiler crashes when they try to browse to the bin folder. If that happens to you, just copy-paste the address of the folder directly instead of browsing to it. Seems like the buttons on this dialog of the compiler are buggy. It should work just fine if you copy-paste the address instead of browsing your way to it.

Once you have your SDK’s installed, open your StudioCompiler. At the top you can find a button called configure. Once you pop that up, you will need to enter the address to the directory where your SDK is present which is primarily what you see in the picture below.

Congrats! You now have the decompiler all set and ready to go. Just one small thing left to do. Remember I mentioned that the compiler was not designed to extract Dota 2 models? The problem is that the compiler cannot read the data of the vertices from the Dota 2 files. So you will need to trick it in to believing that it can. How do we do it?

Go to the folder of the model you wish to extract. I will stick to my Doom Bringer example. Now I wish to extract “Doom.mdl” but the problem is that the vertex data cannot be exported. Like I mentioned earlier all vertex data is stored in the .VTX files. So you will have to look for the file “Doom.dx90.vtx” in the same folder which is the vertex file for my Doom model. All you need to do is change the “.dx90″ to “.dx80″ and your compiler will now be able to edit the extract the models. I will explain this change some other day. For now just blindly do it for every model you wish to extract.

Now that is done, go to the Compiler and use the Decompiler to extract the models. Enter an output directory and press Extract.

Once you have decompiled the files you will gain access to a bunch of SMD model files that can be imported to any 3d program to be played around with. Unfortunately no 3D program comes with default support for SMD files so you will have to get the plugin that will allow you to import these files. I’ll have them linked to you below.

Textures can be exported the same way. Use the StudioCompiler Texture Export tab to load your VTF and export it in the form of a TGA or PNG for editing and further usage.

You can also try to download the models of some of the available and cosmetic-ready heroes from the Workshop[]. Not every hero is available yet here but new heroes are regularly available as they become open for cosmetics. Until then you can still use my guide to extract references.
Step 4: Creating New Content
There is not much for me to tell you here because it is your talent and creativity that has to be put into effect now. But I will give out a little tips that will help you arrange your work flow better.
  • Be sure to stick to the required LoD’s when creating your new models. While high polygon count models are definitely fancy and of higher quality, they are not viable to be implemented in a game.Dota 2 content in particular uses 2 values for the level of detail. One of them is for the models, avatars and other purposes while the second one is for the in-game models themselvs. Preferred LoD values are mentioned below.
  • Items | LoD (promotional) = 500, LoD (in-game) = 250
  • Couriers | LoD (promotional) = 6000, LoD (in-game) = 3000. You will be able to find more detailed LoD quotients for models on their respective character pages on the the Official Dota 2 Website[].
  • Do not stick to it right down to the line but try to be somewhere close so that it is lesser work for Valve to implement it in to the game when you submit your content to the store.
    When you are creating your textures, remember that all models use three texture files to get the job done. The primary being the diffuse map (along with normals) and two masks. The quality that you lose on model design can be compensated with amazing textures.
  • Try to create content that can be easily attached to a bone on the existing rig of the model. While this is definitely not a required condition, it will make life far easier for everyone dealing with it including yourself.
  • Have fun modding!
You can also take at the Texture and Art Guide by Valve that will give you an insight on how it’s done inside their offices and neat tips on the style and flow to maintain when working on your cosmetics.
Step 5: Compiling / Submitting Your Models
You are no longer required to compile your models before submitting to the Workshop. The Dota 2 Importer does this for your automatically.

To get this into motion, the submission system has been slightly modified. You now have options to either submit a wearable item or a completely unique model.

You can use wearable items to submit all the cosmetics you use on existing heroes while the other option can be used for submitting couriers and other unattached objects.

Once you are inside the Publish a Wearable Item tab, you’ll find yourself having a clean set of options that allow you to file-in in very basic formats.

In the first tab, you need to select the hero and slot your item is designed for so that game will know what bone to preview it on. You will also need to assign a filename for your object.

Once this is done, the process gets relatively very simple. You can now upload your model directly in the raw format of either .DMX, .SMD or .FBX which contains the skinned geometry information. You can submit two different versions of the model like mentioned in above– one for in-game and the other for previews and loadouts.

** The submission of the portrait model is optional. In any case that an extra portrait model is not submitted, the basic in-game model will be used for previewing too.

Submission of textures work slightly different. The game requires 4 texture files for any model – a diffuse map, a normal map and two masks which are named relatively. When uploading you will need to choose one of these files and the game will automatically search for the rest of the files in the same folder. You can find complete info on the masks either in the texture guides linked to above or on the Dota 2 Workshop[].

For eg: If I were to upload doom_hell_weapon_diffuse.tga, then the game will automatically try to find _normal.tga, _mask1.tga and _mask2.tga files in the same directory and upload them too.

Disable Texture Filtering – Valve uses the NICE filter that sometimes may cause mipmaps to not maintain texture details. If you find this happening with your textures, be sure to tick this on.

There are certain requirements and guidelines that you need to keep in mind when dealing with cosmetics that have particle effects authored to them by default. You can read all about it here[].

Once your file is submitted, it will be added to the Steam Workshop where other users can get to comment, make suggestions and rate it while Valve takes time to go through it, refine it and see if it is good enough to be implemented to the game. This takes time. So be patient.
Closing Notes
As mentioned above, this guide was written a long time ago and some upgrades were done to the Dota 2 Workshop since then. I have updated it with all the crucial info at the moment when portingit here but I will continue to refine it. You can always buzz me with queries or feedback.

Facebook | Twitter | Reddit

Some Useful Website and Links:
  • Polycount[] - It serves as a great base for Dota 2 Workshop Artists. You'll be able to find so much help there. Be sure to check it out.
  • CGHub[] - Yet another graphic resource that you will find really handy. Extremely talented community that is very helpful.

< >
Andy Gor Mar 6, 2016 @ 11:11am 
Wyk, now the Dota 2 are using the vmdl_c and vmesh_c file, so how can I decompile it?
!"#$%&/(=) Apr 17, 2015 @ 3:57pm 
Иzи.Паник Oct 28, 2014 @ 11:20am 
Отыгрываю " испытание всех героев " из-за каких то причин неисправности подитоживания матча, много героев просто напросто не защитывает, сеолько можно а?
Жду компенсации от Valve.
malcolm.dew Jun 7, 2014 @ 12:07am 

Sandr000 Apr 25, 2014 @ 10:33am 
monsTeR˟ | Reloadin' Dec 15, 2013 @ 4:56pm 
Stinky Socks Nov 28, 2013 @ 2:35am 
sir, I thought you need to have an in-game geometry and texture files to publish your item? but how do this one be submitted?? it looks like an image only? how do I submit Image only??
DTH | KaroT Sep 18, 2013 @ 8:53pm 
thx sir
☛Gokustorm. Sep 9, 2013 @ 3:00pm 
NDOYOLEX Jul 30, 2013 @ 6:48am 
so we can make new item with our hands?