Re: ALICE 1.1 Released
Posted: Fri Mar 21, 2008 3:37 pm
Wait, I'm confused. @.@ How do you make dolls for ALICE? And what are these layers? Is there a file naming system that has to be used? Is there a manual to go with this program?
Supporting creators of visual novels and story-based games since 2003.
https://lemmasoft.renai.us/forums/
I hadn't really thought about that. Somehow ALICE's method actually made more sense to me, but I'll see what I can do. Perhaps some sort of compromise...Ren wrote:I'm glad to see you're reviving the project^_^
Until now it looks good, I hope you'll somehow mimic the way layers and folders work in Photoshop since it's really practical(especially for the way I organized the hair...).
Thanks. I hope I can make it live up to the standard you set, though.PyTom wrote:Looks good. I'm always somewhat ashamed I never did more with ALICE, so I'm glad that someone else has picked up the ball.
How does ALICE do it currently? I don't think I've ever looked at the metadata...Criptych wrote:I hadn't really thought about that. Somehow ALICE's method actually made more sense to me, but I'll see what I can do. Perhaps some sort of compromise...Ren wrote:I hope you'll somehow mimic the way layers and folders work in Photoshop since it's really practical.
I didn't mention it in this thread, but I used your doll in White Nights, back in 2007. So thank you for making it!eclipse wrote:I'm also glad to see ALICE being revived.
Actually, I meant the way layers were selected in the GUI, though reading through some of the old posts, I see that checkboxes were suggested, so that's another possibility.Jake wrote:How does ALICE do it currently? I don't think I've ever looked at the metadata...Criptych wrote: I hadn't really thought about that. Somehow ALICE's method actually made more sense to me, but I'll see what I can do. Perhaps some sort of compromise...
Code: Select all
<AliceDoll Version="1.0" Name="Betty" Creator="Ren">
<Group Name="Body">
<Layer Name="Base" Image="body/base.png" Z="0" />
<Layer Name="Arms" Image="body/arms.png" Z="50" />
<Group Name="Face">
<!-- with subgroups for eyes, mouth, etc. -->
</Group>
<Group Name="Hair">
<!-- back, bangs -->
</Group>
</Group>
<Group Name="Clothing"><!-- tops, skirts, swimsuits --></Group>
</AliceDoll>
Code: Select all
<Coordinate Name="Uniform">
<Layer Name="Clothing:Uniform:Skirt" />
<Layer Name="Clothing:Uniform:Blouse" />
<Layer Name="Clothing:Uniform:Kerchief" />
</Coordinate>
I hope this isn't too complicated, but here's how I think of it:Jake wrote:So for a simple example the top level could be 'Character', which draws 'Body' then 'Hair' then 'Costume'; 'Hair' might be a simple selection and draw 'Ponytail' or 'Crewcut' or 'Middle-Parting', but 'Costume' might be a composite like the 'Character' node, and be comprised of 'Costume Top', 'Costume Bottom', 'Hat' and 'Shoes', where each of those items might be a composite or a selection-from-many as well.
Code: Select all
<AliceProject Version="1.0">
<Coordinate Name="Betty">
<Layer Name="Body:Base" />
<Layer Name="Body:Arms" />
<!-- face and hairstyle -->
</Coordinate>
<Coordinate Name="Uniform 1">
<Layer Name="Clothing:Uniform:Skirt" />
<Layer Name="Clothing:Uniform:Blouse" />
<Layer Name="Clothing:Uniform:Kerchief" />
</Coordinate>
<Coordinate Name="Uniform 2">
<Layer Name="Clothing:Uniform:Skirt" Hue="240" Sat="0.10, 0.90" Lum="0.10, 0.90" />
<Layer Name="Clothing:Uniform:Blouse" Hue="240" Sat="0.00, 1.00" Lum="0.00, 1.00" />
<Layer Name="Clothing:Uniform:Kerchief" Hue="240" Sat="0.00, 1.00" Lum="0.00, 1.00" />
</Coordinate>
<Pose Name="Uniform 1">
<Coordinate Name="Betty" />
<Coordinate Name="Uniform 1" />
</Pose>
<Pose Name="Uniform 2">
<Coordinate Name="Betty" />
<Coordinate Name="Uniform 2" />
</Pose>
<Pose Name="Uniform 3">
<Coordinate Name="Betty" />
<Coordinate Name="Uniform 1" Hue="120" Sat="0.00, 1.00" Lum="0.10, 0.90" />
</Pose>
</AliceProject>
I would suggest adding at least one thing to this - conditional switching for layers. For example:Criptych wrote: In fact, the current doll format looks something like this
Code: Select all
<AliceDoll Version="1.0" ... >
<Group Name="Body">
<Option Name="Assured">
<Layer Name="Body-Assured" Image="body/assured.png" Z="0" />
</Option>
<Option Name="Nervous">
<Layer Name="Body-Nervous" Image="body/nervous.png" Z="0" />
</Option>
</Group>
<Group Name="Clothing">
<Option Name="Hakurei">
<Case Select="Body:Assured">
<Layer Name="Hakurei-Assured" Image="clothing/hakurei-assured.png" Z="10" />
</Case>
<Case Select="Body:Nervous">
<Layer Name="Hakurei-Nervous" Image="clothing/hakurei-nervous.png" Z="10" />
</Case>
<DefaultCase>
<!-- I'm sure no-one will mind her having no clothes if she doesn't have a body selected -->
</DefaultCase>
</Option>
...
</Group>
...
</AliceDoll>
I'd suggest a different name - perhaps "composites" or even something as usage-specific as "costumes". Usually, when people talk about 'coordinates' in a graphics sense they mean positions along coordinate axes.Criptych wrote: Coordinates
I'd also recommend not calling those 'poses', since to an artist the 'pose' is what the base naked character is in; individual costume elements (such as those in my example image above) may be specific to a pose, but changing someone's hat doesn't change their pose.Criptych wrote: Then you can combine Coordinates and/or single Layers into a Pose ("configuration"), and render any or all of the Poses.
I did give this some thought before drafting the format, but this is also part of the idea behind the Coordinates. You can have all your differently-posed bodies, clothing, etc. in a single Doll, and simply select the one that you need when creating Coordinates and Poses.Jake wrote:I would suggest adding at least one thing to this - conditional switching for layers. [...] Or worse still, I might have to the two poses defined as totally different AliceDoll documents so that if I want to have a character who has multiple poses than I have to switch between several different dolls to render all the poses out.
Code: Select all
<Group Name="Body">
<Layer Name="Base" Image="body/base.png" Z="0" />
<Layer Name="Arms (Assured)" Image="body/arms.assured.png" Z="50" />
<Layer Name="Arms (Nervous)" Image="body/arms.nervous.png" Z="50" />
...
</Group>
<Group Name="Clothing">
<Layer Name="Hakurei (Assured)" Image="clothing/hakurei.assured.png" Z="100" />
<Layer Name="Hakurei (Nervous)" Image="clothing/hakurei.nervous.png" Z="100" />
...
</Group>
Jake wrote:I'd suggest a different name - perhaps "composites" or even something as usage-specific as "costumes". Usually, when people talk about 'coordinates' in a graphics sense they mean positions along coordinate axes.
[...]
I'd also recommend not calling those 'poses', since to an artist the 'pose' is what the base naked character is in; individual costume elements (such as those in my example image above) may be specific to a pose, but changing someone's hat doesn't change their pose.
Seriously, though, the name "Coordinate" hails from similar tools/games in Japanese, referring to a "coordinated" set of (usually) clothing. I had originally used "Outfit," but I thought the current name sounded more general. "Composites" might work.Shakespeare wrote:What's in a name? That which we call a rose
by any other name would smell as sweet.
I do recall this is how ALICE worked, using cropped images with the SPNG extension, but I hadn't really considered it yet for two reasons. One, I haven't done a lot of imaging in C#, so I wasn't sure how to implement it: finding the edges can be an expensive process unless there's a built-in function for it. Second, using full-size images for each layer removes the need for the offset, and reduces the chance of misalignment. And with a decent PNG encoder, cropping the image probably won't save more than a few KB, depending on the resolution. However, if I can work around reason #1, I might put something like this in.Jake wrote:Speaking of positions along coordinate axes, though: I'd also suggest adding optional offset coord attributes to the 'Layer' elements in the AliceDoll document, if you don't have something like that already - in case people don't want to save huge full-extent-of-character PNGs out for every single tiny accessory.
Code: Select all
<Layer Name="Arms" Pose="Assured" Image="body/arms.assured.png" Z="50" />
<Layer Name="Arms" Pose="Nervous" Image="body/arms.nervous.png" Z="50" />
...
<Layer Name="Hakurei" Pose="Assured" Image="clothing/hakurei.assured.png" Z="100" />
<Layer Name="Hakurei" Pose="Nervous" Image="clothing/hakurei.nervous.png" Z="100" />
Code: Select all
<Layer Name="Arms" Z="50">
<Image Pose="Assured" Source="body/arms.assured.png" Z="50" />
<Image Pose="Nervous" Source="body/arms.nervous.png" Z="50" />
</Layer>
...
<Layer Name="Hakurei" Z="100">
<Image Pose="Assured" Source="clothing/hakurei.assured.png" />
<Image Pose="Nervous" Source="clothing/hakurei.nervous.png" />
</Layer>