Hi there! You are currently browsing as a guest. Why not create an account? Then you get less ads, can thank creators, post feedback, keep a list of your favourites, and more!
Instructor
Original Poster
#1 Old 23rd May 2005 at 4:16 AM Last edited by pinhead : 23rd May 2005 at 4:20 AM.
Default Project: Making custom hair styles works with game genetics
Ok. This is not a huge feature but will be something extra to play the game.

I recently found a way to make the custom hairs works with the game genetics. The objective of this thread is to know if will be good or bad to create values for hairtones, different of the maxis values, to be used by the custom content for each color tone.

I like to know what you guys think about this idea and give suggestions or positions about this topic.

Here is a list of the objective of this project for discuss:

Custom Hairs will work with genetics
Will be categorized as always, custom content, in the asterix section
Each color will have a unique value and you will set the right color genetic that will be used
When the game creates a Sim and read the genetic, will only use the custom hairs of that color genetic that you setted for get the correct hair


So far, i'm modifying manually to test and learn more about it and the problem that i found so far is that we need to create a value for each of the colors and share this value to all other custom hairs. In this way, the game read it as a color and will use all hairs that have this value to randomize the hairstyles.
If we don't do that, the custom hair will only be recessive or dominant but will not change to other hairstyle and be stuck with the same hairstyle.
Other thing is that if you don't have custom hairs for the guys (like me.. lol) if the child is a boy will use the father hair color.

I didn't thinking about change to maxis default values for colors because if we do that the hairs will be categorized in maxis section and you will have a huge and messed up section to choose a hair.


I like to hear what people think about it
so, feel free to leave a question or suggestion here.

thanks!
Advertisement
Instructor
#2 Old 23rd May 2005 at 4:22 AM
I think it's a great idea, but you know what else would be wonderful? If you could set a value for a CC hair, and it'll put the hair w/ the Maxis hairs of the same color. For example, you set a CC hair to blonde, and it'll appear when you click the blond icon, not the asterisk. This way, if you want a blond hairstyle, you won't have to scroll thru a ton of black, brown, or red hairs. You'd just have blond hairs to choose from.

Sorta like how they did the Jeannete Biederman mesh, but for all the hairstyles.
Instructor
Original Poster
#3 Old 23rd May 2005 at 4:31 AM
Thanks for your post, idtaminger.
We, here in MTS2, already found how to do it in this way, but if you make that with all your custom contents will be a hell lot of mess.

if you interested here's the link:
http://forums.modthesims2.com/showthread.php?t=55427

I'm saying that because all custom hairs have an elder texture and if you have a blond, black, red, brown or multicolored of the same custom hair will appear in the grey catalog a copy of all same grey textures.
Tartan McBadgerface
#4 Old 23rd May 2005 at 10:59 AM
It would be nice to be able to have new colours with the same Maxis styles like a genetic light brown/dark blonde which is dominant over blonde and red and weaker than brown or black or a strawberry blonde which is dominant over blonde and weak to red. A dark brown between black and brown would be nice too.
Instructor
Original Poster
#5 Old 24th May 2005 at 1:37 AM Last edited by pinhead : 25th May 2005 at 2:42 AM.
Quote: Originally posted by idtaminger
I think it's a great idea, but you know what else would be wonderful? If you could set a value for a CC hair, and it'll put the hair w/ the Maxis hairs of the same color. For example, you set a CC hair to blonde, and it'll appear when you click the blond icon, not the asterisk. This way, if you want a blond hairstyle, you won't have to scroll thru a ton of black, brown, or red hairs. You'd just have blond hairs to choose from.

Sorta like how they did the Jeannete Biederman mesh, but for all the hairstyles.



But i really don't like the idea of custom content to be place with maxis content. I think that for hair meshes is a good idea but just for recolors and alpha modifications is really bad. This is why i create this thread, if we made a new value for custom colors will use the genetics and will not mess up the maxis sections.
Instructor
Original Poster
#6 Old 24th May 2005 at 1:42 AM
Quote: Originally posted by Hellfrozeover
It would be nice to be able to have new colours with the same Maxis styles like a genetic light brown/dark blonde which is dominant over blonde and red and weaker than brown or black or a strawberry blonde which is dominant over blonde and weak to red. A dark brown between black and brown would be nice too.


Yes!! we will be able to do that for sure!!
You can choose a color to be set the correct genetic and all that colors will share the same value and the game randomize the hairstyles that use that value when create a sim (born or child created in CAS). This is why i create this thread! to know if will be cool have this feature or not. I need to discuss more about it before talk to quaxi to implement in scan folders plugin (if possible)
My idea is to chose what kind of color that hair will be categorized. And then, the genetics will work with the color that you setted for it.
Administrator of Loverat's Tea and Underpants
#7 Old 25th May 2005 at 3:19 AM Last edited by RGiles : 25th May 2005 at 4:51 AM.
It is my feeling, as I said before, that the * catagory in hair DOES NOT mean custom content. Because when Maxis shipped the game, they already had hair in this category. Those Maxis hairs are "dyed" hairs. Colors that can not be genetic. If we are putting our hair in with those hairs, we are already putting it in with Maxis content.

I find this organization unhelpful. When the Biederman hair was added, it showed up very clearly as custom content even though it had entries for black, blond, brown and red. I don't find anything about that confusing. It's clear that it's custom. It's clear that I can delete it, and it's clear that it's genetic and not a dyed hair color. I think that was a good choice.

I avoid creating sims with hair that shows up in the * category because I know that it will not be genetic. That is a useful indicator to me.

If I can still see that a user-created hair is user created because it is marked with a * but is also properly categorized so that I don't have to search through a huge list of thumbnails just to find the same hair in a different color, that I think is perfect. I don't like having everything on one bin. The way I'm organizing hair right now it exactly the same way that custom objects are organized. They go into the default categories but are marked as custom. I would not like it if I had to put all custom object meshes into one bin regardless of the type of object that it was. I don't like it any better with hairs.

Pinhead,
I am not sure why you consider it to be really bad that something like an alpha map change that is just a recolor get listed under the correct color category rather then under the * which means "Miscellaneous" in this case, not "Custom". To me this works exactly like the rest of the game. For clothing we have recolor listed in the Maxis categories (every day, formal, etc) rather than all in one bin. We can not tell by looking at the clothing catalog which is a new mesh and which is a Maxis mesh recolor. But we can see that they are custom content. If this is not too confusing for all other types of content, why would it be too confusing for hairs?
Instructor
Original Poster
#8 Old 25th May 2005 at 5:58 AM Last edited by pinhead : 25th May 2005 at 6:01 AM.
nice point.

well, for me the bad thing is that crap elder hair texture that exist with all custom packages...
maybe we can find a way to make just one thumbnail show up.

you told about using the family hash in property set for change the elder to "default" one that you choose.
You can do in other ways as well, but all of them, after you delete one package that isn't the "main" package, all the other will lost the elder.

other ways to not show the thumbnail:
set the flag to 0x00000009
change the MATD links in 3IDR to elder MATD of the main package, as well link to property set of that package.

For me, i don't understand yet why maxis didn't made a option for us to chose what type of color will be categorized. I can't understand. So, maybe, with expansion packs will add more and more new maxis hairstyles there and if all custom content go there will be hard to find the maxis ones.

My idea was just to keep the same way that maxis designed but with the genetics working.

Will be good to talk about it and i really like to hear other positions and ideas like yours.
Administrator of Loverat's Tea and Underpants
#9 Old 25th May 2005 at 6:32 AM
What about making the elder hair a separate package? Really the process you described for merging all the colors into one package is the best one, but it is a very long process and I make mistakes every single time.

To avoid the problem I have where deleting the black hair makes me lose the grey hair too, what I could do is copy the black hair and rename that package to NameOfHairstyle_grey. Then I could remove the grey hair options from the black hair package. And remove everything except the elder hair from the grey hair package.

This is still not as a clean as your method of merging... better if you delete one, you delete them all. But this way if I delete the black hair but keep the blond hair, it will still age correctly.

For my own use, I am not really worried about making it hard to find the Maxis hairs. I think the * on the custom thumbnails is really clear, and I think this is the same situation that exists with clothes. Custom content is first in the catalog and marked with *, followed by all Maxis items. It may take a long time to scroll to the Maxis stuff just like it does in clothes, but I find this better than having to search through one bin just because I want to change to a different color of the same custom style. Having so many things in the * category has become a bad problem for me... can't find anything. Most creators don't even bother to say which color it is in the description, and you can't tell the difference in the thumbnails because they are all so dark.

I think it would have been better if Maxis had set it up this way to begin with, but that would have made bodyshop more complicated... because a user creating a red hair that is the same style as a blond hair they already created would need to have a way to select which "set" or family that hair belonged to, and they would have to avoid having 2 hairs of the same color get added to the same "set". So I can see why they didn't implement it.
Instructor
Original Poster
#10 Old 28th May 2005 at 3:52 AM Last edited by pinhead : 28th May 2005 at 3:55 AM.
Quote: Originally posted by RGiles
What about making the elder hair a separate package? Really the process you described for merging all the colors into one package is the best one, but it is a very long process and I make mistakes every single time.


It's not a bad idea. Will eliminated the elder problem.
But other things must be study better.
For example, i downloaded a lot of Sims in the past months. Some of them had custom hairs that if you look inside the package has wrong color textures for other ages. Like the creator used a base color that is not the color that will be created. For example, using a red hair to make a black hair for adult females. They didn't change the other colors of the hair for toddlers, kids and teens. So, if we set that package to be placed in maxis color sections will put there red hairs in black section for toddlers, child and teens.
For correct that we will still need to edit the package manually or "create parts" using bodyshop and change the wrong colors. :/
I personally use SimPE to change all wrong textures but it's boring had to open every single hair package and make sure that proxy and textures are setted right and make the proper changes...

Quote: Originally posted by RGiles
For my own use, I am not really worried about making it hard to find the Maxis hairs. I think the * on the custom thumbnails is really clear, and I think this is the same situation that exists with clothes. Custom content is first in the catalog and marked with *, followed by all Maxis items. It may take a long time to scroll to the Maxis stuff just like it does in clothes, but I find this better than having to search through one bin just because I want to change to a different color of the same custom style. Having so many things in the * category has become a bad problem for me... can't find anything. Most creators don't even bother to say which color it is in the description, and you can't tell the difference in the thumbnails because they are all so dark.


I think that you are right. I don't remember for sure what was my fear to do that. But maybe was exactly the problem that i described to you above.

So, if we just let them be as they are, only changing the genetics to be recessive or dominant and putting in the right "custom" color that we will create a value, will not mess with maxis color sections with wrong colors. And the custom hairs will be randomized in the game with the colors that they belong. All custom hairs. And one more thing, when randomized will not use hairs that are maxis or are setted in maxis color sections, so every time will appear just custom hairs when the game create a child, but only using the packages that were setting to use that color value.

what do you think about that?
Administrator of Loverat's Tea and Underpants
#11 Old 31st May 2005 at 5:12 AM
Ah, I see your concern. I thought maybe it was about the Proxy value, which of course is often wrong. (So tedious to fix it, I agree.)

My proposal as I said elsewhere is pretty selfish. I just want to be able to organize my files in a way that I spend less time looking for the right thing and more time just creating or playing.

Since it would not be for files I am creating to share, but just a tool for personal organization, I wouldn't worry too much about these flaws. There definitely are flaws like you describe. But each user would be deciding for themselves whether they wanted to tolerate those flaws, I think. In fact they already are dealing with this problem when they download a new badly packaged red hair and that Sim has only blond children who magically turn into redheads when they child becomes a Teen or Adult.

However it would actually help to solve this if the colors were sorted in the color bins instead of the * bin. If I see a blond hair for a child in the * bin, I will assume any child with that hair will grow up to be a blond as an Adult. But if I sort the hair files by the color the creator said it was, and I see that I have a Blond child's hair in the Red hair bin, I will immediately know this package was made sloppily. I would know I need to remove certain files from the package to make it unavailable to ages that were not recolored.

I don't think there is a way to make a perfect solution, because we can not make all creators make perfect packages every time. Many of them have learned along the way about these problems and have improved a lot. But some people will always be a bit sloppy. I am less worried about perfect than about the fact that it may take me 5 minutes to find the brown hair of a particular style in the * bin, and knowing this will only get worse every time I install a new hair.

For me the best thing would be to have the ability to organize these files into categories of my choosing, but that's completely impossible in the game. So lacking that, I want to be able to use the 6 categories we were given rather than be restricted to only 1. Some imperfect organization would (for me) be an improvement over no organization at all.
Instructor
Original Poster
#12 Old 31st May 2005 at 8:20 AM
Quote: Originally posted by RGiles
Ah, I see your concern. I thought maybe it was about the Proxy value, which of course is often wrong. (So tedious to fix it, I agree.)

My proposal as I said elsewhere is pretty selfish. I just want to be able to organize my files in a way that I spend less time looking for the right thing and more time just creating or playing.


I understand.
I'm interested like you about that. To make my downloads not be a mess. And i'm a little tired fixing all that i got. It's so many things that we need to fix to work like we wish that playing time is almost none.

Quote: Originally posted by RGiles
Since it would not be for files I am creating to share, but just a tool for personal organization, I wouldn't worry too much about these flaws. There definitely are flaws like you describe. But each user would be deciding for themselves whether they wanted to tolerate those flaws, I think. In fact they already are dealing with this problem when they download a new badly packaged red hair and that Sim has only blond children who magically turn into redheads when they child becomes a Teen or Adult.


Good point. Well, i don't know for sure, but an extra tool to do that will be cool. I was thinking that if some kind of tool was add to SimPE, other people that share contents will use it as well and then the problem will not go. Will be the same thing. We will need to open each package that we get and look if everything is fine there and correct what was not. So, i was thinking about a tool that will be used by downloaders and creators and find a way to not create more problems.

Quote: Originally posted by RGiles
However it would actually help to solve this if the colors were sorted in the color bins instead of the * bin. If I see a blond hair for a child in the * bin, I will assume any child with that hair will grow up to be a blond as an Adult. But if I sort the hair files by the color the creator said it was, and I see that I have a Blond child's hair in the Red hair bin, I will immediately know this package was made sloppily. I would know I need to remove certain files from the package to make it unavailable to ages that were not recolored.


Hey!! Nice point!! I wasn't thinking about that.
I think you are right. And maybe the game will get all the hairs of that color when creating a child and maybe will not use the wrong custom hair.
If will be like this, i think now that will be the best choice!

Quote: Originally posted by RGiles
I don't think there is a way to make a perfect solution, because we can not make all creators make perfect packages every time. Many of them have learned along the way about these problems and have improved a lot. But some people will always be a bit sloppy. I am less worried about perfect than about the fact that it may take me 5 minutes to find the brown hair of a particular style in the * bin, and knowing this will only get worse every time I install a new hair.


I agree. But my "quest" was just discuss about the better way (less problematic) to suggest in a tool. I was thinking that maybe creating a new way to categorize the custom contents was the better choice, but since you said that, now i think that the game will get other hairstyle for that color when a child is born. So, even if the creator didn't change the color of the textures to other ages, will not be so bad.
The only problem will be in the catalog, like i said before, that will show red color in a black catalog. Anyway, you can recreate or change the textures or delete the package for good. In the moment, is the only problem that i can imagine. lol

It is less problematic that my idea. I was just trying to find a way to keep like maxis designed but making the genetics work. However has some problems to both ways, my idea has other problems that will not be so good to use it.

Maybe placing the hair in the color bins will encourage the creators to change all ages when recoloring a hair. They will not like having wrong colors in their catalogs.

thanks, RGiles!
Zombie Coder
#13 Old 3rd Jun 2005 at 5:33 AM
Ok, I've read through this thread, as well as the original thread that started the project (I think). I've also done some research on the family and hairtone values of Skin propertysets (Type ID 0xEBCF3E27...I am not sure what SimPE calls them, but they also define Skintines and clothing).

Anyway, here is what I've learned. Please let me know if I've got anything wrong.

Hairtone Details

Hairtone: This property defines the hairton group, or the color grouping. It has the following known values:

Black: 00000001-0000-0000-0000-000000000000
Brown: 00000002-0000-0000-0000-000000000000
Blond: 00000003-0000-0000-0000-000000000000
Red: 00000004-0000-0000-0000-000000000000
Gray: 00000005-0000-0000-0000-000000000000
Other/Styled: 00000006-0000-0000-0000-000000000000

In the last hairtone group, "6", I've seen hair colors of all colors, including Strawberry, Pink, Blue, Green, Blond Streaked, Streaked (elder only...so far), etc. I figure it for styled hairs, rather than your normal, standard hairtones. The Gray hairtone is used for elder sim versions of the adult sim, regardless of the normal color.

family: This property groups sets of hairtones. While you can define a hairtone to be in a specific color group, you can group hairtones of different colors under a family. There should be 4 hiartones in a family (black, brown, blond, red), but you can also have styled hairtones in a family of their own. I've never seen a family that had both the 4 base colors and a styled hairtone...I'm not sure if its possible or not. There are also some families that don't seem to have an easily recognizable pattern to their contents. Try looking for skin propertysets that have a family of: 1924713d-f403-4017-9b9c-a789c43c1132 (DatGen has a very good search feature that will let you do this...just paste the family code into the criteria area in the search, and search using ASCII mode. Use Skins.package from the base game files.)

genetic: This is a floating point value...its normally 0. Actually, I've never seen any other value, although I'm assuming 1 is fully genetic, 0 is not genetic at all. Since this is a float value...I'm assuming there can be grades of genetic? I.E. Something with a value of 0.1 would be more recessive than a value of 1.0 (which would be fully dominant)?

name: This is the name of the skintones texture. The name can be anything I think, but maxis has a convention they follow. It uses the following pattern:

"tfhairhatbucket_camo_blond"

<a><g><rt>[st]<n>_[g2]_<g1>_[s]

WHERE:

<> = required
[] = optional

a = age: p=toddler, c=child, t=teen, a=adult/elder, (e=elder <-- invalid?), u=universal
g = gender: u=universal, m=male, f=female
rt = root type, i.e. "hair"
st = sub type, i.e. "hat"
n = descriptive name
g2 = secondary grouping, i.e. "camo" in "tfhairhatbucket_camo_blond"
g1 = primary grouping, i.e. "blond" in "tfhairhatbucket_camo_blond"
s = suffix...dunno, not sure, optional :P

override*: I've noticed that many hairtones include overrides. I'm not exactly sure how these work, but hats always seem to have them, and some strait hair hairtones have them. I'm assuming they allow additional textures to be overlayed on top of the base hairtone texture. A deeper explanation of how these work would be helpful.

There are also Hairtone property sets. These... I'm not exactly sure what they do, but I think there is one per hairtone color. For example...if someone creates a new hairtone set, with black, brown, blond and red. There would be a hairtone propertyset for each one, associated by the family GUID.

Properly Categorizing Hairtones

The original reason I got involved in this project was to write a plugin to allow users to define which hairtones fall under the same family, and which of those hairtones in that family are black/brown/blond/red.

Assuming that the content creator who made the hairtones did their job correctly (excepting the hairtone/family part), properly organizing hairtones should be pretty strait forward. The process would be as follows, at least as far as I understand it:

1) Allow the user to load packages into DatGen, or choose to have the plugin automatically search for hairtone files (Skin type Property Sets...Type ID 0xEBCF3E27) in all packages in the downloads directory. Search for hairtones in the specified set of packages.
2) Display the found hairtones, organized by current family and probably alphabetized by the <g1> part of the name property.
3) Allow the user to flag a black, brown, blond, and red hairtone, and possibly others (i.e. Gray, styled).
4) Provide a button that, when clicked, updates the selected hairtones. The hairtone value is set appropriately, a new family ID is generated and assigned to each skin. The Hairtone Property Sets (type id 0x8C1580B5) that have the original family ID and a name property that matches the correct color (i.e. if the skin property set had a hairtone of 00000003-0000-0000-0000-000000000000, then the name of the hairtone property set would be "Blond") will also have their family GUID updated.

When the process is done, the hairtones selected by the user should properly show up in the CAS when creating a sim (or in bodyshop). The user can then go and select different hairtones and repeat the process, or exit the plugin.

Let me know if any of my understanding of skin and hairtone property sets is wrong, and if my process is wrong in any way. I'm hoping to finish the plugin by friday night or saturday.
Instructor
Original Poster
#14 Old 3rd Jun 2005 at 6:50 AM Last edited by pinhead : 3rd Jun 2005 at 7:01 AM.
Quote: Originally posted by DarkMatter
Ok, I've read through this thread, as well as the original thread that started the project (I think). I've also done some research on the family and hairtone values of Skin propertysets (Type ID 0xEBCF3E27...I am not sure what SimPE calls them, but they also define Skintines and clothing).

Anyway, here is what I've learned. Please let me know if I've got anything wrong.

Hairtone Details


Correct. The sixth type will be multicolored and be placed in * bin.

Quote: Originally posted by DarkMatter
family: This property groups sets of hairtones. While you can define a hairtone to be in a specific color group, you can group hairtones of different colors under a family. There should be 4 hiartones in a family (black, brown, blond, red), but you can also have styled hairtones in a family of their own. I've never seen a family that had both the 4 base colors and a styled hairtone...I'm not sure if its possible or not. There are also some families that don't seem to have an easily recognizable pattern to their contents. Try looking for skin propertysets that have a family of: 1924713d-f403-4017-9b9c-a789c43c1132 (DatGen has a very good search feature that will let you do this...just paste the family code into the criteria area in the search, and search using ASCII mode. Use Skins.package from the base game files.)


I don't know if i understand what you said. But Family (dtString) inside property set is used to make a "set" of the different ages to use the correct hairstyle when aging.
In Hairtone Property set, this value is used as the base for create a unique Hairtone value of the custom content inside the age property sets.

Quote: Originally posted by DarkMatter
genetic: This is a floating point value...its normally 0. Actually, I've never seen any other value, although I'm assuming 1 is fully genetic, 0 is not genetic at all. Since this is a float value...I'm assuming there can be grades of genetic? I.E. Something with a value of 0.1 would be more recessive than a value of 1.0 (which would be fully dominant)?


The genetics are:
0 - used by default for custom hairs, maxis multicolored and maxis grey. I think that this value ignore the genetic system.

1 - used for black and brown. are dominants

2 - used by blond and red. recessives

Quote: Originally posted by DarkMatter
name:


Sorry. I don't know too much about naming stuff. But i always use like maxis,
and like you already stated. afhair(nameofthestyle)_blond
So, i think is right waht you said, but not sure.

Quote: Originally posted by DarkMatter
override*: I've noticed that many hairtones include overrides. I'm not exactly sure how these work, but hats always seem to have them, and some strait hair hairtones have them. I'm assuming they allow additional textures to be overlayed on top of the base hairtone texture. A deeper explanation of how these work would be helpful.


Once again i'm not sure about what you said. What i can tell you that i know is the "overridesubset" are the groups that the mesh has. So, the 3IDR use the order stored there to organize the textures by MATD. But, the MATDs references inside 3IDR have to be in the exact order stored in the property sets or the textures will be placed in wrong subsets (groups of the mesh)


Quote: Originally posted by DarkMatter
There are also Hairtone property sets. These... I'm not exactly sure what they do, but I think there is one per hairtone color. For example...if someone creates a new hairtone set, with black, brown, blond and red. There would be a hairtone propertyset for each one, associated by the family GUID.


Exactly. Each color when creating inside bodyshop will use the Family of Hairtone Property Set for create the hairtone value of the Age Property set.
I was thinking that you said that already, or Am i understanding wrong?


Quote: Originally posted by DarkMatter
Properly Categorizing Hairtones

The original reason I got involved in this project was to write a plugin to allow users to define which hairtones fall under the same family, and which of those hairtones in that family are black/brown/blond/red.

Assuming that the content creator who made the hairtones did their job correctly (excepting the hairtone/family part), properly organizing hairtones should be pretty strait forward. The process would be as follows, at least as far as I understand it:

1) Allow the user to load packages into DatGen, or choose to have the plugin automatically search for hairtone files (Skin type Property Sets...Type ID 0xEBCF3E27) in all packages in the downloads directory. Search for hairtones in the specified set of packages.
2) Display the found hairtones, organized by current family and probably alphabetized by the <g1> part of the name property.
3) Allow the user to flag a black, brown, blond, and red hairtone, and possibly others (i.e. Gray, styled).
4) Provide a button that, when clicked, updates the selected hairtones. The hairtone value is set appropriately, a new family ID is generated and assigned to each skin. The Hairtone Property Sets (type id 0x8C1580B5) that have the original family ID and a name property that matches the correct color (i.e. if the skin property set had a hairtone of 00000003-0000-0000-0000-000000000000, then the name of the hairtone property set would be "Blond") will also have their family GUID updated.


The item 4 i didn't understand correctly i think. The others items are exactly what we are looking.

"hairtone value is set appropriately,a new family ID is generated and assigned to each skin"
you meant that use the maxis IDs for the colors, right? and skins are the property sets that have Age flags, right? i'm a bit confuse, sorry.

"(i.e. if the skin property set had a hairtone of 00000003-0000-0000-0000-000000000000, then the name of the hairtone property set would be "Blond") will also have their family GUID updated"

Family GUID will be 00000003-0000-0000-0000-000000000000?
the name stored there i think is not so important.
could you please look into "proxy (dtString)" inside Hairtone Property Set to update to the same value as well?

Quote: Originally posted by DarkMatter
Let me know if any of my understanding of skin and hairtone property sets is wrong, and if my process is wrong in any way. I'm hoping to finish the plugin by friday night or saturday.


I think that is correct.
thanks for your effort!
Instructor
Original Poster
#15 Old 3rd Jun 2005 at 6:56 AM
Quote: Originally posted by DarkMatter
family: This property groups sets of hairtones. While you can define a hairtone to be in a specific color group, you can group hairtones of different colors under a family. There should be 4 hiartones in a family (black, brown, blond, red), but you can also have styled hairtones in a family of their own. I've never seen a family that had both the 4 base colors and a styled hairtone...I'm not sure if its possible or not. There are also some families that don't seem to have an easily recognizable pattern to their contents. Try looking for skin propertysets that have a family of: 1924713d-f403-4017-9b9c-a789c43c1132 (DatGen has a very good search feature that will let you do this...just paste the family code into the criteria area in the search, and search using ASCII mode. Use Skins.package from the base game files.)


I think that now i understand exactly what you said. If you were saying about family of Hairtone Property Set and not the age skin property set.
Yes! I made some test and my idea (we discarded this idea already)was create a unique hairtone value to be placed in family. So, when the game reads that will think that is a color and will get all files that use that value to make a group. So, when creating a child in CAS using the genetics will randomize the hairstyles that was setted for this color (family value of Hairtone Property Set and hairtone value of age property sets)
Zombie Coder
#16 Old 3rd Jun 2005 at 9:22 AM
Well, I don't think words can explain what I was saying, exactly. So, I've put together a screenshot. Below is a shot of DatGen's property set viewer, with a Skin type property set loaded. I've highlighted the family in red, the hairtone in blue, and the list of files in green.



The family, boxed in red, links up different colors of the same hair "style". To be more precise, most families have a black, brown, blond and red version of the Skin PSET files. Some families have more (or much more).

The hairtone color group, boxed in blue, defines what base color or style group the hairtone falls under. As I listed in my previous post, there are 6 possible groups, adding Gray and Colored/Styleized to the 4 standard. Some families only have the 4 base colors, for a single gender at a single age. Other families have the 4 base colors, for single genders at multiple ages. But, generally, within each family, you can always find sets of 4 hairstyles for a single gender at a single age. (I am unsure yet why some families only have hairtones for a single gender at a single age, and others have hairtones for a single gender at multiple ages). Some of the families that have multiple ages will also have elder hairstyles.

In the screenshot, you can also see a list of files, boxed in green. There are 8 files, all with the same family ID (same as in red box). Of those 8, 4 are normal hairtones, black, brown, blond, red (each with the correct hairtone value...blue box). There are also 4 hats...one for the black, brown, blond, and red hairtones each.

The hairtone property in the Skin PSET defines the color group. The family property in the Skin PSET groups up hairtones into a set. Basically, you use the family ID to say, here is a particular style..."long hair", in 4 different colors, the colors being defined by the hairtone value. Hair tones also always seem to be defined for specific genders.

Additionally, the Gender value, the Float32, which you can see in the screenshot. That value is almost always zero, and I say almost because I think I remember seeing a hairtone that had a 1. But its a float value, and I've never seen it equal 2, and only 1 the one time. Since its a float, if its used, its doubtful that it will always be in whole numbers. If I can ever find an instance where its used, I could get more info, but, I don't think it is used in hairtones.
Instructor
Original Poster
#17 Old 3rd Jun 2005 at 11:00 AM Last edited by pinhead : 3rd Jun 2005 at 11:10 AM.
Oh! i think that now i understand.
Yes. The red value have to be the same for all colors of the same hair mesh (for example. Could be just an alpha change in the hair and have to use other value for not conflict with other hair). For example, each hairstyle have to use a unique family value and use in all property sets the same value (in red) for when changing the color catalog and ages keep the same hairstyle.

One thing that maybe help is that the custom hair use the Hairtone property set like a base for the other property sets. For example, if you change the genetic of a custom hair only in hairtone PSET file you can override all the "zero" in genetic field of the others PSETs.
But, the family ID of the Hairtone PSET will be the ID of "hairtone" field in others PSETs.
Administrator of Loverat's Tea and Underpants
#18 Old 3rd Jun 2005 at 12:16 PM
DarkMatter,

You've described it all very well. The only thing I can think of to add is the Proxy value in the Hairtone XML file (which DatGen calls Hairtone property sets, if I understand correctly. They contain a value called "proxy" which uses the same haircolor values as the skin type property set. This value calls the appropriate color for eyebrows and other facial hair, but doesn't affect the genetic haircolor of offspring.

Sometimes when people create a new hair color set, they begin by cloning only one hair color, and use that as a base to import all their new hair colors. But if they started with blond, the Proxy value will be 00000003-0000-0000-0000-000000000000 in every package they make, which results in things like black-haired sims with blond eyebrows and beards. Lovely, you can imagine. So this value would need to be corrected to be the same as the genetic value for the hair.

I don't know if 00000006-0000-0000-0000-000000000000 is ever a valid value here. I doubt it.

Also normally we wouldn't pick a separate file for Grey because grey would be included in every separate haircolor package.

Thanks again
RG

You can't use a bulldozer to study orchids.
Field Researcher
#19 Old 3rd Jun 2005 at 12:29 PM
I would love for the hair to be re-classified with the correct genetic properties according to colour. My way around this at the moment is to always create a new sim with Maxis hair in CAS, then give them more attractive custom hair in-game.

Having the hair correctly classified would save time when looking for a hair in a particular colour, and would add interest to the game when babies turn into toddlers too - they could transform with cuter custom hair!
Zombie Coder
#20 Old 3rd Jun 2005 at 6:32 PM
Ok...so, when I perform the update after the user selects the associated hairtones. In addition to doing everything I described, I also update (or add if its not there) a Proxy property to the Hairtone PSET. This properties value should match the corrosponding Skin PSET for each color. For example, if I have a Blond Skin PSET, the Proxy for the corrosponding Hairtone PSET should be 00000003-0000-0000-0000-000000000000. Correct?

Now, a question. Not everyone packages their hairtones the same, and not everyone creates full sets of the 4 base hair tone colors. DatGen can just list all the hairtones from a group of files, and update each file according to what the user chooses. The property sets (this term, BTW, is Maxis' official term for the binary and xml files that contain properties) would remain in their original packages.

It should also be possible to create an overriding package. When the user chooses the hairtones they wish to group into a genetic family, instead of updating the original files in their original packages, I can create an overriding package. This package would contain all the Skin and Hairtone PSETs that the user chose to update, with the neccesary changes. These files would use the same TGIR's as the original files, though. That would force this new package to override the original data when its placed in the downloads folder. It also allows the user to remove the changes very easily later on.

I'm not sure how you guys want this done, so let mek now.
Zombie Coder
#21 Old 4th Jun 2005 at 4:53 AM
I've run into a few problems writing this plugin. It seems that content creators never change any of the names in the Skin PSETs. So, at least for all the custom hairtones I've downloaded, everything says "blond", even if its black, brown, or red. The only thing that does not say blond is the gray elder version of the hairtone.

So, when you guys read this next time your on, I could use some ideas as to how you guys would preferr I list and categorize the hairtones I find. I am not exactly sure how you were hoping the hairtone "geneticizer" (as I'm calling the plugin) would work.

Until I get a reply and we can discuss this further, I'm going to work on the download folder cleanup plugin.
Instructor
Original Poster
#22 Old 5th Jun 2005 at 2:09 PM Last edited by pinhead : 5th Jun 2005 at 2:26 PM.
I don't know exactly what you are trying to make the plugin does, but like i said before, the names in property set are not important. All property sets of a custom hair are clones from maxis hair. The MATDs of a custom hair didn't have names like the original maxis hair base, so is not important change the names there. But will be if you will merge the colors in one package.
The most important thing is hairtone value GUID. And the family GUID that sets the correct "group" of colors to be linked.
The proxy value inside Hairtone PSET is important also, because will inform to the game what color of eyebrows and facial hair will be used when this hairstyle is using.

What exactly the plugin will make?
Instructor
Original Poster
#23 Old 5th Jun 2005 at 2:20 PM Last edited by pinhead : 5th Jun 2005 at 2:23 PM.
Quote: Originally posted by DarkMatter
Ok...so, when I perform the update after the user selects the associated hairtones. In addition to doing everything I described, I also update (or add if its not there) a Proxy property to the Hairtone PSET. This properties value should match the corrosponding Skin PSET for each color. For example, if I have a Blond Skin PSET, the Proxy for the corrosponding Hairtone PSET should be 00000003-0000-0000-0000-000000000000. Correct?


Correct.
But what you mean about "add a proxy value if it's not there"?
All custom hairs that i know have this field.

Quote: Originally posted by DarkMatter
Now, a question. Not everyone packages their hairtones the same, and not everyone creates full sets of the 4 base hair tone colors. DatGen can just list all the hairtones from a group of files, and update each file according to what the user chooses. The property sets (this term, BTW, is Maxis' official term for the binary and xml files that contain properties) would remain in their original packages.


Ok, i understand.
Not all creators do all colors. Now i think that is something more to think about it. If the creators do all colors, the family value will be the same to all colors. So, how the plugin will know when do that and when don't?

Quote: Originally posted by DarkMatter
It should also be possible to create an overriding package. When the user chooses the hairtones they wish to group into a genetic family, instead of updating the original files in their original packages, I can create an overriding package. This package would contain all the Skin and Hairtone PSETs that the user chose to update, with the neccesary changes. These files would use the same TGIR's as the original files, though. That would force this new package to override the original data when its placed in the downloads folder. It also allows the user to remove the changes very easily later on.

I'm not sure how you guys want this done, so let mek now.


I'm not sure about that. I runned with some problems when i was converting hairs to genetics keeping the same group/instance/subtype of the custom hair. When i downloaded a sim that was using the hair that i modified, bodyshop deleted the property sets and 3IDR that was using the same instance ID. Like to avoid conflicts.. i'm not sure. I don't know why.
Zombie Coder
#24 Old 6th Jun 2005 at 3:24 AM
"I don't know exactly what you are trying to make the plugin does, but like i said before, the names in property set are not important."

Well, to the game, the names arn't important. But, to a user using the plugin I'm writing, having everything named exactly the same (with the only difference being group ID), will make finding and flagging the right hairtones very difficult.

I'm very meticulous in the way I write my tools. I try to think about both what the game is going to do with the files, AND what the user is going to do with them. A lot of things don't matter to the game, like names in PSETs, but they do matter to a human using a tool to edit the files. My attempts to solve these little problems like this are part of the reason DatGen is behind the curve in terms of what people are doing with modding tools. I like to release complete, stable tools that are both easy to use and won't corrupt files or peoples games. Its a really hard task to accomplish, too, because every time I start digging, more and more issues find their way to the surface. >.<

"When i downloaded a sim that was using the hair that i modified, bodyshop deleted the property sets and 3IDR that was using the same instance ID."

I'm not sure if I understand, but did the game actually delete files from a custom content package? That surprises me a bit, but I wouldn't put it past Maxis to do something like that. I don't know how TS2 handles TGIR overrides, but SimCity 4 allowed overriding files. As long as the file you wanted to override another was loaded after the file to be overrided, everything was fine. Usually, proper loading order could be enforced by using the proper directory structure. TS2 could have a dozen different ways of handling such things though, so I'll go dig some more and do some testing before I continue any further.
Instructor
Original Poster
#25 Old 6th Jun 2005 at 11:20 AM
I think that i'm understanding why you are trying to look into the names. If people use a blond hair to do a black hair, how to inform to the user exactly what color of hair is before the user choose the color that will be? Am I right?

Well, i think that is no way, unless visual of the texture, to know how will be categorized.

I understand your point.

About the overriding of PSETs, i don't know exactly why bodyshop deleted those files, and was just the exactly numbers of Instance IDs that existed in both packages. It deleted in the old file (the file that i merge all colors) just the instances 01 to 07. Were deleted 3IDR and PSETs.
Is very strange and happen 2 times.

I saw some posts of users saying that are some "empty" packages in their folders, so maybe is a bug caused by the latest version of Bodyshop. But i don't have sure what cause that.
Page 1 of 3
Back to top