Est. 2001 Intermediate

TorqueScript

The C-like, dynamically-typed scripting language embedded in the Torque family of game engines, used to write gameplay logic, UI, and networked object behavior without recompiling the C++ engine.

Created by GarageGames (from Dynamix engine technology)

Paradigm Multi-paradigm: Object-Oriented, Imperative, Procedural
Typing Dynamic, Weak
First Appeared 2001
Latest Version Torque 3D 4.0.3 (2023)

TorqueScript is the embedded scripting language of the Torque family of game engines, originally developed by GarageGames from technology created at Dynamix. It is a dynamically typed, C-like language that lets developers write gameplay logic, user interfaces, and networked object behavior without recompiling the underlying C++ engine. Introduced with the commercial release of the Torque Game Engine in 2001 — and derived from the scripting system that shipped in Dynamix’s Tribes 2 the same year — TorqueScript became one of the most widely used scripting languages in the independent game development community of the 2000s, powering titles such as Blockland, the Marble Blast series, and later BeamNG.drive.

History & Origins

From V12 to Torque

The lineage of TorqueScript begins with Dynamix, the studio behind the Tribes series. For Tribes 2 (released March 29, 2001), Dynamix built a networked 3D engine — known internally as the “V12” engine — that paired a performance-critical C++ core with a flexible scripting layer for defining game rules, weapons, vehicles, and interface elements. This scripting layer was the direct ancestor of TorqueScript.

Around 2000, a group of developers with roots in Dynamix founded GarageGames with the mission of making professional-grade game technology accessible to independent and hobbyist developers. After Sierra On-Line shut down Dynamix in 2001, GarageGames licensed the underlying engine technology and released it commercially as the Torque Game Engine (TGE). By some accounts the engine’s original “V12” name was dropped in favor of “Torque” after a trademark concern; regardless of the precise circumstances, the Torque brand became the name under which the engine — and its scripting language — reached a broad audience.

Democratizing 3D Game Development

The Torque Game Engine was notable for its low cost and source-available licensing at a time when comparable 3D engines were priced far beyond the reach of small studios. This positioning made Torque, and by extension TorqueScript, a common entry point for aspiring game developers throughout the 2000s. Many developers learned their first game programming in .cs files, and a substantial ecosystem of tutorials, forum communities, and commercial games grew around the engine.

The Torque Family Expands

GarageGames extended the Torque line in several directions while keeping TorqueScript as the shared scripting layer:

  • Torque Game Builder (2006), later renamed Torque 2D, brought Torque and TorqueScript to 2D game development.
  • Torque Game Engine Advanced (TGEA) (2007) added a programmable shader pipeline and per-pixel lighting.
  • Torque 3D (2009) unified and modernized the 3D line as the successor to both TGE and TGEA.

Open Source and Community Stewardship

GarageGames released Torque 3D as open source under the permissive MIT License on September 20, 2012, followed by Torque 2D on February 5, 2013. As GarageGames wound down its own development — Torque 3D 3.10 (2017) was the last release under the company — the projects transitioned to community maintenance, hosted on GitHub. Community contributors have continued to advance the engine, releasing Torque 3D 4.0 in 2022 with physically based rendering, followed by point releases such as 4.0.3 in February 2023. Throughout these changes, TorqueScript has remained the engine’s primary scripting language.

Design Philosophy

A Scripting Layer, Not a Standalone Language

TorqueScript is not meant to be run on its own. It is an embedded language: scripts are interpreted by a virtual machine inside the compiled Torque engine executable. The C++ engine exposes its objects, classes, and functions to script, and TorqueScript code orchestrates them. This division of labor — heavy lifting in compiled C++, gameplay glue in interpreted script — is the same architecture used by many game engines, and it allows designers and gameplay programmers to iterate on logic without waiting for a full C++ recompile.

Familiar Syntax, Forgiving Semantics

TorqueScript deliberately borrows C and C++ syntax so that programmers already familiar with those languages can be productive quickly. Its file extension, .cs (“C Script”), reflects this heritage. At the same time, the language is intentionally forgiving: it is dynamically and weakly typed, requires no variable declarations, and freely coerces between numbers and strings. This lowers the barrier to entry for designers and newcomers, at the cost of catching fewer errors at “compile” time.

Focused on Gameplay Glue

TorqueScript was designed primarily for gameplay callbacks, configuration, and interface logic rather than heavy computation. Performance-sensitive work — rendering, physics, networking — lives in the engine’s C++ code. The scripting layer’s role is to define the rules of the game and respond to engine events, a scope for which its simplicity and rapid iteration are well suited.

Key Features

Scoped Variables With Sigils

TorqueScript distinguishes variable scope through prefix sigils rather than declarations. Local variables begin with % and exist only within the enclosing function or block; global variables begin with $ and persist for the lifetime of the program. Variables spring into existence on first assignment and need no type annotation.

$PlayerName = "Heather";        // global variable

function greet(%name)           // %name is a local parameter
{
   %message = "Hello," SPC %name;   // local variable
   echo(%message);
}

greet($PlayerName);             // prints: Hello, Heather

String Concatenation Operators

Because TorqueScript treats strings as a first-class data form, it provides dedicated operators for joining them with controlled whitespace:

OperatorMeaning"a" op "b" yields
@direct concatenationab
SPCspace-separateda b
TABtab-separateda\tb
NLnewline-separateda\nb

Datablocks

One of TorqueScript’s most distinctive constructs is the datablock — a special object holding static, mostly read-only properties that describe a class of game objects (a weapon, a vehicle, a player type). Datablocks are transmitted from server to client so that all machines share the same definitions, and they are not meant to be modified while the game is running. This makes them central to Torque’s client/server networking model.

datablock PlayerData(HumanPlayer)
{
   shapeFile   = "player.dts";
   maxHealth   = 100;
   runForce    = 4000;
   mass        = 90;
};

Objects and Console Methods

Runtime objects are created with the new keyword and derive from the engine’s SimObject hierarchy. Each object can be referenced by a numeric handle or by name, and methods are invoked with dot notation. Script authors add behavior by defining “console methods” namespaced to a class:

new SceneObject(Truck)
{
   position = "0 0 0";
};

function SceneObject::honk(%this)
{
   echo(%this.getName() @ " says: beep beep");
}

Truck.honk();

Packages

TorqueScript supports packages, a mechanism for grouping function definitions that can be activated and deactivated at runtime. When a package is active, its versions of functions override the previously defined ones, and deactivating it restores the originals. This provides a form of runtime function overriding used heavily for mods and optional game features.

Familiar Control Flow

The language provides the control structures a C programmer would expect — if/else, for, while, and switch — plus a dedicated string-matching variant, switch$, for branching on string values:

switch$(%userClass)
{
   case "Sniper":
      giveRifle();
   case "Medic":
      giveHealPack();
   default:
      giveDefaultKit();
}

Evolution

TorqueScript has remained remarkably stable across two decades and multiple engine generations. Its core semantics — sigil-scoped variables, datablocks, console methods, packages — carried forward largely unchanged from the Torque Game Engine through TGEA, Torque 2D, and Torque 3D. Rather than reinventing the language, the Torque projects evolved the engine around it: newer rendering pipelines, physics, and tooling were exposed to the same familiar scripting interface. This continuity means that scripting knowledge from the mid-2000s Torque community remains broadly applicable to the modern open-source engines.

Current Relevance

Today TorqueScript lives on primarily through the open-source Torque engines maintained by their communities on GitHub, and through long-lived games and modding communities. Blockland and the various open-source Marble Blast successors continue to see TorqueScript modding, and BeamNG.drive — built on a heavily modified Torque 3D fork — keeps a form of the language in active commercial use. While Torque is no longer the default choice for new commercial projects it once was in the 2000s, its codebases remain functional and maintained on modern systems.

Why It Matters

TorqueScript’s significance is tied to the role Torque played in the democratization of game development:

  1. Lowering the barrier to 3D games: In an era when capable 3D engines were prohibitively expensive, Torque and TorqueScript gave hobbyists and small studios an affordable, source-available path to shipping real games — and introduced a generation of developers to game programming.

  2. A practical embedded-scripting model: TorqueScript is a clear, widely deployed example of the compiled-core / scripted-gameplay architecture, with distinctive ideas like network-replicated datablocks and runtime-swappable packages that reflected the needs of multiplayer game development.

  3. Longevity through open source: The MIT-licensed release of the Torque engines ensured that TorqueScript and the games built on it would remain runnable and modifiable long after their commercial heyday, making it a living piece of independent-game history rather than an abandoned artifact.

Timeline

2000
GarageGames is founded by a group of developers with roots in Dynamix, with the goal of bringing professional game technology to independent developers
2001
Dynamix ships Tribes 2 (March 29); its data-driven scripting system, built on the engine internally known as V12, becomes the direct ancestor of TorqueScript
2001
After Sierra closes Dynamix, GarageGames licenses the underlying engine technology and releases it commercially as the Torque Game Engine (TGE), rebranding the V12 engine as Torque
2006
Torque Game Builder (later Torque 2D) brings TorqueScript to 2D game development
2007
Torque Game Engine Advanced (TGEA) is released, adding a programmable shader pipeline and per-pixel lighting while retaining TorqueScript
2009
Torque 3D 1.0 is released as the next-generation successor to TGE and TGEA
2012
GarageGames releases Torque 3D as open source under the MIT License (September 20), preserving TorqueScript in the public codebase
2013
Torque 2D is released as open source under the MIT License (February 5)
2017
Torque 3D 3.10 is the final release under GarageGames; ongoing maintenance transitions to the community
2022
Community-maintained Torque 3D 4.0 is released, adding physically based rendering (PBR) and an assets/modules system, with TorqueScript still the primary scripting layer
2023
Torque 3D 4.0.3 is released (February 7) as the latest stable version at time of writing

Notable Uses & Legacy

Tribes 2 (Dynamix / Sierra)

The 2001 first-person shooter whose data-driven scripting system was the origin of TorqueScript; gameplay rules, UI, and networked object behavior were defined in script.

Blockland

A LEGO-inspired sandbox building game built on Torque; its extensive modding community writes add-ons and game modes almost entirely in TorqueScript.

Marble Blast Gold / Marble Blast Ultra

GarageGames' physics-based marble platformers, built on Torque, with level logic and gameplay scripted in TorqueScript. The series later inspired open-source successors such as PlatinumQuest.

BeamNG.drive

A vehicle simulation game built on a heavily modified fork of Torque 3D; it retains TorqueScript alongside Lua for parts of its game and UI logic.

Penny Arcade Adventures: On the Rain-Slick Precipice of Darkness

An episodic RPG developed by Hothead Games on the Torque engine, using TorqueScript for gameplay and interface code.

The Age of Decadence

A turn-based, story-driven RPG from Iron Tower Studio built on Torque, with its systems and content scripted in TorqueScript.

Language Influence

Influenced By

Running Today

Run examples using the official Docker image:

docker pull
Last updated: