A suite of GUI tools for extracting and modifying OVL and OVS archives, as well as editing the associated in-house file formats. Also includes a model plugin for Blender. For downloads, guides, and FAQs visit:
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:
[X] 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)
[X] 8 Collect and create default species loc files
[X] 8.1 Add species colour variation loc strings based on variation type.
[X] 9 collect species UI images
[X] 9.1 Add species Thumbnail data based on colormorphs
[X] 9.2 Create assetpks, userinterfaceicondata, png and tex of all UI images
[X] 10 Add species default tags
[X] 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)
[x] M0 Create assetpkg and fdb reference
[x] M1 Create the loc strings
[x] M2 Create the UI icon (png/tex/userinterfaceicondata)
[x] M3 add scenery data to the fdb
[ ] M3.1 Add additional tag locs
Blueprint (built-in)
Adding species tag to blueprints
[X] B0 Create assetpkg and fdb reference
[X] B1 Create the loc strings
[X] B2 Create the UI icon (png/tex/userinterfaceicondata)
[X] B3 add blueprint data to the fdb
[ ] B3.1 Add additional tag locs
Education (Species or Conservation)
[X] E1 Create the loc strings for Conservation type
[X] E2 Create the material (fgm,tex,png). If material name is not specified, create one.
[X] E2.1 add templates for conservation content type
[X] E3 Add the education data to the fdb
[X] 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
[x] Create mod structure
[x] Implement fdb manager
Creating content
[ ] Adding Educational Content (needs the fdb manager)
[x] Adding Zoopedia Content (needs the fdb manager)
[ ] Adding habitat animal (if present in the JSON)
[X] Research
[x] Create prefab files (needs a prefab manager)
[x] Create database files
[X] 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