Hello! my name is Enrico Santi. I am a weapons and environment artist at Digital Extremes working on Warframe. I have worked on other games like Call of Duty: Infinite Warfare, Call of Duty: WW2, and various other games during my time at Elite3D.
Recently, I have been working on my own game, which will heavily emphasize weapon customization, and I would like to show you my process in this article.
Without further ado, let's get started with the process.
The planning phase is the most important part before even opening any 3D software.
I like to take my time and research what type of weapons would work best with my game and setting, and since it's a post-apocalyptic realistic shooter, I want as much realism as possible. This makes it a bit easier as we have countless real-life weapons to use.
After deciding what weapon I will start with, I create a very extensive reference board with pictures of every angle, piece, and, if possible, dimensions.
This will facilitate my base/stock weapon, which I will build upon.
I will then research all the different types of attachments and modifications that are available for them and decide how many I need/want and which looks the best.
Now it's time to decide the best way to divide the weapon into components. In this case, I divided it as follows:
- Flash Hider.
- Receiver Plate.
- Pistol grip.
- Bolt Carrier.
This is a general overlook for this particular weapon. However, each one will present different challenges and might need to be broken up differently to achieve the same goal.
I chose to make 3 variants for each component to allow me to have great customization opportunities. You can see here how it has allowed me to customize my weapons in the following Artstation album:
High Poly Modelling.
I like to start modeling the bullet and barrel before doing anything else. There are tons of measurements for bullets, which are extremely easy to make since they are mostly cylinders.
This also makes the creation of the barrel extremely simple since it's easier to build a firearm around the type of ammunition you want to use rather than try and fit it after. Because I base my whole model on the accurate size of a real-world bullet, I have less margin for error when creating each piece.
My modeling process is rather straightforward. I begin by making my base shapes and then creating bools to "cut/carve" out the shapes I want and import them into Zbrush. I like to envision this process similar to how each piece would be made by a machine.
Then some simple smoothing is applied to help the baking process.
When working on the Low Poly for the weapons, I separate each component that I previously discussed in the planning phase and treat each one as its own model/piece with its own textures.
This is the best method when creating customizable weapons, to maximize texel density/quality and ensure you are not loading in parts of your texture that you are currently not using at the time.
This will obviously create a larger number of textures. My FN FAL uses a total of 32 textures for the weapon and variations, for example.
Optimization with these many components is essential and probably the most tricky part, and since each part is interchangeable, you want to ensure a good quality while also keeping it game-ready.
The most important part is ensuring your silhouettes look great and hold up when viewed from up close or are "inspected." With this, there is no set tri/vertex count for each piece. As long as you get it to a manageable number once you have all your components together you will be fine.
LOD's will also play a large part in setting up your hero and your enemy models since these weapons will be rather dense due to their internals. You want to make sure you are not using the same asset for your player as you do for NPC's, so it's essential to create a lighter variant by stripping the internals and other non-visible parts of the model.
My process for creating UVs is pretty straightforward.
Each component that is its own "entity" will have its own UVs and bakes. This is quite time-consuming since you will be unwrapping however many components you created for the weapon and have them on their own set. In my case, 32 different UV sets.
This method allows for no overlapping UVs and a completely unique texture throughout each asset. However, this is not written in stone, so you are free to overlap UV's and use symmetry if needed.
I know all my bakes will be at 4K and later downscaled, so I make sure to set my UV padding to 32px to ensure I won't have any bleeding between each island.
If you want to learn why, this Polycount article speaks more about the topic.
Texturing is another vital part.
My approach to texturing each component is to treat each piece as the most important piece. I like to work on each component, thinking about its own story and how it was manufactured/treated.
Even if they were produced in the same factory, they would have their own uniqueness in color tints, roughness, bumps, etc. Even though it's mostly the same material, materials will always show some variation from metal treatments, etc.
No 2 textures are the same.
I like to analyze the weapons textures closely and try to replicate their uniqueness as much as possible.
Having a great base material is generally my first step as it allows me to visualize it all as a whole. My color ranges shouldn't be too far off or too similar.
Once that is sorted, then the fun part begins. It's time to start adding all the little details shown in my references, plus some of my own inventions.
The presentation for these pieces is probably the hardest part since you are trying to show how many possible variations you can have while also getting the best quality out of each picture.
I like to break down each customized version into its own piece.
More examples can be seen on my Artstation profile.
This method ensures that my images are not overloaded with too much information, which translates into a mess of a render.
For smaller weapons, a busy image can work, like my Glock, which follows the same methodology I'm describing in this article, by the way.
In-Game Importing and Naming Conventions.
Once I have everything ready to be placed in-game, I start by having my folder structure, which with these many models per weapon is quite tricky.
Your naming conventions are key in making sure things are easy to find when you need them. I will try to explain how I went about it.
I will begin with what the item is. For example, is it the main part of the weapon? The bolt? The grip? The magazine? The answer to these questions will dictate the first prefix I will use. Let's say it's a magazine:
magazine_rmlar_30rd_std - This is, "magazine" for the weapon and "rmlar" for the name of the gun itself. "30rd" tells me how many rounds this magazine holds and then "STD" for standard since this is a standard type of magazine and not an after-market type like a Magpul or others.
handguard_rmlar_vltor_short - This again is "handguard" for weapon "rmlar." "vltor" is the handguard name, and "short" defines that this is the short variant since I also have a longer variant.
Once I know what each component will be called. I create an "Ammo," "Attachments," and a "Weapons" folder.
The "Weapons" folder will hold the main component of said weapon. In this case, the main component will be the lower receiver for the "RMLAR."
Under the "Attachments" folder, I will have sub-folders to describe each component type.
This is where I will save all the components for each weapon I make, and because I have previously set up my naming convention, it will be easy to find what I need by filtering by tags.
Finally, the "Ammo" folder. This is where I will have all my ammo types.
This way, I can categorize each type of asset inside these folders. I can have incendiary, tracer rounds, full metal jackets, etc. This configuration makes them easy to find.
This structure will allow me to follow a similar method of approach for each weapon, even though they all work differently.
If you would like to see more of my works check out my Artstation at
If you made it this far, thank you for having read my article, and I hope you got something that might be useful to you!
If you have other questions, you can find me on the Chamferzone discord, where I am most active.
If you wish to stay up to date with our published articles, get feedback on your work, help others, or just want to hang around with us, please join our Discord!