Project Sugar Cake v0.1.0 DEV Released! (BETA) [Palworld Mod]

BETA SCake Logo - BETA Release Announcement

I’ve got a fairly large update today for Project Sugar Cake, and with it I’m officially taking the mod out of Alpha status, and into BETA! What does that mean exactly? Well, typically Alpha means the project is still lacking fundamentals and the base framework which everything is built off of is incomplete, however with this update all of those base systems are finally complete and now it’s all about adding onto the base framework that’s been built! There’s still some systems that are not really implemented quite yet, like persistence (I have to build a json parser for it) and multiplayer support is still an unknown (I don’t really have a proper way to test it yet), but animation playback, validation systems, asset handling, input and UI management, and the stats system all have their base built and tested even if they may be somewhat lacking in usage or have some non-functioning aspects. However, from here it’s mostly just building onto these systems and making extensions when needed. There’s still a lot of work to do, but I firmly believe we’re now at a state with SCake where it’s genuinely usable given you have animations packs to install!
This update’s big features are related to the new UI and input system with refinements to all other aspects of the mod. SCake now has a custom input system that ties into a custom UI that allows settings configuration, seeing installed animations/events, and even adjusting animation playback with position and camera control! There’s a ton of changes and tweaks under the hood not mentioned in the changelog either with many optimizations and code simplifications that will make updating various sections of the mod much easier as well as improve performance. This was certainly one of those updates where I kept telling myself “oh, just one more quick addition” over and over and over… One particular thing I had to stop myself from continuing on is validation since it was taking a lot of time to research and get going, so the systems are there but not fully implemented or are disconnected/unused in the current build, so you can still start anims in cases where things will break and some strangeness can still happen. But overall, excited to see this update release! (I also made a quick logo and display set up to make posts not just a bunch of text, though I’m not super happy with them. Just another thing to improve over time I suppose.. ^-^)
- Project Sugar Cake -
- Full Changelog -
SCake Version 0.1.0 DEV (Beta)
Note : Mods using the SCake SDK/API will need to be updated to the new API functions and reference the new actor "ProjectSugarCake"
Note : Updated templates provided with SCake to reflect changes in data structure
Note : Menu UI requires keyboard input for now, I messed up when building the assets so click actions don't call-back properly and were removed
Note : Non-standard debug keys may not be reported in changelogs from this point forward (I constantly change them depending on what I'm working on, so trying to track them will get difficult as things get more complex)


Added : In JSON data for 'size" parameters, entering 'default' now automatically converts to the default size param for the defined CharacterID (if one exists, otherwise None is returned)
Added : API Event "SCake_StopAnim_EventRef" which stops the Animation Event of the given Event Reference
Added : API Function "SCake_InterpretError" which converts a returned error code into a readable string (Used for passing into UI or make debugging easier)
Added : API Function "SCake_GetPalAnim" which searches for a given pal and returns if they are in an animation and the event reference if so
Added : API Function "SCake_GetEventCompParams" which returns variables from the provided Event Reference collected by functions/Dispatchers
Added : API Dispatcher "SCake_ED_AnimStart" which sends when animations start with the Event Reference (If you store this value remember to check if it's valid and if the animation is still playing before trying to pull data)
Added : API Dispatcher "SCake_ED_AnimEnd" which sends when animations end with the Event Reference (Do not store the returned reference and pull your data immediately as Event References will delete themselves a short bit after an animation ends)
Added : New input system implemented with input states allowing new menu and position control (Default keys are U=Menu O=Select I=up k=Down J=Left L=Right)
Added : Fully custom menu system implemented, use the Menu key (U by default) to open and up/down/left/right keys to interact with it (I/K/J/L by default) (No API access yet as some revisions still need to be made before it's dynamic features are usable)
Added : "Settings" menu to SCake Main Menu
Added : "Animation Event Duration" to the Settings Menu (controls how long Animation Events aim to last in seconds)
Added : "Pleasure Gain Rate" to the Settings Menu (controls how quickly Sexual Pleasure is gained in Erotic Animation Events)
Added : "Pleasure Decay Rate" to the Settings Menu (controls how quickly Sexual Pleasure is lost while not in an Erotic Animation Event)
Added : "Pleasure For Orgasm" to the Settings Menu (controls how much Sexual Pleasure is required for this character to have an orgasm)
Added : "Pleasure Loss On Orgasm" to the Settings Menu (controls how much Sexual Pleasure is reduced when characters have an orgasm)
Added : "Allow Debug Input" to the Settings Menu (controls if the debug controls for SCake are enabled, will be disabled by default in the future)
Added : Animation List to the SCake Menu which shows the "AnimName" of all Animations Registered with parameters showing in the description box (If no anim name is found the "UniqueEventID" is displayed instead)
Added : Animation Event List to the SCake Menu which shows the "EventName" of all Animation Events Registered with parameters showing in the description box (If no anim name is found the "UniqueEventID" is displayed instead)
Added : New Animation Menu which shows up with 'climax progress bars' for participants in the selected animation (Player animations will already be selected)
Added : Animation menu which allows adjusting the position of characters in animations, also allows ending animations if "Allow Debug Input" is enabled (Currently does not save or have any persistence)
Added : The Game UI will now hide by default when the player enters an animation (and should re-appear after the animation ends)
Added : Attempts to hide the in-game UI when a player animation starts (should re-appear when the animation is over)
Added : If a player is in an animation the camera position can now be controled with W/A/S/D/Q/E keys (Keys display in the animation UI, position saves between animations and should return to normal after the player animation ends, sometimes the game disables these keys or locks the camera and the camera function may stop working)
Added : With debug input enabled, when holding down SCake's Down Input key (K by default) if no valid target is found SCake will now try to start an anim with the summoned pal instead (sometimes fails since the reference is invalid, seems to be a game bug but resummoning your pal usually fixes it)

Changed : UI entry point to be slightly higher up (helps make the new menu more visible when there's more entries in the list)
Changed : SCake_StartAnimEvent_Basic is now a function and now returns if the animation started and the order+references of pals in the animation
Changed : SCake_StartAnimEvent_Advanced is now a function and has return values just like the Basic version
Changed : Some debug inputs were added and others changed key defaults
Changed : Event references will remain valid for a short period after animations end instead of instantly deleting themselves (useful for pulled data after an animation ends and to allow manual scanning of animations ending without losing access to data)
Changed : "O" debug key now opens the Animation Menu for the Target Pal

Removed : "TransformBySize" no longer includes Rotation, simplifying the data structure a small amount (Rotation is already included with the "TransformAllOffset" and there shouldn't be a need for a rotation by size)
Removed : The Testing Angel has departed, shall she forever grace us with great debugging and moral support!

Fixed : The default _LoadList.json had tabs instead of spaces for the 2 additional entry slots causing errors in some cases, changed them to spaces
Fixed : Animations were not validating in cases where all characters in an animation were valid for all slots
Fixed : Certain parameters not being set to default when registering Animation Events with JSON when those values were not defined
Fixed : "SpeedMod" in stages having no effect
Fixed : Instances where the animation slot sorting would fail and result in animations breaking or not playing properly
Fixed : Global Climax Variants not functioning properly (I forgot to connect a node >.>)
Fixed : Drastically optimized the positioning code within the Animation Player (Also simplified implementation without any loss in functionality)
Fixed : "TransformBySize" not parsing from JSON correctly
Fixed : Corrected many positional issues caused by using inconsistent sources for the positioning (Still never found the 'exact' cause, but new code works so whatever)
Fixed : Some instances where SCake's control overrides were being overwritten by external forces (SCake still fails to prevent certain actions that breaks animations)
Fixed : Player being able to aim and throw a pal sphere while in an animation, breaking the animation playback
Fixed : Player being able to interact with other pals while in an animation, potentially causing a soft lock state while breaking AI and animation playback
Fixed : Characters (including the player) being able to crouch while in animations (Normally didn't break animation playback but could break AI or cause camera issues for the player) 

SCake Branding

When it comes to my projects I really like the idea of giving each one their own identity and branding profile to sort of have a specific feel to them. While I don’t want to make them overbearing within the mod itself, I do like to try and create a specific feel and theme with visual aspects and wording. With Project Sugar Cake I’m taking a mix of inspirations both directly from Palworld’s lore and breeding system (Cake is used for breeding in-game, hence the mod’s name with Sugar added) while playing on the ‘Sugar’ aspect in a bit more literal way even though it’s implied all but innocent. For mod pages and distribution I’ve made a quick Title and Logo visual, it’s not quite up to my own standards yet as I made it relatively quickly but it’s something I can improve over time.
SCake Branding Cover (BETA)

The font is designed to look somewhat like a retro bakery style font with a bit of strangeness to it with spiked bottoms and thick edges giving a strange and conflicting aesthetic, to hint at the other implications from the mod, while the logo is inspired by obviously cake, but also features an egg to imply the breeding aspect and a general shape inspired by the incubators. Within the docs I also features this inspiration from the incubators with shapes used in title headers like so (_) Title (_) . I’m sure most people don’t notice, but I feel it gives a certain look to it that gives personality. 
Within the game I’ve taken more of just a color approach for now since including more assets was out of scope at this stage. A lot of the visuals for the UI are placeholder, but I hope to expand upon these theme concepts within the UI itself at some point if I ever get the chance and justification to do so.
In-Game SCake Menu Sample (BETA)

Currently the menus don’t really blend into the game very much, and I haven’t decided if that’s a good thing or not. Having a custom visual UI is nice to give it that extra flair but I am considering making it tie more into the game’s own visual style while introducing some nice theming on-top. I could also just go all in on my own custom look, but as fun as that might be it is probably not just out of scope for the project at this stage but also probably not really something everyone would want either. So in the future I’ll be looking into how to make the UI integrate better with the game itself and introduce some theming that both falls in-line with the game AND SCake’s general theming.
I know this stuff probably isn’t super interesting to most people, but I have a background in graphic design, this is kind of my jam! (Thank you for putting up with my little nerd out!)

What’s Next?

The next to immediate things to work on that were featured on my checklist is getting persistence working and investigating multiplayer compatibility, so these are the next 2 steps, but other than that I want to take some time actually making my own animations using SCake while also sorting through everything that’s still left to do and organizing a plan. So for the next update we’ll most likely have much more persistence set up, stuff like settings saving, animation customization, that sort of thing, though for multiplayer I really need a test environment set up before I can really do much on that end. I’ve spoken to some peoples about getting a multiplayer test server set up (which would be super awesome!) but it would really be a good idea for me to figure out a local set-up for testing this sort of thing as well, especially given my usual workflow of ‘test the thing, oh thing broke, immediately try to fix and re-run application’… I know, bad habit, but it’s been working so far! For persistence I already have a system tested, I just need to actually implement it and see if it works in all instances. Aside from those 2 things, I also need to work on more validation to prevent animations starting in situations that could break the game. The validation stuffs will really just be trial and error while people start to use the mod more, finding every instance where the game can break will be a challenge and there’s definitely going to be some edge cases out there.
Overall though, I really need to re-organize the project and get my internal docs in order (they’re a complete mess X.x). Specifically I really need to sort the ‘planned features’ list into a checklist of things I need to get done in a more general sense, something where I can both use as a general guide while also having something to display publicly.
Current Road Map
1 ) Work on Validation and Persistence
2 ) Work on Multiplayer Support
3 ) Re-organize my internal docs and figure out the next best step...
? ) Make animations!
If you have any animation suggestions, we’ve set up channels in the Discord for ideas! Feel free to take a peek and maybe make some requests!