Tools

Space Walk comes with a few tools that you can find in the appropriately named /tools/ folder in the repository. It is a collection of tools, that might be of use during development or testing.

The Bridge

The bridge offers a simple translation service between WebSockets and TCP sockets. WebSockets is a fairly recent standard, and support in libraries or even programming languages is not that wide spread yet. WebSockets by its nature are more complex than TCP sockets and it might just be easier to use TCP sockets in the target application.

On one end the bridge acts as WebSocket server that itself connects to the TCP server in the target application. TCP messages are \n terminated and use the same space walk protocol. They are just simply handed over in the bridge without modification.

Usage

To use the bridge you need a working node.js installation. The bridge takes the following command line parameters:

Usage: bridge.js [options]

  Options:

    -h, --help         output usage information
    -V, --version      output the version number
    -v, --verbose      verbose output
    -h, --host [host]  IP address of the TCP host/server
    -p, --port [port]  TCP port number of the host/server

User Input Logger

The input logger allows you to analyse different games without access to their source code. Just run the input logger in parallel with your own project or the game you want to analyse. Since it is using TCP you also have to run the bridge.

The input logger is a small tool that just reads in gamepad input and then makes it available over the network. In the tools folder you will find 3 sample implementations of the tool: One using Unity3D (which only works if the window has focus) and two based on C++ using SDL2 or glfw.

Under the following links you can find prebuilt packages. They all have the same features, but might look a bit different. Choose the version that works best for you. To run the OSX version you might need to install some dependencies (Xcode, sdl2). Let me know if you are running into any problem and I will try to help solve them. Reach out to me via email or twitter

If you happen to be on Linux, just build the input logger yourself. It uses CMake as a build system and requires a recent C++11 compliant compiler chain.

Protocol Test Server

The protocol test server was written to have a convenient data source during plugin development, and also to provide a reference implementation of the protocol. It is recommended to use it during development of core and ext plugins and it is also handy to extend the protocol test server with custom protocol features for new plugins.

Usage

The test server uses node.js and offers the following options:

Usage: test-server.js [options]

  Options:

    -h, --help                       output usage information
    -V, --version                    output the version number
    -v, --verbose                    verbose output
    -u, --generate-user-input        generating user input data
    -l, --generate-location-data     generating location data
    -s, --generate-scalar-data       generating scalar data
    -t, --generate-time-series-data  generating time series data
    -L, --generate-log-data          generating log data
    -p, --port [port number]         the port number to be used
    -i, --interval [interval in ms]  the send interval in ms

Data Recorder

Space Walk was built for real time analysis, but that does not mean, that you can not record the data for later analysis. The recorder simply writes the data to JSON files.

Usage

The recorder also uses node.js and offers the following functionality:

Usage: recorder.js [options]

  Options:

    -h, --help                    output usage information
    -V, --version                 output the version number
    -v, --verbose                 verbose output
    -d, --dry-run                 dry run, i.e. don't write to disk
    -o, --output-folder [folder]  output folder path
    -t, --timeout [seconds]       session timeout in seconds

Files are streamed to disk during recording, and the file is finished and closed once the timeout is reached without new data arriving. This way multiple sessions can be recorded without having to restart the tool.