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.
I am over 18 years old
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
Send Message

Subscription Tiers

FREE
Follower

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

33 subscribers SubscribeStar $0.00 tier
Unlock
$5
per month
Demi-God

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

11 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 Palworld.Reset Filter
michaelpstanich
Public post

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

Yep, I botched the release a little bit. This is what I get for trying to finish up a release while super tired, but hey, only a day later and I have some exciting new stuffs to show anyways! This’ll be a quick one with no write up.

Last patch had a few bugs I didn’t catch and I also forgot to add the new Sexual Heat system into the save file (I was the big dumb Q.Q) so this update fixes those as well as adding some requested features for the SDK. There is a big new feature hidden here though (which is why it gets its own post ^.-), I added the ability for modules using SCake’s SDK to add arbitrary stats that can then save and load with SCake’s systems as well as integrate into the mod directly! I call these “ArbVariables” or Arbitrary Value Variables where modders can register an Name variable with an associated value which can then be seen and modified by any other mod by the name variable! For this first implementation I just added the ArbString which is enough for modders to do whatever they need to do, but in the future I’d like to add a float and int versions as well with more configuration options like automatic decay/buildup/caps/so on. This is not just a “sex” framework, but also a Stats Framework, and here’s the first major step in that!

SCake Version 0.2.1 DEV (Beta)

Added : API Function "SCake_TrackReturnAll" which returns all characters currently tracked by SCake (useful for initiating modules that need to apply/check status)
Added : API Function "SCake_CheckStat_SexHeat" which returns a character's Sexual Heat stat and if they currently have enough to be aroused
Added : API Function "SCake_Stat_AddSexHeat" which adds the specified amount to the character's Sexual Heat stat and returns their new value along with if they have enough to be aroused
Added : API Function "SCake_Stat_ArbChangeString" which adds/changes the arbitrary string to the designated character (useful for modules to start tracking their own systems)
Added : API Function "SCake_CheckStat_ArbString" which returns the arbitrary string associated with the given name for the designated character
Added : ArbString element to the Pal Tracking system, this allows modules to input arbitrary strings with a name for their own use cases, these can be set to persist in the save file as well so they can exist between sessions (modders will need to be extremely careful when using persist, only use it when absolutely neccesary)
Added : When Sexual Heat rises or lowers it will now set Sexual Heat to continue naturally in that direction (in other words, if Sexual Heat decreases it will continue to naturally decay until zero, then start going back up, alternatively if it goes up it will continue to increase, I planned this for last update but I forgot to implement it)
Added : API Function for starting animations now check for null and empty arrays, failing faster with proper error code returns (Also a slight optimization)

Changed : If an SCake stat value is zero or null it won't be included in SCake's pal save file anymore, saving space/processing time

Fixed : Stage Order not registering correctly when defined in the animation's .json, messing up animation playback
Fixed : An issue with the .json parser not parsing integers correctly has been fixed (Not aware of all this affected outside Stage Order)
Fixed : A potential soft lock issue if very specific params were passed in an animation .json import
Fixed : Sexual Heat not being included in the save file, thus lacking persistence (I forgot to add it, sorry!)

What’s Next?
Same as yesterday… though thinking about it over the day I really do want to start getting more animations going as well as maybe start on the Lusting system? We have the stats for it now so I can probably start getting that going and a lot of people are really interesting in potential breeding mechanics, so I may try to do that before worrying about furniture support.

Current Road Map
1 ) Investigate Breeding and Lusting mechanics
2 ) Work on making some animations
3 ) Introduce a built-in SCake Notif-system for animations to trigger certain effects (like changing arousal meshes or changing eyes/mouth)
4 ) Research sockets system for dynamic attachments and furniture support\

On Hold ) Work on multiplayer support
Comments  loading...
Like(0)
michaelpstanich
Public post

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


“I can finally move to smaller updates” I said with such confidence! I wasn’t lying, I ‘could’ have moved to smaller updates but that certainly didn’t happen here! I hit all my goals for 0.2 DEV and much more with a lot of exciting discoveries and breakthroughs! Built up a massive changelog again, originally it was just going to be an update with persistence figured out and a new saving function for existing stuffs, but it was a “just one more thing” situation (even while writing this doc I was like “OH, just… just one more thing!” This isn’t the best habit). But hey, maybe this is how updates to SCake will go, large updates with a lot of new stuffs?

IMPORTANT NOTICE!
This update changed the .json format, make sure to update your animation packs or else they may fail to update! On the Discord I've already posted updated .json files for all packs if you need a quick place to grab them. ^-^ (and I think everyone that's released a pack has updated their posts with the update .json files).
 - - - - -
Some major changes made it into this update thanks to some fun discoveries. Let’s start with the first major change, the .json format has been updated and old .json files will fail to load so they need to be updated (I’ll be distributing my own updated .json files and have even updated the old ScakeBasics pak specifically for this, since I haven’t gotten the new animation back going yet). I’ve already spoken with those I know of who’ve made animation packs available so this isn’t ‘sudden’ or unexpected (I even asked for feedback on the changes! ^-^) and they should be updating their packs officially when they can.
Ok, so quickly, let’s run down the new major features list, Persistence is figured out! So now SCake creates save files in the .json format within the AnimJSON folder, which was the main feature planned for this update. Inside the AnimJSON folder of the install is a new “__Create_Load_List__.bat” file that automatically fills the _LoadList.json so you can just run this and no longer need to manually fill the list (hoping this reduces people being confused by a good amount, but probably not X.x). New custom stat tracking system is fully in-place with new methods allowing tracking of characters that are not even active in-game. New “Sexual Heat” system, heat builds up over time and makes characters aroused with affect on sexual pleasure during erotic animations, toggles between rising and falling depending on recent activities, such as having an orgasm will switch heat to begin resetting back to zero. Support for Morph Targets which integrates into the new Heat system; this requires models to support it but if a Morph Target on the mesh is called “Aroused” then SCake will automatically change that Morph Target depending on Heat and for Animation Events. Added a new animation progression mode, “Pleasure Progression Mode” allows animations to progress through stages depending on the average Sexual Pleasure of participants! I also quickly added the changing of eyes/mouths displayed on pals during Animation Events! Quite a hefty update!

Download Links!
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 -
SCake Version 0.2.0 DEV (Beta)

Note : This updated the format and data for .json files, all animation packs must be updated to the new format (I already contacted anim-pack creators, view the new templates to see the changes and format)
Note : This update adds persistence! If the new _SCake_Save_.json files are not saving/loading properly, let me know!
Note : This update adds support for MorphTarget Models to modify 'bodies' dynamically based on the new Sexual Heat system and for animations!

Added : New "__Create_Load_List__.bat" file in AnimJSON which updates the _LoadList.json when activated (May only work on Windows, skips files starting with an underscore)
Added : API Function "SCake_AdjustAnimCamPos" which adjusts the camera postion for the player while in an animation
Added : API Function "SCake_TraceForPal" which uses the camera position and rotation to scan for pals, useful for debug code (Not always accurate so other methods are recommended for proper selections or interactions with pals)
Added : API Dispatcher "SCake_ED_EventOrgasm" and "SCake_ED_PalOrgasm" which trigger when an Animation Event / Character triggers climax/orgasm
Added : API Dispatcher "SCake_ED_PalAroused" which triggers when a character reaches enough 'Heat' to become properly aroused (Horny status ^.-)
Added : API Dispatcher "SCake_ED_TrackPalEnabled" and "SCake_ED_TrackPalDisabled" which trigger when a pal is either enabled or disabled in the new tracking system (Note : Pals do not instantly start tracking or instantly stop tracking when they become valid/invalid, do not use this for validity checks! Use 'IsValid' through UE naively instead!)
Added : Holding the camera control keys during animations now repeats, making adjustments easier
Added : Report for failed JSON load now shows the json entry that failed to load
Added : Setting "Invulnerable During Anims" which makes characters unable to be harmed during Animation Events until the end, enabled by default
Added : Automatic CharacterID conversions for compatible pals (This means animation compatibiltiy can now define the base pal CharacterID and all variables that are compatible should be detected, input CharacterIDs for variants can still be registered with default size detection)
Added : When animations are started characters will now move to the ground
Added : Register now also shows fail count similar to success counts
Added : Settings will now save into a .json file within the ~mods folder allowing them to be saved and loaded between sessions (The file name should be _SCake_SaveSystem.json)
Added : Global camera adjustment to save file so it persists between sessions (individual camera adjustments will be added in the future when persistence/cache is set up for it)
Added : Character Stats now track Sexual Encounter counts (Increases if there are more than 1 characters in an erotic animation)
Added : Character Stats now track Orgasm counts (increases every time the character has an orgasm)
Added : New dynamic pal stat tracking, all active pals should now be captured and have SCake's stats applied (Mostly just Sexual Pleasure and Heat for now)
Added : Pal SCake Stats will now save into a .json file within the ~mods folder, enabling persistence (should save as _SCake_SavePal.json, the amount of memory this system takes over long play sessions will need to be monitored, but shouldn't be too bad)
Added : Sexual Heat system, this affects the desire and sensitivity to sexual activity (slowly increases until orgasm is eventually reached or a heat reduction event occurs, then decreases rapidly to 0 then begins rising again with values over 100% increasing much slower)
Added : "Aroused" Morph Target to framework, the "Aroused" morph increases as Heat increases, and sets to 100% when in erotic animations, useful for erections or arousal based body modifiers (morphtarget names could potentially become editable in the future)
Added : Sexual Pleasure gained in erotic animations is now affected by Heat (Heat acts as a multiplier with an offset, at 0% Heat gain is at 80%, 100% = 100%, 200% = 120%, 300% = 140%)
Added : Facial expression control to Animation Player, changes expression for supported characters while animations play (Currently sets a static expression but will be configurable by animations in future versions)
Added : "Pleasure Stage Progression" SCake Setting, while enabled stages will also progress through average sexual pleasure from all participants based on duration weight
Added : "Pleasure Progression Mode" to the Animation Player and SCake Settings, when enabled stages in animations are allowed to progress when the average Sexual Pleasure reaches a threshold calculated from duration weight of each stage (defaults on, only tries to progress looping animations, Max Event Duration is still respected and will progress regardless of this setting)

Changed : The Animation UI should now show the player's display name instead of "Player"
Changed : The Animation UI should now show all players as "Player" instead of "Character" (useful in multiplayer)
Changed : The Animation UI should now attempt to find the proper in-game name to display if no nickname is set for a pal
Changed : Made major changes to the .json structure for easier creation, optimize parsing, and removing some variables that will go unused, old .json files will fail to register (Simplified the structure to run off order dependent arrays, so params still require slot specifications if they can contain multiple entries per-slot, check included templates to adjust your own .json files)
Changed : JSON parser improvements/optimizations, let me know of any weirdness or fails when it shouldn't
Changed : Limited the number of json registers per frame (will only try to load and pass 10 json sets per frame, this will slow down the register but ensures HDD users won't experience stutter when we start loading thousands of animations, register still only processes 1 animation/event per frame, this only affects sending to the register when we load the .json files)
Changed : Register automatic start time reduced to 3 seconds (was 8 before, can be changed in the _SCake_SaveSystem_.json)
Changed : Animation Events that fail to start animations will now immediately destroy themselves instead of waiting (optimization)
Changed : Overhauled stats handling backend, now runs based on game time and defaults were updated to reflect this
Changed : Pals now start with random Sexual Pleasure (No more than 20%)
Changed : Animation Player now uses the new stats tracking system to apply and track stats like pleasure, this makes effects based on Game-Time just like other stats, Sexual Pleasure defaults was adjusted for this
Changed : Adjusted some setting descriptions and displays to better align with systems and changes
Changed : "Event Duration" is now "Max Event Duration", though the behavior is effectively the same but will make more sense as more features are added

Removed : "ByName" variables when registering animations (The intended system didn't work and using CharacterID instead just makes a lot more sense)

Fixed : "Hold Down (K key) to start anim with summoned pal" now properly disables when disabling Debug Input
Fixed : Characters in animations should no longer become eligible for another animation if multiple start anim events are triggered on them
Fixed : Instances where animations took too long to process their start function and would fail to set all parameters properly
Fixed : JSON loader failing to load files from the LoadList if they had .json in the entry
Fixed : Menu scrolling offset being slightly off allowing a slow drift downward
Fixed : Report text that shows up should now properly wrap when the text extends too far
Fixed : Project Sugar Cake should no longer run any logic while in the Main Menu or outside a saved game (Only starts up the UI, though the API should be accessible)
Fixed : Characters who orgasm once will not properly have their sexual pleasure checked in subsequent orgasm checks
Fixed : Animation Player getting stuck in an orgasm loop if pleasure gain was set too high
Fixed : FootIK interupting normal animation flow when animating certain sections of certain characters (FootIK should be disabled during anims now)
Fixed : Slopes causing characters to tilt while animating, causing alignment issues (Looks a bit odd given characters will now float a bit more in some situations, but much better than alignment not working)
Fixed : Stages "Speed Mod" value should now properly affect the duration of non-looping animations
Fixed : Climaxes not adjusting duration properly if no climax variant was included with the animation
Fixed : General optimizations across most systems

Dealing with “Bones” and “Boners”

I have my monthly update coming up in a few days which will talk about data structures for games and some interesting methods I’ve been experimenting with lately, which does actually reference SCake since I used those systems in the new tracking system here. But given I have so much writing to do on that, I’ma save my typing hands a bit of effort here and just briefly touch on something the community has been hoping to solve. I’m calling it, “The Boner Problem.” This has to do with the typically male member where we usually have some curve and can move it up and down for action, but with how Palworld is currently set up there’s a couple of issues, meshes are effectively static. We can technically add additional bones, but doing so breaks compatibility and it may be too early to set up standards given we don’t know what comes next (we are constantly making new discoveries or figuring out new systems).
However, some community members (Temtem and Boko specifically) encouraged me strongly to look into Morph Targets, and after a small bit of research we got it working in-game rather quickly! For those unaware of what Morph Targets (known in Blender as Shape Keys) are, to breifly explain, it allows you to deform or modify a mesh in real time using the individual vector points of the mesh rather than using armature bones. It’s a rather old-school technique but it’s very powerful and used in a lot of games for things like body morphs or facial expressions. This allows model makers to make soft/erect versions of ‘certain aspects’ to allow a ‘neutral’ and ‘aroused’ version (my simple example would be like making a soft/hard version of the penis/nipples). This has some other creative uses as well, and for SCake I’ve set it up so the Morph Target named “Aroused” will automatically be updated through the Sexual Heat system.
But there is a catch, in the future I’ll need to make this kind of thing configurable through something like maybe another loadable .json setting since these Morph Targets are referenced directly by name within the model asset itself. This means we have to standardize naming to allow this sort of thing to work properly and we can’t always guarantee creatives will make their models with SCake in mind. There’s also the other aspect of the Boner Problem, and that is actually animating it in animations. Unfortunately adding bones isn’t a viable method for reasons I’ve explained in previous postings so instead community members are looking into some form of dynamic penis system, which would allow attaching a penis onto models instead of baking them in. This could allow quite a lot of flexibility and avoids a ton of issues but also comes with its own challenges. I’ve been considering looking into it myself but I’ve been relatively busy with other features and getting things working as expected, so I haven’t quite gotten to it. Hopefully that second half of The Boner Problem is easy to solve with a bit of thinking, we’re blazing through figuring all this out so it wouldn’t surprise me if it happens sooner rather than later!

What’s Next?

I’ve had to put multiplayer support a bit on hold since I still don’t have a proper way to test any of it, so instead I’m going to be focusing on making a couple of animations in a new Anim Pak while working on adding features that will allow animators/users to spice up animations a bit.
Current Road Map
1 ) Research sockets system for dynamic attachments and furniture support
2 ) Introduce a built-in SCake Notif-system for animations to trigger certain effects (like changing arousal meshes or changing eyes/mouth)
3 ) Work on making some animations
On Hold ) Work on multiplayer support
Comments  loading...
Like(0)
michaelpstanich
Public post

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!
Comments  loading...
Like(1)
michaelpstanich
Public post

SCake Guide : How to set up animating and import animations

New Guide posted, related to Project Sugar Cake!
This new guide shows how to get animations set up for Palworld and integrate them with SCake starting from square one. It's a fairly thorough guide with a lot of detail in segments and I tried my best to clarify a lot of things so that first time modders don't get too lost.

The guide is available on my site and through GDrive!
Website Direct Link : https://www.michaelpstanich.com/article/SCake_HowToMakeAnimsGuide.html
GDrive Docs Version : https://docs.google.com/document/d/19lh8IooHKKpmVTixP2scgWIVfZboUedNf2JDmJp5hsA/edit?usp=drive_link

I had originally planned to also post it here as a post, however the length is too long and the format doesn't really work, so hopefully having links is good enough!

Additional Note : I messed around with some new scripts to import onto my website and have some new formatting going on. The redesign still isn't up (and won't be for a while longer) but if you do check out the website version, please let me know what you think of the formatting and colors!
Comments  loading...
Like(0)
michaelpstanich
Public post

 Project Sugar Cake v0.0.3DEV Released! (New JSON Parser and easier imports!) [Palworld Mod]

(entry also available on my personal site : https://www.michaelpstanich.com//blogpost/2024-03-21_Project_Sugar_Cake_0.0.3_DEV_Released.html )
It’s been a good while since I’d made a string parser, but I’m glad I at least had some sort of previous experience! Would have certainly taken longer if I hadn’t (manually managing search depth is a pain >.<) even if it still took longer than expected. What am I referring too? Project Sugar Cake can now register animations through .json files! I’ve added a quick how-to to the ReadMe and placed templates in “~mods/AnimJSON” within the mod’s release package and install. Now SCake comes with the previously mentioned AnimJSON folder where these register .json files will be placed, any .json files you wish to have load in-game must be added to the new “_LoadList.json” file, then when SCake loads in-game it will use that load list to pull the appropriate .json files, parse the .json as a string and properly pass that string to the register to parse and convert into animation data. I won’t go over all the metadata stuff here (there’s a lot) but one of the templates explains each parameter and those templates show how to format things, so it shouldn’t be too difficult to get started! I recommend using a JSON editor with auto-correction and error checking, I used the online editor https://jsoneditoronline.org/ to help speed up the process, and I recommend it! (Easy to understand interface and has both a raw text mode as well as a ‘tree’ mode with more intuitive visuals).

What’s really exciting about this is that .json import options are not just for animators, but users as well! Users can edit or create their own .json metadata files to customize existing animations, create alternate versions, and make their own full events using any combination of animations they like! In the future I’d like to have a UI for this, but that’s still quite far off, but the .json importer does have support within the API so once a UI is up we can implement a ‘refresh .json import’ option or something so you can edit .json files and have them re-import without having to reload your game!

I also updated the Scake_BasicsAnimPak to be compatible with the new version and now supports .json import options. SCake SDK got updated to the new version with the new API call for .json imports.

Download Links!
GDrive Folder - https://drive.google.com/drive/folders/1vYfgMom7UJs2OmJ5B4FGQTMYEOR0n9Vr?usp=drive_link
Mega Folder - https://mega.nz/folder/9hZQ2IIR#Ou77tq4qQxw9UBQsozh6zg

- Project Sugar Cake -
- Full Change Log -
SCake Version 0.0.3 DEV
Note : Data structure had changes this update, BP mods will need to be recompiled with the newest SDK release

Added : JSON string and data parser for registering animations, now you can create JSON files and place them in the ~mods/AnimJSON then add the file name to the "_LoadList.json"
 - - - - - If any errors are in the JSON file's formating it will fail to load (BP limitation)
 - - - - - Animations no longer need to be LogicMods and can be installed like any replacer mod, though BP registeration is still available
 - - - - - Users can create their own JSON files or edit existing ones to create their own events or customize animations
 - - - - - Templates are now included with SCake's main installation
 - - - - - "_LoadList.json" is required, however it is split up in distribution to prevent overwritting player's customized json when updating the mod
Added : SCake_RegisterAllJSON to the API, call this to re-register all JSON animations listed in the _LoadList
Added : "Speed Default" in registered animations now functional
Added : "StartTime" in registered animations now functional
Added : "Speed Mod" in Stages now functional
Added : Keybind K (Start animation between 2 targets) will now try to start a solo animation if the same character is selected twice
Added : "AddTags" in AnimEvent now functional (Appends additional tags to the event in addition to those added in the animations)
Added : Animation Register now sends a total successful registered count whenever there is a pause while registering

Changed : Simplified "Act Types" and introduced "Act Location" to make registering animations easier and allow easier future additions
Changed : "HasPostClimax" for registering events is now set to false by default
Changed : "EquipLocation" is now a 'name' variable type to support socket/bone names and not just presets (Equip system is still non-functional)
Changed : When characters path to animate, even a failed move (When 'Move Failed' would display) will still trigger the animation (characters will just teleport, helps the mod feel less inconsistent and buggy. This issue isn't really with the framework, it's just the quick and dirty AI which bugs out a lot.)

Removed : Anim and AnimEvent Registered messages from showing in ReportUI (Still shows failed registers with error codes)
Removed : Equip Location enum is removed and now invalid (we parse a name variable now instead to allow custom bone/slot names)

Fixed : Sexual Pleasure going into the negatives after an animation (accidentally shipped the wrong build which had this bug >.<)
Fixed : Register component not automatically starting after a game load if a register API function is never called
Fixed : "Stage Order" being ignored and erroring out if the animation playing didn't play through stages linearly
- - - - - Note : This Stage Order bug also broke things like play-time, animaiton playback, post-climax anims, all should hopefully be fixed now
Fixed : Stage Duration for non-looping animations setting to 0 seconds when the number of stages exceeded actor count (Was a very silly mistake X.x)
Fixed : AnimVersion number not working properly (Technically also fixed the internal version number not working correctly, but this means nothing front-end)
- SCake SDK -
- Full Change Log -

0.0.3
Updated for Data Structure changes in SCake 0.0.3
Removed "EquipLocation" Enum as it's no longer used by SCake
Added SCake_RegisterAllJSON function
Added missing register functions to the example mod
Updated ReadMe with variable types
- SCake_BasicAnimPak -
- Full Change Log -

BasicsAnimPack 0.0.3
Added : Now includes SCake_BasicAnimPak.json for installing with SCake's json importer
Changed : Recompiled for SCake 0.0.3 DEV
Changed : UniqueAnimID and name information
Changed : Updated Climax metadata

JSON Handling Limitations / Struggles

There’s some limitations to JSON handling in regards to mods, in a normal game project you would just create your own tools and custom nodes to handle this kind of thing or import a plugin but when working with Palworld modding I’ve decided to stick entirely to BP mods to ensure maximum compatibility and hopefully ensure better future support. This leads to some problems, because UE5’s file handling blueprints for files outside the typical asset register (which would require packaging then assets to pull from) is extremely limited, we have to use UE5’s native JSON importer. “So what’s the big deal, doesn’t UE5 have JSON parser nodes already?” Why yes, it does, except they don’t actually function properly! UE5’s native JSON support is abysmal, so instead I use it only to load the JSON and convert it into a string, then I built a fully custom string parser that searches through the string and pulls the data into a data map, which we can then search and use. I take advantage of search depth (tracking start and end points of datasets to separate them) and any with a depth above 0 would be parsed as a JSON string, then I parse those strings whenever the data needs to be pulled and put it into its own datamap. As this process goes on, I store the data pass it into the Animation Register. Well, technically I pull the full JSON string and pass that to the register, then the register calls the parser functions, but you get the idea! (probably?)

Either way, I’m super happy with this method as it’s very flexible and surprisingly fast, and it’s not even had an optimization pass yet! (I need to re-sort fail states so things fail faster if they are going to at all, add null checks to skip logic, and use more skips in places so repetition isn’t required and we don’t process unneeded variables.) Because we parse things into a data map, we can even ignore arbitrary data left in the .json so people can leave comments in there if it helps, similar to how I have the description template set up, though I recommend keeping them to a minimum or remove them before distribution to reduce memory overhead. I also have it planned to process them in batches, currently it just tries to load them all at once which isn’t that great memory wise, but given we’re still lacking animations that can come in a later update!
( Some of the larger SCake JSON parser trees in v0.0.3DEV )

But there are limitations.

Most of UE5’s file tools for blueprints is actually a plugin, and palworld doesn’t include it! This means we’re very limited on what we can do via blueprints (and I am still not confident C++ mod support will uphold compatibility, especially since SCake needs to have the SDK easily accessible/usable). This has 2 major effects, first we can’t dynamically pull arbitrary assets that are not within pak files and part of the regular asset registry so we have to put the .json into the provided _LoadList.json file so we know which files to pull. We can define a custom path to load from, but we can’t efficiently search a directory without either C++ or plugins (we can technically do it through manual crawling, but by doing so many search calls we could trigger anti-virus safety protocols, it’s also extremely slow). The second issue is when getting the strings themselves. When loading assets it needs to be a defined type, in C++ we just define the type but this isn’t exposed to blueprints without the optional plugin which we can’t use, so this is why I use the JSON function within UE5 to pull the asset itself. This means we have to follow UE5’s JSON import rules, which are very strict and it means JSON files can’t have any formatting errors at all or else it will fail to import. If I could pull the asset directly I could just pull it as a string and try to auto-correct small errors (I already do this to a certain extent with how my parser is built) but I don’t currently know a method within my current scope and limitations. Hopefully we can get around these 2 hurdles at some point, maybe I’ll cave and finally do some C++ stuff while keeping this fallback in-case things break in the future, but for now I think these 2 issues are ones we can live with and things are more than usable! (I just like to make things the best they can be >.< Why do I have to care so much Q.Q)

What’s Next?

I’m still following the same plan, but will most likely work on the next few steps in a more free-flow fashion. I want to start implementing very basic versions of various functions to try and get more of the framework filled out and create the baseline, as shown here with how much sooner this update released compared to the last version change, once the base structure is built and complete it becomes much easier to put out new additions and modifications. While making the parser and researching how UE5 handles files via blueprints I found some major leads toward what I could do about persistence and this could pave the way for the rest of the framework to truly be out of Alpha! Though, I shouldn’t understate how much work is really still left to do, I have a feeling a lot of the other parts of the framework will still need to be entirely custom and there’s still planned features for the animation player that isn’t complete yet, there’s also gender swapping systems that could help (it was believed the OK Framework was going to be the solution, but it requires more manual work and isn’t all that flexible so a new solution may still be required. Having it built into the framework also isn’t a bad idea.)

Oh, I got completely side tracked, the actual next step, like, right after I make this release, is to work on tutorials for importing animations into Palworld and how to integrate them with SCake! There’s still not really any good resources for this, so it look like it’s my time to step up and take the torch. Let’s burn some stuffs!~ ^-^ (Fire is pretty.. what were we talking about again?)

Current Road Map
1 ) Create basic tutorials for importing animations and registering them with SCake
2 ) Investigate / implement equipment altering system (for unequipping weapons/armor)
3 ) Implement a basic UI with settings control (including position adjustments for anims)
4 ) Investigate persistence more and try to get stat persistence between save/loads
5 ) Investigate multiplayer compatibility

? ) Work on building new animations
Comments  loading...
Like(2)
michaelpstanich
Public post

 Palworld Mod – Project Sugar Cake v0.0.2 DEV Released (SDK now available!)

Finally got things done and stable? I think? Multi-character animations are now fully functional! Did a ton for this update, including the API system, new backend structures to make future additions much easier, the framework for a cache system to speed things up once we have thousands of animations, new validation systems for animation gathering/searches/playback, new complex climax animation handling, maybe more things? (Changelog a bit below ^-^)

Changed the default hotkeys for the temporary gameplay module integrated into SCake as well for triggering anims and such.
Input Definitions
- L : Start solo player anim event
- O : Stop any anim event involving player
- U : Show player sexual pleasure in reportUI
- K : Start anim event between player and target
- J : Select 2 targets and start an anim event between them
- I : Stop any anim event involving the target
In the future, once we have a UI and persistence these will be configurable. ^-^ (hopefully these work for now >.<)
- Full Change Log -
~ SCake Version 0.0.2 DEV ~
Note : Essentially Rebuilt the entire animation player and added the API systems, not everything is accessible yet but adding things in the future will be much easier once we know what to add

 Added : Animator now supports multiple characters at once (can play Human X Human, Pal X Human, Pal X Pal, whatever!)
Added : AI Handler to animator to help prevent AI breaking animations / conflicting (still has minor issues)
Added : Position handling to animator, should keep animation in the same place even if characters are pushed or pulled
Added : New validator should auto-sort and organize animating characters
Added : Additional validation for incompatible animations, should prevent any non-compatible animation (that have proper metadata) from playing
Added : More advanced climax handler, now supports specific slots orgasming to trigger specified animations within a registered animation event
Added : Pleasure gain for all characters in animations (was just the host player previously)
Added : Support for Post Climax animation playback after climax animations, skips and just ends if no post anim is found
Added : Support for 'included tags' and optionally requiring those tags when starting animations
Added : Basic stat tracking for characters where it's neccesary (no persistence between save loads yet >.<)
Added : Optimization systems to stat tracking so we only track what's needed (Basic so far, needs more advanced systems in the future)
Added : API Base for other mods to call and use SCake functions (such as starting/stopping animations, needs to be expanded on)
Added : API Call "SCake_StartAnimEvent_Basic" - Starts an animation between the supplied characters with minimal information
Added : API Call "SCake_StartAnimEvent_Advanced" - Starts an animations between the supplied characters with more advanced information
Added : API Call "SCake_StopAnim_PalTarget" - Stops any animation event the target character is involved in
Added : API Call "SCake_SendReportMessage" - Sends a report message to SCake's report UI, visible to the player
Added : API Call "SCake_CheckStat_Pleasure" - Returns the current Sexual Pleasure of the sent character
Added : API Call "SCake_Stat_AddPleasure" - Adds the specified amount to the target's Sexual Pleasure
Added : "Start animation between player and target" with default key "K"
Added : "Start animation between 2 targets" with default key "J"
Added : "Stop animation target is involved in" with default key "I"
Added : Pals play their "Happy" emote/action when animation events end (more advanced emotion handling could be added in the future)

Changed : "Start solo player animation" default key changed to "L"
Changed : "Stop player involved animation" default key changed to "O"
Changed : "Report player's sexual pleasure" default key changed to "U"
Changed : SyncPosition animation setting now defaults to disabled
Changed : Animation player was re-built and has much more advanced functions now with better duration tracking
Changed : Orgasms now add additional animation time so they don't conflict with normal stage progression
Changed : Reduced how quickly Sexual Pleasure decays when outside an animation event

Removed : A lot of debug notifications should no longer show up in the release build (sorry if I missed any >.<)

Fixed : Fixed animations only ever registering as "female solo human" animations
Fixed : Animation player getting stuck and freezing indefinately if cancelled improperly
Fixed : "Pals in Animation" tracker getting stuck if animation event was cancelled improperly
Fixed : Animating characters getting pushed/pulled or continueing movement if already in motion when animation starts
Fixed : Typos/misspellings in data structure

The SCake SDK / API

With this update came the SCake SDK! This SDK makes it very easy for other modders to access SCake’s API to trigger animations, stop them, or pull/modify data related to SCake! The API is a bit more limited for now, but the main functions (starting/stopping animations) is there, so if you’re a modder that’s interested it may be worth looking into.
To use the SDK, you’ll still need to set-up a modding environment for Palworld with UE5, but once that’s out of the way you just download the newest SCake SDK version, then extract the “mod” folder into your environment’s “Content” folder. Inside is a small example mod along with the “ProjectSugarCake” folder, which you do NOT want to include with your mod when you export your mod. The SDK functions by creating “dummy” assets where you can call within your blueprints/c++ mods, then when you run your mod in a game with SCake installed it will access the SCake API and run the required logic. It’s a fairly simple processes once you’re familiar with UE5, but if you ever need help don’t be afraid to reach out or post for help over in our discord! ^-^

Here’s some examples of how to use the API (check the SDK Readme or the SDK itself for more API calls and specifics)
Calling the SCake SDK from another mod (BP Example)

What’s Next?

I’ve been modifying my road map a bit, so things are in a bit of a different spot than before, primarily I want to try focusing on getting more animations onto the framework and getting the mod noticed a bit more. I need to contact a mod on Nexus Mods and see if the mod would be allowed over there (there’s some restrictions on Palworld mods and I’m not sure if Sugar Cake runs afoul to these) and will start making proper download pages on places like LoversLab since the mod is now properly usable, with one exception… That exception being animations. Currently we’ve still not had any animators output any animations for the framework, but in order for things to really get going we are going to need those, so we’re a bit stuck. It’s a 2 way issue, you need the framework for proper animations, but you need animations for the framework to be meaningful. So, I’ve shifted focus slightly to try and account for this and will most likely be making a few of my own animations (though I am very slow at it Q.Q).
 
Current road map
1 ) Create string parser for registering animations without BP modding
2 ) Investigate / implement equipment altering system (for unequiping weapons/armor)
3 ) Implement a basic UI with settings control (including position adjustments for anims)
4 ) Investigate persistence more and try to get stat persistence between save/loads
5 ) Investigate multiplayer compatibility
? ) Work on building new animations and tutorials for it
Not sure exactly what I’ll focus on after that, but we’ll see how things go over the next couple weeks and see what people request the most! If you have suggestions, please send them my way!
Comments  loading...
Like(0)

The subscription gives you:
  • Access to Creator's profile content.
  • Ability to support your Creator by contributing – one-time or recurring.
  • Means to reaching out to the Creator directly via Instant Messenger.

Creator Stats

43 subscribers
23 posts

Goals

$42 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.
$42 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

This website uses cookies to improve your experience while you navigate through this website. Continue to use this website as normal if you agree to the use of cookies. View our Privacy Policy for the details. By choosing "I Accept", you consent to our use of cookies.