Plan for Tony Richards
by Tony Richards · 08/15/2005 (8:20 pm) · 5 comments
Please note that I'm only using this for stand-in models and I'm not considering using them for any game. The models are very low poly and wouldn't work for what I'm trying to do, but at least it'll give me a few models to play with for now.
The MDL resource / mesh is not quite finished yet but the basics are there.
I have MDLMesh, MDLShape, MDLShapeInstance, MDLShapeBase, MDLShapeBaseData classes now. I had an MDL collission type class, but I think I'm going to do without it for now. I noticed how WoW doesn't even bother with collission detection and maybe there's a reason (server processor time, etc). I'll look into it before I spend any time on it (besides, who needs collissions with stand-ins anyway?)
I don't have the animations, skin meshes (so things like dragon's wings don't render), and I don't have the textures yet (they're TGA's and I haven't implemented the TGA resource yet), but the UV mapping is finished and basic mesh is finished. Handling parent/child node relationships are complete as far as node position transforms are concerned, but rotational transforms are not done yet. I still have quite a bit of work ahead of me, but finally I have a screen-shot that I can show off. I wish the reflection would've shown up in the water better, but due to the lighting I couldn't get a good shot that showed the dragon and the reflection with the dragon even being recognizeable. I'd have moved it around but F11 doesn't seem to work with the default download from CVS.
The code correctly handles resources straight from NeverWinter Nights, including extracting from the BIF files. There's no user intervention for extracting it, converting it, etc. Here's how I'm getting the dragon in (not use MDLShapeBaseData, but it's there and can be used).
The ResourceManager sees the "nwn://" which indicates that it should extract the file from the NWN directory, then it looks up where that directory is in the system registry, looks for the model in all of the installed files (including patches and download HAK / MOD files). It then proceeds to correctly load the file. Currently only .mdl and .tga files are supported, but some of the other files could be supported as well (the sound files, for instance).
Whew, ok, time for a break. I think that's about all I'm going to do on the MDL side-track for now. I'll tackle some network code and see if I can't get transparent server handoffs at least started.
Edit: Ok, my free host doesn't allow images to be linked from other sites. If you want to see, visit my site and click on "Click here for a screen shot."
Sgt Flame's Place
The MDL resource / mesh is not quite finished yet but the basics are there.
I have MDLMesh, MDLShape, MDLShapeInstance, MDLShapeBase, MDLShapeBaseData classes now. I had an MDL collission type class, but I think I'm going to do without it for now. I noticed how WoW doesn't even bother with collission detection and maybe there's a reason (server processor time, etc). I'll look into it before I spend any time on it (besides, who needs collissions with stand-ins anyway?)
I don't have the animations, skin meshes (so things like dragon's wings don't render), and I don't have the textures yet (they're TGA's and I haven't implemented the TGA resource yet), but the UV mapping is finished and basic mesh is finished. Handling parent/child node relationships are complete as far as node position transforms are concerned, but rotational transforms are not done yet. I still have quite a bit of work ahead of me, but finally I have a screen-shot that I can show off. I wish the reflection would've shown up in the water better, but due to the lighting I couldn't get a good shot that showed the dragon and the reflection with the dragon even being recognizeable. I'd have moved it around but F11 doesn't seem to work with the default download from CVS.
The code correctly handles resources straight from NeverWinter Nights, including extracting from the BIF files. There's no user intervention for extracting it, converting it, etc. Here's how I'm getting the dragon in (not use MDLShapeBaseData, but it's there and can be used).
new MDLShapeBase() {
position = "280 125 55";
rotation = "1 0 90 0";
scale = "1 1 1";
quadsize = "5";
material = "nwnshader";
shapeName="nwn://c_drgwhite.mdl";
};The ResourceManager sees the "nwn://" which indicates that it should extract the file from the NWN directory, then it looks up where that directory is in the system registry, looks for the model in all of the installed files (including patches and download HAK / MOD files). It then proceeds to correctly load the file. Currently only .mdl and .tga files are supported, but some of the other files could be supported as well (the sound files, for instance).
Whew, ok, time for a break. I think that's about all I'm going to do on the MDL side-track for now. I'll tackle some network code and see if I can't get transparent server handoffs at least started.
Edit: Ok, my free host doesn't allow images to be linked from other sites. If you want to see, visit my site and click on "Click here for a screen shot."
Sgt Flame's Place
About the author
I am the founder of IndieZen.org, a website dedicated to the Indie 2.0 Revolution where a number of Indie game development studios and individuals collaborate and share a suite of custom built open source game development tools and middleware.
#2
08/15/2005 (10:53 pm)
Nice - cool to see you making progress on this!
#3
08/16/2005 (6:11 am)
Have to say I am impressed too ... seems you have development on this going very quickly.
#4
I think it's because:
A)Attacks and spells were all based upon hidden dice rolls. Collision detection isn't really necessary.
B) It was a PITA in EQ to have to maneuver around mobs and other players in a snug dungeon in order to get to where you needed to be to do your job. An Ogre or a Troll took up alot more space and if in the way could prevent targeting mobs, getting within range for tanks. Being trapped in the corner because you're surrounded by mobs isn't fun either.
For PvP play, you can no longer create a wall of meatshields in front of the casters. If someone has plans to attack the caster, you can't prevent them from doing so (by simply being in the way). It changes the gameplay significantly.
C) Have you been to the Iron Forge Auction Hall?
08/16/2005 (6:40 am)
WoW doesn't use collision detection for anything but moving your character through the environment (or collecting the flag in Warsong Gulch). I think it's because:
A)Attacks and spells were all based upon hidden dice rolls. Collision detection isn't really necessary.
B) It was a PITA in EQ to have to maneuver around mobs and other players in a snug dungeon in order to get to where you needed to be to do your job. An Ogre or a Troll took up alot more space and if in the way could prevent targeting mobs, getting within range for tanks. Being trapped in the corner because you're surrounded by mobs isn't fun either.
For PvP play, you can no longer create a wall of meatshields in front of the casters. If someone has plans to attack the caster, you can't prevent them from doing so (by simply being in the way). It changes the gameplay significantly.
C) Have you been to the Iron Forge Auction Hall?
#5
Take this chunk of a mission file as an example:
this works as well.
There are two main parts of this code... the part that supports the NWN resource file and interprets the "nwn://" prefix to resources, and the part that supports the MDL file format. They do not rely on each other, so I can choose between DTS and MDL files for my game file format... or both. The only thing that I can see that MDL provides that DTS does not provide is support for skin and dangly meshes (soft bodies). These mesh types have additional vertex information (tensor / weight type information) that would allow the game engine (if I implement it) to correctly render the soft-body meshes. I know Blender has suport for assigning weights and tensile strength to vertices and probably Max does as well. Although an MMO game might not be suitable for this, other game types (single player RPG for instance) might.... and it would add significant eye candy. I'm putting this on my list of things to do, but it's a lower priority for now. (but it sounds like a very fun challenge.)
08/16/2005 (10:04 am)
Just as a side-note so I'll remember later...Take this chunk of a mission file as an example:
new MDLShapeBase() {
position = "280 125 55";
rotation = "1 0 90 0";
scale = "1 1 1";
quadsize = "5";
material = "nwnshader";
shapeName="~/data/objects/c_drgwhite.mdl";
};this works as well.
There are two main parts of this code... the part that supports the NWN resource file and interprets the "nwn://" prefix to resources, and the part that supports the MDL file format. They do not rely on each other, so I can choose between DTS and MDL files for my game file format... or both. The only thing that I can see that MDL provides that DTS does not provide is support for skin and dangly meshes (soft bodies). These mesh types have additional vertex information (tensor / weight type information) that would allow the game engine (if I implement it) to correctly render the soft-body meshes. I know Blender has suport for assigning weights and tensile strength to vertices and probably Max does as well. Although an MMO game might not be suitable for this, other game types (single player RPG for instance) might.... and it would add significant eye candy. I'm putting this on my list of things to do, but it's a lower priority for now. (but it sounds like a very fun challenge.)

Torque Owner Anton Bursch