To4st - Game Mods (Latest Game: Xenotake | Latest Demo: Monster Girl Quest Paradox)

I recorded the scripts while the animation speeds were harcoded to 1x speeds.
I took note of the different speeds and used a script to adjust the funscripts’ points to accomodate.

The scripts without a number are those that were recorded at 1x speed. ‘_60’ is 60% of the 1x speeds, meaning 0.6x. That’s the naming pattern I went with.

What hard mode are you referring to? Why would that affect the animation speeds?

It should theoretically still be in sync if you just take the 1x script and half every point’s position.

But I don’t think 2x speeds is something most, if any, device can handle. That would make some scripts have speeds close to 900 units/second.

Hard to say what the issue might be. You could enable the debug messages and send me the logs. It might give me more information.

To enable debug: Under BepInEx/config, look for the BepInEx.cfg file and inside look for the Logging.Console section. Set the console to enabled and change log levels to ALL, like below

[Logging.Console]

## Enables showing a console for log output.
# Setting type: Boolean
# Default value: false
Enabled = true

## If enabled, will prevent closing the console (either by deleting the close button or in other platform-specific way).
# Setting type: Boolean
# Default value: false
PreventClose = false

## If true, console is set to the Shift-JIS encoding, otherwise UTF-8 encoding.
# Setting type: Boolean
# Default value: false
ShiftJisEncoding = false

## Hints console manager on what handle to assign as StandardOut. Possible values:
## Auto - lets BepInEx decide how to redirect console output
## ConsoleOut - prefer redirecting to console output; if possible, closes original standard output
## StandardOut - prefer redirecting to standard output; if possible, closes console out
## 
# Setting type: ConsoleOutRedirectType
# Default value: Auto
# Acceptable values: Auto, ConsoleOut, StandardOut
StandardOutType = Auto

## Which log levels to show in the console output.
# Setting type: LogLevel
# Default value: Fatal, Error, Warning, Message, Info
# Acceptable values: None, Fatal, Error, Warning, Message, Info, Debug, All
# Multiple values can be set at the same time by separating them with , (e.g. Debug, Warning)
LogLevels = All

If you enter the door in the tutorial there is a scull you can pick that enables hard mode, the first animation there has speed 105 (rather then 60/75)

By the way, I’ve made a basic MultiFunPlayer plugin (for 1.32) that can acts like EDI/FunscriptPlayer, would you be interested in trying it? What would be the best game for me to test it with?

1 Like

I had no idea lol. Ever since I played the tutorial when the game was still in development, I’ve always skipped it.

I tried something similar orignally, before I opted to write FunscriptPlayer. Back then, MFP wasn’t really ideal for playback on a Handy with its update rate intended for OSR devices. But I remember reading discussions about it in the thread. Did the Handy support improve since then?

I assume the game would need to be integrated for Edi? I would guess something with longer scripts/scenes might be ideal to test with. You could look at the Edi version for Melty Brave Kittens maybe?

The logs look like this: we’ve started edi and confirmed that it recognizes the device, but the game doesn’t seem to be making any move to recognize the edi.
The log looks like this

[Message: BepInEx] BepInEx 5.4.22.0 - SuccubusDungeonSideStory (2024/12/28 20:49:36)
[Info : BepInEx] Running under Unity v2021.3.16.4200023
[Info : BepInEx] CLR runtime version: 4.0.30319.42000
[Info : BepInEx] Supports SRE: True
[Info : BepInEx] System platform: Bits64, Windows
[Message: BepInEx] Preloader started
[Info : BepInEx] Loaded 1 patcher method from [BepInEx.Preloader 5.4.22.0]
[Info : BepInEx] 1 patcher plugin loaded
[Info : BepInEx] Patching [UnityEngine.CoreModule] with [BepInEx.Chainloader]
[Message: BepInEx] Preloader finished
[Message: BepInEx] Chainloader ready
[Message: BepInEx] Chainloader started
[Info : BepInEx] 1 plugin to load
[Info : BepInEx] Loading [FunscriptIntegrationPlugin 1.0.0]
[Info :FunscriptIntegrationPlugin] Plugin is loaded!
[Debug :FunscriptIntegrationPlugin] Filler at 0 x 1
[Message: BepInEx] Chainloader startup complete

The logs seem to show the startup of the game. Do you have any logs during the succubus battles?

This is an ASMR simulation game where you receive a handjob whilst getting whispered / licked at your ears. You can control her pacing in “free mode” or let her take control in “auto mode” (like a JOI).

It’s a really well-made Unity app and I suppose the only roadblock to enjoy it is understanding the language (though you don’t need to understand Japanese to get the triggers).

I suppose this could be a good candidate for integration. Her hand movement is the only thing we need to sync with.

5 Likes

The game crashes for me when trying to start it with BepInEx. I suspect the developers are deliberately crashing the game if third-party dlls are detected.

Not sure if there’s a simple workaround. Couldn’t find anything online. Only thing I can think of is to reverse engineer the game to try and find the code that’s closing it. But the game was compiled to machine code and I only have a very basic understanding of what reverse engineering that would look like. The time commitment would be too large for me to take on.

I could also be completely wrong. If anyone else is more versed in this area, please enlighten me.

2 Likes

I tried patching the game with AutoTranslator just now and had the same issue. The game crashes abruptly upon launch.

What a shame, if that’s the case the developers knows no fun…

1 Like

The gamefiles also dont look hte same as a typical unity game. I cant find the dll files

It’s a visual novel type of game, but it’s 3D animated. I don’t know how the animation of the game works, but I think this genre is just right, even if it doesn’t have English language, can it be scripted?

I don’t want to make any requests at the moment, so I will just comment here.
Here are some games that I would like to see modded (and scripted) and I will share them with you all.

4 Likes

I think we gonna need a Scriptable Games thread for those
There’s a lot of great games that may worth scripting, so having them all in one place would be awesome

Hey! I think I have a full gallery video of the Ryuhime is Hungry , and I think this can start with a gallery scripted request

2 Likes

Updated post with link for Succubus Dungeon. Let me know if there are any issues. I was only able to test the multi-axis scripts.

Made some changes to the post structure to streamline it a bit. I think this way it doesn’t feel like information overload as soon as you look at the top post :sweat_smile:

Made note of it. I’ll try to check it out when I can. Atleast to see if it’ll be possible. But it might be a while until I can get to scripting it if I’m successful.

This developer’s previous game, Introducing an Apprentice Incubus, was part of a previous poll. I actually liked the previous game’s scenes more than the newer one, even if they weren’t animated. Both are made in WolfRPG so I don’t think it’ll be easy, but I’ll add it to my list and check if it’s feasible.

I’ll check these out as well. I’ve played them before and if I recall correctly, the first one is kind of difficult to play due to the language, even with a translation.

6 Likes

Would be sick to see this integrated

Yes, it contains a lot of simple repetitions, but it’s just too much animation! Growing up battles in JRPGS are always complicated and tedious, which sometimes makes it hard for me to focus and enjoy the script. I thought it would save more time to start the gallery animation directly

@to4st what’s the best way to HTTP request from the BepInEx plugin?
The way I did it earlier was working fine at first, but now when I’m sending Live2D@60FPS it’s can batch 30s of requests and sometimes makes the requester to stop working until I reload the dll (I use ScriptEngine)

Actually, would a WebSocket or SSE be better?

@to4st Hello, first thank you soo much for all the work and effort you put into this! Love all your work! Great, cannot give you credit enough!

Tried the new mod for Succubus Dungeon but Edi does not connect to the game. The library work and it can play scripts to the handy but i cannot get the game to connect.
I’ve tried older verison of the Edi and the new from the link to dimnogro. But none works.
I had a thought that it might have be that i do not have a specified EdiConfig.json file for this game?

Any ideas?

All the best!

If your Intiface Central successfully connects to EDI and is able to manually play the script, but the game doesn’t start as animated, then you might want to check that your mod and EDI files are properly installed in the game directory @Mjaomja1

How often are you sending requests? If you send too much, I can see how it could start bottlenecking.

I have a parent abstract class that instantiates a single http client that’s re-used for all requests to Edi. My requests aren’t that frequent where I’d need to worry about sending too many. But you’d want to use the same client so that multiple clients aren’t fighting each other for sockets.

Code
using System.Net.Http;
using BepInEx.Logging;

namespace FunscriptPlugin.Integration
{
    public abstract class Player
    {
        protected ManualLogSource Log;
        protected HttpClient HttpClient;

        public Player(ManualLogSource log)
        {
            Log = log;
            HttpClient = new HttpClient();
        }

        public abstract void Play(string name, float speed = 1, long seek = 0);

        public abstract void PlayFiller(float speed = 1, float length = 40);

        public abstract void UpdateSpeed(string name, float speed);

        public abstract void Stop();

        public abstract void Resume();

        public abstract void Pause();

        public abstract void SetMaxRange(int range);

        protected void PostRequest(string uri)
        {
            HttpClient.PostAsync(uri, null);
        }

        protected void GetRequest(string uri)
        {
            HttpClient.GetAsync(uri);
        }
    }
}

Are you using intiface directly and sending device positions per frame?


The EdiConfig wouldn’t affect how the game talks to it iirc. It’ll mainly affect how Edi manage your device and where it’ll look for scripts.

There was another user with a similar issue. Not sure if it was resolved. You can see my responses starting from this post and here. You can send me the logs in a message if you want and maybe it can point out the issue.