You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Process and steps so we can all correct/contribute if there is anything missing here. This will be heavily modified during the script creation so please use comments or discord to address any changes/suggestions to want to see happening.
Concept
To automate the creation of mods for games, where the input can stay at a high level (e.g. a Habitat Animal, or a Plant for Planet Zoo, etc.).
The idea is to populate a JSON file with the mod information so the missing files of the mod can be re-created again.
The JSON can be filled up manually, with an UI tool, or through reading an existing mod.
The process will then use the JSON info to create the mod structure and add the existing assets to the mod (in this case just a habitat animal for now)
Additionally, we can reverse the process and populate the JSON from an existing mod (will be used to duplicate species information).
Process
Select your species basic info.
Select the source species (for coding purposes, this is the species you'll reuse most of the fdb info) (or nothing disabled for now). If there is a source species the script will read that species info into an internal structure, if not that information needs to be provided manually.
go through the several step to configure the new species
save/generate files
complete the pending manual steps
Step 1 (prepopulate with known species) will later be not required, but for now it is the easiest way to start.
Inputs
To create the mod the tool will need some input data. This is the expected input tree to populate the JSON file
Description: optional (the tool will generate one)
Mod requirements: optional. Mod requires are checked during database setup time and allow disabling the mod if any of the listed elements is missing.
ContentPacks: specify names of mods that need to be installed to enable this mod.
DLCFlags: owned DLC (using flags) to enable this mod
existing API minimun version to enable this mod
Note: just because a mod is installed it doesn't mean it is enabled. Combination of all requirements are possible, for example to enable one mod only if PZPlus and Audad are installed, if the DLC8 is owned and ACSE version is >= 0.715. If any of these conditions is missing the mod will not be enabled. Note: if the mod provides content that is DLC locked through the fdb that should be enough in terms of DLC requirements.
Educational Content
Mods can provide educational content unrelated to animals.
"Content": {
"Education" : {
"ExampleExhibitSpecies01": {
"Category": "Exhibit"
},
"ExampleHabitatSpecies02": {
"Category": "Habitat"
},
"ExampleExhibitCustomContent": {
"Name": "Name of content (goes as loc string)",
"Description": "Test that goes as loc string",
"Category": "Conservation"
}
}
}
TODO: Document the names generated automatically
With this JSON setup we can rebuild the education.fdb
education.fdb
EducationalContentType: from [ContentName], [Category], [Animal|EducationalContentType][ContentName]
EducationResearchPacks [ContentName], [ContentName]Education[Level] (1 to 3) or empty row
InfoboardMaterials: [ContentName], [InfoboardMaterial] (or "ED[TYPE]_[CONTENTNAME]_Mat" if missing)
Zoopedia
"Content": {
"Zoopedia" : {
"ExampleExhibitSpecies01": {
"ContentPack": "BaseGame",
"EnclosureType": "LargeExhibit",
"Description": "Description",
"Class": "MyCustomClass",
"Order": "MyCustomOrder",
"Family": "Camelidae",
"Genus": "Vicugna",
"ScientificName": "ScientificName",
"Continents": "Continents",
"Countries" : "Countries",
"ConservationStatus": "Domesticated",
"WildPopulation": "WildPopulation",
"SocialNeedsDescription": "SocialNeedsDescription",
"AverageLifeExpectancy": ["Male life expectancy", "Female life expectancy"],
"AverageSize": ["Male Size", "Female Size"],
"AverageWeight": ["Male Weight", "Female Weight"],
"Dominance": "Dominance",
"MatingType": "is this from an enum",
"ReproductionDescription": "ReproductionDescription",
"ReproductionInCaptivity": "ReproductionInCaptivity",
"SexualMaturityAge": "SexualMaturityAge",
"SexualSterilityAge": "SexualSterilityAge",
"ExhibitFood" : "This type of food",
"FunFacts": [
"This is the fun fact 1",
"This is the fun fact 2",
"This is the fun fact 3",
"This is the fun fact 4",
"This is the fun fact 5"
]
}
}
However, the smallest json definition required for a zoopedia page looks like this:
The missing zoopedia attributes will be prepopulated with default strings. EnclosureType and ContentPack must be withing the expected Zoopedia column options.
This is used to generate all zoopedia loc files and zoopedia images (SpeciesImageZoopedia_ and ZoopediaMap_)
Research
This json is enough to generate both the .animalunlockresearchsettings and the fdb data, however; it assumes default education/breeding/zoopedia/enrichment research pack names:
Animals
One of the main differences between exhibit and habitat animals definition comes from the prefab, only habitat animals need to define nagivation setup in their Game prefab.
After going through all the animal game prefabs, they all can basically be reduced to:
6 Prepare databases (copy structure and default tables: Zoopedia, Research, Education are common, then also Exhibits or Animals&ModularScenery for Exhibit/Habitat animals)
Per Species (both exhibit and habitat)
8 Collect and create default species loc files
8.1 Add species colour variation loc strings based on variation type.
9 collect species UI images
9.1 Add species Thumbnail data based on colormorphs
9.2 Create assetpks, userinterfaceicondata, png and tex of all UI images
10 Add species default tags
11 Collect and create gender assetpackages
12 Collect and create prefabs (Game and Visual prefabs, with a table of options/properties)
13 Create animal unlock research settings
Create education data
Create Zoopedia data
Create research data
Create animal data
Add additional tags
ModularScenery
Adding species tag to scenery items (still needs some more work)
M0 Create assetpkg and fdb reference
M1 Create the loc strings
M2 Create the UI icon (png/tex/userinterfaceicondata)
M3 add scenery data to the fdb
M3.1 Add additional tag locs
Blueprint (built-in)
Adding species tag to blueprints
B0 Create assetpkg and fdb reference
B1 Create the loc strings
B2 Create the UI icon (png/tex/userinterfaceicondata)
B3 add blueprint data to the fdb
B3.1 Add additional tag locs
Education (Species or Conservation)
E1 Create the loc strings for Conservation type
E2 Create the material (fgm,tex,png). If material name is not specified, create one.
E2.1 add templates for conservation content type
E3 Add the education data to the fdb
E3.1 If Habitat/Exhibits content type is missing research data create it.
Process and steps so we can all correct/contribute if there is anything missing here. This will be heavily modified during the script creation so please use comments or discord to address any changes/suggestions to want to see happening.
Concept
To automate the creation of mods for games, where the input can stay at a high level (e.g. a Habitat Animal, or a Plant for Planet Zoo, etc.).
Process
or nothingdisabled for now). If there is a source species the script will read that species info into an internal structure, if not that information needs to be provided manually.Step 1 (prepopulate with known species) will later be not required, but for now it is the easiest way to start.
Inputs
To create the mod the tool will need some input data. This is the expected input tree to populate the JSON file
Mod details
Note: just because a mod is installed it doesn't mean it is enabled. Combination of all requirements are possible, for example to enable one mod only if PZPlus and Audad are installed, if the DLC8 is owned and ACSE version is >= 0.715. If any of these conditions is missing the mod will not be enabled.
Note: if the mod provides content that is DLC locked through the fdb that should be enough in terms of DLC requirements.
Educational Content
Mods can provide educational content unrelated to animals.
TODO: Document the names generated automatically
With this JSON setup we can rebuild the education.fdb
education.fdb
EducationalContentType: from [ContentName], [Category], [Animal|EducationalContentType][ContentName]
EducationResearchPacks [ContentName], [ContentName]Education[Level] (1 to 3) or empty row
InfoboardMaterials: [ContentName], [InfoboardMaterial] (or "ED[TYPE]_[CONTENTNAME]_Mat" if missing)
Zoopedia
However, the smallest json definition required for a zoopedia page looks like this:
The missing zoopedia attributes will be prepopulated with default strings. EnclosureType and ContentPack must be withing the expected Zoopedia column options.
This is used to generate all zoopedia loc files and zoopedia images (SpeciesImageZoopedia_ and ZoopediaMap_)
Research
This json is enough to generate both the .animalunlockresearchsettings and the fdb data, however; it assumes default education/breeding/zoopedia/enrichment research pack names:
Animals
One of the main differences between exhibit and habitat animals definition comes from the prefab, only habitat animals need to define nagivation setup in their Game prefab.
After going through all the animal game prefabs, they all can basically be reduced to:
However, AnimalBase_Game has a few more variables that could be exposed for the tool, (including VisualsMotionType)
and
Same case as for the game, there are other variables that could be interesting to export for the tool in the visuals prefab.
Finally, Prefabs will be separated to individual files, loaded from ACSEData.lua.
From mod files to JSON
TBD
From JSON to mod files
Main mod tasks
Create mod structure
Implement fdb manager
Creating content
Adding Educational Content (needs the fdb manager)
Adding Zoopedia Content (needs the fdb manager)
Adding habitat animal (if present in the JSON)
Research
Create prefab files (needs a prefab manager)
Create database files
Mod error checking
Tool configuration
Current Script steps
Per Species (both exhibit and habitat)
13 Create animal unlock research settingsModularScenery
Adding species tag to scenery items (still needs some more work)
Blueprint (built-in)
Adding species tag to blueprints
Education (Species or Conservation)
Zoopedia (Habitat/Exhibits)
Research Item (Animal/Mechanical)
ContentPack wrap up
ACSE wrap up
Finishing TODO
The text was updated successfully, but these errors were encountered: