You must be 18+ to visit this website
The content on this website is AGE RESTRICTED
Please confirm you are at least 18 years old of age. Otherwise leave the website.
michaelpstanich profile
michaelpstanich
18+
michaelpstanich
I work in various mediums and will be releasing content ranging from safe for work to R18+ content including Art, Video Game Mods, Video Games and Dev builds, Technical Articles, Game/Tech related videos, AI Work, and whatever else I fancy and Subscribers request!
Subscribe
Message

Subscription Tiers

FREE
Follower

Join for free to receive email notifications about new posts submitted to paid tiers

109 subscribers SubscribeStar $0.00 tier
Unlock
$5
USD monthly
Demi-God

Join and get full access to supporter content and the exclusive supporter role "Demi-God" on our discord!

19 subscribers SubscribeStar $5.00 tier ; Demi-God
Unlock

Features

  • Subscribers will help us create awesome content! (We're always up for suggestions too!)
  • Subscribers will get early access to content such as Dev builds and articles!
  • Subscribers will get QOL packages and exclusive content like behind the scenes content, image packs, and future previews!
Displaying posts with tag Altermatic.Reset Filter
michaelpstanich
Public post

Altermatic v0.4 DEV Available! [Palworld Mod] (Now With A 'Real' Save System!)

New detection methods are now live in Altermatic along with a new complex save system to help with performance and reliability! This update didn't really come with much front-end changes, but there's a good number of fixes and new backend stuff that is pretty transformative to how Altermatic works!

Worth keeping in mind, from this version forward UniPalUI will be required for the UI and input implementations, versions from this point on won't include the integrated version of UniPalUI to help with compatibility and reduce potential update confusion. This update comes with all new detection methods with the old method still available as a fallback that runs much less frequently. These new detection methods still need to be thoroughly tested to see what is/isn't caught, but overall the new methods should perform much faster and swap meshes 'generally' much faster with a few odd exceptions do-to pal initialization being inconsistent (for example, when taking a pal out of the Pal Box). The save system also got a complete overhaul with a much more complex system. This new save system performs much faster (a general theme of this update) and should be much more reliable but given the complexity is a lot greater it can also be much more error prone if done incorrectly, please report bugs if you find them! Thank you!

Download Links!
michaelpstanich.com : https://www.michaelpstanich.com/?mode=modhack&view=2024-07-01_Palworld_Altermatic
GDrive Folder : https://drive.google.com/drive/folders/1IMQz8qlVyUj3I7kuUYK5p0p2N7b7jFiN?usp=drive_link
Mega Folder : https://mega.nz/folder/9hZQ2IIR#Ou77tq4qQxw9UBQsozh6zg
LoversLab : https://www.loverslab.com/files/file/34727-altermatic-runtime-replacer-framework/
NexusMods : https://www.nexusmods.com/palworld/mods/1626
- Altermatic -
- Full Changelog -
Altermatic Version 0.4.0 DEV

Note :
  • This version comes with the all new detection methods for faster, more performant, and hopefully more reliable detections for swaps! If you notice new issues with these detection methods, please let me know ASAP!
  • This version completely changed the internal structure (again) as well as the save system, all previous saves before this version will invalidate and swaps will re-roll as they re-appear

Added :
  • When SCake is also installed, Altermatic will attempt to re-roll characters if their Gender is switched through SCake's systems (functions through a dispatcher)
  • All new detection system which uses several in-game hooks to try and catch characters the frame they become visible, improving not only the visual experience but potentially performance as well (Still has the old method as a fallback but runs much less frequently which should result in a performance improvement)
  • All new save handler system has been added which should speed up save processing by using a custom object with less processing required while saving (stuff is saved into data-maps dynamically then converted into JSON when saving rather than working on validated/invalidated data when saving, should speed up the saving process drastically but is more error prone so requires much more testing/maintenance)
  • New menu using UniPalUI which shows the default keybind for re-rolling meshes and contains a new configuration menu
  • "InvalidID Attempts" config setting added, this changes how many times Altermatic will try and process an ID that's found but initially invalid
  • "Fallback Frequency" config setting added, determines how often Altermatic will use a fallback method for catching exceptions
  • "Reload Config JSON" setting to configuration menu which loads the current config JSON
  • Added config save JSON file called "_Altermatic_Config.json" which stores global Altermatic settings, this file should be created when editing the configuration settings and exiting the menu (If you edit this externally while the game is running you'll want to enter the menu and select the "Reload Config JSON" option to apply the changes, otherwise any changes you make won't take effect until you reload your save and if you change settings the config file may be overwritten)

Changed :
  • Changed the values for the Best Matching System so that PrefTrait matches now take precedent over no PrefTrait matches and also prevent 'IsRarePal' from being swapped with non-rare pal swaps (Behavior for "Rare" trait is unchanged)
    • ReqTrait match is now -25 degrade
    • PrefTrait match is now -5 degrade while a non-match remains +5 degrade
    • IsRarePal non-match is now -110 degrade
  • Rewrote the entire internal structure to use custom objects and expand the use of pointers rather than duplicating data, also required rewriting much of the swap logic as well (this includes a full re-write into the new save handler)
  • New save handler is much more aggressive in checking for characters that should persist (Player and Pals) however it is also much more strict in what it considers persistent (This should mean obvious pals that should persist like party summons should persist much more reliably but could also mean some edge cases may not meet the requirements of the new system, please let me know if you find things that should persist but do not!)
Removed :
  • No longer displays a message when SCake is detected (reduces notification spam, will move this info into the menu)
  • SkelMeshSwaps without a SkelMeshPath defined will now fail to validate (The null shortcut, "SkelMeshSwap":"", still functions but is highly discouraged as it causes many technical issues, especially with manual swaps)

Fixed :
  • Now properly sends notifications through UniPalUI instead of trying to run through SCake (Also fixed a potential crash when a JSON error was detected but SCake was not installed to send the error to the UI)
  • Integrations for SCake/UniPalUI now has proper guard-rails to prevent them running when they are not installed and causing errors/crashes (I think the only crash was the one mentioned just above, but now it should be much less likely to happen again)
  • Improved randomization for SkelMeshSwap by not relying on shuffle functions and allowing match pairings to search further
  • MatReplace should no longer accept null entries
  • Fixed certain NPCs and Pals from events being accidentally marked as persistent (the game does not properly flag all NPCs/Pals which caused strange and hard to debug save bloat, stricter requirements and new manual persist methods work around this issue)
  • Added a delay to saving to help reduce potential stutter from saving at the same time as the game does (reduces processing on a single frame and splits it up a bit better)

Building A 'Real' Save System

Strangely enough, this actually ties directly to my game development project Data:EnCryptic which recently I'd been working on revising the data structure for some new systems. One major component to an RPG (to which Data:EnCryptic is) relates to how the game stores and saves data. When creating a save system there's a few ways you can do it, but generally you have some sort of container which has the data that needs to be saved and is filled at some point then translate that container into a save format. In Data:EnCryptic's case, stuff has to save regularly and there's very little reliance on manual saving given the game has inspirations from idle games and potentially allows short play sessions.
What this ultimately lead to was investigating further ways to optimize the system to ensure it doesn't become a performance bottle neck, and that's mostly related to how we fill that container and translate to the save format. When modding we generally take the easiest route first, we need to just get something 'to work' and we often don't have to worry about any major issues arrived from doing things in a sub-optimal way. This means Altermatic (and SCake) ran its save system in very inefficient way. It's the first thing you would think of when building these systems, first you have the container, so when you save we just go pull all the data we need and put it into the container right? Then we just translate, so we just do it in 2 steps, easy-peazy! The problem? That's a LOT of work to do in a single process! When you're dealing with small amounts of data there isn't much of an issue, pulling a few swaps and storing it, then translating to a JSON string isn't too bad, but what about doing that while the game is already running logic and we start dealing with hundreds of swaps? It becomes a bottleneck quickly, especially on lower-end systems which is even more exaggerated by Palworld's already lacking optimizations!
So, what's the solution? Well, the solution in code and method is complicated, but in words it's quite simple. As the game plays and we start applying/storing swaps we then apply it to the save container we mentioned before, this fills the data so we don't need to pull the data when we want to save! Another addition is we can start translating any of that data which is immutable or won't change, and in Altermatic's case there's some optimizations I applied here. To get into specifics, Altermatic's save system now has a custom save object, this object stores various Data Maps for each different 'type' of data. When Altermatic applies a swap and notices it should persist between sessions it will then, at the time of the swap, process the swap and store it into these data maps. These Data Maps are actually already Strings as well since Altermatic has other storage systems for storing the actual data using pointers, though I won't get into the pointers system in this posting but know it basically speeds up the translation process to effectively nothing. This means when we save we actually just run a quick check to see if we've stored all the data we need using a quick id check, only processing what we'd missed, then we compile the data maps into a single JSON object and save to file! This DRASTICALLY improves the saving performance, and with the other optimizations I'm hoping this comes at zero cost in other areas (such as the pointers, which are also much faster than the duplicate data method I used previously).
Now, argue-ably this does have a minor trade-off of memory usage and some interface time when actually performing swaps which is why I had to also implement the pointers system. Previously data was stored multiple times depending on how often the data was used in swaps. Now, however, data is only stored once and everything else uses a pointer to the 'real' data. I won't cover the specifics given that's a whole'other topic to cover, but ultimately it means storing the data maps is fairly low on memory usage since the translated strings are just a list of pointers with splitters rather than full-form data! If you're curious, you can take a look at the save file to see what I mean! Each ID stores a pointer to a swap that then points to the appropriate data, though I do warn it's a bit difficult to read through without context. The real trade-off here however, is the loading and maintenance costs. Loading this pointer system requires some special logic which, while technically still faster than the old method isn't exactly 'optimal' given JSON still has to be parsed as a String, which is relatively slow (in Godot with Data:EnCryptic I use a binary file format by serializing the save data object which is much more efficient in all respects but also can't be externally edited without a specialized tool). For maintenance I'm referring to actually building and maintaining the system internally, a system like this can get very complex very quickly and given Altermatic now has several different detection methods and systems for applying swaps, I'd be lying if I said it didn't cause a few head scratches when something didn't quite work as expected. This means it'll take longer to debug any persistence issues, but overall the trade-off seems well worth it, and given Altermatic most likely won't see major additions in features for a while now it was a good time to do it... now I just have to also do this with SCake... Q.Q

What's Next?

Next I'd like to implement a menu for swapping skins on characters, preferably with some sort of selection state like maybe making the keybind Shift+O open a select menu for that specific character which shows different skins available to swap to. The only complicated part in that process would be creating a rendered texture to display in the menu, which is actually something I've never done in Unreal before! I am hopeful that research into that would pave the way toward reversing the in-game menu system and be able to reflect changes in the me paldex and various menus as well. After that I know some have wanted Altermatic to support player replacers in a much more dynamic way since there's not really a flexible framework that allows entire replacers and the like, so I'll most likely do some research in this regard while doing the menu stuff, if it's not too difficult I could implement it sooner rather than later but I have no idea what would actually be required here.
Current Road Map
1 ) Implement a menu for checking available swaps and swapping characters live using UniPalUI
2 ) Investigate menu replacement and player replacer method
3 ) ???
Comments  loading...
Like(0)
Sign Up or Log In to comment on this post
michaelpstanich
Public post

Altermatic v0.3.1 DEV Available! [Palworld Mod]

New feature is here for Altermatic 0.3.1 DEV! Material replacement is now implemented with full persistence support! The entire backend has also changed this update to support some stuff in the future, so this update acts as a stop-gap before those massive changes in-case they break something. (Hence the .1 version change)

The key addition this update from a user's perspective is the new 'MatReplace' definition which allows a Skeletal Mesh to be loaded within SkelMeshSwap but with a different Material Instance in the designated slot! This means replacers that only change textures/materials no longer require a model to be imported and used, a modder/user can define the default game path for the SkelMeshPath and then use MatReplace to define new textures! This also works with modded models so you can now create new materials for existing meshes without needing to export and import them, just define the path and replace meshes! This also means if you are using your own custom mesh you no longer need to create duplicates for different texture variants which massively improves the modder experience for those with numerous texture variants. The backend also got an overhaul for some new methods I'll be implemented in the next version number update, however to ensure we have a stable version with all (current) replacer features I've reverted all methods to use the existing system for this release. I'll chat more about this in the "What's Next" section!

- Altermatic -
- Full Changelog -
Altermatic Version 0.3.1 DEV

Note :
  • This is the last update which uses this detection method, keep a back-up even after newer versions are released just in-case something breaks
  • Attempted to fix the fomod, however it's been reported that Vortex still doesn't install things correctly with a corrected fomod since the logic for Palworld is custom and doesn't follow a 'root' directory, so whatever X.x

Added :
  • Ability to swap just materials in the JSON config with the "MatReplace" param, this is a set array of material changes with "Index" being the index of the material to swap on the model, and "MatPath" which is the path to the Material Instance to swap in with the same format as SkelMeshSwap

Changed :
  • Checks have reverted back to being time-based but now with a slightly more complex system to hopefully now fix issues when framerate is too low for the frame-based system to work properly, this change also made checks slightly more frequent to ensure higher framerates will still work correctly as well
  • Backend data management has had another upgrade to be more flexible and hopefully faster even with more data stored
  • Updated Integrated UniPalUI to 0.0.2 DEV INTEGRATED

Fixed :
  • Minor optimizations made through-out (most likely won't be notice-able)

What's Next?
Ok, so a bit about the backend and what I'm going to try for the next major version of Altermatic. With SCake I just transitioned into using custom objects and now UniPalUI is reaching a very usable state. With all that back-end work with those 2 mods I also took the time to improve Altermatic's backend to be much more flexible and also quite a bit more performant. There's still improvements to be made but the real move next is starting to use new detection and capture methods for swapping models and managing persistence. One of the major issues with Altermatic is how it can occasionally be inconsistent in very specific scenarios and the systems are not nearly precise enough which causes a bit of strangeness. This is caused by the current methods being somewhat limited in scope while also being based on a timer rather than events based. As such, the next major step is moving into using events much more aggressively so we can implement much more complex detection without heavily affecting performance. The prep-work is done and I've prototyped a couple use cases, but it still needs much more testing to ensure things 'just work' without major issues and there's still a few edge cases to work out. Hence this update acting as a sort of "feature complete so far" version just in-case the next step causes major issues. The results in my testing so far are VERY promising however and, given enough time in research, this should excel what Altermatic is capable of! (This research is also going into making SCake better, but that's for SCake's update post when it's finally ready >.<)

Current Road Map
1 ) Implement more integrations with SCake and the new dynamic gender assignments
2 ) Implement new detections/captures system
3 ) Implement a menu for checking available swaps and swapping characters live using UniPalUI
4 ) ???
Comments  loading...
Like(0)
Sign Up or Log In to comment on this post
michaelpstanich
Public post

Altermatic v0.3 DEV Available! [Palworld Mod]

The next Altermatic update is here! This is primarily a 'backend' update but also has some critical fixes. So if you've been using 0.2.x then it's well worth an update!
This update comes with a fully re-done internal data structure which changes how new characters are stored and compared. This 'should' increase the reliability of Altermatic and make it a lot easier to work with on the backend while allowing a lot more advanced features and UI integrations in the future. However, to fix some issues we saw in previous versions I did have to increase the rate at which Altermatic does scans and that could have a negative impact on performance. I think I hit the right balance, but I'll need to hear feedback on this! If you experience sudden performance issues after updating to the new version please let me know! This version also came with the new integrated UniPalUI! Although this version is an unreleased Alpha build it does enable notifications from Altermatic without needing SCake installed, and there's a new keybind, Shift+O, which will try to re-roll a character's mesh if you have more than 1 installed! (Finally, a way to select another skin! Though it currently still uses the Best Match system so it may not always switch to all of the available skins, a UI will be implemented in the future for properly selecting different skins to use >.<)

- Altermatic -
- Full Changelog -
Altermatic Version 0.3 DEV

Notes :
  • This update completely changed the internal Data Structure for Altermatic and updated how newly spawned characters are checked, this new system is much more consistent and easier to work with but may have new unforseen issues
  • Saves from before this version have been invalidated to prevent save errors persisting in future versions and causing confusion, if you'd still like to carry over your persist save then change the "ALTR_MODversion" param in the Altermatic_Persist file to "3000"
  • Attempted to include a fomod for the weirdos still trying to use Vortex, however Vortex has a ton of issues and can break your installation so I don't recommend using it at all (Vortex doesn't install Altermatic correctly by default, no idea if this fomod will help)

Added :
  • Integrated UniPalUI for all UI and Input handling (Integrated version is an unreleased alpha)
  • Standalone now displays notifications with UniPalUI, simply shows Altermatic is running with the version number
  • Input "Shift+O" will now target the looked at character to reroll their current SkelMeshSwap, also added an in-game notification showing the keybind (This function is temporary until a UI system is implemented for this purpose, doesn't currently target summoned pals because of a UI limitation)

Changed
  • Checks and 'OnTick' system is now based on framerate to better capture events that happen within specific frame ranges, this also increases the rate at which Altermatic checks validity and swaps meshes which could affect performance (When calculating based on delta some events became inconsistent based on framerate, using frames will make the checks more frequent at higher framerates resulting in higher weight but will hopefully avoiding the inconsistency issues)
  • Split up mesh swap and memory clearing/validity checks to run on different frames to help alleviate performance issues such as potential stutter on lower end CPUs (Investigating better async and event based methods for validity)
  • Inverted method for storing what should persist, now instead of saying what 'should' persist, Altermatic keeps a list of what 'shouldn't' persist and skips it in the save process (Although this is slightly heavier in the save code it's much lighter in other areas and should be more reliable/easier to work with)

Fixed :
  • Should no longer attempt to re-apply meshes every second which caused wild pals (since they have persistence disabled) to randomly switch skins every second if multiple were available
  • Fixed the Create_Load_List.bat file not working in file paths with spaces in them
  • When paths become invalid (like when a pak updates or is removed) the persist loader will now correctly skip loading that path and re-roll the swap for those characters (was still assigning a path but wasn't aligning with currently loaded mesh paths, meaning it 'could' assign a random SkelMeshSwap and mess things up, if you were affected by this you'll want to delete your persist file)
  • Should now properly detect captured Pals and toggle them for persistence while SCake is installed (Was accidentally skipping this step before >.<)
  • No longer tries to process an empty save if the save file either isn't found or fails to load from the system
  • No longer tries to apply no swap when no matches are found (Just a simple optimization, shouldn't have any gameplay/visual impact)
  • Persist save should no longer replicate morph data over multiple entries that shouldn't have morph data (This bug has happened twice now in the save system and it's caused by a UE5.1.1 JSON handling bug which I keep forgetting about >.<)

What's Next?

This is the point where Altermatic will probably slow down for a while. Currently Altermatic already supports more features than people are taking advantage of and there's really only 2 requests I've seen that make sense for the immediate future, Material/Texture replacement, and an in-game UI for selecting which swap to use. So both of these are in the plans as well as better integrations with SCake, though the SCake integrations will be more on that side than Altermatic's side (primarily dynamic swapping when switching genders, SCake will also be getting more dynamic gender spawning in a future update which Altermatic will need an update to support when that releases). There's also some consideration to enable attachments/accessories/clothing additions through Altermatic, but there's a lot more research required there and I have a lot of stuff to focus on for now so it's going on the back burner for a bit.

Current Road Map
(Unchanged from last time >.<)
1 ) Implement more integrations with SCake and the new dynamic gender assignments
2 ) Investigate direct texture/material replacers without Mesh Swaps
3 ) ???
Comments  loading...
Like(0)
Sign Up or Log In to comment on this post
michaelpstanich
Public post

Altermatic v0.2 DEV Available! [Palworld Mod]

Update 2024-07-18 : Uploaded v0.2.1DEV with a quick revert to the start delay. There's a bug in SCake that was causing summoned/party pals to not be captured properly with the longer start-up delay so I've reverted this delay and now Altermatic should work as expected with SCake installed. Sorry for any inconvenience this caused!

--- --- ---

The last release of Altermatic was really just a bare minimal release to ensure people could start using their replacers again after the whole IO Store split and to get people on-board with the system. But now that Altermatic has been in the wild for a bit, it's time for a substantial update which makes it truly interesting!

This is a fairly large update for Altermatic that adds a lot of requested features as well as features originally planned before the 0.1DEV release. I didn't originally plan to implement all this in one go, but I think anyone who follows me knows the pattern by now... This update adds persistence through JSON save files, Trait definitions support so swappers can target Pals with specific Traits, MorphTarget randomization for pal models with body morphs or accessory/feature toggles built in via Morph Targets, a fallback system for extended gender support with/without SCake, and many more changes. Overall it makes Altermatic a really compelling replacer that has features not available in any other framework! That said, since Altermatic's release there's been a lot of ideas and requests so development still has a long way to go until we have all the features people have wanted, but overall this is a really good spot for Altermatic to be in since it allows modders to really go wild with their replacers from this point forward and will help to establish some better standards and practices!

- Altermatic -
- Full Changelog -
Altermatic Version 0.2 DEV

Added :
  • Altermatic now has persistance through a save JSON system, saves as "Altermatic_Persist[worldID].json" (if you want to reset persistance you can delete this file and everything will reset)
  • With the new JSON saves, added internal systems for tracking which pals have changed to which model to enable consistency between loads/sessions/ect, you can delete/modify the JSON save file to reset/change this behavior ('model' being used is tracked by file path, if file paths conflict then this behavior may be inconsistent, if a file path is no longer registered the character's associated model will be reset)
  • "ReqTrait" to SkelMeshSwap, defined Trait Names in this arary are required for the swap to apply to the Pal/NPC
  • "PrefTrait" to SkelMeshSwap, for each of the defined Trait Names in this array the pal doesn't posess the match quality decreases by 5
  • "Disable" to SkelMeshSwap (and future swap types), when setting "Disable":"True" the entry will be skipped (useful for quick testing without clearing data in the JSON, can also be useful for users that don't want to clear JSON data but would like to disable certain skins)
  • Passing Null for SkelMeshPath (specifically "SkelMeshPath":"") now counts as a 'do not swap' entry and adds the default model to the random swap pool (In other words, when a SkelMeshPath is specifically excluded, this will add an entry where the current default model/skin is applied, if multiple skins are set up for the same parameters then the default skin is now added to the randomization, if you're using 'naughty' models and need them to have bits I recommend still setting the default path for the swap so it can be more easily removed if undesired in the future)
  • __Create_Load_List__.bat will now try to scan .json files for SkelMeshSwap to try and predict if the json config actually contains swap data (this param would be required for any swap data to be in the JSON so this will prevent invalid json files from even attempting to load, future checks for different swap types will be added in the future, unless I forget X.x)
  • "MorphTarget" param added for SkelMeshSwap, defined as an array of sets which allows the assignment of Morph Targets on the model
    • "Target" is the name of the Morph Target on the model to alter
    • "Set" is a hard value to apply (clamps to min/max), if excluded then a random value between Min/Max is applied instead
    • "Min" is the lowest value allowed, if excluded then "0.0" is applied
    • "Max" is the highest value allowed, if excluded then "1.0" is applied
    • "Type" allows either "Free" or "Restrict" to be defined, Free means the value can be anything between Min and Max, Restrict means the value will either be Min or Max, if Type is excluded then Free is applied (Free is useful for body morphs, Restrict is good for feature or Accesory On/Off morphs)
  • Non-Persist flagged characters are now also tracked for more advanced features (not really relevant to the average user yet, more just noting some internal changes that allows much more flexibility and could be utilized by external mods in the future, also worth mentioning that because of technical limitations for performance there is a limit and eventually enough matched params will all equate together, though this value shouldn't be reached by normal means)
  • Best Match system now allows requirements to improve match quality (added new offset value to keep/allow optimizations while allowing a dynamic 'perfect match' value)
  • Added 'Fallback' for SkelMeshSwap Gender parameter to allow better compatibility with and without SCake installed, now Gender is allowed to not match but with a degraded match quality under specific conditions (Should only apply mis-matched genders if no gender matching swap is found)

Changed :
  • In SkelMeshSwap, increased Match Quality penalty when not matching to Rare Pal by 4 times (5 > 20)
  • The "Best Match" system now accounts for met requirements such as ReqTrait, ReqTrait improves match quality so meeting multiple requirements will result in a higher match quality at this comparison step (Note that other factors could still increase the Match Quality so just because a swap matches multiple requirements doesn't mean it will always be selected)

Fixed :
  • SkelMeshSwap should now properly apply to NPCs that are not Pals (When testing I had enabled a check for pals only and forgot to disable this check before release, sorry!)
  • SkelMeshPath will now check for full reference paths and assume they are correct without trying to add the reference script values (as in, paths that start with " /Script/Engine.SkeletalMesh' " will be assumed as already formatted correctly for loading in-game and no additional formatting will be applied, this change is technically an add, but given it fixes undesired behavior I'm classifying it as a fix)
  • __Create_Load_List__.bat will now properly run in admin mode for all users regardless of your environment set up (while in windows at least)
  • __Create_Load_List__.bat now properly checks for the .json extension before adding to the list
  • Captured pals/NPCs should now be flagged to Persist, preventing pals switching models after being captured then summoned
  • Pal/NPC validity is now checked before saving to prevent unexpected behavior in save output
  • Optimized Best Match / Random selection system to fail quicker when comparing matches so less data is processed per compare

What's Next?

Altermatic has really been a project that develops as requests come in and that hasn't changed. I'm still gauging how to best approach a lot of problems people are encountering so I don't have any solid plans. I know for SCake there will be more dynamic gender assignments coming in a future update with Altermatic integrations so that's certainly on the list as things progress, but not sure about after that. For requests some have asked about replacers for just textures/materials but there's some issues with that, some users seem to want to just have textures to input but materials in Palworld have their own parameters set up and won't translate directly to a Texture2D replace. Then there's also model inconsistencies where if someone installs a default replacer then there's no way for Altermatic to know and the textures would be broken. The idea for Altermatic was to try and have a nice 'reset' on replacers and promote better practices while also making things as easy for modders as possible, but these 2 things are sometimes in conflict. Sure, it'd be nice to have a simple replace texture option, however it would be better practice to employ the current method for this which is to export and re-import the default model as its own SkelMeshSwap so that the texture is attached to its own model and ensures 100% compatibility, even if the default model is replaced. But even still, there's probably ways to implement an easier method for users who want to do multiple material swaps for a single model, and in that regard I'm looking into adding a texture/material parameter to SkelMeshSwap but I need to do a bit more research to see if that's the best approach or if something else could be better.

Current Road Map

1 ) Implement more integrations with SCake and the new (unreleased) dynamic gender assignments
2 ) Investigate direct texture/material replacers without Mesh Swaps
3 ) ???
Comments  loading...
Like(0)
Sign Up or Log In to comment on this post

Creator Stats

125 subscribers
42 posts

Goals

$71 of $500
per month
(Monthly Goal) Would ensure part-time work on projects and ensure a constant flow of updates to content without worries of financial strain or burn-out.
$71 of $800
per month
(Monthly Goal) Would provide the potential to go full time, working on projects and producing content as seen fit by subscribers!

Other Creators

WE USE COOKIES

SubscribeStar and its trusted third parties collect browsing information as specified in the Privacy Policy and use cookies or similar technologies for analysis and technical purposes and, with your consent, for functionality, experience, and measurement as specified in the Cookies Policy.

Your Privacy Choices

We understand and respect your privacy concerns. However, some cookies are strictly necessary for proper website's functionality and cannon be denied.

Optional cookies are configurable. Disabling some of those may make related features unavailable.

We do NOT sell any information obtained through cookies to third-party marketing services.