DoomMusic's StudioMDL 2017 V1.02

A Modding Tool for GoldSrc Engine


  • Overhaul Updated to V1.02
  • Addition Added the $protected qc command "more info in description"
Version 1.02 1y
Sign up to access this!

The best fixed StudioMDL so far ..

BrianObvilion (AKA DoomMusic on Sven Co-op Forums) have created new StudioMLD compiler, that fixes UV-shifting problem. Here's his original topic on SC Forums:

I've created a fixed version of the studiomdl compiler that's meant to fix the texture coordinate shifting
issue that's been present since time in memoriam. Keep in mind though, that you should keep your texture
resolutions at 512 maximum, as otherwise it will fail. You can override this with the -o command, if you're
using Xash or anything else that supports larger textures.

Part of the fix is that now textures are not resized, but put onto a larger canvas with a power of 2 resolution
closest to the original texture's resolution, but never lower. So if you have a texture with a res of 513x512, 
it will be resized to 1024x512. For this reason, it's best to resize it to 512x512 in a program like IrfanView. 
The reason this isn't done by studiomdl is that resizing 8-bit bmps without a proper algorithm, like the one in
IrfanView, will lead to artifacts in the texture. This artifact bug was present also in the original studiomdl.

To showcase the changes, this is what the original texture looked like:

And this is what the compiler will put in the model:

This studiomdl should work with any GUI compiler. Also keep in mind that in any models where you applied the
shift, you will have to re-adjust the UV coords to their intended locations.


- This version fixes the issue with bones that only have attachments being removed and causing compile errors. 
Now, if your bone has no vertexes, but it still has attachments, it will not be optimized out.
- I've removed texture coord cropping in the 0-1 range, so your texture coords can be freely set as you wish.
- Currently the largest supported texture resolution for Half-Life is 512 in each dimension. If it's larger than 
this, HL will resize it back to 512 pixels, and it might even crash.
This can be overriden by setting the -o parameter, which is useful if you are running in an environment that 
supports textures larger than 512 pixels, like Xash and so.
- $cliptotextures doesn't do anything anymore.
- It supports Sven Coop's fullbright texture flag.


- Added alpha, nomips, flatshade and chrome support for $texrendermode.
- Added the -b parameter to specify a stretch-out border when padding textures
that are not power of 2. Normally this has a value of 1. It should get rid of
any artifacts with texcoords at the edges of textures.


- An issue was fixed when loading in textures that are not multiples of 4 in width. The cause of this issue 
was that internally BMP stores them with the width as a multiple of 4, but studiomdl does not account for 
that when setting the bmp's width for itself


- Added the $protected qc command. This lets you specify bones which cannot
be optimized out by the compiler even if they're not used by any vertices.
$protected "Bip01 Head"

Important notice:

Altough this tool removes UV capping outside the 0-1 range, you still neeed to make sure you use power of 2 
textures if you have UV coords outside of the 0-1 range, as the padding feature will mess that up.
In general you should never use non-power of 2 textures, since Half-Life already resizes everything to power 
of 2 when loading models, which will cause loss of quality in the process.

Comparison with Sven co-op's SDK Smdl:

Original UV exported by Blender:

SC's SDK StudioMDL

DoomMusic's new Compiler:

Important Update (1.9.2018):

My friend FunnkyHD took the step and started improving over DoomMusic's work. Bringing the support for Higher def model compiling for example Xash3D engine. Here's the Changelog over v1.02:

 Changed "grabbing" to "grabbed".
  • StudioMDL doesn't close anymore when you get "illegal bone replacement" error.
  • Increased sub-models per model & bodyparts & groups limit to 64.
  • Removed "$cliptotextures is not supported in this program" message.
  • Texture resolution limit set to 4096px. (Xash)
  • Triangles limit set to 30k. (Xash)
  • Vertices limit set to 20k. (Xash)
You can get all these extra features here:
Share banner


Alternate File Sources



Share banner
Image URL:
HTML embed code:
BB embed code:
Markdown embed code:


Key Authors
Original Authors
Original Broken StudioMDL


CS PRO avatar
CS PRO username pic Joined 5y ago
HL Manager CS:CZ Manager
wish me luck
CS:GO Ports Flag Affiliation: CS:GO Ports
21,016 points Ranked 216th
39 medals 4 legendary 6 rare
  • Submitted 100 Skins Medal icon
  • 30 submissions featured Medal icon
  • Reached 100 subscribers Medal icon
  • 2017 Top Contributor Medal icon
  • Returned 1000 times Medal icon
  • 10 submissions featured Medal icon

CS PRO avatar
CS:GO Ports Flag
CS:GO Ports

Are you the owner? Request Ownership
Sign up to access this!
Sign up to access this!
Sign up to access this!


Sign up to access this!







  • Share on Reddit
  • Share on Twitter
  • Share on Facebook
  • Share on Google+


  • 485 DLs
  • 13 Posts
  • 1ySubmitted
  • 2moModified
  • 1yUpdated


85 bScore
9.5 Rating

8 voters

Sign up to access this!

More from Submitter

WiPs by Submitter

More Other/Misc Tools tracking pixel