Welcome, Guest! Login | Register

Half-Life Deathmatch Model Profiles [Print this Article]
Posted by: Spider
Date posted: Feb 09 2003
User Rating: N/A
Number of views: 4794
Number of comments: 0
Description:
This article details the four deathmatch player models that were released with Half-Life. It will give you an idea of polygon limits, how skins are set up, the skeleton, animations and multiplayer bitmap. It has specific information about 3D Studio Max and requires some experience with it to understand this information.

Player models are comparatively easy to make. You make the model, create a template for skin, paint the skin, apply Physique and fit it to the biped, export it, then compile it to an .mdl. Then you make your multiplayer bitmap. You don't need to make animations unless you'd like to modify the existing ones. Weapons are in separate files, and the game attaches them to the player's hand, in reference to the biped.

Here's some information before detailing each player model:

Models:

There are high and low resolution models for each deathmatch player, except for the human grunt, with additional textures for each. They are segmented models, with the arms and hands as separate pieces because of the twisting. There is a
thumb, but only one 'finger' for the other four. Models are attached to the biped using Physique, a 3D Studio Max Modifier. Envelopes are not created and there is no blending between links. Be sure to assign vertices as rigid (green), not deformable (red). Bulge Angles and Tendons aren't used either.


Smoothing Groups:

Smoothing Groups can be used to help smooth edges or accent areas. The included images have assigned colors to each Smoothing Group to distinguish them and show where they are assigned to each model.

Skins:

The skins are 256 color .bmp files, with reserved team colors. There is no game palette so they can have their own 8-bit palette. They can be any size as long as they're powers of 2, such as 32, 64, 128, 256, and keep the total file size below 150k. Team colors will only work for a file called dm_base.bmp so be sure to name it that. Skins are set up as Multi/Sub-Object textures in 3D Studio Max. Parts of the skin are applied to specific faces of the model with the Edit Mesh Modifier. The UVW Mapping Modifier then adjusts the skin to line up correctly. For more details, see this Skin Texture tutorial, which also has information about Smoothing Groups.


Skeletons:

All the models use the same skeleton, and if you create a new model, yours will need to fit this skeleton. It is highly recommended to use Valve's biped since the skeleton shouldn't be altered much at all. It could produce unexpected errors and incorrect animations. There are extra bones for Gordon's pony tail, mouth, nose and eyes, but these are not used in deathmatch so you don't need to link any vertices to them. There are bones for a thumb, but only one set of bones for one 'finger' to cover the other four. There is only one toe for each foot. It's not recommended to resize the biped because it may negatively alter the animations. Plus it won't change the bounding box sizes so if the model is larger than the skeleton, it may clip into the walls.


Animations:

For each weapon there are reference animations set up at the extreme poses for standing and crouching, and aiming and shooting. In this example using the shotgun code, for the 'ref_aim_shotgun' sequence, aimup and aimdown poses are used with the 'blend' command. Since the spine has been set as a controller, the engine will interpolate between these reference poses and calculate the animation that happens in between. This also happens with the stand, walk and run animations. They are blended together with the shooting animations so the model can run and shoot at the same time.


 CODE  
// shotgun
$sequence ref_aim_shotgun "ref_aimdown_shotgun" "ref_aimup_shotgun"
blend XR -45 45 fps 12 LOOP<br>
$sequence ref_shoot_shotgun "ref_shootdown_shotgun" "ref_shootup_shotgun"
blend XR -45 45 fps 15 { event 5021 0 "51" }

$sequence crouch_aim_shotgun "crouch_aimdown_shotgun" "crouch_aimup_shotgun"
blend XR -45 45 fps 12 LOOP origin 0 0 18<br>
$sequence crouch_shoot_shotgun "crouch_shootdown_shotgun" "crouch_shootup_shotgun"
blend XR -45 45 fps 15 { event 5021 0 "51" } origin 0 0 18




Multiplayer Bitmap:

The Multiplayer Bitmap is a 256 color screenshot of the model which will be viewed from the game's Multiplayer Menu. Color sliders will choose the team colors, so the palette needs to have reserved areas for these. Note that they are reversed compared to DM_Base.bmp. Rows 11 and 12 of DM_Base.bmp will go in rows 13 and 14 of the multiplayer bitmap.













Gordon.bmp Gordon Palette




user posted image




user posted image


Here is each model's details:


Gordon


Model:
























user posted image




user posted image
Low Res

362 polygons, 183 vertices

Low Res

colored Smoothing Groups





user posted image




user posted image
High Res

639 polygons, 343 vertices
High Res

colored Smoothing Groups



Skins:


Gordon's DM_Base.bmp is the same as the one for Gina and the Helmeted
Player. The helmet is in this skin, except for the chrome part.






















DM_Face.bmp DM_Face Palette




user posted image




user posted image


DM_Base.bmp


DM_Base Palette




user posted image




user posted image







Gina


Model:
























user posted image




user posted image
Low Res

373 polygons, 190 vertices

Low Res

colored Smoothing Groups





user posted image




user posted image
High Res

654 polygons, 344 vertices
High Res

colored Smoothing Groups



Skins:

Gina uses a chrome texture for her hair-needles only in the high-res
model.



























DM_Face.bmp DM_Face Palette




user posted image




user posted image


DM_Base.bmp


DM_Base Palette




user posted image




user posted image


PLAYER_Chrome1.bmp





user posted image






Helmeted Player


Model:
























user posted image




user posted image
Low Res
325
polygons, 166 vertices

Low Res

colored Smoothing Groups




user posted image




user posted image
High Res
564
polygons, 293 vertices
High Res

colored Smoothing Groups



Skins:



The Helmeted Player model uses a chrome texture for the visor of the
helmet.



















DM_Base.bmp DM_Base Palette




user posted image




user posted image


PLAYER_Chrome1.bmp





user posted image


Human Grunt


Model:
















user posted image




user posted image
Low Res
368
polygons, 199 vertices
Low Res

colored Smoothing Groups



Skins:


The Human Grunt's textures are not in proportion to each other and
wrap around the model instead of being applied flat. This makes it a more challenging
skin.











DM_Base.bmp DM_Base Palette




user posted image




user posted image







Scientist


Model:
























user posted image




user posted image
Low Res
380
polygons, 203 vertices

Low Res

colored Smoothing Groups




user posted image




user posted image
High Res
710
polygons, 369 vertices
High Res

colored Smoothing Groups



Skins:


The Scientist is pretty straight forward. The extra textures at the bottom-right,
of the DM_Base.bmp are for the sides of the torso and legs only for the low-res
model. He coincidentally uses the same palette as Gordon and Gina, but that
doesn't mean it needs to.



















DM_Face.bmp DM_Face Palette




user posted image




user posted image


DM_Base.bmp


DM_Base Palette




user posted image




user posted image





Skeleton:


There are extra bones for Gordon's pony tail, mouth, nose and
eyes, but these are not used in deathmatch so you don't need to link any vertices
to them. There are bones for a thumb, but only one set of bones for one 'finger'
to cover the other four. There is only one toe for each foot, although
it's in 3 segments.








user posted image








user posted image





.qc file:

Attachment points are where effects are spawned from. These follow this format:

$attachment <#>



$attachment 0 "Bip01 R Hand" 20 2 5 X 1
$attachment 1 "Bip01 R Hand" 15 1.5 3.75 X 1
$attachment 2 "Bip01 R Hand" 30 3 7.5 X 1

Controllers are bones that are controlled by AI code and follow this format:

$controller #

$controller 0 "Bip01 Spine" XR -30 30
$controller 1 "Bip01 Spine1" XR -30 30
$controller 2 "Bip01 Spine2" XR -30 30
$controller 3 "Bip01 Spine3" XR -30 30

Here's the bounding boxes around the bones of the skeleton in this format:

$hbox




$hbox 3 "Bip01 Pelvis" -4.69 -4.44 -6.75 4.00 5.56 6.75
$hbox 6 "Bip01 L Leg" 2.66 -3.69 -3.09 18.16 4.88 3.31
$hbox 6 "Bip01 L Leg1" 0.38 -3.97 -2.84 17.60 4.00 2.94
$hbox 6 "Bip01 L Foot" -0.59 -2.34 -2.63 3.79 8.00 2.19
$hbox 7 "Bip01 R Leg" 2.47 -3.69 -3.16 18.13 4.88 3.38
$hbox 7 "Bip01 R Leg1" 0.31 -3.97 -2.84 17.60 3.94 2.97
$hbox 7 "Bip01 R Foot" -0.56 -2.34 -2.19 3.81 8.00 2.66
$hbox 3 "Bip01 Spine1" -3.25 -5.50 -5.50 4.83 5.50 5.50
$hbox 2 "Bip01 Spine2" -0.06 -5.53 -7.59 8.00 7.00 7.59
$hbox 2 "Bip01 Spine3" -2.25 -6.81 -6.31 6.50 5.09 6.31
$hbox 2 "Bip01 Neck" -3.11 -1.50 -3.00 2.05 3.50 3.00
$hbox 1 "Bip01 Head" 0.09 -3.66 -3.00 8.41 5.09 3.00
$hbox 4 "Bip01 L Arm" 0.94 -2.88 -4.13 5.44 4.28 3.50
$hbox 4 "Bip01 L Arm1" -2.16 -2.34 -2.56 11.56 3.41 2.38
$hbox 4 "Bip01 L Arm2" 0.59 -1.81 -2.19 10.75 2.84 2.41
$hbox 4 "Bip01 L Hand" 0.00 -1.00 -2.00 3.00 1.50 3.50
$hbox 5 "Bip01 R Arm" 1.38 -2.84 -3.56 5.69 4.31 4.31
$hbox 5 "Bip01 R Arm1" -1.88 -2.47 -2.16 11.81 3.28 2.81
$hbox 5 "Bip01 R Arm2" 0.44 -1.97 -2.34 10.59 2.72 2.22
$hbox 5 "Bip01 R Hand" 0.00 -1.00 -2.00 3.00 1.50 3.50



Animations:

All are 31 frames (0-30) except where noted. The first and last frames are the same so it loops, except for the death animations.













new_idle2
new_idle - 41 frames
new_idle3
new_run - 22 frames
new_walk - 24 frames
shoot_2handed - 7 frames
crouch_moveforward
crouch_idle
player_jump - 33 frames
player_longjump - 37 frames
player_swim - 27 frames
player_treadwater - 32 frames
ref_run - 22 frames
ref_walk - 24 frames
ref_aimdown_twohanded
ref_aimup_twohanded
ref_shootdown_twohanded - 7 frames
ref_shootup_twohanded - 13 frames
ref_aimdown_onehanded
ref_aimup_onehanded
ref_shootdown_onehanded - 8 frames
ref_shootup_onehanded - 8 frames


// death animations

die_simple - 19 frames
die_backward - 24 frames
player_die2 - 36 frames
player_die1 - 18 frames
die_headshot - 27 frames
player_die3 - 21 frames
die_gutshot - 37 frames


// dead poses

dead_pose_back - 2 frames
dead_pose_sitting - 2 frames
dead_pose_stomach - 2 frames
dead_pose_table



// weapon animations

// crowbar, grenade

ref_aimdown_crowbar
ref_aimup_crowbar
ref_swingdown_crowbar - 13 frames
ref_swingup_crowbar - 13 frames
crouch_aimdown_crowbar
crouch_aimup_crowbar
crouch_swingdown_crowbar - 11 frames
crouch_swingup_crowbar - 11 frames

// tipmines, satchel

ref_aimdown_trip
ref_aimup_trip
ref_placedown_trip - 13 frames
ref_placeup_trip - 13 frames
crouch_aimdown_trip
crouch_aimup_trip
crouch_placedown_trip - 13 frames
crouch_placeup_trip - 15 frames

// 9mm

ref_aimdown_onehanded
ref_aimup_onehanded
ref_shootdown_onehanded - 8 frames
ref_shootup_onehanded - 8 frames
crouch_aimdown_onehanded
crouch_aimup_onehanded
crouch_shootdown_onehanded - 8 frames
crouch_shootup_onehanded - 8 frames

// python

ref_aimdown_onehanded
ref_aimup_onehanded
ref_shootdown_python - 8 frames
ref_shootup_python - 8 frames
crouch_aimdown_onehanded
crouch_aimup_onehanded
crouch_shootdown_python - 8 frames
crouch_shootup_python - 8 frames

// shotgun

ref_aimdown_shotgun
ref_aimup_shotgun
ref_shootdown_shotgun - 7 frames
ref_shootup_shotgun - 7 frames
crouch_aimdown_shotgun
crouch_aimup_shotgun
crouch_shootdown_shotgun - 8 frames
crouch_shootup_shotgun - 8 frames

// gauss

ref_aimdown_guass
ref_aimup_guass
ref_shootdown_guass - 8 frames
ref_shootup_guass - 8 frames
crouch_aimdown_guass
crouch_aimup_guass
crouch_shootdown_guass - 8 frames
crouch_shootup_guass - 8 frames



// mp5

ref_aimdown_mp5
ref_aimup_mp5
ref_shootdown_mp5 - 4 frames
ref_shootup_mp5 - 3 frames
crouch_aimdown_mp5
crouch_aimup_mp5
crouch_shootdown_mp5 - 3 frames
crouch_shootup_mp5 - 3 frames

// rpg

ref_aimdown_rpg
ref_aimup_rpg
ref_shootdown_rpg - 16 frames
ref_shootup_rpg - 16 frames
crouch_aimdown_rpg
crouch_aimup_rpg
crouch_shootdown_rpg - 16 frames
crouch_shootup_rpg - 16 frames

// egon

ref_aimdown_egon
ref_aimup_egon
crouch_aimdown_egon
crouch_aimup_egon

// squeak

ref_aimdown_squeak
ref_aimup_squeak
ref_shootdown_squeak - 13 frames
ref_shootup_squeak - 13 frames
crouch_aimdown_squeak - 30 frames
crouch_aimup_squeak - 30 frames
crouch_shootdown_squeak - 13 frames
crouch_shootup_squeak - 13 frames

// hive
ref_aimdown_hive
ref_aimup_hive
ref_shootdown_hive - 4 frames
ref_shootup_hive - 5 frames
crouch_aimdown_hive
crouch_aimup_hive
crouch_shootdown_hive - 5 frames
crouch_shootup_hive - 5 frames

// crossbow
ref_aimdown_bow
ref_aimup_bow
crouch_aimdown_bow
crouch_aimup_bow

Thanks to UrbaNomad for helping prepare
the pictures and information for this page.


Rate This Article
This article has not yet been rated.

You have to register to rate this article.
User Comments

No User Comments

You must register to post a comment. If you have already registered, you must login.

Latest Articles
3rd person View in Multiplayer
Half-Life 2 | Coding | Client Side Tutorials
How to enable it in HL2DM

By: cct | Nov 13 2006

Making a Camera
Half-Life 2 | Level Design
This camera is good for when you join a map, it gives you a view of the map before you join a team

By: slackiller | Mar 05 2006

Making a camera , Part 2
Half-Life 2 | Level Design
these cameras are working monitors that turn on when a button is pushed.

By: slackiller | Mar 04 2006

Storing weapons on ladder
Half-Life 2 | Coding | Snippets
like Raven Sheild or BF2

By: British_Bomber | Dec 24 2005

Implementation of a string lookup table
Half-Life 2 | Coding | Snippets
A string lookup table is a set of functions that is used to convert strings to pre-defined values

By: deathz0rz | Nov 13 2005


Latest Comments
knock knock
General | News
By: MIFUNE | Dec 31 2017
 
knock knock
General | News
By: omega | Dec 22 2016
 
knock knock
General | News
By: MIFUNE | Oct 10 2015
 
New HL HUD Message System
Half-Life | Coding | Shared Tutorials
By: chbrules | Dec 31 2011
 
knock knock
General | News
By: Whistler | Nov 05 2011
 
Particle Engine tutorial part 4
Half-Life | Coding | Client Side Tutorials
By: darkPhoenix | Feb 18 2010
 
Particle Engine tutorial part 2
Half-Life | Coding | Client Side Tutorials
By: darkPhoenix | Feb 11 2010
 
Particle Engine tutorial part 3
Half-Life | Coding | Client Side Tutorials
By: darkPhoenix | Feb 11 2010
 
Game Movement Series #2: Analog Jumping and Floating
Half-Life 2 | Coding | Shared Tutorials
By: mars3554 | Oct 26 2009
 
Particle Engine tutorial part 5
Half-Life | Coding | Client Side Tutorials
By: Deadpool | Aug 02 2009
 

Site Info
297 Approved Articless
8 Pending Articles
3940 Registered Members
0 People Online (8 guests)
About - Credits - Contact Us

Wavelength version: 3.0.0.9
Valid XHTML 1.0! Valid CSS!