[New Mod!] Altermatic v0.1 DEV Released! [Palworld Mod]
Ok, so hold on, don't think this is 'completely' horny, alright? I mean, I SWEAR this one can be safe for work... Introducing Altermatic - Runtime Replacer Framework! If you've been watching the Discord (which you totally should ^.-) then you may have already seen me release some TEST versions, but now I'm making a proper public release!
One of the largest pain points for our community regarding mod development has been replacers, or more specifically, replacers that allow gender dimorphism and unique visuals. Altermatic is an attempt to alleviate a lot of these issues while creating a more dynamic and customizable experience for not just modders, but users as well! Altermatic uses JSON config files similar to my other project, Sugar Cake, but instead of dealing with animations, this one is for replacers which swaps assets at runtime! Right now Altermatic is limited to Pal/NPC model replacer functionality with a few parameters to define. The core goal of the framework is to allow easier Gender Dimorphism for Pals, but there's a lot more potential with this mod in the future and the methods I discovered are really flexible!
One of the largest pain points for our community regarding mod development has been replacers, or more specifically, replacers that allow gender dimorphism and unique visuals. Altermatic is an attempt to alleviate a lot of these issues while creating a more dynamic and customizable experience for not just modders, but users as well! Altermatic uses JSON config files similar to my other project, Sugar Cake, but instead of dealing with animations, this one is for replacers which swaps assets at runtime! Right now Altermatic is limited to Pal/NPC model replacer functionality with a few parameters to define. The core goal of the framework is to allow easier Gender Dimorphism for Pals, but there's a lot more potential with this mod in the future and the methods I discovered are really flexible!
First, Download links and changelog, then I'll go over the project goals and branding stuffs!
Download Links!
GDrive Folder : https://drive.google.com/drive/folders/1vYfgMom7UJs2OmJ5B4FGQTMYEOR0n9Vr?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
GDrive Folder : https://drive.google.com/drive/folders/1vYfgMom7UJs2OmJ5B4FGQTMYEOR0n9Vr?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 -
- Full Changelog -
Altermatic Version 0.1 DEV [Initial release]
Added :
- Ability to swap Skeletal Meshes for NPCs, defined by either CharacterID or BPClass (from DataTable), then applied by Gender (None/Male/Female)
- When multiple SkelMesh are compatible a random one will be selected based on best-match cases
- Added "MatchQuality" to the randomization, when failing to meet optional requirements the match quality will degrade, when selecting a final SkelMesh to apply only the highest quality grade available will be selected to ensure the best matches are used
- Added "IsRarePal" option for JSON, when set to "True" then the pal must be rare for the skin to apply
- Added "Skin Name" option for JSON, when applied the SkinName must match the internal skin name the pal has equipped (this feature is incomplete since it does not apply when applying skins, only when loading a pal that 'should' have a skin)
- integrations with SCake Additional Genders, also enabled cross-functions which improves Altermatic's performance while SCake is running
Project Goals
As mentioned previously, the main goal of Altermatic was to build an easy to use framework for adding Gender Dimorphism. We also wanted a solution that could potentially work at run-time, something where we could swap assets on-the-fly by choice. Currently this aspect of the framework isn't really utilized but there is a LOT we can do with that! For starters, Altermatic supports SCake's extended genders (while SCake is installed and running at least) which means we could set it up so when genders change in SCake they will dynamically change visually as well! The idea of adding more than just Male/Female gender assignment is something that's been thrown around as well, and Altermatic could very easily hook into that aspect to create a unique experience no other mods are really capable of. The JSON config stuff is also quite flexible and, as long as I can figure out the systems, we could create very granular control over what modders want to hook into in a Game-Version safe way! This includes things like, defining traits, swapping meshes for freshly added pals without needing any updates from Altermatic, support for alternate state models (like maybe damage models on the Player/Pals/NPCs?).
But you also may think my ideas feel a bit jumbled up without any real coherence here, and that's kind of because they are. Honestly, getting this initial version of Altermatic only took a few days to set up! I'm not kidding! I had a basic replacer with JSON parsing/loading and such within a single day! Granted, much of this work was already done with SCake so that all carried directly over, but I wasn't really 'prepared' for it to be this quick and 'easy'! (not easy as in, not logically difficult, but rather not nearly as time consuming to get started) This means I still haven't nailed down all the features I'd like to cram into Altermatic, and I haven't been able to gather interest outside of our relatively small modding community. So that does leave me in a bit of a weird spot, Altermatic 'could' expand to be this crazy framework everyone uses, or it could stay simple and just be a nice tool for our community. We'll just have to see where it goes I guess!
One thing is certain though, Altermatic was specifically pitched as an idea to help development on SCake content, so expect Altermatic to grow parallel to our growing needs over on that front!
Branding
As a creative with a history in Graphic Design, it's no surprise that I really love new branding ideas. So, introducing Altermatic's Logo and Design Style!
I haven't talked about it much, but SCake is also getting a branding shake up and I found Altermatic as a fun way to test some of the more simplistic design goals of the new SCake WIP logo (I'll be posting that one when it's ready >.<). Altermatic's visual goals is to be simple but aggressive with a contrast between stable and alteration. That.. sounds really pretentious... Uhm.. It was inspired by those silly circle things that have arrows, indicating a cycle. I wanted to design to invoke a feeling of circulation or dynamic shifting and I personally love what I ended up with! From the Typographic integration of the circular design to the eye guiding arrows design on the outer edge, it's an overall engaging logo to look at!
Since Altermatic's design goals are to be much more simple I had to find a solution for different platforms with different color profiles. In other words, I needed solutions for 'on white' posting sites and 'on black' posting sites, hence the dual color design. With my other designs I could easily add a drop shadow, but here that somewhat broke the shapes and overall form, detracting from the design, so instead 2 versions were created with opposing color intensity. It was also pushed as a fun idea to use different versions for specific places and see if anyone says anything, a cute idea for sure!
On a personal note, I really didn't like my quick-and-dirty design for SCake's initial logo and design concept. The ideas are cool but I didn't put in the time to really make the concept 'work' in a way I'm happy with. I was ok with it at the time since I always planned on updating it (which is in the works now) but it really has been grating on me this entire time. I didn't want to repeat that same mistake with Altermatic's logo design and aesthetic so I put in the time this.. time. (god, I'm such a great writer...) I'll be working on the SCake branding make-over soon, so if you find this stuff interesting, make sure to follow for more!
I forgot to include the naming inspiration in the first write, so I'm just tacking it to the end here like a pro. "Altermatic" is a combination of "Alter" and "Automatic" since Altermatic will "Automatically Alter Assets"! Shout out to our community in the Discord who helped brainstorm ideas! I didn't end up using any that were suggested (None of them really fit) but they helped me narrow down onto a name that sounds interesting, is catchy, and represents the mod's functions. I really like the name! (Altermatic is also a mathematics term, though I won't pretend that was even remotely part of the inspiration. X.x)
What's Next?
I know we need traits support and I would also like to implement persistence. Initial release doesn't feature persistence because I couldn't decide on what method would work best so instead I wanted to release this early version to the public and see what people suggest in terms of features and flexibility. Initially I just wanted to use GUIDs already saved within Palworld to do persistence (I even made a really cool system which translates a GUID to float and uses division to decide which mesh to choose when there's multiple options). The problem with that system, however, is if you add or remove options then it could affect the already 'selected' meshes and things could change. If I wanted to fix those issues I'd have to make the system more rigid and I'm obviously not a fan of that. So instead I want to see what people want/ask for in this regard to figure out the best data structure and support. Of course with SCake integration I could easily use SCake's stats API to implement all of it, but Altermatic needs to run standalone as well. This probably means I'll be making more save files... (Guess it's not that big of a deal... right? Just a lot of work... Q.Q)
Current Road Map
1 ) Add Traits Support
2 ) Implement Persistence
3 ) ???
2 ) Implement Persistence
3 ) ???