Easy Device Integration for Games. EDI Update [01/2024]

To update Edi
Download only Edi.exe from the mega folder and replace it on the existing integration

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 three main functions:

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

new features in the latest version

  • Improved Handy Key and Configuration Binding: Enhanced stability and user experience.
  • BundleDefinition.csv Support: Enables large galleries over 1MB to be efficiently managed.
  • ‘Resume at Current Time’ Feature: Allows the device to pause while the video continues playing and then resume in sync with the video.
  • Automatic Generation of Definition_auto.csv: Now effortlessly created from Funscripts and Chapter information.
  • Enhanced Variant Detection: Files and folders are now compatible with OFS, recognizing formats like “{name}.{variant}.funscript”.

Download Edi + Mage Kanade Example [Videos]

How to Integrate a Game with EDI

Full game Working:

Why use Edi?

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

  • Handles all funscripts and plays them on any device
  • Allows multiple variants of funscripts (simple, detailed, slow, intense, etc.)
  • Upload scripts to Handy for detailed or vibrant scripts
  • Multi Device, choose a different Variant for each device
  • straight path of workflow based on division of labor
  • Ability to expand to new devices non-existent devices
  • a SOLID and clean architecture

To integrate a game 3 main tasks must be completed

  • make videos with all the elements of the game with funscript.
  • Mod the game to report when these elements occur in the game via http post to Edi.
  • marks the funscripts with chapters with the names of the elements as they are reported from the game.
how it works

Edi, only has 4 methods

  • Play(string Name, long Seek = 0), plays a gallery
  • Stop, ends the reproduction of the gallery.
  • Pause, completely stops the devices.
  • Resumes, replays the last gallery right where you stopped when pausing

from the game that we want to integrate we will only call one of these 4 methods. Therefore, the work that must be done on the game to integrate it is greatly reduced.
the integration with the devices becomes a single output player on which we report events. without more parameters than the name of a specific gallery.

Galleries
To make the galleries of a game, you must first make a video compilation of all the elements of the game that actívate the device, then in a CSV put the name of each gallery in and from what second to what second each element appears in the video, next to the type of gallery and if it is played in a loop.

a gallery is a segment of the video, its name, type and if it plays in loop .

Repositories

the Definition.csv file can be consumed with the DefinitionRepository class.
implementing IRepository you can create repositories for any type of content.

currently exist

  • FunscriptRepository, funscripts to consume from various devices, also controls different variants of the same script.
  • IndexRepository, compiled and indexed funscripts into a single file for Upload to Handy.
  • AudioRepository, MP3 audio tracks for Estim.

it is very easy to create new repositories and can be added later without modifying code or recompiling the solution. allows the decentralized contribution of content created later.

Device Control
all interaction with the device is through pre-written galleries. This means that when one sends a command to the device it is almost always the name of a gallery that must be played. like “sex_scene_mari-1” or “final_boss_fight-3” or “filler-5”. a device implementation within edi must know how to retrieve the gallery and play it. The raw commands of each device, such as vibrate or linear movement, are now restricted to exist only within the implementation of the device, which only receives names of galleries that it must play.

This makes the control of the device totally separate from the integration with the game, so that we could for example to an existing integration that uses edi, add a FullGalleries.mp3 that contains all the galleries of the game to incorporate an eStim device without have to touch the code.

in the same way a new device could be programmed, if in the future someone invents something that directly sends waves to the brain. you could make these waves on the compilation video for all game galleries and incorporate it into an already existing integration by simply leaving files in the folder. without having to program anything extra in the integration or in the game itself.

edi also fix commond issue in funscript players like detailed scripts that Keep playing after he should or múlti device, multi channel capabilities. playing funscripts becomes something now improves with each implementation and not something that each developer does as they can in each integration

the limitation is that you cannot make dynamic content that changes on the fly, everything has to be pre-scripted. However there are ways to get around it, if your galleries have variable speed or intensities, you can pre-procces the galleries with a number of different intensities such as:
Lori_Attack-level-1
Lori_Attack-level-2
Lori_Attack-level-3

Gellery Reaction Filler
In the definitions.csv file there is a “type” field, it can have 3 filler/gallery/reaction values, apart from that we have a “loop” column,

  • Gallery, plays immediately when the Play command is sent
  • Reaction, is designed for short elements of just a few seconds, which are activated by user actions. it is played immediately when the Play command is sent. when stop if an gallery was playing it will continue playing without losing synchronization. it may not work very well if the device is controlled by the internet has latency.
  • Filler, when the Play command is sent, it is not played immediately, when an gallery or a Reaction stops, it starts playing the last filler sent.

Each type can be turned ON and OFF by the user. If you are controlling the device over the internet and there is a lot of latency, you can disable the reactions. Or turn off the filler if you don’t like it.

Loop, applies to all types, if it is marked as true the element will be played over and over again until the Stop method is called. if it is marked as false the element will stop when it completes its reproduction.

57 Likes

My gameCG scripting wasn’t in vain!!!

donki

22 Likes

I have a question

Can it apply it to the visual Nobel part?

For example, in the case of milking farm, in addition to moving scenes, there are parts with pictures&text

Can it be applied in a way that calls pictures or certain voice mp3?

1 Like

Yeah! Ideally you can report anything you want to edi and it would only react to events that are defined in the csv.
In any case, you still have to mod the game so that it reports those events interfering key methods. something that I had thought to apply in Maga, was to interfere with the dialogue scenes and that each enemy has its own filler when speak

1 Like

@Falafel, I answer you here. Yes, it would be a problem if your script is one second long and you have a 500ms delay, it will reproduce badly, so if a gallery lasts a few seconds and does not loop, you should mark it as reaction type, so the user could disable reactions if they have a lot of latency.
that is exactly why the reaction type exists

1 Like

Hoping to see some more game integrations real soon!

2 Likes

would this in theory work with https://discuss.eroscripts.com/t/game-integration-pure-onyx-buttplug-intiface-integration/108156/11 ?
@dimnogro

1 Like

Stoked for this to get implemented into some of the stuff already on here, great work!

From what I read from the author’s above posts, I don’t believe so. Pure Onyx’s animations seem to be looping <1 second animations with semi random varying speeds. So I’m unsure of the effectiveness of calling predefined scripts for this game.

yes, in theory can use edi inside de integration to replace the current divice control method
if this method has names of individual animations, could use edi

getting animation names should be no problem, I mainly have two concerns: How can edi handle a single animation that has changing playbackspeeds and what would be the easiest way to compile all the unity animations(I have a very surface level understanding of the systems)?

well precisely the limitation of edi is the interpolated content. but there are still things you can do to cope with it.
For example, you can pre-process the scripts at 3 or 4 different speeds, and use the one that best suits the playback.
like:
Lori-Attack-punch-speed_1
Lori-Attack-punch-speed_2
Lori-Attack-punch-speed_3 …
also if you are hacking into the game maybe you could even adjust the speed in the game so that it matches the speed of the scripts

As for the assets, most of the cases someone already made the compilation and uploaded it to pornhub or something like that hehe.
I actually found this in a few seconds https://es.pornhub.com/view_video.php?viewkey=ph63a26d5644dd9 I’m pretty sure someone in the community would be willing to do the script.
If that was what you were asking me, you should make a definition.csv for this file, marking the milliseconds of each asset and the name with which it appears in the game.

I was hoping there was a way to extract the animations, since finding start/end points in this case will be a bitch, but I guess I’m not that lucky. I’ll dig down and do some more research since scripting seems to be the best way to improve quality. As well as look into hacking the speeds to be more normalized as well, didn’t consider that.

thanks for the help and making the tooling big dawg

1 Like

ooh i see, yes in fallen angel I used a few lines of code making send key to go through the galleries in a programmed way while recording the screen with obs streamlabs. unfortunately I lost that code.

another advantage of edi is the division of labor. with the complete gallery video someone could do the funscript in any time. and then you can tune the definition file to fit.

we should do the integration with onyx it would be great, the game uses unity. so having edi on uniti will be useful for many more games.
It would also be great if you manage to interfere with the damage receives, it would be spectacular like vibration in every puch recibed lol

It seems to me that it is time to make the games category outside of the software category. Can someone tag an admin?

4 Likes

imo this still belongs in the software category, and I just made a separate #software:game-mod category just for the modded games. This is a software tool for modding games.

Edi launcher is already taking shape and begins to show capabilities never seen before :fire:
how to select different funscripts for individual vibrators on the same device

6 Likes

South Park GIF - South Park Sweet - Discover & Share GIFs

this tool looks great, I just haven’t the slightest idea on how to mod the games I’d like to attempt to use it with (nscripter, era) :sweat_smile:

this is getting serious

5 Likes