NetworkSimulator
During testing, it is crucial to test your game under realistic network conditions, including latency and potentially packet loss.
Network conditions can be simulated using clumsy, netem, or with netfox's NetworkSimulator. It auto-connects instances when launched from the editor, and simulates various network configurations.
How to Use
Enable and configure Autoconnect in the project settings.
When your game launches one instance will start an ENetMultiplayerPeer server and the rest will connect to it.
Either a NetworkSimulator.server_created
or
NetworkSimulator.client_connected
signal will be fired which you can use to
bootstrap your game code to.
Note
NetworkSimulator will only work when the game is ran from the editor. Otherwise it will disable itself, regardless of project settings. This is a failsafe to avoid affecting production builds of your games.
Configuration
- Hostname
- The hosting address. Usually
127.0.0.1
but can be changed to*
, if you want other machines to be able to join. - Server Port
- Which port to listen on. A second server port with latency / loss will open one number higher if they are set to more than zero.
- Use Compression
- Will make use of ENET's range encoder to keep packet sizes down.
- Simulated Latency ( ms )
- Traffic delay, in milliseconds.
- Simlated Packet Loss Chance
- What percentage of packets will to drop, simulating bad network conditions.
Running in CI and other environments
In certain cases, you might not need the autoconnect feature to run, even if it's enabled in the project settings.
One example could be running checks on your project in CI, or wanting to run a single script.
In these cases, Godot will still identify itself as running in editor, so the autoconnect feature will start hosting, keeping the process alive. This leads to timeout errors, or the process running indefinitely.
To avoid such cases, set any of the following environment variables to any non-empty string:
CI
NETFOX_CI
NETFOX_NO_AUTOCONNECT
If NetworkSimulator detects any of the above environment variables, it will deactivate, regardless of project settings.
Tip
Github Actions automatically sets the CI
environment variable.
NetworkSimulator will automatically disable itself when running in a
Github Actions workflow.
See the Github blog entry for more details.