View all files | ||||
This is cross platform native module for Godot Engine v3 for control apps and games over WiFi or ADB.
If you are developing on a non-touch device, this module is the best way to quickly test touch input or test mobile sensors data (accelerometer, gyroscope, etc.).
API references can be found here: API.md
Building instructions placed here: BUILDING.md
Changelogs can be found inside the mobile app or on the github releases page
If you have any problems when starting the editor or connecting to the server, then please see the list of problems and their solutions
The mobile app can be found on Google Play, as well as on itch.io.
Google Play and the Google Play logo are trademarks of Google LLC.
Important: The client and server (smartphone and PC with the Godot editor) must be on the same local network, for example, the PC can be connected to the router via a LAN cable, and the smartphone can be connected via Wi-Fi.
Important: Godot Editor with 'Godot Remote' module means that you should see the module settings category in your projects settings. This is the easiest way to check the integration of Godot Remote into the editor.
By default Godot Remote module in the running project displays a notification about the server status.
Also, starting from version 1.0.2, you can find the Godot Remote tool menu in the editor.
Here you can find info about every setting in project and in client app.
Server = Your project launched through Godot Editor with Godot Remote module
Client = Mobile App
| Device ID | Random Hex String | String ID of device. Currently using only in connection notification. |
| Connection Type | Auto | Type of the connection: Auto, WiFi, ADB |
| Auto: Listener Port | 22765 | The port on which the auto connection mode will work |
| WiFi: Server Address | 127.0.0.1:22766 | The exact address and port of the server |
| ADB: Server Port | 22766 | The exact port of the server |
| Password | Password used to connect to the server | |
| Output Frequency | 120 | Frequency of sending data to the server |
| Stretch Mode | Keep Aspect | Stream image stretching mode: Keep Aspect, Fill |
| Stream Texture Filtering | on | Specifies the filtered or pixelated image of the stream |
| Show Stats | Hidden | Amount and type of statistical information |
| Number of touches to open settings | 5 | Indicates how many simultaneous touches are required to open settings during an active connection |
| Keep Screen On | on | Specifies whether to keep the screen on without an active connection |
| Capture pointer when custom scene active | on | Specifies whether to capture touches if a custom input scene is active |
| Send Mouse Events | on | Specifies whether to capture and send mouse events |
| Sync Viewport Orientation | on | Specifies whether to send data about the orientation of the device |
| Sync Viewport Aspect | on | Specifies whether to send data about the device's aspect ratio |
| Number of decoder threads | 2 | The number of threads used to decode the stream image |
| Override Server Settings | off | Shows or hides the server settings that will be applied after the connection |
| Sync Server Settings | off | Specifies whether the server should send the settings to the client |
| Video Stream | on | Specifies whether the video stream is active |
| Image Quality | 50 | Image quality of the stream |
| Image Scale | 0.5 | Server viewport resolution multiplier |
| Target FPS | 60 | Server FPS lock |
| Number of processing frames | 100% | Specifies how many frames should be displayed |
| Encoder | JPG | Encoder type |
| Encoder Threads | 2 | Number of threads used by the encoder |
Available options:
Available options:
| general/autostart | Automatically start server right after project launched |
| general/use_static_port | Use static port instead of dynamic |
| general/port | Server listener port |
| general/auto_connection_port | Auto connection broadcasting port |
| general/log_level | Logging level |
| notifications/notifications_enabled | Enable notifications |
| notifications/notifications_position | Position of notifications |
| notifications/notifications_duration | Notification display time |
| server/image_encoder_threads_count | Number of image encoding threads |
| server/configure_adb_on_play | Configuring ADB at project startup. |
| server/jpg_compress_buffer_size_mbytes | JPG encoder buffer size |
| server/password | Server password |
| server/target_fps | Target FPS with active connection |
| server/video_stream_enabled | Enable video stream |
| server/compression_type | Encoder type |
| server/skip_frames | Specifies how many frames should be displayed |
| server/scale_of_sending_stream | Viewport resolution multiplier |
| server/stream_quality | Image quality of the stream |
| .../custom_input_scene | Path to the custom input scene |
| .../send_custom_input_scene_compressed | Enable compression of a custom input scene |
| .../custom_input_scene_compression_type | Compression type of the custom input scene |
This option only available with general/use_static_port and requires the correct path to the Android SDK specified in the editor settings (export/android/android_sdk_path or export/android/adb in Godot 3.2).
If you have any problems with this option, you can try manually execute adb reverse tcp:[your static port] tcp:[your static port], for example adb reverse tcp:22766 tcp:22766.
If you have multiple devices connected at the same time, you can add the -s [device name] argument. Execute the adb devices command to find out the name of the devices. Example of command adb -s 192.168.0.1:5555 reverse tcp:22766 tcp:22766.
On windows, you will probably need to specify the full path to adb in the console: [path to Android SDK]/platform-tools/adb.exe
Some examples are placed in the examples folder.
If need to support other platforms or you need a specific version of module integrated to the client app, you can build client from source code placed here.
If you don't want to use my client app you can check the example client project and build your own client.
Or you can donate me some money with request to buy iPhone and adapt a client for it 🙂
In custom input scenes you can use everything you want but to send InputEvent's from client to server you must emulate input. Or use the send_user_data method and user_data_received signal for send and receive custom packets. Example:
MIT license