Easy Device Integration (EDI) integrate your Game NOW!

Let’s clarify what EDI is.
EDI is a .exe application, created in C#, that runs on Windows. It should be executed in conjunction with, or before starting, the game you wish to integrate. EDI performs some main functions:

  1. Connect and control your devices.
  2. Manage and play galleries on the devices.
  3. Receive commands from the game that you want to integrate.

Use Edi NOW!
Download Edi + Mage Kanade Example [Videos]
Download Edi + Mage Kanade Example [No Videos]

Full game Working:

Why use Edi?

Edi has unique features that no other integrator or even videoplayer has.

  • Script upload to Handy for detailed or vibrant scripts
  • Multi-device capabilities
  • Multi-variant device - choose a different variant for each device
  • Ability to expand to new devices such as stim or new non-existent devices
  • an straigt fordware workflow based in division of labor
  • a SOLID Clean Arquitecture

How to Integrate a Game with EDI?

Video Compilation

First, you need to create a video compilation with all the game elements you want to react on the device. If you’re lucky, someone might have already created this video, and you can find it on sites like Xvideos or similar.

For example, here are all the scenes from Fallen Angel Mariele, where each scene is an element to play on the device:
https://la.spankbang.com/5vwpc/video/fallen+angel+marielle+full+gallery+1+12

If this video isn’t available, you can use Streamlabs OBS to record the screen, which is a free software. Then, go through the game gallery or record yourself playing until you gather all the elements. It’s advisable to merge or cut the videos into manageable sizes, for example, one video per level or per enemy, or a single long video with all the elements. This video will serve as the foundation of the integration.

Galleries Definition

You have to define the galleries on this video. A gallery is an item to be reported from the game that corresponds to a segment in the compiled video. From the game, we will send commands like “play gallery {name}”, and EDI will take the segment of the corresponding funscript and play it on the connected devices.

This part can be a bit tedious, but with the help of ChatGPT, I made a micro app in HTML that simplifies and speeds up the process.

MicroCutter.html (Download)

In your funscripts editor, put a dot at position 0 at the beginning of each element, ensuring it’s in the first frame. Then put a dot at position 100 on the last frame of the element or when you notice the loop start to repeat. Do this for all the elements in your video.

output

In this gif there are 3 elements, the Slow segment, the Fast segment and the Ejaculation.
Then, with MicroCutter, open the funscript. It will generate a basic CSV with the times and gallery definitions for EDI.

The galleries don’t have names yet; they are all called NN. You should replace the NNs with the individual unique names of the galleries as they will be reported from the game. Usually, you have to get these names directly from the assets within the game. Do this for each video, putting the name of the video (without the extension) in the FileName column.

For example, the definition was as follows:

Name,FileName,StartTime,EndTime,Type,Loop
lv2_slime_pisA,2-1,0,17067,gallery,true
lv2_slime_pisB,2-1,17100,20000,gallery,true
lv2_slime_pisEja,2-1,20017,23783,gallery,false

The names of the galleries are lv2_slime_pisA… B… Eja, and 2-1 is the name of the source video. The funscript file for this video must be named the same…

Place everything generated into a single CSV file named “Definitions.csv” and put it in a “Gallery” folder at the same level as Edi.exe.

Galleries Funscripts

Next, create the funscripts for these videos. Pay attention to the first and last action of each element when it is played in a loop. The first and last command should finish and start in the same position.

Finally, put the funscripts in a subfolder inside the “Gallery” next to definitions.csv. The folder name is the “variant” of the script. You can have as many variants as you like, for example, “simple”, “Detailed”, “hard”, “easy”, “dildo”, “sleeve”, or any name you want. If the folder is called “vibrator”, that version of the funscript will be automatically chosen when a vibrator is connected. Eventually, there will also be the “EStim” variant containing .mp3 files.

In the end, your setup should look similar to the image below.

Ready for Action

If you’ve done everything correctly, you can now run Edi.exe and start testing the galleries.

With EDI running, enter this URL: http://localhost:5000/swagger/index.html

This will open a page hosted within EDI, where we will connect from the game to execute the commands.

With the play command, you can play the galleries on the device, testing if it works correctly. Anything marked as “loop true” will continue to run over and over until the “Stop” command is issued.

You can also see all the galleries that EDI retrieved from the definition file.

Calling EDI from the Game

How to call EDI from the game depends on the technology the game is built on, the language it is programmed in, and how we are “hacking” or modifying it. Typically, and hopefully, it is a matter of intervening in a couple of key methods:

  • Where the assets are played.
  • The classes that control the character’s sprint.
  • Some method that triggers the galleries.
  • Some pause menu.
  • Room changes.

In any case, when we find the method through which all galleries or a particular type of asset pass, the line we must put will be very similar to this:

httpClient.post($“http://localhost:5000/Edi/Play/{AssetName}” )

In each language, it is written differently, but the basic idea is an HTTP client that makes a call to EDI just like we do from the Swagger website. The URL from EDI is the fixed part, and the variable part should be retrieved from the game, which is the name of the gallery we want to play.

Then we have:
httpClient.post(“http://localhost:5000/Edi/Stop”)
httpClient.post(“http://localhost:5000/Edi/Pause")
httpClient.post(“http://localhost:5000/Edi/Resume”)

Each game has its peculiarities. For example, in Fallen Angel, there was only one function through which all enemies would pass, so I had to go through each enemy adding the line and putting the gallery’s name, which was a clever trick.

Mage Kanade Dungeon, the method that executed the galleries also ran a lot of assets. So, what I had to do was retrieve the list of galleries from the game and filter only the items that were in the definitions to avoid cluttering up with HTTP calls.

The list of integrations I am going to leave below are open-source, and they work in a similar way, calling an external service via HTTP. They could even be adapted to work with EDI. So, you can research the already made integrations, see which one is more similar to your game, and which techniques you can apply in your mod.

Other Mods that Work similar:

Vibrator support for 6 action and platformer games

and all funscriptPlayer implementations

9 Likes