1 items

File information

Last updated

Original upload

Created by

michaelpstanich

Uploaded by

michaelpstanich

Virus scan

Safe to use

About this mod

Altermatic is a Replacer Framework which Automatically Alters in-game assets at run-time, enabling dynamic and highly configurable replacers with user customization options! Altermatic uses JSON configuration files which are both quick and easy for both modders and users to make and customize what gets altered!

Share
Requirements
Permissions and credits
Changelogs
Donations
<<>> Altermatic - Runtime Replacer Framework <<>>

Created and Maintained by : Michael "Spirit Shard" Stanich
Discord - The Broken Chatbox - https://discord.gg/h3vB7S4FEw
Website - https://www.michaelpstanich.com/

v (Donations! =^-^=) v
SubscribeStar (R18+ Warning!) - https://subscribestar.adult/michaelpstanich






>> What is Altermatic? <<

Altermatic is a Replacer Framework which Automatically Alters in-game assets at run-time, enabling dynamic and highly configurable replacers with user customization options. Altermatic uses JSON configuration files which are both quick and easy for both modders and users to make and customize what gets altered. The most common usage for Altermatic is replacing Pals with new models, enabling gender dimorphism, giving lucky pals unique features/textures, or just giving them cool glasses. You can also add other replacer mods into the mix, if they don't overwrite base-game assets then you can define them in a JSON config file for Altermatic and now see them in-game!~

>> Self Promotion <<

Begging for donations isn't really my kind of thing, but hey, if I never do it then no one would know and that means I'd have less resource to work on these mods! If you're intereted in supporting my work and would like to see more frequent updates, please consider donating to my work on SubscribeStar! - https://subscribestar.adult/michaelpstanich (Altermatic is 100% free and never paywalled, but Subscribers do get a special role on Discord and other benefits related to some other projects!) If you're not able to support financially that's ok! I appreciate any help I get, whether it's just giving feedback and bug reports, or just sending a friendly message!

>> NOTICES <<

UniPalUI Integrations
As of version 0.4 DEV, Altermatic now requires UniPalUI for UI and input functions. UniPalUI is NOT required for Altermatic to functions, but if you want to customize settings, change mesh swaps on characters, and experience other future UI additions you'll need UniPalUI installed! (UniPalUI Link - https://www.nexusmods.com/palworld/mods/1894/)

Mod In Development
Altermatic is still in its early development stages and you may encounter some strangeness in places. If you have suggestions on what to add or how to improve Altermatic, please let me know; I need to know what modders/users want to see out of this replacer framework! (The best place to leave suggestions and report bugs is our Discord - The Broken Chatbox - https://discord.gg/h3vB7S4FEw)



>> Potential Issues / Failure Points <<
- Currently Altermatic uses some internal functions and capture methods to detect spawning and attempt to replace things. However, there is the potential that these functions could have bugs unknown to us which 'could' cause inconsistent results in very specific scenarios.


>> Known Incompatibilities <<
- OK Framework : When 'One of a Kind' is installed it can sometimes take longer to replace assets than Altermatic, which leads to broken textures/models or reverting of changes. It's recommended to convert your OK Framework replacers to Altermatic, then uninstalling OK Framework to prevent conflicts. (Conversion is easy through JSON configs and doesn't require any repackaging)

- Skeleton Replacers : Some mods may replace the entire Skeleton Asset with one that is incompatible with the base game. In these rare cases (no one should be replacing the full Skeleton, only ever adding bones) it may break animations! This is because when replacing the full Skeleton with an incompatible one they will also need to replace the animation assets, however Altermatic won't be able to replace the animations. It's recommended to avoid these replacers as they are not Game-Version safe and may break internal game systems.

- Multiple 'default' replacers : Altermatic is not able to alter an assets file path, this means that assets that have the same file path will naturally overwrite each other. This isn't really an incompatiblity with Altermatic, just how Unreal Engine 5 works. In these cases where replacers conflict in file path they will need to be repackaged with non-conflicting file paths.


>> Features List <<
<> Game-Version Safe Design
- Designed with custom systems that are less likely to break between game updates
- No base-game assets are replaced by Altermatic, ensuring it stays stable
- Uses internal game systems for identifying Pals/NPC/Assets meaning when new Pals/NPCs/Assets are added, as long as Altermatic works it can replace them!

<> JSON Configuration Loading
- Easy to edit and read JSON config files for replacers
- No re-packaging needed for any non-default replacer
- Easy to share and use with friends/followers!

<> Skeletal Mesh Replacement
- Replace any Pal/NPC Model (Player replacer support coming in a future version!)
- Swaps at Run-Time, so you can use Altermatic along with default replacers for maximum customization!
- Replace specific materials/textures with 'MatReplace' without the need to create a custom model
- Allows Gender dimorphism by defining 'Gender'
- Alter Lucky Pals with a separate mesh by setting 'IsRarePal' as 'True'
- Replace in-game skins with your own by defining 'SkinName'
- Include multiple meshes for one Pal/NPC and Altermatic will randomly select one to use!
- Best Match system for random selection which accounts various requirements to find the best replacer to use
- Set required and preferred traits so Pals with traits can have unique visuals with 'ReqTrait' and 'PrefTrait'
- Apply Morph Targets dynamically to allow further variation for each swap with 'MorphTarget'!
- Project Sugar Cake (SCake) integrations for Extended Gender support, arousal morph support, and performance savings!

<> In-game UI and Keybinds using UniPalUI
- Press "Shift+O" to re-roll the looked at character's SkelMeshSwap (Full UI implementation planned)

( More replacer features planned! )


>> Suggestions for Modders <<
Altermatic doesn't have any hardcoded aspects or paths! This means Altermatic can grab models from any path defined within the JSON, this includes both base game AND modded assets! For the best experience, when making replacer packs for Altermatic, separate your meshes into 'mods/yourpackname/' so they won't conflict with other replacers. If you're looking to make an OK Compatible replacer you can still separate them into their own folders, define the params in the OK Framework DT, then configure an Altermatic JSON config file along with the download. This way, users can use the package with either OK Framework OR Altermatic! (Also, please package a version with and without IO Store so both Steam and Xbox/Gamepass players can enjoy your pack!)


>> How to Install Altermatic <<

- Download both Altermatic and UniPalUI, then unzip the archive and from inside the folder of your platform, copy the 'LogicMods' and '~mods' folder into "[Palworld Install]/Pal/Content/Paks"

- In the "~mods" folder, enter the "SwapJSON" folder and run the "__Create_Load_List__.bat" file to auto-fill the load list (You'll need to run this any time you install new Altermatic .json files)

[ + If the .bat file fails to run or says "Access Denied" you can try moving the entire SwapJSON folder to your desktop, running the .bat file, then placing it back. Remember to check if it actually filled the _LoadList.json with the .json names. If it still failed you'll just have to enter in the .json file name for each Altermatic JSON config you have installed manually into the _LoadList.json in JSON format (so like "MeshReplace1","MeshReplace2","","" ect, use https://jsoneditoronline.org/ to help with formatting). ]

- Install the proper version of UE4SS (Latest version with updated Palworld) - https://github.com/UE4SS-RE/RE-UE4SS

[ + Ensure inside the UE4SS install, inside the "mods" folder, open the "mod.txt" and make sure "BPModLoaderMod" is set to 1 ]

[ + If your game starts crashing after installed UE4SS, open the UE4SS-settings.ini file that is within the UE4SS install and set "bUseObjectArrayCache" to false ]
[Optional, sort of]

- For Altermatic to do anything you'll need to install replacer packs and their associated .json config files or create your own JSON configs.

- Remember to run the "__Create_Load_List__.bat" file every time you install new JSON configs! (If the .bat file doesn't run, you can enter the .json file names for animations you want to load in-game manually into the _LoadList.json file)


>> How to make a JSON Config <<
Inside the mod's archive are the "Altermatic - Metadata.txt" file which defines different parameters available for Altermatic, and JSON templates can be found in the "JSON_Templates" folder. You can use these to get a better understanding of what Altermatic is capable of and how to achieve your dream replacer!
Let's set up a really simple example, let's replace all of the Cattiva with the in-game skin with the glasses (creatively named Skin001 X.x)
First, create a new json file, let's name it "AllGlassesCattiva.json" (You can create an empty .txt/text file and just change the file extension). Once created, open it in any text editor and we'll enter the following... (starting from "{" )

{
"PackName":"Example Glasses Cat Replacer",
"SkelMeshSwap":[
  {
"CharacterID":"PinkCat",
"SkelMeshPath":"/Game/Pal/Model/Character/Monster/PinkCat_Skin001/SK_PinkCat_Skin001",
"Gender":"Male"
  },
  {
"CharacterID":"PinkCat",
"SkelMeshPath":"/Game/Pal/Model/Character/Monster/PinkCat_Skin001/SK_PinkCat_Skin001",
"Gender":"Female"
  }
]
}

In this JSON we configured 2 Mesh Replacers for the Pal Cattiva (internally known as "PinkCat").

> PackName : An optional parameter to help people know what the json is and to pull into UI implementations.

> SkelMeshSwap : Tells Altermatic that the following array of entries are replacers for Skeletal Meshes (the Pal/NPC models)

> CharacterID : The internal name for the character we want to replace. The game knows Cattiva as "PinkCat" so we put that there to tell Altermatic to attempt this replacer on any Cattiva it sees. (You can view many internal names on the modding wiki - https://pwmodding.wiki/docs/game-data/monster-table or by using FModel and finding the PalParametersDatatable)

> SkelMeshPath : This is the path to a Skeletal Mesh we wish to replace with, in other words, this is the internal file path to where the model asset is. You can find these paths using FModel or by asking modders. (For modders making packs, you can right-click and copy the refernece path and paste it in here, remove anythign before "/Game" and remove the duplicate of the file name and .uasstet extension if present)

> Gender : This is what gender we want to replace. Internally Non-Pal NPCs have no gender assigned by default so for Human NPC replacers you'll use "None", but for Pals they have Male and Female assignments. We created 2 entries, one for each, so Altermatic will replace both genders. (Note : With SCake installed all NPCs are given a Gender by default, so setting a gender for 'naughty' replacers is still recommended)

Now that we have the JSON made, we place it into the SwapJSON folder, run the __Create_Load_List__.bat to quickly fill the _LoadList.json (the LoadList tells Altermatic what JSON files to load). Then, once we load in-game, you'll see all the normal Cattiva are now replace with the in-game skin with glasses!

Couple things to note, when replacing meshes make sure you're only defining ones made for that Pal/NPC. Because of how UE5 works, if you replace random meshes onto incompatible Pals/NPCs which use a different skeleton it will completely break animations and potentially the visual model, hitboxes, animations, AI, and more. Human NPCs almost universally share the same skeleton, so they can swap between each other quite easily, however all Pals have their own unique skeleton with the exception of variants, which will share the same skeleton (Think Dinossom and Dinossom Lux)


>> Permissions / Usage Rights <<

These Permissions and Usage Rights apply to all content related to Altermatic, whether made by a first or third party.

All content must be provided free of charge, with no paywalls or exchange requirements
- No paywalls, paid early access, subscription requirements, restricted access, premium versions, etc.
- Does not apply to source files used in the creation process not required for full and expected functionality

Configuration/External files are freely available with no restrictions on edits or distribution
- Everyone is allowed to discuss, customize/edit, share, distribute/re-distribute, re-use any and all configuration files provided by any mod or user
- Everyone is allowed to reference any asset from any mod, package, or asset without restriction or retaliation
- This also applies to any templates or files that interact with Altermatic provided by any mod or user
- Applies regardless of format/extensions/method

Do not intentionally sabotage or perform malicious behavior
- Do not intentionally cause a user's save to break, user's game to brick, crash, or other malicious actions
- Do not intentionally cause another mod to stop functioning or overwrite their author information without permission
- Do not include or hide content, without warning, which may be harmful

As a recommendation, please clearly label your content with descriptive names, tags, and notes within reason in the JSON config to make it easier for people to enable/disable various models/materials/swaps included with your pack. Also consider breaking up your mod into several JSON configs based on content, this way people can quickly pick and choose what to include (which also helps with managing a lot of data and helps performance on-load as smaller jsons load and process much quicker than large ones). Because of how Altermatic works, disabling specific swaps in-game isn't feasible and so customizing json files may be required for some users. Please remember to be considerate of others and encourage others to edit and share configs to help everyone get the best out of your mod!


>> Questions and Answers (FAQ) <<

Question: Can I use this with other replacers that are not made for Altermatic?
Answer: Yes, but how will depend on the specific replacer. For replacers using other frameworks (such as OK Framework) you'll want to make a conversion to Altermatic by making a JSON config file for that replacer and removing the other framework if it's incompatible. For default replacers (replacers that don't use a replacer framework) you can only have 1 installed, but you can use it with altermatic! In those cases you'll just avoid replacing that specific CharacterID/Gender combo to prevent Altermatic from replacing it, or, if you want the default replacer in Altermatic's random selection process, make a JSON entry with either the default mesh path (which is preferred) or with no path set to null (as in just "" ). If you do use a default replacer you'll only be able to use one per filepath since any conflicts will overwrite each other, and there's nothing we can do about that without modders repackaging their mods to support Altermatic.

Question: What happens if I remove a replacer because I no longer want to use it? Will the character in-game now be broken?
Answer: Not at all! Altermatic will log all the paths when loading the JSON configs, and if a saved character's mesh is no longer in the list then it will re-roll the mesh when that character loads into the game as if it was never saved in the first place.

Question: Some people use custom skeletons to add physics, will Altermatic ever support this?
Answer: Spring Bone is already supported since you don't need to replace the original skeleton (cloth physics should also work) but for added bones Altermatic has no way to replace the original skeleton and ensure compatibility between replacers. In theory you could use a single replacer skeleton for each file path (so 1 per-pal or NPC, and 1 for player) as long as they don't change the original bones at all. Unfortunately, because of how Unreal Engine 5 handles animations and validation, we can't support replacing the Skeleton at run-time since every animation would need to be re-targeted for each file-path and skeleton which isn't feasible or possible with current tools. In later versions of the engine there are features for retargeting at run-time, so if Palworld ever updates their engine version it's possible this could be a feature but would be much more involved than it's probably worth.


>> Thinking about making some replacers? Feel free to contact me or interact with our Discord! ( https://discord.gg/h3vB7S4FEw ) We're a community thriving on creativity and would be really glad to help! <<