Does web remote control work during runtime

Hi,
I’m trying to get started with the web remote control interface

I’ve followed through the examples and it’s all working as expected, but ONLY in the editor and not at runtime. As soon as I play I fail to see any of the changes I’m trying to make get applied. Upon stopping play all the changes are applied retroactively however.
Does anyone know if this is normal behaviour? I would expect to be able to make changes at runtime, I couldn’t see anywhere in their documentation that explicitly stated it doesn’t work at runtime so assume I’m doing something wrong

Have you discovered anything about this?

I was using UnrealPython for an external controller, but we are now forced to use 4.24, which doesn’t have anything built for it; they stopped updating the full plugin when Epic included Python by default (but only in editor). I was previously able to include the full UnrealPython as a plugin in my project up to Unreal 4.23, but now it’s just not supported.

I need to externally control things at run time - positioning objects, setting text, calling functions, etc. We are using a third party build of 4.24 for our virtual broadcast applications, I can’t just write my own (and if I could it would be very burdensome, at this point). I don’t know why they can’t enable stuff like this for runtime (either python or this web control).

simple answer: yes. it does.

I’m testing it now; it’s as TomGirraphic says - it may function in the background during run time, but you don’t see results until you go back into the editor. Either it doesn’t update at runtime, or there’s a setting somewhere we’re missing.

In Editor mode you have to turn off this setting:
Edit > Editor Preferences > General > Performance > Use Less CPU when in background.

In play mode the path to the object changes. Instead of (for example) this:
/Game/EscenaPlayera/M_Playa_WebRemote.M_Playa_WebRemote:PersistentLevel.SpotLuzFarola.LightComponent0

it’s this:
/Game/EscenaPlayera/UEDPIE_0_M_Playa_WebRemote.M_Playa_WebRemote:PersistentLevel.SpotLuzFarola.LightComponent0

UEDPIE_0_ determines the mode, it may change if it’s not “play in editor”.

It works in Editor and also in PIE when I add “UEDPIE_0_” to the level path. But when I use Standalone Mode or package the game I can’t send any remote requests anymore. Is there a different suffix for these modes? Or does the Remote Control API not work in standalone?

I’m having the same problem. DId you find a solution to use Remote Control API in Standalone Mode?

In case anyone is still struggling with this, I discovered the problem is that in standalone mode the Editor will have started a server instance, and as the standalone game will try to start a server bound to the same port, it will fail.

The solution is to prevent the server from automatically starting (Auto Start Web Server/Web Socket Server in project settings), and to make sure the console command WebControl.StartServer is only triggered in either the editor or your standalone game.

If there is a runtime way to set the web control port, that would make life much easier, but I couldn’t see one!

1 Like

Nice thanks for the tipp!

For packaged Applications:
Close the Editor, start the packaged Application with the Parameters

-RCWebControlEnable -RCWebInterfaceEnable

Like you would do with Pixelstreaming :slight_smile: Everything works like in the Editor without any changes on settings or Actor-Pathes with Postman.

1 Like

So I added those commands to the shortcut, I disable webserver and web socket server starting by default and entering console commands to start them again when the app is playing… which when I’m in editor WebControl.StartWebSocketServer activates the app in the browser. This works as expected. When I run the app with the correct command lines added (rcWebEnable etc) and then start the server by console command and then the web socket server nothing happens. It’s as though this part is broken at runtime… is there anything I am missing? Kinda pulling hair but I think maybe it’s just broken I’m on 4.27.2

Thanks if anyone can help me!

I dont use any console commands at all and in the project settings is everything enabled. I use the default setting when you create a new project and activate the Web Remote Control PlugIn. Everything works out of the box. Just add the two Parameters in the start Shortcut of the packaged app. Same like Pixelstreaming needs with -PixelStreamingIP=localhost and -PixelStreamingPort=8888

-RCWebControlEnable -RCWebInterfaceEnable

Im using Version 4.27.2

1 Like

For everybody who just want to know how to make a request to control the application via Postman here you have the right PUT for your Postman-Collection (Body/Raw/Json):

http://localhost:30010/remote/object/call

{
“objectPath” : “/Game/Scene_Folder/Scene_Level.Scene_Level:PersistentLevel.Actor_Name_2”,
“functionName” : “Function_Set_Values”,
“parameters”: {

"Light_Red_Strenght": "2.5",
"Light_Green_Strength": "4.3",
"Light_Blue_Strength": "50",

}
}

IMPORTANT:
The Backend REST API works in unreal only with functions. So don’t use Custom Events.

If you want that others IP-Devices from a network can access your application you need add this to the DefaultEngine.ini

DefaultBindAddress

[HTTPServer.Listeners]
DefaultBindAddress=0.0.0.0

1 Like

Hi, did you ever get this to work? I can connect to the server in the editor but can’t make it work when built. Also using 4.27.2.

Well, basis of the above replies i manged to get everything working on the same computer only. however HTTP requests over network is not working. the built in dashboard through app does open on another computer linked to the same network, however i can’t make requests through postman to the engine/project. it loads for a while then times out.
Any idea on this please?

Bro, this is the solution, it worked for me:

where should I add those parameters, I’m launching with .uproject file by right click > Launch Game on windows

Actually, it works with Custom Events too. I’ve tried all three methods: function, custom event in bp actor, custom event in level bp and all three are working fine via postman. For those whom it will be of help while googling:

I use UE 5.3
In Postman:

  1. Choose GET on the left, write down:
    localhost:30010/remote/preset/yoursavedpreset
    and click SEND on the right.

You will receive a list of your exposed functions from RemoteControlPlugin in UE 5.3.
You can use any kind of event, function, seetings etc., all works.

  1. Now, you want to trigger event of function? Change GET to PUT on the left
    Enter address: localhost:30010/remote/object/call
    DO NOT CLICK SEND YET

Click Body tab and insert this:
{
“objectPath” :“/Game/Maps/mainlevel.mainlevel:PersistentLevel.BP_LastResultCENTER_C_1”,
“functionName” : “PrintResult”,
“parameters”: {}
}

For Objectpath use path from your list of functions from point 1 !
Function name is function name, you’ll find it in the same list!
Parameters: i leave it blank, as I want just to fire the event.

Hope that helps!