Due to the succes of the original guide, and after writing up some more guides, starting of streaming effort by a bunch of contributors and as a mean to encourage some people to create their own Dota 2 items i'm bringing you this Guide on the creation of your own Dota 2 items Revision 2. Now includes more text, more screenshots, videos, examples, Steam support and minor tweaks and fixes.
You can also follow me on twitch[www.twitch.tv] or twitter for regular updates and streams.
Rate and leave your comment, hope this helps.
In this tutorial we're going to create an item for Dota 2 from scratch. First of all you’ll need some 3D software, like 3Dsmax, Maya or Blender. Some image editing software like Photoshop or Gimp. And a bunch of little neat plugins, but more on that later. This is bare minimum of software that is required for you to create something. In addition to that we're going to use Zbrush, Corel Painter, xNormal and Crazybump.
First thing we should do is that we should create concept for our item. This will help you out immensely on all levels, from defining your lines and shapes to figuring out fine details. I’m creating a weapon for Naga Siren as the wave of her items has passed.
Naga wields curved swords, so first of all i got some references on that, and after combining my original thought of seawave themed weapon with some neat curved swords I’ve matched the size to fit original weapon.
Google a lot for things you want your weapon to look like, the more stuff you'll find, better your concept will be, because you can learn how the real stuff is made and you can mix and combine a lot of details together. Make sure to not directly copy existing things or concepts, but rather create your own thing by combining the ideas in your head and applying it in your concepts.
Your concept doesn’t have to be super detailed, but it will be better if your concept shows silhouette, volume, feel and the theme of your item. Rotate it around and see how it looks from different angles, does it go well with the original weapon in looks and size? Defining color will help you later on the texturing stage. As well as allowing you to define volume with shadows and highlights. Don't spend too much time concepting, as it will definitely look a bit different in 3D, but if 2d painting is your strong side, you can go crazy and add some detailing and texture work directly in your concept so you can reuse it later when texturing. I kinda suck at painting, so my concept looks kinda flat, but it gives me an idea of how the item will look, i have the rest of it in my head.
Preparing the scene
With concepting done we should head to the Dota 2 Workshop requirements page[www.dota2.com], check out Naga Siren requirements and download her model. Naga Siren requirements for weapon gives us lots of room for nice details both texture and polygon wise. So times you should check if your concept can fit into the texture or triangle requirement, because you can't model big chain in 200 tris or have some crazy detail on 128x256 texture map.
After you’ve downloaded Naga Sirens model and unpacked it, it’s time to import her weapon into your 3D program of choice. I use 3Dsmax, and to import anything there, you’ll need some extensions first. Download and install SMD Importer for 3Dsmax (and here’s SMD Importer for Maya and SMD Importer for Blender), it’s super easy, just follow the instructions on the page.
After you’ve installed it, unpacked your Naga Siren assets, you can import it now!
Just agree with everything for now. You can use some of these functions later, if you want to insert skeleton or mesh separately.
And voila! It’s in the viewport.
But we should hide it for now, because we’re starting on the blade mesh. Deselect the mesh, Right-click on the viewport and press "Hide Unselected", this will hide all the bones and the mesh.
First, you should position your concept in your scene, so you could model around it. Some folks use textured plane as the backdrop, i just use “viewport background” function. Right click on the viewports third title and select "Viewport Background" And we're set for modelling!
Preparing the Basemesh
After we've added our concept in the scene we will have to create our basemesh which we will be using for sculpting later on. It's advised that you learn 3D basics on your own, by watching countless tutorials on youtube or reading books, but in this tutorial we will try to cover some basics.
What i did is i created a primitive box with some additional edges on the sides and using extrude function just extruded some stuff along the lines of my concept. This will help us with sculpting as it will subdivide while keeping our flow.
Note: After welding you can find some edges are stuck inside the mesh, this can break you subdivision in sculpting and well add to the tris count, so you should watch out for those. If you think there are some faces stuckinside, just hide the outer shell and check inside.
Next we're goin to modify out mesh further by welding the sharp edges and creating some form on our mesh by using the flow we established.
I like only half of the model, so i deleted the other half and cloned it. As you can see, our basemesh is pretty close to the concept as it is now. Don’t hold back on your base mesh, tris count and optimization will come much later, just form away your base mesh.
After some tweaking like extruding the part of the handle, we export our base mesh as .OBJ and start sculpting.
Mostly people use Zbrush or Mudbox for their sculpting, but you can use your software of choice. Sculpting allows you to model with ease, and after you’re done you can bake most of the maps you’ll use for easier texturing.
Importing our sword into Zbrush is easy, just press the import button on the right, if you're using defaul UI (if you don't, you probably already know where the import button is :D)
After that you just need to drag across the viewport and your base model is in! Zbrush is a powerful tool and after some research and reading you can skip bunch of steps and start right away in Zbrush (they can also retopo and texture all in there!), but we're going to work simple in this guide and keep to sculpting.
I strongly recommend making your mesh symmetrical (that's why our basemesh has some additional edges on the sides), that will save you twice the texture space and half the sculpting.
Because our meshflow was really close to the concept, and we didn't hold back when creating the basemesh, our subdivision will be pretty clean which we want , so our bakes will come out clean.
First thing we do is changing our matcap from red wax. We do this, because red wax will lie to you about the depth and shape of your model a lot. This will have an impact on your bakes, as cleaner sculpt will produce cleaner bakes.
I’ve decided to drop guardstraps, redefined some lines, but overall it’s pretty close to the original. Now it’s time to add some detailing. While our concept is pretty clean, we could always add some wear, natural metal noise and improve the definiton. But don’t overdo it, some wear is nice, but you don't want to go into battle with a dull blade.
Now it’s time to export! Just press the export button on the right, where the import button is. After exporting your high poly and lowpoly (go to the lowest subdivision level (press Shift+D a few times) and export it) import your lowpoly back into Max and delete half of the model along the symmetry axis we used.
Optimization and Mapping
No we’ll map it! Now is the best time to optimize and decide if we want something changed!. Thankfully my model fits the requirements and i even got some tris left! (You can check your face count by right-clicking your model and selecting Object properties.)
532! While the tris limit is 800. So we’ve got some to spare! I’ve decided to optimize some stuff like removing unneeded loops and sharpening some edges. I've also added a strap near the guard, to fully use Nagas original weapon silhouette. And make it closer to the concept.
Now we're goin to add some smoothing groups to our weapon for easier unwrapping and to improve the look. We can also use them for baking, but it's generally better to bake without them, as it can create some unwanted results.
To create a smoothing group we select bunch of faces we want and assign them a smoothing group by clicking on the button with the smoothing group number. You can blend smoothing groups by assigning two or more groups on one face.
And after some minor tweaks and couple of smoothing groups it looks like this. Way better!
There are bunch of mapping tutorials for every 3D software out there, just google "UV mapping" and you’ll get bunch of tutorials even on Youtube.
While mapping, remember that you should use less space for the parts of the model that will be rarely seen, like the handle. And place your seams where they’re hard to spot, like on the natural edges or between the parts of the geometry like on the edge of the handle and the blade. Use mirroring as much as possible(that's why we mirrored our model), this will allow you to keep your textures sharp even in the confined space of Dota textures.
So after running the UVW Mapping modifier, we select everything and press "flatten by the smoothing groups" in the Explode section and it will map the stuff according to the smoothing groups we used.
That's pretty usefull, especially on the hard surface stuff. let's grab the handle, pull it aside and go to the Tools menu, and find "Relax..." there. After relaxing our handle i more than ready!
Now we're going to select the parts we want to map together, i think big parts of the balde should be mapped together, while the individual parts can be mapped separately. We're going to select groups we want and iron them. In the end we're going to have 4 big uv islands.
After placing all of my uv islands i notice that there's some space left. I've also remembered that we have polys to spare, so I've also added a strap near the guard, to fully use Nagas original weapon silhouette, and make the weapon closer to the concept. And now our map looks like this:
After we’re done mapping, we disconnect the ribbon (because i'm going to bake it separately), mirror the blade (don't forget to weld!) and export it, ready for baking.
Baking and Texturing
Once again, there’re bunch of ways to bake your stuff, i use xNormal[www.xnormal.net]. Neat little tool that will allow you to bake your maps from the highpoly to the lowpoly. it’s pretty easy, just watch some instructional videos. You just need to pick highpoly, lowpoly and select which maps you want to bake. I bake AO, Bent Normal and Normal map.
After baking those 3 maps, we’re going to get us spec and displacement map using CrazyBump[www.crazybump.com]
Load up the normal map in Crazybump[www.crazybump.com]. We're going to get displacement map with 50 Enhance detail and specularity with the detail to the max.
Then we're going to drop it all in Photoshop.
You'll want blank Background, put your AO bake on top with the Multiply mode, Then choose which of the bent normal channels you want, we picked COLOR for this one. And dropped it on top of our AO as multiply. Then we're going to add our displacement map as 20% soft light and specular map as 100% Overlay.
You can also bake point light map in 3Dsmax, but for this model we don't really need it. After setting all of our baked maps in the file we're going to drop some colors on the Background layer. I'm going to sample them from my concept.
After we added the base color you may notice that our texture looks a bit dirty. That's because our baked maps are grayscale, and when you multiply greyscale on a color it usually produces dirty colors. So what we want to do is select out bent normal layer, go to Adjustment -> Gradient map and it'll color our map with the selected colors. I'm going to add some reddish tint on it.
Now with our base colors laid out it's time to bring the texture to our painting software of choice. if you're using Photoshop, just stay there. I’m using Corel Painter for most of my paintovers. And it really works with the painted look of Dota 2. We're going to draw fake highlights and shadows. We're also going to smooth some weird parts of the bake we're getting on our spec layer. Don't be afraid to use big brushes, your texture will be downscaled 4 times and all those details will smooth out ingame.
After we're done with our manual adjusting to the base colors, and our normals are already baked, let's create masks. Easist way to create masks is to check out the original ones.
As you can see, metal parts of Nagas original weapon are heavily using metalness maks (blued channel of mask 1), have high specular (red channel of mask 2), max rimlight (green channel of mask 2) and max specular by base color, this way your specular will be tinted with the texture (blue channel of mask 2). Alpha of mask 2 Has higher values on the sharper part of the blade and lower on the rest of the metal parts. This map modifies the softness of your specular highlights. With that cleared out, let's create our own maps!
Lucky for us, our metal part is mostly yellow, so what we do is we select our main color on the background layer and using that selection as a basis for our mask. We use it to fill the metalness mask, specular mask and everything else. Let's see:
After we're done with our texture we still have to make lod1 to be able to import our item ingame. For that we're goin to get out model and start to remove edges. Note that lod1 is used when you can’t really see the item clearly, so don’t be afraid to smooth out some details, just keep the overall silhouette intact.
Our model is 734 tris after some tweaks ans adding the ribbons, which is still under the limit, but lod 1 is 450, so we'll have to cut down! You may want to start by detaching the ribbons and deleting hald of your mesh, so you can just clone the optimized half later.
Don't forget your unwrapping when optimizing, because mindless edge deletion can ruin your texturemapping and will leave you with undesirable seams.
You can simplify the curves, flat lines, dents and small details, you won't see them from the default Dota 2 camera angle.
After we're done with both our models we need to skin them to the bones and export them, so we could test them ingame. Most of the weapons are skinned to one bone and it usually specified on the requirements page of the selected hero.
For Naga it's "sword_R" bone, so we're going to use that. But wait, Naga weapons also have ribbon tails, if we will skin it all to one bone, they will be stiff. Yes, so that means that we need to skin the ribbon to the special bones the original ribbon use. And that is "ropeR" bones. We can either skin ribbon and the weapon together, or we can detach the ribbon, skin the weapon to the sword_R bone. Do this by using Skin modifier, select it, then press Add and select the desired bone,and it will be autoskinned, very usefull if you're skinning to just one bone.
For the ribbon though we'll have to do some more. First of all we'll want to add all the bones we want to use. That is ropeR_R0C0, ropeR_R1C0, ropeR_R2C0. Max will make it's best to skin them automatically, but it'll be a stiff rig, so what we want is to smooth out the weights. Press on the edit envelopes button and check Vertices checkbox. What we can do now is either use paint weights to add blending or use weight table to manually set the weights. Either way works, so just pick one.
After that we want to do just one thing. After you're done blending the weights, add the sword_R bone to the ribbon skinning. It won't assign any vertices to that bone, so we'll have to select the vertices that are in contact with our sword, go to the weight table and give them 1 weight. Do this by holding ctrl and clicking in the table.
Now that our sword is rigged we export it as smd, repeat those steps for lod 1, export it and we're firing up Dota 2!
Now that our textures and models are finished lets start up our Dota 2, fo to the store tab, then workshop and select "Publish new submission" and press on the "Wearable item" button.
Select the hero (Naga), select loadout slot (Weapon), put in output filename (weapontest_01) click on the wearable item button
and add your model and texture files, press import button
And voila!.. Something's not right
Looks like the files we downloaded from the requirements page are wrong! Weapon should be attached to the sword_L bone and be positioned accordingly.
After repositioning and reskining back in Max, let's try again!
It works fine and dandy now, the only issues i see is the need to ttone down some shadows and blend the ribbon skinning some more. Let's do this!
And looks great! Usually there's always few tests, sometimes A LOT of tests if rigging is difficult. Now let's grab some pictures and move on to the final stage of item releasing!
There are number of way to get promotional image for your item. You can use viewport shader (like Xoliul[viewportshader.com]) or some external rendering software. We're going to use Marmoset Toolbag[www.marmoset.co] for that today.
First up, let's load our model. Press "Open Mesh..." button and find your mesh. It'll appear in the viewport.
Now go to the Material tab and load up your diffuse texture and normal map. They will appear on your model.
Now let's go to the light tab. I like to use Garage preset, as it gives bright and warm lighting.
Now, let's switch to the view tab. We're going to load up the background, and for that we'll use a portrait card( you can find them in ..\materials\portraits_card\portrait_backgrounds after you unpack your Dota 2 files). Find and extract Sirens portrait card and load it up as your background image in Marmoset. Usingthe Alt key to rotate and pan the camera, position your model in a way you see fit. Adjust the lighting a bit by holding the Shift key.
The Render tab allows you to use some post-processing, change the saturation and add sharpness. Play around with the settings, until you're satisfied.
And at the Output tab you can save snapshot of your item. Make sure to sure to set enlargement, as downscaling the image will add softness and give you more room for editing.
Now let's bring the resulting image into the Photoshop. Marmoset can separate your mesh and the background, he puts transparency data in the alpha mask. Using that we can separate our item and the background. After cropping and layering, i'm going to bring the image in Corel Painter.
Changes are minimal, but usefull. I've fixed some angles, wrong lighting, added fake highlights.
Now that we have ingame shots, promo picture and maybe some video, it's time to post our item on the worlshop. Just click submit after importing your item, add the name, description and the promo image and click "Submit" and after a quick thought, your item is on the workshop. You can add the pictures you took or the video on your item page.
You can also get it from the Series #26 Treasure Chest - Treasure of the Forbidden Lotus
Let me know if you have question, suggestion and just wait, i'll be dropping some more guides here and on workshophatemachine.com Join us on twitch[www.twitch.tv] for regular doses of sculpting, texturing and good times.