Join for free to receive email notifications about new posts submitted to paid tiers
Join for free to receive email notifications about new posts submitted to paid tiers
Join and get full access to supporter content and the exclusive supporter role "Demi-God" on our discord!
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 :Removed :
- 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!)
- 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)
UniPalUI 0.1 DEV
Note :
- This is a revised changelog based on the the last few major revisions since Integrated versions, some details may be missing or vague and all previous changelogs were discarded (UniPalUI went through a near complete re-write, so old logs were irrelevant anyways)
Added :
- Notification System, this displays messages in the top left for a few seconds then disappears on their own, useful for gameplay or debug functions to show information during gameplay
- Mod Menu System and Register, press Shift+Y to open up a new menu on the left side of the screen and show the mouse cursor, can interact with the menu using the mouse, has a universal back/mod selection/exit button, gameplay continues while the menu is open and you can use the middle mouse button to rotate the camera (Some gameplay actions can change controls/menu focus which may lock UniPalUI's function, simply close the menu with Shift+Y to fix)
- Added several menu box types for the menu
- - "Text" BoxType, this generates a text box with interactions
- - "Toggle" BoxType, this generates a toggle box with interactions
- - "Select" BoxType, this generates a box with a left and right selection
- - "Header" BoxType, this generates a text box without any border or interactions
- - "Custom" BoxType, this generates an empty box for inserting your own widgets, has no interaction handling
- Input Handler and Register, UniPalUI now has its own input handler which can register inputs and listen for them, delivering a callback when necessary, the Shift+Y menu inputs use this input handler
- Callback Functions Interface used by mods to receive UniPalUI callbacks, this interface, called "UPI_InterfaceFunctions", is required to receive said callbacks properly
- API System, created several functions for mods to use for interacting with or adding to UniPalUI, check the SDK for more details on each function
- - "PalPlayer"/"PalPlayerController" Variable for convenience
- - "HideUI" Variable which says whether UniPalUI is attempting to hide the base-game's UI (careful toggling this yourself)
- - "UPI_RegisterMod" API Functions, registers a mod with UniPalUI
- - "UPI_RegisterInput" API Function, registers an input with UniPalUI
- - "UPI_SetInputActive" API Function, sets whether the stated input is actively listened for
- - "UPI_EnterInputState" API Function, adds an input state to the top of the stack
- - "UPI_ExitInputState" API Function, removes an input state regardless of position within the stack
- - "UPI_SendNotif" API Function, sends a notification to the Notification System
- - "UPI_OpenMenu" API Function, opens a new mod menu (or enters a new page)
- - "UPI_CloseMenu" API Function, closes the active mod menu (or goes back a page)
- - "UPI_AddMenuOption" API Function, adds a new menu box to the active menu
- - "UPI_UpdateMenuOption" API Function, modifies a menu box with new information
- - "UPI_UpdateDescBox" API Function, sets the text to show in the Description Box
- - "UPI_ResetMenu" API Function, clears the menu and sends an open callback without closing the page/menu
- - "UPI_ExitMenu" API Function, forces UniPalUI to close the menu
- - "UPI_Callback_KeyPressed" Callback, called when a registered input is pressed
- - "UPI_Callback_KeyHold" Callback, called when a registered input is held
- - "UPI_Callback_KeyReleased" Callback, called when a registered input is released
- - "UPI_Callback_MenuOpened" Callback, called when a menu is opened
- - "UPI_Callback_UIHover" Callback, called when a menu box is hovered
- - "UPI_Callback_UI" Callback, called when a menu box receives an interaction
- - "UPI_Callback_MenuClosed" Callback, called when a menu is closed
- - "UPI_SecureCode" Interface Function, called for securing mod details
- - "UPI_MenuGenBox" object added to SDK, this is the reference object for a generated menu box and comes with a list of variables to access
- Added credits section to the mod menu which is currently only accessible manually (will be exposed to the API when system is polished up, currently it requires manual sets which could cause issues if done improperly)
Removed :
- Code for Integrated versions removed and cleaned up for public release, Altermatic users will want to update to 0>4 DEV or newer