DomJOI Witch - v1.35 Changelog - Development Build
Howdy,
I’m super happy with this Christmas/Holiday release (regardless of what you call it, it’s a season for ‘holy days’ and big updates!). Like always, this long and very technical detailed changelog has the following sections.
- TLDR;
- Long Version
- Trello cards completed
- What’s Next?
- Ending section
With this release I’m back on around two weeks development cycle, I hope to release v1.4 in about two weeks time :).
Due to Patreon rules on the "Sexually Gratifying Content" the post MUST be paywalled. I would have to literally censor everything. You can see the same post at my https://domjoidev.itch.io/domjoi-witch-demo profile.
TLDR;
-
New Animations: No more looping the same 3 tasks! I’ve added a variety of base animations to keep things fresh.
-
“Stroke to the Rhythm”: A rare new task where you must follow the rhythm of her hips.
-
Modding Foundation: Task clusters are now defined via JSON. This is the first step toward allowing you to add your own custom tasks, kinks, and habits!
-
Massive Refactor: The code is cleaner, faster, and more stable.
-
UI Improvements: Added automatic text wrapping and fixed several typos.
Long Version
This release is massive when it comes to the codebase. To be honest it wasn’t smooth sailing, I had to refactor a lot. I asked my friend to review my codebase and it was pretty bad. It is still not perfect, I have to split a few classes, there are still god-antipatterns there, but overall it’s much better now. Some methods that had like 40 parameters now have zero :), as the configuration is injected via services. Basically I made a few huge steps forward including the:
- ConfigurationService - all the configuration is now in one place, and it’s so easy to add new configuration options. It’s clean now. And I couldn’t be happier with results.
- NamingService - all the naming logic is now in one place. What is super important for me is that there are grammar rules there, so adding new names is super easy now, including the Japanese honorifics, etc. Because it’s rule based adding the new rule is much easier to maintain than the awfully long if-else chains that were before.
- PositionManager - all the position logic is now in one place. It was a pain to maintain before, now it’s much easier.
- TaskDirector - now it’s using the ConfigurationService and NamingService, so a lot of parameters were removed. It’s much easier to maintain now.
- GameDirector - now it’s using the ConfigurationService and NamingService too. Also a lot of logging improvements were made there.
- A lot of smaller changes, every class/function/method was reviewed. Some code was removed, some code was added. The fact that you can see 707 files changed in screenshot below it’s because of animations packs that I bought - thanks to your support. The code changes are around 40 files, including adding the new tests (about 4000 lines of code added are tests alone). The game is slowly getting to the 400 tests - LOL.
I know a lot of stuff that still needs rework/refactor/improvement, but I’m delighted with how much better the current state of the codebase is. Depending on the problems with new model I might be able to finish the refactor in v1.4 or v1.45.
But I didn’t want this release to be so super boring! Like how could I just put the new version without new content! So I decided to add new animations - a few new base animations for tasks - now there are more than 3 animations ;). There are two new animations/positions that I loooooove. First one is when you look at her back. There is a movie that I really liked (Parthenope - made by Paolo Sorrentino - highly recommended) where there is a scene where the bishop says
Parthenope: What do you like in a woman?
Bishop: The back. The rest is pornography.
So I wanted to add this type of animation/position to the game for a long time :) - of course it ended with more “back of the back - butt” focused one - LMAO. I also like how the new “hips dance” animations (there are two of them) look. So I added a new task - “Stroke to the Rhythm” where you have to follow her hips movement. It’s a quite rare task. I also added the new “Punishment” and “Reward” pre-tasks (in this case it’s only banner). In the future, the AI will give you more “rewards” and “punishments” based on your performance, but it’s a story for the next releases.
Adding the animation seems like something super easy, but in reality it takes about 1-2 hours for a single animation to be added to the game, and we are talking about animations that are made. Creating a new animation from scratch takes days :/. I tested some solutions to create animations, but they are super costly and I do not have money (hopefully in the future I will be able to pay for that).
Geez I’m writing too much - going back to the topic. I also implemented a lot of logging improvements, better error handling, better test coverage, and a lot of smaller improvements, also extra documentation.
I want to thank billerboob for giving me some ideas and reporting bugs in the UI - now the text wrapping is better, some typos were fixed, and the demo version (the v1.35 is development build only for higher level Patrons) will have the descriptions of kinks/tasks in the demo version too instead of “not available in demo” :).
Lastly I made a few marketing efforts and they were semi-successful :).
Following Trello Cards Completed:
- [Marketing] Create a changelog level :) -> The one used in Youtube videos
- [Programming][BUG] CheckIfTemplateSubStringsAreValid -> Add NameDirector new templates -> Fix tests
- [Programming] New reward in task clusters -> stroke to the rhythm. -> New reward tasks
- [Programming] Add “Punishment” pretask for banner -> Internal structure
- [Programming] Add “Reward” pretask for banner. -> Internal structure
- [Chore] Software updates - Rider, GIT etc - > I should also update the UE to 5.7 soon :)
- [BUG] XXX on her breastS -> typo -> Ohh I didn’t know that ‘look at her breasts’ is more natural than ‘look at her breast’ -> fixed
- [Animations] Stroke to rhythm 2 -> Animation
- [Animations] Stroke to rhythm 1 -> Animation
- [Animations] New Extra Base animations - resting/fever -> Animation
- [Animations] New Extra base animation - resting -> Fix animation root? -> not the issue -> :/ This animation won’t be used
- [Marketing] Setup Youtube Channel -> Done
- [Animations] New Extra Base Animatinos - SleepSide -> Animation with butt and back view
- [Animations] New extra base animation - squat -> won’t do too much clipping -> But new card about idea for crotch worship -> won’t be used in this release but will be reused later
- [Animations] New extra base animation - seiza -> I like it
- [DOC] Documentation how to add base animation -> I have no idea why I haven’t written it before
- [Animations] More idle animation when standing. -> Add a few new animations. It’s not perfected yet as they are randomized, but AnimationDirector is something that I must do in the future
- [Assets] Buy new animations and check them :) -> Bought a pack with a lot of animations -> some of them are used in this release. It was possible thanks to your financial support :)
- [Programming] Guf_ReplaceInString -> use ReplaceInLine -> it’s much faster -> About 1/3 of string templating time (with getting random element etc) -> Only in the naming service for now
- [Programming] Get code reviewed by external tools :) -> scope for v1.35 -> Ohh, the AI reviews are great, sometimes they are wrong, but overall they help a lot
- [Programming] Better loging in MinimalGame_Instance -> It’s just logging
- [Programming] Create PositionManager -> Move all the position logic there
- [Programming] A little bit of Global Utility Functions Refactor -> there is to much to fix all in one go
- [Programming][Bug] Check which part of SceneDirector is responsible for FaceExpression (not reaction) I’m sure that face: command is no used… -> Remove the code that not used
- [Programming] Guf_MoodToString -> Move to MoodTracker and rename to MoodToRichText -> better command naming
- [Programming] MoodTracker Enhancements -> Geez just see Trello card if you are this interested :P
- [Programming] OutfitDirector enhancements -> Geez just see Trello card if you are this interested :P
- [Programming] Task Cluster improvements -> Geez just see Trello card if you are this interested :P
- [Programming] Refactor BASEDOMNAME -> DOMNAME_BASE; Change it and fix tests; add tests
- [Programming] Game Director -> Task Director init it’s super long, init should in task director with config map access
- [Won’t do][Programming] Game director -> Try Unreal Cast instead of reinterpret_cast (there were problem with Linux build - no RTTI> -> won’t do everything then must be in Unreal classes I do not want it
- [Programming][UI] change the “mood” command to the “mood_rich_text”
- [Programming] EventTypes -> New NameSpace remove magic strings
- [Programming][Duplicated] Game Director Fix the magic strings in how the messages are send to UI by enum/constant class -> Duplicate of previous card
- [Programming] Refactor -> GameDirector -> Add NameService
- [Feedback][UI][BUG] Small typo in endings menu “regural” - billerboob
- [Refactor][Programming] TaskDirector Test -> helper method to get it -> ATM it’s 4 lines in 40 tests, make it better with nargs for setting the kinks/toys + make it much shorter and easier to test.
- [UI][Feedback][Bug] Fix text wrapping -> now it’s fully automatic -> Better text wrapping in menus
- [Feedback] Do not remove the description of kinks in Demo -> Proposed by billerboob
- [Programming] TaskDirector using the ConfigurationService instead of getting thousands of method parameter… -> Huge refactor
- [Marketing] V1.30 -> All marketing tasks for v1.30 release
- [Programming] Add logging all the Enabled Task Clusters -> It’s important when refactoring, sometimes checking the logs is the fastest way
- [Programming] Refactor -> GameDirector -> Add ConfigurationMap service. -> Huge refactor
- [BUG][Programming] GetNewTask() still breaks the game <-> Only in tests O.o” -> Bug fix
- [Programming] Remove the SettingsNames Global Variable Namespace -> Use ConfigurationService
- [BUG][Programming] The init of the ConfigService should not be in begin play - works in editor, breaks test -> move it to start session -> Bugfix
- [Programming][Bug] Fix the timed task clusters logs -> they were broken after refactor
- [Programming] Go through personal feedback and write the changes -> scope for v1.35 -> My friend gave me a lot of feedback, I had to go through it and plan the changes
- [DOC] TimedTasks bRandomWithoutFlooringToFive -> Document the behavior
- [DOC] Update game statistics -> I keep statistics how well each release is performing
- [Programming] Some unit tests has the warning message because we are expecting the warnings in the logs. Maybe use AddExpectedError -> Ohh this was amazing, no more warning spam during tests (only when expected!)
- [Programming] Fix logging levels in TaskDirector -> Some logging improvements
- [Programming] Fix the log levels in GameDirector class -> Some logging improvements
What’s Next?
New model
Next release will be focused on the new model. It sounds easy, but it’s not, the whole pipeline must be redone, animations must be fixed, I have special classes for Characters that will be recreated/rewritten. It’s a lot of work, but I’m super excited with the new possibilities that the new model brings :). It will take from a week up to three weeks depending on how many problems I will encounter :/.
Continuing refactor
If time allows I will continue the refactor of the codebase. There are still a lot of things that can be improved. With refactor done, I will go back to the AI and core gameplay improvements, adding the new tasks, kinks, toys etc.
Thank you
Thank you for being with me on this journey, this new version made me really happy, I hope you will like it too :).
Thank you from the bottom of my heart && happy holidays, DomJOI Dev
Bonus - two animations that won’t be used. The first one might land as butt/crotch worship one in the future (so knees are not visible)