q3osc is a heavily modified version of the open-sourced ioquake3 gaming engine featuring an integrated Oscpack implementation of Open Sound Control for bi-directional communication between a game server and one or more external audio servers. By combining ioquake3's internal physics engine and robust multiplayer network code with a full-featured OSC packet manipulation library, the virtual actions and motions of game clients and previously one-dimensional in-game weapon projectiles can be re-purposed as independent and behavior-driven OSC emitting sound-objects for real-time networked performance and spatialization within a multi-channel audio environment.
q3osc combines the fast-paced virtual playgrounds of FPS video games with the limitless possibilities afforded by dynamic interactive music programming languages. By exporting a variety of parameters from within the modified ioquake3 game engine over a data protocol called Open Sound Control, player movements and fired projectiles can be used to control sound synthesis and playback in a variety of computer music software. In short, this turns quake3-style levels into musical playgrounds, where hoardes of networked performers can play with sound and music in a communal experience.
While q3osc can be run in many different configurations, the basic configuration has a game server running the q3osc game server with game-clients using "vanilla" or unmodified ioquake3 clients (like OpenArena), and a sound-server, either on the same computer or on a separate computer, running an audio synthesis or performance language like ChucK, Max/MSP, Pure Data or Supercollider.
As clients move through a game map (a virtual environment created by a user or downloaded from the web), their positions and the positions of all projectiles they fire are sent over the network to the sound-server. There, the audio software reads in the data sent from the game and turns that information into sound using a variety of user-created methods.
Programming: Rob Hamilton