======================================================================= MD2.5 test model -alpha- release ======================================================================= NOTE: If you're not a coder working on a Quake 2 source port then you should not have this file. DISTRIBUTION You may mirror the zipped file intact or include one or all the files herein as part of a source project, with attribution. This release is designed for testing and feedback purposes ONLY, it should not be considered or distributed for general public consumption. WHAT IS IT? MD2.5 is a project designed to enhance Quake 2 player models. The basic idea is to split Q2 players into separate head, torso, and waist models as Quake 3 Arena does with its md3 format. Instead of using an entirely new format though, md2.5 uses the current md2 format for Q2 models. This means that the same limitations apply, swimming vertices, no shaders, and no tags. However, because this test model is made from scratch, I have the freedom to define an entirely new set of animations; far more than originally included in the boxed version of Quake2. New to the early model included with this text are: looking frames, reloading, throwing, and holstering. Every other animation is standard fare, and it should be noted that only the look frames are considered semi-final, all the other animations are simple place holders until they can be polished up or replaced. Once the animations are final I hope to include climbing, sitting, flipping, rolling, waving, swimming, etc. Then I'll consider porting all the id models to this new frame set, most likely the male and female at minimum. HOW DOES IT WORK? One can't simply drop these models into your baseq2\players folder (yet) because the frame order and composition is unqiue. I can't simply add the new animations to the end of the 'current' set because that would waste frames, memory, and still break compatibility with current mods (since the head, torso, legs are separate now). What is needed is some mad coders like you to impliment this -hopefully in the manner I've planned out. THE PLAN Quake 3 Arena uses tags to align the different body segments, we'll be using the model origins. Keeping the models centered in a certain position will allow the upper body to turn and look around while the lower body does its thing. Think of the legs as a platform because they'll remain centered at the player's origin at all times. In dealing with difficult situations where the upper-body pivot needs to deviate from the player origin, like crouching or sitting, Fugitive proposed storing offset values in a gender-specific (aka ppm specific) text file. I'm using this convention but only storing a minimal number of offsets instead of one for every animation. Below are the offset values for the upper body, first is the basic standing state, then a special case for the animation presently called runTestB, and finally coordinates for crouching. These are stored in offset.dat, a simple txt file, and listed using the new-line character to separate the numbers, an empty line separates the sets of coordinates for different offset states (comments excluded in actual offset.dat file): +0.19 // X (standing) +0.00 // Y +8.52 // Z +1.06 // runTestB +0.00 +8.97 +0.19 // crouch +0.00 -8.06 Loading and using the separate models in-game can be done in one of two ways, either as modelindexes of one entity or multiple entities. I would suggest expanding the modelindex (from four to eight or more) because then legs or other attached parts shouldn't lag behind if client-prediction is enabled. If the index isn't expanded then it'd be impossible to show a split player with a weapon and other accessories like flags because there are only four modelindex 'slots' by default (head + torso + legs + weapon + flag = 5). Lastly, rounding out our plan, is the issue of how to display the separate parts and take advantage of the separation. From this point on you DON'T want the player model pitching up and down (except in extreme cases which will be addressed in the future, like swimming) because now looking-pitch can be handled by the looking frames. Currently there are 3 sets of these frames to show a player holding a standard weapon (BFG, shotguns, railguns), holding a pistol, and empty handed (or holding stuff like a grenade chain saw or flame thrower). Each set is 17 frames and the ninth frame of the sequence (from 1) is a level view. The first 8 frames begin with the player looking up about 80 degrees and then decending about 10 degrees with each frame. The final 8 frames of course are looking down as much as about 80 degrees from level. When turning, the player's upper body will always need to be rotated to match their view, though if their feet are planted on the ground then the legs can lag behind this view up to 30 or even 45 degrees before they must be re-centered (standing or crouched). If airborne then a player's legs should always align with the view as the upper body does (whilst showing the special jump frame). Future animations should take advantage of the split, things like running right, left, back, sitting, and swimming. FRAMES Below is a list of the scenes included and a description of their intended use in the game. Animations marked with an * involve the whole body and as such the model offset data can be temperarily ignored when displaying them. In other words, when using marked scenes just place the models at the player origin as if displaying a normal Q2 player with a flag or weapon. aimW 17 frames with varying degrees of pitch, frame 9 is level (represents looking up/down ~80 degrees) aimP 17 frames, aiming a pistol aimH 17 frames, aiming emtpy hands or a chainsw, flame thrower, etc. pain_rghtTest 3 frames, hit to the front-right (temp scene) pain_leftTest 4 frames, hit to front-left (temp) jumpTest* 4 frames, 1st frame is the standard -hold whilst airborne job- remaining represent landing; notice the model must be physically moved up and down now (instead of hiding in upper half of bbox) reloadTest 12 frames, temp reloading scene throwTest 8 frames, toss grenade; release vwep after 4th frame holsterTest 6 frames, holsters weapon; reverse to represent unholster runTestA 6 frames, experimental (ugly) run scene; keeps the same offset as all previous (that is the standing-offset) runTestB 6 frames, same ugly run, now with slightly tilted form; uses the special case offset included for this scene runTestC* 6 frames, ugly run except whole body moves (look frames must be disabled and the upper-lower body need to be in sync) crouch 1 frame, uses crouch-offset and can use any upper body stuff: looking, pain, reload, throw, holster crawlTest* 6 frames, ugly crawl scene, upper-lower body must be in sync crouchdieTest* 6 frames, crouch death deathaTest* 7 frames, death scene deathbTest* 9 frames, death scene deathcTest* 8 frames, death scene chokedieTest* 16 frames, choke death You'll notice that this sequence doesn't match any of the models exactly. That's because the lower body no longer needs frames for reloading, throwing, looking, etc. And the upper body doesn't need to worry about runTestA, runTestB, crouch, or the 1st -holding- frame of the jump scene. So when a player is running (using runTestA, runTestB), crouching, or falling/flying they can also be looking, reloading, throwing, or holstering. FILE CONVENTIONS This will likely change before all is said and done, the idea though is to keep everything standard so players can dump the final files into their respective baseq2\players folders without replacing the default models (tris.md2, w_weapon.md2, etc) or requiring pak files. MODELS h_tris.md2 head model (same frames as torso) u_tris.md2 upper bod l_tris.md2 lower body x_weapon.md2 default, split-model, weapon (same frames as torso) x_weapon-name.md2 the various vwep models SKINS skin-name_h.tga head skin skin-name_u.tga upper body skin skin-name_l.tga leg skin skin-name_i.tga icon CONTACT INFO I'm interested in seeing what you guys can do with this model, so please e-mail often and let me know what you've accomplished! Questions? privater2@yahoo.com