Hi all,
I've been helping out expand TLD and one of the issues I wanted to look into was with regards to Orcs/Dwarves and the issues that come up due to their small size (i.e small meshes and small skeletons).
Issues:
So, inspired by Viking Conquest and their use of SCALE to have different sizes for characters, I, with the help of mtarini, set out to test if using SCALE from module_skins.py would alleviate the above mentioned problems.
A short discussion on Warband and mesh sizes (mtarini):
In order to deal with TLD's races, certain things had to be done (mtarini):
First, we had to study what SCALE actually does. What does the multiplier...multiply exactly?
So if I set the Orc Scale to be K = 0.85,
A) Is the skeleton itself, i.e. (1), multiplied? (our understanding is that it is).
-- If so, the orc skeleton needs to be scaled by 1/K to compensate (i.e. enlarged).
B) Are hit-boxes, i.e. (2), multiplied?
-- If so, they need be refitted (e.g Troll skeleton has natural LARGE hitboxes, and this is right for their size, with a scale factor of 1). If the scale factor was pushed up to, say, something around 2.0, then the current hit-boxes would become twice the size they are now, which is way too much.
We would need new hit-boxes which are half of what they used to be (ready to be the right size... when multiplied by 2). This is quite a bit of work and difficult to get right, but it must be done only once.
-- Same for orcs -- actually the opposite. They have correct, SMALL hit boxes now (now = at a scale factor of 1.0).
If you set the scale at 0.7, the current boxes would become too small.
C) Are rigged wearable meshes multiplied? E.g. armours and rigged boots.
-- Hopefully, not. Otherwise, it would be quite work intensive: every armor would need to have the "orc" frame scaled up by 1/K to compensate (as Orc-specific meshes were made to be smaller)
D) Are non rigged wearable mesh multiplied? E.g. helmets and non-rigged boots.
-- If they are, it is a *real* mess. You would need to enlarge all orc helms to compensate (scale them by 1/K).
-- But then they would look too big when worn by uruks / humans etc.
-- So in practice this would break cross-dressability of helms, so if this is the case I think the multiplier cannot be used.
-- The source of the problem is that our orcs (and dwarves) and smaller body but human-sized heads, by design (especially true for dwarves).
So I set out to do a very quick and dirty experiment: SCALE URUKS TO 5!!
Here are the quick and dirty results (note, I used Custom battles and cheats).
So what do these results tell us?
Conclusion: Scale factor multiplies everything.
Hence, what will happen if we use this for TLD?
Experiment 2: Perform the changes mentioned in A (scale skeleton by 1/K), B(refit hitboxes), C (scale armor meshes), D (scale helm meshes)
Trolls:
Scale factor of K= 1.666667.
With the changes implemented, the trolls now look majestic when they walk. No more foot stuttering / sliding. High Level Archers are also now aiming at Troll Heads! So Bonus Issue was corrected!
However, because of the SCALE factor, when arrows hit Mr. Troll... well... see for yourself:
As you can see, arrows became "Magic Arrows" where it is quite large when it hits the troll (scaled by K, most likely).
Orcs:
Scale factor of K=0.877192982
Conclusions:
- Orc will have smaller heads.
- Walk Cycle will look faster
- No change in high level archer aim. They still shoot above their heads
Bonus Test:
- Make Orc heads slightly bigger so that they look 'normal sized' head (same as uruks/humans), with small bodies, and change helm meshes to accomodate the change.
- Reason being is that theoretically, it would look bigger when Uruks or Men wore the helmet, but what does it look like in-game? Maybe it is acceptable?
Results:
So it looks like little uruk borrowed his big brother's helm.. For us, quite unacceptable.
Final Thoughts:
Pros of using SCALE:
- No more Troll feet sliding / stuttering.
- Archers aim towards Troll heads, not crotches
- No more talking to Troll crotch during dialogues
- Better, but still not perfect, aiming for high level elves VS orcs.
- Camera fixed for Orc / Dwarve players
Cons of using scale:
- Aiming of high-level elves still not fixed
- Have to resize skeletons, meshes, and hitboxes of affected races
- Giant arrows for trolls, mini arrows for orcs/dwarves when they are hit
- Crossdressing (e.g uruks/humans wearing orc/dwarven helms) would look funny.
With all these tests and experiments, weighing both the pros and cons, we concluded that it is not worth going through the effort of making the changes for affected races. We cannot justify that much work for such little gain. Perhaps if TLD still had a full and dedicated team again, then it might be plausible.
Looking back at VC, it looks like they used their largest character (Tall) to be the standard (scale = 1). From there, they reduced the scale of each skin (something like normal height=0.9, short=0.85, child=0.75).
It might have been acceptable for the team to have slightly smaller arrows stick to short/normal characters; faster walk cycles for the shorter/normal characters (i think thats why it always look like your character run so fast!).
I hope this post is of help to people thinking about using SCALE. I havent seen much posts about scale and the above experiments/discussions were mostly through PMs and Skype, but we decided that it might be of help to others.
TL;DR:
What does SCALE in module_skins.py do?
- Multiplies everything by the Scale factor (skeleton, hitboxes, meshes).
Experimented on using SCALE for TLD due to the different races (trolls, orcs, dwarves) to fix the below issues:
- 1) high level elven archers s shooting above orc heads (they are going for a headshot but orcs are short)
- 2) camera issue when playing as orc or dwarf
- 3) Troll foot sliding / stuttering due to code to slow it down
Did it fix the issues?
- 1) no
- 2) Yes
- 3) yes
Did it cause other issues?
- Giant / Mini arrows when it hits scaled races
- faster walk cycles for shorter races
- Crossdressing (e.g uruks/humans wearing orc/dwarven helms) would look funny.
Thanks!
I've been helping out expand TLD and one of the issues I wanted to look into was with regards to Orcs/Dwarves and the issues that come up due to their small size (i.e small meshes and small skeletons).
Issues:
- Orcs / Dwarves, when used by players, will have a bad camera angle due to their size.
- High Level Elves (ie. high Archer prof) will consistenlty go for head shots, but because of Orc's small size, it will go above their heads (ie. Archers think that their heads are up there).
- Bonus Issue: Trolls / ents have larger skeletons / meshes, but their walk cycle was reduced so they become slower (ie so that they do not walk as fast as humans). Foot sliding / stuttering occurs as a result of this; archers aim for the groin instead of head; and when conversing with trolls, you get a very good view of it's crotch (those who have played TLD will know this).
So, inspired by Viking Conquest and their use of SCALE to have different sizes for characters, I, with the help of mtarini, set out to test if using SCALE from module_skins.py would alleviate the above mentioned problems.
A short discussion on Warband and mesh sizes (mtarini):
In an ideal world, where everything worked the "sensible" way, there would be no need of any "scale" parameter, and the skeleton (the one stored in a BRF file) would determine everything alone.
Unfortunately, that's not the case
Instead, there's as many as three sources of info used by the game in a way or another:
(1) the skeleton BRF data, which you can manipulate in OpenBRF
(2) the associated hitboxes, which are found inside the file skeleton_bodies.xml
(and you can also manipulate in OpenBRF)
(3) the scale multiplier, found in module_skins.py (and thus skins.txt)
It is not clear (to me, at least) which of the three things affects which aspect of the game exactly.
In order to deal with TLD's races, certain things had to be done (mtarini):
We exploited skeleton brf data in very tricky ways to gain all sort of effect on poses (e.g. hunched+bowlegged orcs, slightly taller elves).
We carefully edited hitboxes in skeleton_bodies.xml to get hitboxes right.
As you say, we didn't have the scale parameter because it just didn't work in M&B 1.011. But now we do!
First, we had to study what SCALE actually does. What does the multiplier...multiply exactly?
So if I set the Orc Scale to be K = 0.85,
A) Is the skeleton itself, i.e. (1), multiplied? (our understanding is that it is).
-- If so, the orc skeleton needs to be scaled by 1/K to compensate (i.e. enlarged).
B) Are hit-boxes, i.e. (2), multiplied?
-- If so, they need be refitted (e.g Troll skeleton has natural LARGE hitboxes, and this is right for their size, with a scale factor of 1). If the scale factor was pushed up to, say, something around 2.0, then the current hit-boxes would become twice the size they are now, which is way too much.
We would need new hit-boxes which are half of what they used to be (ready to be the right size... when multiplied by 2). This is quite a bit of work and difficult to get right, but it must be done only once.
-- Same for orcs -- actually the opposite. They have correct, SMALL hit boxes now (now = at a scale factor of 1.0).
If you set the scale at 0.7, the current boxes would become too small.
C) Are rigged wearable meshes multiplied? E.g. armours and rigged boots.
-- Hopefully, not. Otherwise, it would be quite work intensive: every armor would need to have the "orc" frame scaled up by 1/K to compensate (as Orc-specific meshes were made to be smaller)
D) Are non rigged wearable mesh multiplied? E.g. helmets and non-rigged boots.
-- If they are, it is a *real* mess. You would need to enlarge all orc helms to compensate (scale them by 1/K).
-- But then they would look too big when worn by uruks / humans etc.
-- So in practice this would break cross-dressability of helms, so if this is the case I think the multiplier cannot be used.
-- The source of the problem is that our orcs (and dwarves) and smaller body but human-sized heads, by design (especially true for dwarves).
So I set out to do a very quick and dirty experiment: SCALE URUKS TO 5!!
Here are the quick and dirty results (note, I used Custom battles and cheats).
So what do these results tell us?
- Skeleton is scaled by 5. It looks obvious from the images
- From the test, it looks like the hitboxes are multiplied, along with the skeleton, as i can hit each part of the uruk as a whole.
- Rigged meshes: It looks like they are multiplied, along with skeleton and hitboxes, as it fits the way it should on the character.
Conclusion: Scale factor multiplies everything.
Hence, what will happen if we use this for TLD?
Experiment 2: Perform the changes mentioned in A (scale skeleton by 1/K), B(refit hitboxes), C (scale armor meshes), D (scale helm meshes)
Trolls:
Scale factor of K= 1.666667.
With the changes implemented, the trolls now look majestic when they walk. No more foot stuttering / sliding. High Level Archers are also now aiming at Troll Heads! So Bonus Issue was corrected!
However, because of the SCALE factor, when arrows hit Mr. Troll... well... see for yourself:
As you can see, arrows became "Magic Arrows" where it is quite large when it hits the troll (scaled by K, most likely).
Orcs:
Scale factor of K=0.877192982
Conclusions:
- Orc will have smaller heads.
- Walk Cycle will look faster
- No change in high level archer aim. They still shoot above their heads
Bonus Test:
- Make Orc heads slightly bigger so that they look 'normal sized' head (same as uruks/humans), with small bodies, and change helm meshes to accomodate the change.
- Reason being is that theoretically, it would look bigger when Uruks or Men wore the helmet, but what does it look like in-game? Maybe it is acceptable?
Results:
So it looks like little uruk borrowed his big brother's helm.. For us, quite unacceptable.
Final Thoughts:
Pros of using SCALE:
- No more Troll feet sliding / stuttering.
- Archers aim towards Troll heads, not crotches
- No more talking to Troll crotch during dialogues
- Better, but still not perfect, aiming for high level elves VS orcs.
- Camera fixed for Orc / Dwarve players
Cons of using scale:
- Aiming of high-level elves still not fixed
- Have to resize skeletons, meshes, and hitboxes of affected races
- Giant arrows for trolls, mini arrows for orcs/dwarves when they are hit
- Crossdressing (e.g uruks/humans wearing orc/dwarven helms) would look funny.
With all these tests and experiments, weighing both the pros and cons, we concluded that it is not worth going through the effort of making the changes for affected races. We cannot justify that much work for such little gain. Perhaps if TLD still had a full and dedicated team again, then it might be plausible.
Looking back at VC, it looks like they used their largest character (Tall) to be the standard (scale = 1). From there, they reduced the scale of each skin (something like normal height=0.9, short=0.85, child=0.75).
It might have been acceptable for the team to have slightly smaller arrows stick to short/normal characters; faster walk cycles for the shorter/normal characters (i think thats why it always look like your character run so fast!).
I hope this post is of help to people thinking about using SCALE. I havent seen much posts about scale and the above experiments/discussions were mostly through PMs and Skype, but we decided that it might be of help to others.
TL;DR:
What does SCALE in module_skins.py do?
- Multiplies everything by the Scale factor (skeleton, hitboxes, meshes).
Experimented on using SCALE for TLD due to the different races (trolls, orcs, dwarves) to fix the below issues:
- 1) high level elven archers s shooting above orc heads (they are going for a headshot but orcs are short)
- 2) camera issue when playing as orc or dwarf
- 3) Troll foot sliding / stuttering due to code to slow it down
Did it fix the issues?
- 1) no
- 2) Yes
- 3) yes
Did it cause other issues?
- Giant / Mini arrows when it hits scaled races
- faster walk cycles for shorter races
- Crossdressing (e.g uruks/humans wearing orc/dwarven helms) would look funny.
Thanks!