Home - MaybeSamigroup/SVS-SardineTail GitHub Wiki
Package specification
SardineTail supports two form of package, Release and Development.
Release package is extension modified zip archive and searched from every subdirectories of
sardines
in GameRoot.
Development package is directories under
UserData/plugin/SamabakeScramble.SardineTail/packages
and works as if packaged in zip archive.
Development package is only enabled by configuration.
Naming convention of package
packageId
part is identity of package, then if you change it, save file made in previous versions may lost compatibility.
version
part is parsed as System.Version in .net6. So see also it for detail.
https://learn.microsoft.com/en-us/dotnet/fundamentals/runtime-libraries/system-version
If there are multiple version of a package found, only latest one is loaded.
If there are multiple, same latest version of a package like these;
- sardines/sample-1.0.0.stp
- sardines/subdir/sample-1.0.0.stp
- UserData/plugin/SamabakeScramble.SardineTail/packages/sample-1.0.0
one of but unpredictable will be loaded.
Release (zip archived) package
packageName = packageId "-" version ".stp"
packageId = 1*(fchar)
varsion = 1*(DIGIT) 1*3vpart
vpart = "." 1*(DIGIT)
fchar = any character possible in directory/file on os.
example: sample-1.0.0.stp
Development package
packageName = packageId "-" version
packageId = 1*(fchar)
varsion = 1*(DIGIT) 1*3vpart
vpart = "." 1*(DIGIT)
fchar = any character possible in directory/file on os.
example: sample-1.0.0
Structure of package
Unlike hard mod or beloved Sideloader's zipmod,
SardineTail does not require list(csv) file, most of those values are provided as predefined defaults.
And remaining values should be represented by directory, files names and optional json file.
A valid SardinTail's Packages (.stp) must contain at least one of category directories
.
Each directory name represents ChaListDefine.CategoryNo
, aka first line of *.csv in Sideloader's zipmod (*).
(* And distribution number in second line is automatically set to 0 in SardineTail)
SardineTail is look in to sub directories of each categorry directory until all required (default value is not predefined) keys are assined.
Value representation
Each value representation is different from it's Type
in Category definition section.
Name
Name type (which is used in game display) is assigned from last directory name when all requirements met.
For example, an minimal mt_face_detail category mod will be following structure.
Name and LineMask is required key for mt_face_detail,
so LineMask.png is assigned as LineMask value and as the last required key,
Name is Your mod name
; took from the directory name
Text
Text type is assigned via values.json
in directory and it's simple key:value json.
values assigned in intermediate directory are shared in sub directory, so for example following structure is valid.
- example-package-0.0.2.stp
- co_top
- males
- values.json(*1)
- mods for male1
- mods for male2
- mods for male3
- females
- values.json(*2)
- mods for female1
- mods for female2
- mods for female3
- males
- co_top
Content of *1:
{ "Sex": "2" }
Content of *2: (it's default, you never need this in fact)
{ "Sex": "3" }
Store
Store type is assigned via values.json
and must represents asset bundle path in package or (GameRoot)/abdata.
Reference to packaged asset bundle must be relative path.
Image
If there are Key
.png in directory, it will assigned to correspond Image type Key.
You can also assign a asset in asset bundle (.unity3d) via values.json
, when do so corresponding store must be set.
And also, you can reference a packaged .png file via values.json
.
for example, if you want to share same thumbnail for a set coordinate
, can be represented by below.
- package-0.0.3.stp
- co_top
- my set coordinate top
- values.json (*1)
- MainTex.png
- ColorMaskTex.png
- ThumbTex.png
- my set coordinate top
- co_bot
- my set coordinate bot
- MainTex.png
- ColorMaskTex.png
- values.json (*2)
- my set coordinate bot
- co_top
Content of *1:
{
"MainAB": "bundles/yourbundle.unity3d",
"MainData": "top"
}
Content of *2:
{
"MainAB": "bundles/yourbundle.unity3d",
"MainData": "bot",
"ThumbTex:": "co_top/my set coordinate top/ThumbTex.png"
}
Asset
Asset type is assigned via values.json
and corresponding store must be set.
for example:
{
"MainAB": "bundles/yourbundle.unity3d",
"MainData": "yourasset"
}
Csv notation
List definition in csv format is also supported.
Each csv must named after category, and its first line must have complete, correctly ordered key sets.
(category name).csv
either double or single, quoting in csv notation is not supported, so you can't also use comma.
Referencing packaged png image from csv
To reference packaged png from csv, corresponding ABKey must set to fixed value of sardinetail.unity3d
.
For example you can write like this;
Kind,Possess,Name,MainAB,NipTex,ThumbAB,ThumbTex,Image,Attribute,Detail
0,1,MyMod,sardinetail.unity3d,path/from/package/root/your.png,sardinetail.unity3d,path/from/package/root/yourthumb.png,0/1/2/3/4/5,0,0
Referencing original asset
You can reference original (or hard mod's) asset bundle from package by *AB column.
If there are no corresponding asset bundle in package at initialize phase, load call for the asset will be processed normally.
When referencing original asset bundle in category with MainManifest
column, MainManifest
value should set to same as orginal,
Otherwise original item will be failed to load.
Mod identity
A mod is identified by its packageId
which is described in Naming convention of package and its relative path from package root.
So example mod in Name is identified as sample:mt_face_detail/Your mod name
.
And examples in Text are these;
- example-package:co_top/males/mod for male1
- example-package:co_top/males/mod for male2
- example-package:co_top/males/mod for male3
- example-package:co_top/females/mod for female1
- example-package:co_top/females/mod for female2
- example-package:co_top/females/mod for female3
By changing directory structure in package without conversion, save file made in previous versions may lost compatibility.
And csv notation mod is identified as packageId:category.csv/(Name column of mod)
.
So you can't have same name mod in same category within one package.
Migration between versions
To migrate old save made in before structure changed version, place a softmig.json
at package root.
Content of softmig.json
should have following struction:
(package version when structure change occurs) : *(old mod id):(new mod id)
for example:
{
"1.0.1":
{
"co_top/mod for male1" : "co_top/males/mod for male1",
"co_top/mod for male2" : "co_top/males/mod for male2",
"co_top/mod for male3" : "co_top/males/mod for male3"
}
}
Migration from hard mods
To migrate old save made in hard mod environment, place a hardmig.json
at package root.
Content of hardmig.json
should have following structure:
(Category) { *(list id which you assigned in hard mod) : { "ModId": (corresponding mod id in package), "Version": (your package version) } }
for example:
{
"mt_face_detail" {
"100000": { "ModId": "mt_face_detail/Your mod name", "Version": "1.0.0" }
}
}
Mod id in hardmig.json
is adjusted by softmig.json
, so you may need to write hardmig.json
only once for your initial package release.
To support migration from hardmod, SardineTail provide conversion function.
To use this function, check Enable hardmod conversion at startup
configuration option and restart game.
It will take several minutes, depend on your hardmod quantity, and when title shown up, conversion has completed.
Converted packages are generated in:
UserData/plugin/SamabakeScramble.SardineTail/hardmods
Asset bundles are grouped by its minimal dependent set and packages are named after its not containing thumbs
minimal named asset bundle.
By default, packages are generated in csv notation style.
If you want to structured one, check Convert hardmod into structured form
in configuration.
Same asset bundle can't loaded twice, so generated package can't coexists with hardmod, because they shares common asset bundle;
SardineTail will try to generate valid hardmig.json
, but if there are id conflict, only definition for first found one will be generated.
Converted package may contain conflicted mod identity. In such case, adjustment by hand is required.
Category directory and predefined defaults
bodypaint_layout
Name | - | Kind | Name | PosX | PosY | Rot | Scale | CenterX | MoveX | CenterY | MoveY | CenterScale | AddScale | ThumbAB | ThumbTex |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Name | Text | Text | Text | Text | Text | Text | Text | Text | Text | Text | Store | Image |
Default | - | 0 | 0 | -4 | 0 | 0 | 0 | 0 | -4 | 4.5 | sardinetail.unity3d | thumb_na |
facepaint_layout
Name | - | Kind | Name | PosX | PosY | Rot | Scale | CenterX | MoveX | CenterY | MoveY | CenterScale | AddScale | ThumbAB | ThumbTex |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Name | Text | Text | Text | Text | Text | Text | Text | Text | Text | Text | Store | Image |
Default | - | 0 | 0 | -2.5 | 0 | 0 | 0 | 0 | -2.5 | 3 | sardinetail.unity3d | thumb_na |
mole_layout
Name | - | Kind | Name | PosX | PosY | Rot | Scale | CenterX | MoveX | CenterY | MoveY | CenterScale | AddScale | ThumbAB | ThumbTex |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Name | Text | Text | Text | Text | Text | Text | Text | Text | Text | Text | Store | Image |
Default | - | 0 | 0 | -0.8 | 0 | 0 | 0 | 0 | -0.8 | 1 | sardinetail.unity3d | thumb_na |
bo_body
Name | - | Kind | Possess | Name | Sex | MainManifest | MainAB | MainData | ShapeAnimeAB | ShapeAnime | MainTexAB | MainTex |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Text | Store | Asset | Store | Asset | Store | Image |
Default | - | 0 | 1 | 3 | abdata | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d |
bo_head
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | ShapeAnimeAB | ShapeAnime | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | ThumbAB | ThumbTex | Preset |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Store | Asset | Store | Image | Store | Image | Store | Image | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | thumb_na |
bo_hair_b
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | SetHair | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text |
Default | - | 1 | 1 | abdata | sardinetail.unity3d | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1 | 0/4 |
bo_hair_f
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5 | 0/1/2/3/4/5 |
bo_hair_s
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5 | 0/3/4/5 |
bo_hair_o
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5 | 0/1/2/3/4/5 |
co_top
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | NormalData | StateType | Coordinate | NotBra | NoShake | Sex | OverTopMaskAB | OverTopMask | OverBotMaskAB | OverBotMask | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | MainTex03AB | MainTex03 | ColorMask03AB | ColorMask03Tex | PaintMaskAB | PaintMask | NipHide | KokanHide | HalfUndress | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Text | Text | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Text | Text | Store | Image | Text | Text | Text |
Default | - | 4 | 1 | abdata | sardinetail.unity3d | 0 | 0 | 0 | 0 | 0 | 3 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | 1 | 0 | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/3 | 0/1/3 |
co_bot
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | StateType | Coordinate | HideShorts | NoShake | SkirtType | Sex | OverTopMaskAB | OverTopMask | OverBotMaskAB | OverBotMask | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | MainTex03AB | MainTex03 | ColorMask03AB | ColorMask03Tex | PaintMaskAB | PaintMask | KokanHide | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Text | Text | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Store | Image | Text | Text | Text |
Default | - | 4 | 1 | abdata | sardinetail.unity3d | 0 | 0 | 1 | 0 | 0 | 3 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | 0 | sardinetail.unity3d | thumb_na | 0/1/2 | 0/3 | 0/1/2/3 |
co_bra
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | NormalData | StateType | Coordinate | MabUV | Sex | OverTopMaskAB | OverTopMask | OverBotMaskAB | OverBotMask | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | PaintMaskAB | PaintMask | NipHide | KokanHide | HalfUndress | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Text | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Text | Text | Store | Image | Text | Text | Text | Text |
Default | - | 1 | 1 | abdata | sardinetail.unity3d | 0 | 0 | 0 | 0 | 3 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | 1 | 0 | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/3 | 0/1/2/3 | 0 |
co_shorts
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | StateType | Sex | OverTopMaskAB | OverTopMask | OverBotMaskAB | OverBotMask | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | PaintMaskAB | PaintMask | KokanHide | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Store | Image | Text | Text | Text | Text |
Default | - | 1 | 1 | abdata | sardinetail.unity3d | 0 | 3 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | 1 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/3 | 0/1/2/3/4 | 5 |
co_gloves
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | StateType | NailHide | Sex | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | PaintMaskAB | PaintMask | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | 1 | 1 | 3 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
co_panst
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | StateType | Sex | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | PaintMaskAB | PaintMask | KokanHide | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | 1 | 3 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | 0 | sardinetail.unity3d | thumb_na | 99 | 99 | 0/1/2/3 |
co_socks
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | StateType | SocksDent | Sex | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | DentTexAB | DentTex | PaintMaskAB | PaintMask | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Text | Text |
Default | - | 1 | 1 | abdata | sardinetail.unity3d | 1 | 0 | 3 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/5/6 | 0/1/2/3 |
co_shoes
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | StateType | ShoesType | Sex | MainTexAB | MainTex | ColorMaskAB | ColorMaskTex | MainTex02AB | MainTex02 | ColorMask02AB | ColorMask02Tex | PaintMaskAB | PaintMask | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Text | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Text | Text |
Default | - | 1 | 1 | abdata | sardinetail.unity3d | 1 | 1 | 1 | sardinetail.unity3d | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4 | 0 | 0/1/2/3 |
ao_hair
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_hair_pin | sardinetail.unity3d | thumb_na | 0/1/2/3/4 | 0/1/2/3/4/5/6/7/11 | 0 | 0 |
ao_head
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | HideHair | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_hair_twin_L | 0 | sardinetail.unity3d | thumb_na | 0/1/2/4 | 0 | 0 | 0 |
ao_face
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_megane | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5/6/7/11 | 0 | 0 |
ao_neck
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_bust | sardinetail.unity3d | thumb_na | 0/1/2/3/4 | 0/1/2/3/4/5/6/7/9/11 | 0 | 0 |
ao_body
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_back | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/5/6/7 | 1 | 0 |
ao_waist
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_waist_b | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 99 | 0 | 0 |
ao_leg
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_leg_L | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/4/11 | 0 | 0 |
ao_arm
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_wrist_L | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5/6 | 0 | 0 |
ao_hand
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_ind_L | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5/6/9/11 | 0 | 0 |
ao_kokan
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | Parent | ThumbAB | ThumbTex | Image | Attribute | Detail | Sort |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Text | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | a_n_kokan | sardinetail.unity3d | thumb_na | 5 | 99 | 1 | 0 |
mt_face_detail
Name | - | Kind | Possess | Name | MainAB | NormallMapDetail | LineMask | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | 0 | sardinetail.unity3d | thumb_na | 99 | 99 | 99 |
mt_eyeshadow
Name | - | Kind | Possess | Name | MainAB | EyeshadowTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 1/2/3/4/5 | 0/1/2 | 0 |
mt_cheek
Name | - | Kind | Possess | Name | MainAB | CheekTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 1/2/3/4/5 | 0/1/2 | 0 |
mt_lip
Name | - | Kind | Possess | Name | MainAB | LipTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 1/2/3/4/5 | 2/3 | 0 |
mt_lipline
Name | - | Kind | Possess | Name | MainAB | LiplineTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 1/2/3/4 | 0 |
mt_face_paint
Name | - | Kind | Possess | Name | MainAB | PaintTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eyebrow
Name | - | Kind | Possess | Name | MainAB | EyebrowTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eye_white
Name | - | Kind | Possess | Name | MainAB | EyeWhiteTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eye
Name | - | Kind | Possess | Name | MainAB | EyeTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eye_gradation
Name | - | Kind | Possess | Name | ColorMaskAB | ColorMaskTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/1/2/3/4/5 | 0 | 0 |
mt_eye_hi_up
Name | - | Kind | Possess | Name | MainAB | EyeHiUpTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eyeline_up
Name | - | Kind | Possess | Name | MainAB | EyelineUpTex | EyelineShadowTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | 0 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eyeline_down
Name | - | Kind | Possess | Name | MainAB | EyelineDownTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_nose
Name | - | Kind | Possess | Name | MainAB | NoseTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/4/5 | 0 | 0 |
mt_mole
Name | - | Kind | Possess | Name | MainAB | MoleTex | ThumbAB | ThumbTex | MoleLayoutID | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0 | 99 | 0 | 0 |
mt_eyepipil
Name | - | Kind | Possess | Name | MainAB | EyepipilTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_eyelid
Name | - | Kind | Possess | Name | MainAB | EyelidTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_body_detail
Name | - | Kind | Possess | Name | MainAB | NormallMapDetail | LineMask | Sex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Image | Text | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | 3 | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_body_paint
Name | - | Kind | Possess | Name | MainAB | PaintTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_sunburn
Name | - | Kind | Possess | Name | MainAB | SunburnTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 1 | 0 |
mt_nip
Name | - | Kind | Possess | Name | MainAB | NipTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_underhair
Name | - | Kind | Possess | Name | MainAB | UnderhairTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
bo_nail
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
bo_nail_leg
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainData | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Asset | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0 | 0 |
mt_pattern
Name | - | Kind | Possess | Name | MainTexAB | MainTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0 | 0 | 0 |
mt_ramp
Name | - | Kind | Possess | Name | MainManifest | MainAB | MainTexAB | MainTex | MainTex02AB | MainTex02 | MainTex03AB | MainTex03 | ColorMaskAB | ColorMaskTex | ColorMask02AB | ColorMask02Tex | LampTexAB | LampTex | ThumbAB | ThumbTex |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Text | Store | Store | Image | Store | Image | Store | Image | Store | Image | Store | Image | Text | Image | Store | Image |
Default | - | 0 | 1 | abdata | sardinetail.unity3d | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | sardinetail.unity3d | 0 | 0 | sardinetail.unity3d | thumb_na |
mt_hairgloss
Name | - | Kind | Possess | Name | MainTexAB | MainTex | ThumbAB | ThumbTex | Image | Attribute | Detail |
---|---|---|---|---|---|---|---|---|---|---|---|
Type | - | Text | Text | Name | Store | Image | Store | Image | Text | Text | Text |
Default | - | 0 | 1 | sardinetail.unity3d | sardinetail.unity3d | thumb_na | 0/1/2/3/4/5 | 0/1/2/3/4/5 | 0/1/2/3/4/5 |
AdvancedTopic: Texture wrap mode of png texture
Texture wrap mode of packaged png images are determined by its name and path.
ThumbTex.png will be wrap mode of U:Clamp, V:Clamp, W:Clamp wherever it ware.
Others are determined by its first path; basically category name.
Textures contained under these directories will be wrap mode of U:Repeat, V:Repeat, W:Repeat;
- bo_body
- bo_head
- co_bot
- co_bra
- co_gloves
- co_panst
- co_shoes
- co_shorts
- co_socks
- co_tops
- mt_body_detail
- mt_eyeshadow
- mt_face_detail
- mt_sunburn
- mt_pattern
Others will be wrap mode of U:Clamp, V:Clamp, W:Clamp.
And like ThumbTex.png, there are special names for specific wrap modes.
Name | Wrap Mode(U) | Wrap Mode(V) | Wrap Mode(W) |
---|---|---|---|
RepeatRepeatRepeat.png | Repeat | Repeat | Repeat |
RepeatRepeatClamp.png | Repeat | Repeat | Clamp |
RepeatRepeatMirror.png | Repeat | Repeat | Mirror |
RepeatRepeatMirrorOnce.png | Repeat | Repeat | Mirror Once |
RepeatClampRepeat.png | Repeat | Clamp | Repeat |
RepeatClampClamp.png | Repeat | Clamp | Clamp |
RepeatClampMirror.png | Repeat | Clamp | Mirror |
RepeatClampMirrorOnce.png | Repeat | Clamp | Mirror Once |
RepeatMirrorRepeat.png | Repeat | Mirror | Repeat |
RepeatMirrorClamp.png | Repeat | Mirror | Clamp |
RepeatMirrorMirror.png | Repeat | Mirror | Mirror |
RepeatMirrorMirrorOnce.png | Repeat | Mirror | Mirror Once |
RepeatMirrorOnceRepeat.png | Repeat | Mirror Once | Repeat |
RepeatMirrorOnceClamp.png | Repeat | Mirror Once | Clamp |
RepeatMirrorOnceMirror.png | Repeat | Mirror Once | Mirror |
RepeatMirrorOnceMirrorOnce.png | Repeat | Mirror Once | Mirror Once |
ClampRepeatRepeat.png | Clamp | Repeat | Repeat |
ClampRepeatClamp.png | Clamp | Repeat | Clamp |
ClampRepeatMirror.png | Clamp | Repeat | Mirror |
ClampRepeatMirrorOnce.png | Clamp | Repeat | Mirror Once |
ClampClampRepeat.png | Clamp | Clamp | Repeat |
ClampClampClamp.png | Clamp | Clamp | Clamp |
ClampClampMirror.png | Clamp | Clamp | Mirror |
ClampClampMirrorOnce.png | Clamp | Clamp | Mirror Once |
ClampMirrorRepeat.png | Clamp | Mirror | Repeat |
ClampMirrorClamp.png | Clamp | Mirror | Clamp |
ClampMirrorMirror.png | Clamp | Mirror | Mirror |
ClampMirrorMirrorOnce.png | Clamp | Mirror | Mirror Once |
ClampMirrorOnceRepeat.png | Clamp | Mirror Once | Repeat |
ClampMirrorOnceClamp.png | Clamp | Mirror Once | Clamp |
ClampMirrorOnceMirror.png | Clamp | Mirror Once | Mirror |
ClampMirrorOnceMirrorOnce.png | Clamp | Mirror Once | Mirror Once |
MirrorRepeatRepeat.png | Mirror | Repeat | Repeat |
MirrorRepeatClamp.png | Mirror | Repeat | Clamp |
MirrorRepeatMirror.png | Mirror | Repeat | Mirror |
MirrorRepeatMirrorOnce.png | Mirror | Repeat | Mirror Once |
MirrorClampRepeat.png | Mirror | Clamp | Repeat |
MirrorClampClamp.png | Mirror | Clamp | Clamp |
MirrorClampMirror.png | Mirror | Clamp | Mirror |
MirrorClampMirrorOnce.png | Mirror | Clamp | Mirror Once |
MirrorMirrorRepeat.png | Mirror | Mirror | Repeat |
MirrorMirrorClamp.png | Mirror | Mirror | Clamp |
MirrorMirrorMirror.png | Mirror | Mirror | Mirror |
MirrorMirrorMirrorOnce.png | Mirror | Mirror | Mirror Once |
MirrorMirrorOnceRepeat.png | Mirror | Mirror Once | Repeat |
MirrorMirrorOnceClamp.png | Mirror | Mirror Once | Clamp |
MirrorMirrorOnceMirror.png | Mirror | Mirror Once | Mirror |
MirrorMirrorOnceMirrorOnce.png | Mirror | Mirror Once | Mirror Once |
MirrorOnceRepeatRepeat.png | Mirror Once | Repeat | Repeat |
MirrorOnceRepeatClamp.png | Mirror Once | Repeat | Clamp |
MirrorOnceRepeatMirror.png | Mirror Once | Repeat | Mirror |
MirrorOnceRepeatMirrorOnce.png | Mirror Once | Repeat | Mirror Once |
MirrorOnceClampRepeat.png | Mirror Once | Clamp | Repeat |
MirrorOnceClampClamp.png | Mirror Once | Clamp | Clamp |
MirrorOnceClampMirror.png | Mirror Once | Clamp | Mirror |
MirrorOnceClampMirrorOnce.png | Mirror Once | Clamp | Mirror Once |
MirrorOnceMirrorRepeat.png | Mirror Once | Mirror | Repeat |
MirrorOnceMirrorClamp.png | Mirror Once | Mirror | Clamp |
MirrorOnceMirrorMirror.png | Mirror Once | Mirror | Mirror |
MirrorOnceMirrorMirrorOnce.png | Mirror Once | Mirror | Mirror Once |
MirrorOnceMirrorOnceRepeat.png | Mirror Once | Mirror Once | Repeat |
MirrorOnceMirrorOnceClamp.png | Mirror Once | Mirror Once | Clamp |
MirrorOnceMirrorOnceMirror.png | Mirror Once | Mirror Once | Mirror |
MirrorOnceMirrorOnceMirrorOnce.png | Mirror Once | Mirror Once | Mirror Once |
Cartesian product of (Repeat,Clamp,Mirror,MirrorOnce) for each (U,V,W). (there might be typo I swear.)
You can utilize these special names via assigning in values.json or csv notation.