BesondersUnfassbarerWolf
New member
- Joined
- Nov 15, 2020
- Messages
- 3
- Reputation score
- 0
Hi there,
long-time-lurker, here. I thought that I might give something back to the community.
Recently, I found a nice little app called "XToys" and I think that some of you might be interested in its potential.
At its most distilled, this is an app for controlling "toys" - toys that vibrate, airpulse, etc. Most often, if one of those toys is bluetooth-enabled, the manufacturer already supplied a small app - but XToys goes a bit beyond. It also allows you to connect those toys. Connect to where and what? Well - this is where things get interesting.
Instead of going into advertisement or promotion, I'd like to show some of the possibilities via a tutorial. If you have a supported toy and follow the tutorial, you should be able to let your toy rect to events in a computer game. I think that there are some games referenced in this forum that might be interesting for a "control your toys"-scenaria.
How's that for a small teaser: At some point in this tutorial, the vibration intensity of the toy will be linked to the arousal/libido of the protagonist of the game "Captivity"
Step 1: Connect the toy to the app
Some toys can only be directly connected to the WebApp in Chrome, others can only be directly connected to the App on a smartphone (something about Bluetooth Low Energy, I guess). There is a compatibility-list at
Don't worry if you have one of those app-only-toys. I will use one of those, too - and the PC-connection only is a small hurdle.
Adding the toy often is rather easy:
Step 2: Connect the Mobile-App to the Desktop-App
If your toy is directly supported by the WebApp in Chrome, you can skip this step.
XToys allows users to open a session and le other users connect to it. That way, several people can have a party, connecting their own tools and controlling others. Here, this feature will be used to connect the mobile app to the desktop/browser app.
Once you can control the toy via your desktop browser, it's time to start scripting. Oh.. did I forget to mention "you can script stuff" in the teaser?
Step 3: See an example script in motion
I don't want to jump directly to the "connection with a game"-stuff. I think it's important to know (or at least "have seen" the scripting concept.
The best way to see how something works is by meddling with it (in my experience). Depending on your programming background and experience, the job/trigger/actions-concept may seem a bit complicated at first - so instead of starting with your own script, you may want to experiment with an existing one.
Of course, you might also just want to jump to the action. In that case, just skip these steps
If you save andf start the script now, you should see that the behaviour has somewhat changed: It will now atomatically increase intensity every few second and the button will act as a reset-button. You could use this for some "dare"-games: Connect several toys and whoever reaches for the emergency-off-button first, loses.
(Post split because of image limit)
long-time-lurker, here. I thought that I might give something back to the community.
Recently, I found a nice little app called "XToys" and I think that some of you might be interested in its potential.
At its most distilled, this is an app for controlling "toys" - toys that vibrate, airpulse, etc. Most often, if one of those toys is bluetooth-enabled, the manufacturer already supplied a small app - but XToys goes a bit beyond. It also allows you to connect those toys. Connect to where and what? Well - this is where things get interesting.
Instead of going into advertisement or promotion, I'd like to show some of the possibilities via a tutorial. If you have a supported toy and follow the tutorial, you should be able to let your toy rect to events in a computer game. I think that there are some games referenced in this forum that might be interesting for a "control your toys"-scenaria.
How's that for a small teaser: At some point in this tutorial, the vibration intensity of the toy will be linked to the arousal/libido of the protagonist of the game "Captivity"
Step 1: Connect the toy to the app
Some toys can only be directly connected to the WebApp in Chrome, others can only be directly connected to the App on a smartphone (something about Bluetooth Low Energy, I guess). There is a compatibility-list at
You must be registered to see the links
.Don't worry if you have one of those app-only-toys. I will use one of those, too - and the PC-connection only is a small hurdle.
Adding the toy often is rather easy:
- Download and start the app (it is not on Play Store but needs to be downloaded from the web-app-page)
- remember to enable bluetooth (the app does not demand enabled bluetooth on startup - simply fails to connect)
- Press the Plus-Button and select your toy from the "toys" section (we will go into the "tools" and "scripts", later)
- Press the Bluetooth-button on the added widget; enable pairing on your toy and hope that the connection succeeds.
Step 2: Connect the Mobile-App to the Desktop-App
If your toy is directly supported by the WebApp in Chrome, you can skip this step.
XToys allows users to open a session and le other users connect to it. That way, several people can have a party, connecting their own tools and controlling others. Here, this feature will be used to connect the mobile app to the desktop/browser app.
- Click the globe-symbol on deskop, select "Host Session", check the settings and confirm. Note the Session Code.
- Press the globe-symbol on the mobile app; select "Join Session" and enter the Session Code; press "Join"
- After a short moment, the mnew connection should appear in the Desktop-browser's connections-list.
- The dashboard should now be linked; the mobile app should display the same widgets and data as the desktop app. You should be able to control the toy via the desktop browser.
- Add the toy to the desktop-app before hosting the session. You cannot start the connection there, buit the toy will be present for the mobile app to connect.
- Do not connect the toy on the mobile app before joining the session. Wait for the dashboard to load and only then tap the bluetooth-button.
- Deactivate Standby on the mobile phone; attach it to a charger during the session.
Once you can control the toy via your desktop browser, it's time to start scripting. Oh.. did I forget to mention "you can script stuff" in the teaser?
Step 3: See an example script in motion
I don't want to jump directly to the "connection with a game"-stuff. I think it's important to know (or at least "have seen" the scripting concept.
- In this example, we will not touch the toy-interface and thus need another input.
- Add a simple push button - press the Plus Button (like with the toy), switch to "Tools" and select "Push Button" from the list. You might also want to glance at what other tools are available and phantasize on how to use them.
- You can click on that button in the interface - but it is not "wired" to anything, yet.
- Next, add a script (Plus Button, "Scripts". Let's use "Dilemma" as a simple example
- Click on the plug in the "Dilemma"-Widget; Select your PushButton as the button and your toy as generic output. Then click "Save"
- The plug should have vanished and be replaced with the abbreviation of your blocks.
- Click the "Play"-Button on the "Dilemma"-Widget. The script should now be running - but nothing happens, yet.
- As the description states, the toy's power level will rise by 5% if anyone pushes the button. Try clicking the button a few times (either on your phone or on desktop) and the toy should activate. It should also slow down bit by bit.
- Stop the script by pressing the "Stop"-Button
- Note how the current toy level will not decrease and the PushButton has no effect anymore. They are still connected but the script is stopped.
The best way to see how something works is by meddling with it (in my experience). Depending on your programming background and experience, the job/trigger/actions-concept may seem a bit complicated at first - so instead of starting with your own script, you may want to experiment with an existing one.
Of course, you might also just want to jump to the action. In that case, just skip these steps
- Click the "Dilemma"-widget and select "Edit". There will be some tabs: "General", "Controls", "Actions", "Triggers" and "Jobs"
- The "General"-Tab contains the name and a short description of the script. You also set the blocks the script "wants to have/needs to be connected to" in order to work.
- You might want to rename the script to "Reverse Dilemma" and delete the destripcion. This is just for display in the interface and helps not to get lost once there are more scripts on the dashboard.
- The "Controls"-Tab allows to add controls to the script. You might want to enter values or control some detail with a slider. This is not required at the moment.
- The "Start/Stop Actions" tab defines actions which are run when the script is started and when it is ended
- For example: It might be a good idea to complete stop the toy if the script is stopped. Let's to that!
- Use "Add action" under "Final Actions". You want to update a "Block" - you "Generic Output" and set it to intensity 0. Click Add.

- This Action should then show up unter "Final Actions". You can also see that there is an initial action starting the Job "down". We will talk about that, later

- Start the script again (Press Play), set some intensity (via button or the slider on the toy) and then stop the script. The toy should instantly power down, completely.
- Next, lets take a look at the global trigger (click on the script and choose edit, then the "Triggers"-tab)

- If you click on the red "Generic Output +5%"-part, that Update-action should look famliar. This is almost the same as the reset-action we defined a moment before.

- It seems like this part is responsible for increasing the intensity by 5% when "something happens". It is interesting and useful that you use relative values instead of absolute ones, here.
- If you click on the "Button"-part, you can see the "something" that triggers the action:

- It is triggered, when the "Push Button" is set to "down" (a.k.a. pressed). This was to be expected. Note that you could also select "Generic Output" here and use it as a trigger. You could trigger other actions once intensity reaches a certain treshold.
- You could also add more buttons (and their triggers) to the mix for additional changes. And - of course - you could connect more than one toy. XToys is very flexible on that front.
- For now, I'd like the button to reset intensity to zero - so change the update Action from "+5" to "0". At first, this seems rather useless: The Button resets to Zero; ScriptStopping resets to zero and the timer never increases intensity. Let's change that last one.
- The timer is under "jobs".

- At the moment, there is a single job "Down" here. You can add remove and rename jobs by clicking on the "Jobs"-Button. For now, rename the job to "Up".
- You can see a familiar Output-change under "Actions" - only this time is is a relative decrease. Switch it to "+5%" for this experiment.
- Note how the action is in a "Step" called "Start" This means that the intensity change is done whenever the job reaches the step "Start".
- On the right side, you can see a trigger in this step: When five seconds have passed, the trigger will go to step "Start" (thus changing the intensity) and it will also set itself up to run again. As we changed the name of the job, the new job has to be selected here.
- So.. what runs the job (and stats the trigger) in the beginning? This was the "Start action" from before. You might have to re-add this action or just change the jobname as we changed it.

If you save andf start the script now, you should see that the behaviour has somewhat changed: It will now atomatically increase intensity every few second and the button will act as a reset-button. You could use this for some "dare"-games: Connect several toys and whoever reaches for the emergency-off-button first, loses.
(Post split because of image limit)