While I don't have a proper full page on my site just yet, due to the big 25th update I thought id post some info on the process as we are likely to get this question asked a lot:


  • Before you start, Playermodels have limits compared to NPC models:
  • You cannot add new animations to the existing set or change the order of the sequences
  • You cannot change the FPS of animations, they are locked
  • You cannot have sequences with more frames than the originals or else they will play too fast and will cut-off
  • You cannot change the hitbox set (nice try)
  • You cannot have skin changes (swappable body meshes are only for use in the cl_highmodels command)
Some features you can do:
  • You can customize existing animations however you must make them fit within the same frames as the original and be keyed to match the same FPS as the originals
  • You can add bones to the model as long as its parented off of existing and not inbetween existing bones (breaks hierarchy)
  • You can have procedural mouth animations
  • You can have color remapping
Your model should also at least have a decent amount of optimization, as direct source engine ports/MMD ports are horrible and inefficient for polycount and performance reasons. Please look up optimization guides and retopology if your model is heavy on polycount. You shouldn't be exceeding 9k poly.

The method

1. Download the HalfLife SDK (Steam tools > Half-Life SDK) & HLAM ( https://github.com/SamVanheer/HalfLifeAssetManager )

2. Replace the studiomdl.exe in this folder C:\Program Files (x86)\Steam\steamapps\common\Half-Life SDK\Model Tools with this one http://www.the303.org/backups/sven_studiomdl_2019.rar
(The current HLSDK studiomdl.exe is 2002 era old and is missing support for $texrendermode and other things. This is a modernized compiler that is compatable. To see new features see here: https://the303.org/tutorials/gold_qc.htm#AS

3. Navigate to C:\Program Files (x86)\Steam\steamapps\common\Half-Life SDK\Player Models\DMatch and make a copy of one of these, for example copy "gordon.qc" and rename it. Then navigate into "Highcount" and make a copy of the gordon folder and rename it to your modelname, and do the same for "lowcount"

NOTE: cl_himodels 1/0 is an old command that seems to be kinda hidden now. Basically it uses bodygroup to change from a high poly to a low poly model. by default iirc its set to 0 which uses the lowpoly variant. Its up to you if you want to use this feature but most people don't bother with it. If not then you just remove the "low" line in the bodygroup QC

4. In the QC file open it and fix up the look paths as they were set to valves names and also change the mesh names to what model you are using. This is an example:
$modelname "/player/skelepuncher/skelepuncher.mdl"
$cd "../player/"
$cdtexture "../dmatch/highcount/skelepuncher" //texture look in folder

$scale 1.0
$origin 0 0 36

// whole body
$bodygroup body
studio "../dmatch/lowcount/skelepuncher/skelepuncher-low" //remove this whole line if not using this feature
studio "../dmatch/highcount/skelepuncher/skelepuncher-high"

$include "../player/player_shared.qc"
5. Now open your preferred 3D application and import the mesh in the "high" folder. This will import the mesh and skeleton. Usually for playermodels you just delete the existing mesh and rig your new mesh/make your new mesh. Now since this is dependant on what 3D program you are using and I need to explain a lot, Ill pass this onto this tutorial: https://the303.org/tutorials/gold_mdl.htm
For texturing methods and matching half-life style see here: https://the303.org/tutorials/gold_mdl_tex_links.htm

If you want color changing textures, see this guide: https://the303.org/tutorials/gold_remap.htm
If you want mic-activated jaw flap animation, see this guide: https://the303.org/tutorials/gold_flappyjaws.htm

6. When you are done you export the SMD into the high folder. Optionally you can make a lowerpoly version but not many people use this old LOD feature so you could just put the high being the only line in the bodygroup.

7. Its recommended to use crowbar.exe ( https://steamcommunity.com/groups/CrowbarTool ) as it has several features for the compiling process. Go to "Set up games" tab, and in the "Half-Life" tab, go to the "model viewer" and change its path to HLAM. Switch to the compile tab, choose your QC, make sure the Game configuration says "half-life". Press the compile button by default it makes a subfolder in the current dir. I use this until im happy with the model then I use the "game models" folder option. You will probably have some first time compile errors but heres a comprehensive list: https://the303.org/tutorials/gold_mdl_fix.htm

NOTE: If you are making custom animations for your model you must make a copy of the "player_shared.qc" rename it to something like "yourmodel", update the name of it in your main QC to point to it, then edit the player_shared_yourmodel.qc lines to have the new anims and make the names of those new anim SMD files unique so you don't overwrite the original SMD ones. Example like say idle_custom.smd. Also don't accidentally rename the sequence name to custom. It should look like this for example:
$sequence "idle" "idle_custom" fps 14 loop ACT_IDLE 1

8. To verify the model if It did succeed in compiling, click the button at the bottom to "use in view" and click "open viewer" or just use the "goto" button in the previous window to navigate to the model in its folder and open from there if you have associated mdl files with hlam.

9. Make any changes/recompile after verifying the model for any issues. Check all angles, check animations. If you think its good compile to models folder and launch the game. Useful testing commands to see your model:
start new server, password protect set at least 2 players
sv_cheats 1
cam_idealdist 128
cam_idealyaw 180
cam_idealpitch -30
voice_loopback 1 (if testing jaw-flap animation)

10. When you are sure its ready, then make your playermodel portrait: 164x200 BMP in 8bit indexed mode (but limit to 160 colors if not using color changing) . If doing the advanced color changing you will need to refer to this guide to get a working portrait to match: https://the303.org/tutorials/gold_remap.htm