Graceful Exit

Game servers often need to run code when they are about to shut down. This is called a "graceful exit". This is useful for saving data, cleaning up resources, and notifying players.

Under the hood, Rivet uses Unix signals to notify the game server that it will be shut down soon.

  1. Rivet sends a SIGTERM asking the server to shut down gracefully. Your server should exit as soon as possible after receiving this signal.
  2. If the server does not exit within 30 seconds, Rivet will force the server to shut down.

Examples

Godot

Godot does not natively support this (see #1361). To use GDExtension as a workaround, see here.

Unreal Engine

UEngine::PreExit

Unity

MonoBehaviour.OnApplicationQuit()

Node.js

process.on('SIGTERM', () => {
    console.log('Exiting')
    process.exit(1);
});

Example

Documentation

Other

Rosetta Code has a collection of examples on handling Unix signals here.