CTrollaball is a demonstration platform for showcasing the CloudTurbine-based Mixed-Reality interface. CloudTurbine provides an excellent vehicle for interjecting real-world data into Virtual Reality applications. CTrollaball is a test-bed for developing this interface.

CTrollaball is based on the Unity tutorial Roll a Ball game, enhanced utilizing CloudTurbine stream-sharing for new features such as multiplayer mode, remote browser monitoring, and game archival/playback. It has been compiled under Unity 2017/2018 for Windows and Mac OS platforms.

CTrollaball is open source software, available on GitHub and released under the permissive Apache 2.0 license. This post provides an overview for how to setup and play the game. A related post supplies background information needed to participate in CTrollaball development.

Requirements for playing CTrollaball

Optional (for local CloudTurbine file server vs on-line demo):

Playing CTrollaball

Multiple instances of CTrollaball can be run on a single platform or across multiple (networked) machines.

When you run the CTrollaball executable, you will need to connect to a “CTweb” server, available as part of the CloudTurbine distribution, or available on-line as a remote demo server.  For an introduction to using CloudTurbine, see the tutorial; in particular, review the “Installation” section which includes an example of running a CTweb server.

Start local CTweb server (optional)

Note the following:

  • For best performance, execute the CTweb server on a system with an SSD drive.  CloudTurbine by design leverages fast-file access.
  • By default, CloudTurbine data will be saved in a folder named “CTdata”.  Provide a trailing command-line argument to change this.
  • By default, an HTTP server port is opened at 8000; this can be changed by specifying a “-p <port>” command line flag.
  •  The -w and/or -W options are required to enable live/active players.  Without either flag, CTweb operates in read-only playback mode.
    • The “-W 10” option specifies that the server supports up to 10 active CTrollaball players; data is pushed from CTrollaball to the server using HTTP PUT.
    • The “-w 600” option specifies that CT sources are automatically trimmed at 600 seconds; that is, the most recent 10 minutes of data are stored in each source.
  • If the network you are running the CTweb server on does not have access to the Internet, download a local copy of the WebScan files in a folder called CTweb located alongside the CTdata folder.
  • See https://www.cloudturbine.com/ctserver/ for more options.

Start CTrollaball and Login to Server

In the first CTrollaball screen (see below) enter the host name or IP address where the CTweb server is running. The default is localhost.  For a remote on-line demo server, connect to Host: cloudturbine.com, with User/Password provided upon request.  Specify a port, e.g. “localhost:9000”, if other than the default port 8000.

If the CTweb server was started with a “-a <authenticationFile>” option, then specify the username and password (otherwise, leave these fields blank).

The next configuration screen (see below) offers two CTrollaball options:

World:  You can specify the name of a pre-recorded or on-going CTrollaball “World”.  Default to the Observer player to watch (and optionally re-play) the selected CTrollaball world.

Player:  Actively participate in a CTrollaball game by selecting your “Player” name (“Red”, “Blue”, “Green” or “Yellow”).

The upper left corner of the screen contains buttons to activate various features:

  • Gear: pop up the “CTrollaball Options” screen
  • Trail: toggles player-track and “custom” hover-info (if available)

Observer Mode

If you selected the Observer player, you are not an active participant in CTrollaball. Rather, you can watch a live or pre-recorded game. Clicking the button in the upper right corner of the screen pops up replay time controls, allowing you to scroll backward and forward through game time as well as play backward, pause replay and play forward.

Player Mode

If an active (non-observer) player is selected, a new “Deploy” menu appears per the following screen image.  Select various objects to load them into the on-line world.  Each player “owns” its own deployed objects; i.e. all object status (e.g. position, size) is controlled and updated by associated player.

World User

If you login as the “World” user, special Deploy options are available per the following table.

User Deploy Description

Standard options for any user


Reset player-objects from last <Save>


Load prefabs from Inventory (e.g. Ball)


Additional options for “World” user


Save current player-objects (to Inventory/_Player)


Clear all in-world player-objects


Load prefabs with leading _Underscore (e.g. _Red)

CloudTurbine Folders and Files

CTrollaball inter-process communication uses CloudTurbine time-sequenced data files according to a naming convention as follows:

  • CTdata/<WorldID>/GamePlay/…/CTstates.json
  • CTdata/<WorldID>/Inventory/…/CTstates.json


CTdata  –    Standard root folder for CloudTurbine data

<WorldID>  –  Source folder with “Player” name (e.g. “Red”)

GamePlay  –  Streaming player-data recordings

Inventory  –  Preconfigured setup files, loaded via “Deploy”

CTstates.json  –  JSON-formatted communication files

Setting up GamePlay folders with CTstates.json files establishes initial player states and populates the CTrollaball Player-pulldown menu.

Setting up Inventory items provides a list of items (Unity prefabs) for users to deploy during game-play.

The Finder screen image is an example CTdata folder with GamePlay and Inventory folders expanded for the “Game1” world.


Integrating External Sources

CTrollaball is not just a game, but a portal to mixed-reality data sources.  Stream and control game-world avatars and events using real-world inputs via JSON-formatted CloudTurbine data.  

See http://cloudturbine.com/udp-to-unity for an example using UDP packets as the communication interface.  Another example, http://www.cloudturbine.com/cttraveler/, includes a description of the associated JSON format files.