Guide on the creation of your own Dota 2 items

Today 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.

Riptide

 

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.

Unsteady wave

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.

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. Defining color will help you later on the texturing stage.

With that done we should head to the Dota 2 Workshop requirements page, 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.

Naga Siren requirements

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!

Import dialog

Just agree with everything for now.

Import dialog

And voila! It’s in the viewport.

Imported!

But we should hide it for now, because we’re starting on the blade 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.

Viewport background function

Don’t hold back on your base mesh, tris count and optimization will come much later, just form away your base mesh.Base mesh

After some tweaking we export our base mesh and start sculpting.

Low poly reading to sculpt

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

Zbrush importing

After that you just need to drag across the viewport and your base model is in!Zbrush is a powerful tool and i won’t be diving into it right away, but know that advanced Zbrush users can sculpt, paint and retopo all in Zbrush! But we won’t be jumping that high today and will just stay on the sculpting level.

i strongly recommend making your mesh symmetrical, that will save you twice the texture space and half the sculpting.

After some sculpting around and maybe redefining some lines for smoother flow we’ve got something more detailed

First Sculpt

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’ll never go into battle with the dull blade.

Now it’s time to export! After exporting your high poly and lowpoly (just go to the lowest subdivision level and export it) import your lowpoly back into Max and delete half of the model.

New lowpoly

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 tris count by right-clicking your model and selecting Object properties.)

Faces count

370 x 2 = 740. So we’ve got some to spare! I’ve decided to optimize some stuff and put some nice stuff near the guard, to fully use Nagas original weapon silhouette.

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, this will allow you to keep your textures sharp even in the confined space of Dota textures.

Mapping

After we’re done mapping, we disconnect the ribbon, mirror the blade and export it, ready for baking.

Mirrored

Once again, there’re bunch of ways to bake your stuff, i use xNormal. 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, Height map and Normal map.

xNormal

After baking those 3 maps, we’re going to get us spec map using CrazyBump

4maps

After putting all these maps together and dropping some basic colors underneath, we’re going to finally see it ingame for the first time!

Fist of all, you’ll have to aplly material to your mesh, and position it where there original naga weapon was. After that you just Skin your mesh to Sword_R bone and export it.

Exporting

But we’re far from over. Now we’ll have to create some placeholders. First of all we’ll need fake lod1 model. Just delete most of the vertices on your model and export is as lod1_modelname.smd

After that you’ll need some empty mask files which you can devise from the original weapon textures.

Putting everything in..

Voila

And voila, we’ve got our first problem.

Darn

Two problems, actually. First of all, i forgot that i rotated the original naga weapon and mismatched my model, and second of all, Weapon slot should be skinned to sword_L, contrary to what requirements page says. After some repositioning we’ve got ourselves in place.

Positioned

Ignore the stiff ribbon for now, we’ll skin that later. While it looks mighty fine already, we’re going to do bunch of texture tweaks now!

First we’ll do the base color pass, while smoothing out some hard edges

First pass

I’m using Corel Painter for most of my paintovers. And it really works with the painted look of Dota 2.

And here, after some tweaking, we’ve got our close-to-final texture

Neato

Here are diffuse, normal, mask1 and mask2

Maps

Now we just have to skin the ribbon, for that, just get back to the mesh, detach the ribbon, skin the blade back to the Sword_L, and skin the ribbon to ropeL_r0c0 and ropeL_r1c0

Skinned ribs

And it jiggles!!

Jiggly

Note that Dota 2 doesn’t use jigglebones, instead it uses custom animations and clothing simulation. So if you want something jiggly it should be either done by Valve, or by you, using existing bones.

Now we just need to create that lod1 model we faked, and we’re all set! For that, get back to your model and optimize the hell out of it. 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.

I usually do this via Optimize and some manual tweaking. To minimize your UV losses, delete half of your model if it’s symmetrical and optimize the half, that way you’ll have to fix just one side. So after the optimizing we’ve got this.

Optimized

Not very good with our mapping, so I’ll just do it manually. This way it’s really nicer.

Manual

Now we just need to unwrap UVW. And after connecting the dots and reskinning, we test it

lod1 test

And it looks mighty fine!

now it’s time to grab some neat pics

Neato Dosneato

And some videos

And it’s done! Check it out on the workshop!

Riptide

  • jal

    Neat stuff. One thing though. Are you sure you’re baking your normals correctly? they look inverted in dota 2.

    • Vladimir_the_implyer

      I’m sure. There’s bunch of funky looking stuff in the viewer window, self-shadowing messing with the normals a lot too

      • jal

        Inverting the green channel of the normal map might fix that problem. Not sure though.

      • Badr Shaheen

        vlad i need to know how to download the smd file i rlly got lost there itself :S

  • aranor

    Thanks man. I’ve always wondered how you guys make such cool items. Did you use anything special to draw the concept art?

    • Vladimir_the_implyer

      No, just use any painting program you’re familiar. Hell, piece of paper is fine too!

  • xo

    But you didnt tell how you made that neat pic at the end. :( Anyway, nice job.

    • Vladimir_the_implyer

      Ha, i’ll get to it!

  • xo

    Anyway, can you tell more about getting the maps together? I saw that you are using heigh map, for what is that even for? I though you are supposed to bake ao to your color map. You are like, baking them together to the color map? Ty for anwering this and the second question.

  • HMAN1911

    pretty sure that last ‘neat pic’ is done with good old marmoset engine with spec and bloom adjustments then dropped into Photoshop for a yellow outer glow and that blue background. Should not be very hard to emulate.

  • Visitor

    You are using SMD plugin for 3DS Max. But official models contains also *.fbx files which are supported in 3DS Max by default. Only problem is, when I import *.fbx file, I am missing textures in scene.

    Did you tried also to work with *.fbx files? I don’t know what’s wrong, that I can’t import also textures…

    • Vladimir_the_implyer

      Just create new material and assign it to your reference model.

  • disqus_fez5fhIOT6

    yo wassup with, getting base mesh then tweaking what did you do?

  • http://twitter.com/mrdfi Marda Fakhrurrazi,SE

    Hi,
    I am still newbie at zbrush, I have problem when on zbrush section. What do you mean from “After some sculpting around and maybe redefining some lines for smoother flow we’ve got something more detailed”?

  • toots

    Can you explain how the textures were created? The entire section is vague. You just show 4 thumbnails without explaining which was used for paint-overs, how they were layered and exported, etc.

    • Nate AndresMooi

      You can draw the color maps in a larger size. 512×256 for example and the importer will scale it down. easier to create the detail but keep in mind to make the detail larger because it will shrink and become hard to see small lines etc

  • George Seedhouse

    My weapon isn’t finished yet, the texture at least. Just have the ambient occlusion as my diffuse and my normal map applied. I wanted to try it in Dota and it looks good in the model viewer but If I start a test game with it and the whole things shines bright. It just glows. The masks are all black. Any idea why this is happening??

    • Nate AndresMooi

      you need one pixel white does not matter where in black mask. Or it throws it out and makes it full bright.

  • Kostya Naddubov

    can you explain me please, why i dont see my model after importing it into the dota? tryed different characters. doing everything by tutorial but weapon not shown in the preview window in the import viewer.

    thanks.

  • Davo

    Vlad can you make video or guide how to make masks 1 and 2?

  • freezwalm

    hello vlad, really great tutorial! I allways encounter the same error over and over everytime i try to import a fbx file into the workshop.
    CTargetMDL::Compile Failed
    i have no idea why, would you take a quick look at this please?
    http://dev.dota2.com/showthread.php?t=115345&p=840936#post840936