Space Walk is a real time telemetry and analysis platform/framework that uses WebSockets to communicate and gather data from the target application. It uses modern web technology, and is modularised for easy extensions and customization.
I created a series of short videos that give an overview over Space Walk and the Information Flow Analysis plugin.
The concept of Space Walk is built on three pillars: The main web based application, easily creatable and shareable plugins, and a common communication protocol.
The first pillar is the web based application. It manages the network connection and provides all the infrastructure for the plugins. Plugins can be easily loaded from everywhere on the web, without any installation or setup. This allows fast and simple deployment, and it also facilitate sharing of plugins and tools.
The second pillar, the plugins, is where the real action takes place. Plugins for the Space Walk web applications use JavaScript and modern browser technology to visualise data, analyse it in real time and to create rich user interfaces.
JavaScript and the browser platform have been chosen for multiple reasons: In most cases JavaScript offers quick turnaround times and very short development cycles, it is mostly platform independent, it requires no set up, supports rich user interfaces and a wide variety of libraries are available.
The third pillar is the common protocol. It connects all the components and it is designed to be developer friendly and easily extensible. It's aim is to be useful beyond the scope of the Space Walk application and my hope is that many people are picking it up and use it in their development tools and pipelines.
The broader goal of this project is to support the creation of open source tools for game development and digital games research. From what you hear, many or probably most companies/studios/projects/developers/researchers use some kind of telemetry or analysis tools during development. However, very few of them are documented in literature, and even fewer are publicly available under a permissive license.
Game Development is a highly specialised challenge that requires specialised solutions. However these solutions can be built on a common base technology, so that we don't have to reinvent the wheel with each new project.
Getting started in most cases requires a little programming. In your application or game you have to include either a TCP socket or WebSocket server that supports the rather simple Space Walk protocol. The protocol comes with different features and you don't have to support all of them. Implement the ones you need and you are good to go.
The next step is to start the Space Walk client in the browser and connect to your game (or the bridge). Load a plugin from the list of recommended plugins or load other custom plugins from everywhere on the web and you are good to go.
Space Walk builds on WebSockets, a fairly recent addition to modern browsers that allows them to use persistent connections to servers.
From right to left, the game starts a TCP socket/WebSocket server and waits for the framework to connect. Data is sent as plain text JSON strings. This has of course a performance penalty, but makes developing and debugging much easier. So far, the size and computational overhead of using JSON has not been a real problem.
Good WebSockets sever libraries are not as widespread yet, therefore a little bridge has been written with node.js that translates back and forth between TCP sockets and WebSockets.
The Space Walk application connects to the game or bridge via WebSockets, receives the data and hands them over to all loaded plugins using the JavaScript window.postMessage
API.
In many cases data will only flow form the game/application to the plugins that then consume and process it. The architecture allows data transfers both ways, which can for instance be used in remote parameter tweaking or requesting screen shots from the game.
Space Walk is intended as a collaborative effort. There is a mailing list available to discuss the ongoing development of Space Walk, to show off new plugins and to provide some technical support.
All the parts that I created for Space Walk are licensed under the permissive MIT license. Node.js and other used libraries might have other licences.
Copyright (c) 2014-2015, Simon Wallner
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
This software shall be used for good, not evil.