kromenak / gengine

A 3D game engine capable of parsing and running data files from the classic Sierra Studio's adventure game Gabriel Knight 3
GNU General Public License v3.0
63 stars 15 forks source link

how to access the clothing(texture) data #1

Closed russellaugust closed 3 years ago

russellaugust commented 4 years ago

Have you come across how the interpreter chooses what clothing textures mods wear? I've been going through all of the various scripts and ini-esque files but I'm not finding anything that actually references specific textures for character mods. Figured it would be linked to time or scene initializations.

kromenak commented 4 years ago

Hi Russell, sorry for the delayed response to this. I didn't realize people were leaving issues on the repo haha. I'll turn on some kind of notifications for the future.

I haven't dug too much into the clothing change feature yet. However, this is my current understanding:

The "MOD" file defined a default texture for each submesh (referred to as MGRP (mesh group?) blocks in the file). So, using just this, you can render "default" clothing.

The asset "CHARACTERS.TXT" lists clothing entries for each character. For example, for GAB there is ClothesDefault, Clothes207a, Clothes307a. My guess is that the game chooses clothes based on the current timeblock. For Day 2, 7AM (207a) until Day 3, 7AM (307a), it uses the Clothes207a option.

The asset pointed to in CHARACTERS.TXT is not a texture, but an ANM (animation) asset. My guess is that the animation just does texture swaps so the model is wearing the right clothing variant. Beyond vertex animations, the GK3 ANM files also let you do other actions like swapping textures or visibility on models or BSP.

russellaugust commented 4 years ago

ahh @kromenak got it. I was looking through the readable scripts and couldn't find any reference. Storing inside the ANM makes sense. BTW, this other guy I've been talking to on here is exploring a vertex->skeletal animation translator for GK3. Not sure if this is in the scope of your project but it could be useful.

kromenak commented 3 years ago

A skeletal animation translator sounds awesome. I'm currently focusing on just getting the original game up and running (one step at a time), but once that's working, I think it'd be cool to consider new features or augmenting the original game in some ways. I like the idea of the Monkey Island style "tap button to switch between original and remastered" functionality.

You've probably read the GK3 post-mortem on Gamasutra, and one of the things Scott Bilas calls out as problematic was the vertex animation. They got to a point where they could not update ANY character models because that would mean redoing all the animations in the game!

So, I think converting to skeletal animation would be awesome because that'd make it possible to swap out character models without having to redo all the animations.