Project Sugar Cake v0.4 DEV Released! (BETA) [Palworld Mod]
UPDATE 2024-06-28 :
PocketPair reverted their package changes which means the new io store packages are now broken and old packages are working again. I've release a repackaged version of SCake (0.4.1) and the Anim pak, downloadable through the same link as before!
---
Emergency update for SCake!!!
Well, not really an emergency per-say, but critical non-the-less! The large Sakurajima update for Palworld broke mods when they changed their packaging method for the game. This didn't break too much in terms of actual mod compatibility, but it does mean all mods need to be repackaged with 'Io Store' enabled, this includes SCake, Anim Packs, mesh replacers, ect. I was already working on a decently sized update before so there's still some really cool stuff in here, just sucks that a lot of other mods may take a bit to get updated!
Alright, so lets cover the Sakura in the room, what did SCake need for compatibility with the Sakurajima update? Well, 3 things, firstly I just had to re-package ProjectSugarCake with the new format (enabling 'Io Store' in UE5's packaging settings), which was simple enough, then the mod was able to start up. After that however, I quickly noticed after re-building my SCake_BasicsAnimPak into a new Anim Pack (also released along-side this update, called Spirit's Naughty Human Anims, though it's just the same animation with updated info for now X.x) the loader code for SCake no longer worked! This meant I had to build a new loader (wasn't too difficult since I already had the research for other potential methods) then create a translation layer that re-formatted existing file-paths so the JSON formatting didn't need to change.
Simple stuffs! Now, generally everything else 'seems' to work fine, but this update is slightly rushed with not a lot of testing so there could be some new bugs or issues with features, especially new features, but I guess that's why this is a DEV version, right!?
Anyways, other major additions, AdjustProfiles are now a thing! Currently SCake is only set up to have a single profile, but this allows position and camera adjustments between animations to carry over between animations/sessions! (Finally don't need to re-align every single time, it'll save and re-apply it now!). Made some major improvements and finally finished the Validators for registering and playing back animations! This means things should flow much more smoothly and help modders see where their anim-packs are failing better. Restrictions were also added for when animations can play to prevent breakage, along with some minor adjustments to positioning code. Added a ton of additional features for modders within the SDK and exposed a bunch of variables for easy access, this should allow more advanced Modules to be created! Of course there's more, check the Changelog for details!
Download Links!
GDrive Folder : https://drive.google.com/drive/folders/1vYfgMom7UJs2OmJ5B4FGQTMYEOR0n9Vr?usp=drive_link
Mega Folder : https://mega.nz/folder/9hZQ2IIR#Ou77tq4qQxw9UBQsozh6zg
GDrive Folder : https://drive.google.com/drive/folders/1vYfgMom7UJs2OmJ5B4FGQTMYEOR0n9Vr?usp=drive_link
Mega Folder : https://mega.nz/folder/9hZQ2IIR#Ou77tq4qQxw9UBQsozh6zg
- Project Sugar Cake -
- Full Changelog -
- Full Changelog -
SCake Version 0.4 DEV (Beta)
Notes :
- The Sakurajima 0.3.1 update broke older mods and SCake's old loader function, this means all mods need to be re-packaged to the new format before they will work correctly, this includes Anim Packs. I've created a translation layer within SCake to the new loader format so the old JSON format should continue to work!
- This update works on major improvements to various validators to ensure animations register and playback correctly, if something was incorrectly set in animation pack .json files before but wasn't validated, they may now fail to register or behave differently
Added :
- Made a new Loader and Translation layer for loading animations after the "Sakurajima 0.3.1" Game Update (Old loader stopped working and this new loader won't work on older versions of the game) .. - "ActLocations" has been added to API Function "SCake Get Compat Events" .. - "ActLocations" has been added to API Function "SCake Start Anim Event" .. - API Function "SCake Get Compat Events" now accounts for the input Aggressors and Act Types/Locations input (Note : Animations without Aggressors or ActTypes/Locations configured as expected will not return with these optional parameters) .. - API Function "SCake_GetPalComp" which pulls the associated PalComp for the referenced Pal Character (PalComp stores all tracked data for a character, use this reference to pull that data without a function call)
- Added Variables to the SDK for direct reference, this allows modders to directly reference these variables without any API calls, many of which were not exposed previously by a function call
- ProjectSugarCake Var Exposed : Pal_Player, Pal_PlayerController, SCake_ModVersion, Data_EventCompArray, System_InputState, Data_PalsInAnim, Data_PalCompMap, Key_Menu, Key_Select, Key_Up, Key_Down, Key_Left, Key_Right
- SCake_PalComp Var Exposed : PalReference, InstanceID, CharacterID, SexualPleasure, CloseToOrgasm, SexCount, OrgasmCount, SexHeat, IsAroused
- SCake_EventComp Var Exposed : PalList, EventID, AnimID, NonErotic, Aggressors, AnimRoot, PlayAnimDuration, PalsHaveOrgasmed
- Validator now checks for Mounted/Gliding state for all characters and checks if player characters are currently riding, will invalidate these states for animations to prevent various issues
- SCake's internal version number now shows in the start-up message pop-up
- API Dispatcher "SCake_ED_AnimSwitch" which is called any time an Animation Event switches animations
- Finished all critical validation for the Animation Register, now should check and validate all critical parameters and prevent registering broken animations while also purging some out-of-scope data (note if an anim json file has incorrect data it could still cause playback errors, this validation only prevents incomplete or invalid data passing)
- Finished validation for Animation Event Register, now checks and validates all parameters to ensure they are consistent while setting variables automatically instead of making assumptions (this means stuff like actor count, compatability, NonErotic, ect. all validate and set automatically) .. - "NPCID" and "BPClass" for 'Human' characters can now optionally be used in JSON configuration for animation packs, allowing defining animations for very specific Human NPCs .. - "Player" can now be used in JSON configurations for animation packs, allowing specifically only allowing the Player character (Note "Human" still includes the player)
- Positional Adjustments are now saved for each animation into an AdjustProfile, which is saved as a JSON config file named "_SCake_AdjustProfile_Slot0.json" which stores position adjustments made for each character within an animation, this allows positional adjustments to save across Events/sessions
- Camera position is now saved per-animation and saves with the AdjustProfile (the JSON that stores position adjustments) .. - "Use Global Cam Adjustment" added to Preference Settings, while enabled the cam position reverts to using a global position and ignores the new AdjustProfile system .. - "All HumanIDs Match" added to the System Settings, while enabled "Human NPC" IDs will all be compatible with one another (all considered as "Human" like before this update)
- "Player Matches HumanIDs" added to System Settings, while enabled the player will be compatible with all "Human NPC" IDs, including 'Human' and 'Player', otherwise only the player is only compatible with 'Player' in CharacterID compatibility checks (Enabled as the default behavior but allows future support for Player Unique animations when players use replacers that are non-human or have unique anatomy and wish to configure which anims do/don't work manually or install anim paks dedicated to that replacer)
Changed :
- Re-enabled animation asset validation in the register with new code that reduces redundancy and should be much more efficient (A very small number of users may experience increased load times from this change thanks to a strange UE5 bug, however that increase shouldn't be nearly as long as before, I tried running validation as a batch to work around this issue but then I ran into yet another UE5.1 bug that prevented that method from working so we're just going to have to deal with it)
- SCake's UI should now show through the Loading Screen and in-game menus (Done for debug purposes, this behavior will most likely change again in the future) .. - When registering Animation or Events, Invalid Climax Variants will now cause the Anim/Event fail to register (previously just removed the climax var, to make the experience more straightforward and enable better debugging this has changed, also allows some optimizations during playback)
- Default behavior for camera handling during player involved animation events now uses the new AdjustProfile by default (may need to adjust the camera each time a new animation crops up depending on your preferences, or enable the "Use Global Cam Adjustment" setting)
- API Dispatcher "SCake_ED_AnimStart" now calls after an Animation Event has actually started playing an animation rather than during initialization, this ensures all parameters are set by the time the Dispatcher is sent
Removed :
- API Function "SCake_GetEventCompParams" is no longer in the API since it's made redundant with variables now exposed (removing the function is better for future compatibility)
- "Auto Save Frequency" in Game Settings removed since it's a normal in-game setting now
Fixed :
- Human Sex Equip settings not being switchable in the menu (Caused by mis-named callback variable)
- Added additional validation checks for when an invalid UniqueID is passed, allowing earlier failures with more predictable behavior
- If an animation fails to load during playback, an error is now displayed in the UI and the animation should end. This check also forces the animation to load before attempting playback, which should fix the rare instance of animations refusing to play even if they are installed properly
- Animation Handler should now only try to unequip equipment when an animation is starting and not when an animation ends
- Removed a fail case where the camera could be adjusted if the player bugged out the UI and was able to be in an animation while controlling another animation (This bug was inaccessible without external modules)
- When controlling an animation the menu entries should now properly update if the Animation Event switches to an animation with a different slot order
What's Next?
We all expected the Sakurajima update to break stuff, however I don't think we quite expected it to break literally every single mod! So this puts me in a bit of a strange position and has basically forced an immediate shift in focus. After the update was announced I decided to hold out on a couple of things just to see what the update changed and how things progressed, specifically I waited on working with the Lust Module and Model Replacer idea, just doing a bit of internal game research in the mean time while working on SCake itself. This ended up being a double edged sword... I didn't expect all mods to break, I just expected 'aspects' of mods to break, but since they all broke this means the framework our community was using for gender-based model replacers no longer works! This means I'm immediately shifting focus on trying to build the flexible model replacer framework. It would have been nice if I already had a framework rolling, but it's also good to know I don't have to re-build things after a ton of work, especially since Palworld now has a new 'skin' system and.. hats? So I'll be able to freely investigate how those things affect these systems and maybe add support/compatibility directly into the design of the framework!
After that I'd like to work a bit on getting multiplayer working, but I have a feeling the model replacer framework is going to take a good bit of time to get rolling. I do have another 'secret' release coming up though, nothing too interesting, but it 'may' spark some additional interest... maybe?
Current Road Map
1 ) Build Model Replacement Framework
2 ) Work on anim packs and try to expand releases
3 ) Consider/Test multiplayer support
2 ) Work on anim packs and try to expand releases
3 ) Consider/Test multiplayer support