The short answer
Garry's Mod didn't succeed despite being built on someone else's tech. It succeeded because Garry Newman refused to build tech at all.
In December 2004 Newman released a free mod that let you mess with Valve's Source engine — spawn Half-Life 2 props, weld them together, pose ragdolls. In November 2006 Valve published it as a standalone $10 sandbox with no objectives. By September 2021 it had sold more than 20 million copies.
The stack was deliberately boring and borrowed:
- Source (C++ with Havok middleware) for rendering, networking, and physics he never had to write.
- Lua, specifically Lua 5.1 as GLua for gameplay, so any teenager with Notepad could ship a game mode.
Steam's own store page still describes it the same way: "There aren't any predefined aims or goals. We give you the tools and leave you to play." That sentence is the business model.
What Garry's Mod actually is
If you never played it, forget "game" in the normal sense. The base mode has no win state, no campaign, no progression.
You spawn NPCs, ragdolls and props, then manipulate them with two tools:
- Physics Gun: pick up, rotate, freeze anything.
- Tool Gun: weld, rope, balloon, thruster, face-poser, and hundreds of community tools.
Everything interesting — Trouble in Terrorist Town, Prop Hunt, DarkRP, Wiremod, Spacebuild, Elevator: Source — was written by players in Lua and distributed first via Toybox, then via Steam Workshop, which now hosts over 300,000 models, maps and contraptions.
Release history matters here because it shows how little Newman rebuilt:
- December 2004: free Source mod by Garry Newman
- 29 November 2006: Windows standalone, developed by Facepunch Studios and published by Valve
- 23 September 2010: Mac OS X port
- 5 June 2013: Linux port
Ports lagged years behind because Source itself lagged. That dependency cut both ways.
Why Source? A dead modder's paradise
In 2004-2006, your realistic options as a solo dev were: license an engine you couldn't afford, write one you couldn't finish, or hijack one that shipped with content.
Source gave Newman three things no indie engine could:
1. A content inheritance.
Source debuted in 2004 with Half-Life 2, Counter-Strike: Source and Half-Life: Source, then powered Team Fortress 2, Portal, Left 4 Dead, Titanfall and others. Garry's Mod is listed among those notable third-party Source games. Day one, GMod players could spawn City 17 streets, Combine soldiers, and crates without Newman modeling a single box. The engine was written in C++ with Havok for physics, which meant ragdolls tumbled convincingly while Newman focused on guns that grab things.
Steam even warns you about this inheritance today: "Some multiplayer servers and game-modes might require you to own other games - such as Counter-Strike: Source and Team Fortress 2." That ugly dependency was the price of free art.
2. Physics as gameplay.
Source's modular design let Valve push updates over Steam, but occasionally broke mods and required upgrades. For most devs that was risk. For GMod it was the product: Havok ragdolls + constraints + buoyancy were fun even when they glitched. A wobbling tower of toilets held together by elastic ropes is not a bug showcase — it is the game.
3. Distribution as engine feature.
Newman didn't just borrow rendering. He borrowed Valve as publisher, Steam as updater, and later Workshop as app store. No custom launcher, no patcher, no CDN bill.
The cost was 20 years of rent: 32-bit limits, single-threaded legacy code, Mac/Linux ports that trailed Windows by years, and a hard ceiling that eventually forced Facepunch to abandon Source entirely for the successor.
That successor, S&box, released 28 April 2026 on Source 2 with C++ runtime and C# scripting, after a false start on Unreal Engine 4. The team explicitly moved to a Unity/Godot-like scene system and hot-load C# to escape Source 1's client/server entity model. In other words: the borrowed engine that created GMod eventually became the reason to kill it.
Why Lua? GLua turned players into devs
Lua is a lightweight embeddable language from Brazil, designed in 1993 for customization. Facepunch's wiki is blunt about the version: Garry's Mod utilizes Lua 5.1, extended as GLua with thousands of Source-specific functions.
The official beginner tutorial still starts with Notepad, print("Hello"), and lua_openscript helloworld.lua in the console. No compiler. No SDK install. Autorun folders split code into:
-
lua/autorun/— shared -
lua/autorun/client/— client only -
lua/autorun/server/— server only
with if CLIENT then ... end / if SERVER then ... end guards for the split.
That three-line mental model is why GMod beat every "more powerful" mod system. Compare:
- Source SDK modding in C++: hours to compile, crashes the game, scares 14-year-olds.
- GLua: save text file, type one console command, see a chair fly.
Low fidelity was the feature. Lua 5.1 is slow, untyped, and has no classes. But it reloads instantly, fails softly with a red Lua error instead of a blue screen, and reads like English. A kid who can't explain a pointer can still copy-paste a DarkRP job.
Workshop closed the loop: publish from the menu, subscribe in one click, join a server and auto-download. The 300,000-item number on Steam is not vanity — it's the compound interest of a 10-minute publish path maintained for 15 years.
What it cost
Borrowing everything has a bill, and GMod paid it publicly:
- Engine debt: Stuck on Source 1 while the industry moved to PBR, 64-bit, multithreading. Maps require owning other Valve games for textures. Physics jank that was charming in 2006 looks broken next to modern sandboxes.
- Security debt: Client-trusted Lua + ancient netcode = aimbots, backdoors in leaked addons, and the infamous 2022 Glue Library incident where a popular library turned malicious. When everyone can code, anyone can exfiltrate.
- Version whiplash: Source's incremental modules sometimes broke compatibility for mods. GMod version 12 to 13 killed Toybox and forced migration to Workshop. Server owners still talk about those migrations like natural disasters.
- Language ceiling: Lua 5.1 has no JIT in GMod by default, no real sandboxing, no types. Big modes like Starfall and Wiremod had to build their own virtual machines and quota systems to stop infinite loops from freezing servers.
Facepunch's answer wasn't to fix Lua — it was to leave it. S&box uses C# with hotload, ActionGraph visual scripting, ShaderGraph, and cloud assets where you "click to play" with no subscribing. That's an explicit rejection of GLua's copy-paste chaos in favor of Unity-like safety.
And yet GMod still has thousands of daily players. The debt didn't kill it because the debt is the content.
My contrarian take: three things everyone gets wrong about GMod
This is opinion, not fact — but it's where I diverge from the usual "freedom + community = success" retrospectives.
1. Laziness was the moat, not the prototype.
Most postmortems frame using Source as a shortcut to get to the "real" game. I think not building was the real game. By shipping zero art, Newman made every Valve game ever sold a DLC for GMod. No competitor using Unity or Unreal could match that back-catalog on day one, because they'd have to model it. Borrowing content is usually called shovelware. Here it was a supply-chain hack: let Valve and its licensees pay for assets, then tax them with comedy.
Indie lesson: if you can't out-produce, out-reuse. A borrowed library with 10,000 props beats a handmade library with 100, even if the license footnote is ugly.
2. Visible Lua errors taught a generation to code.
Modern platforms hide errors. GMod sprayed blue lua_openscript failures across every screen. Servers showed stack traces to 12-year-olds trying to spawn a car.
Most designers would call that embarrassing. I think it was a literacy engine. You learned nil, CLIENT vs SERVER, and AddCSLuaFile the way you learn swear words on a playground — by seeing them fail in public, then asking an older kid. The Facepunch wiki's entire learning path assumes this loop: break something, read the wiki, paste again.
Roblox later industrialized this with Luau tutorials and Studio. GMod did it accidentally with shame as pedagogy. The red error was the tutorial.
3. No goals beat live-service goals.
Every 2020s sandbox adds battle passes, quests, daily logins to fight churn. GMod has none, and outlived almost all of them. Why? Because goals expire, but tools don't. A quest is content you consume once. A physics gun + Lua + Workshop is a combinatorial machine that produces Trouble in Terrorist Town in 2009, Prop Hunt popularized by GMod and later copied into Call of Duty, Fortnite Battle Royale and Genshin Impact, and social-deduction servers still full in 2026.
My take: GMod stumbled into anti-churn. By refusing to tell you what to do, it never told you you'd finished. That's terrible for onboarding, great for decade-scale retention.
You don't need to agree with all three to use the pattern below.
What indie devs should actually steal
Ship the tool, not the level. GMod's store pitch is two sentences about spawning and welding. If your core interaction isn't fun with one prop and one friend, 100 quests won't save it.
Pick a scripting language a kid can break safely. Lua 5.1 is technically worse than modern C# or TypeScript. Socially it's better: instant reload, plain-text files, client/server in one file. Your mod system should optimize for time-to-first-flying-chair, not benchmark scores.
Make publishing part of play. Toybox to Workshop removed the "zip, upload to forum, explain install path" tax. Every extra step halves your mod supply. One-click subscribe is why 300k items exist.
Plan your exit from your engine on day one. Newman rode Source for 20 years, then needed Source 2 + C# to survive. If you borrow, budget for the divorce. Facepunch did — over 11 years from first S&box mention in 2015 to 2026 release.
Try the ideas in your browser first
You don't need a 10 GB install and a Counter-Strike texture dependency to test whether you like this kind of chaos. These free browser games isolate one GMod muscle at a time:
If you want the purest "no objectives, just mess around" feeling, start with Sandbox City – Cars, Zombies, Ragdolls! on EasyHub. It's an open city with drivable cars, zombie hordes and ragdoll physics where crashing, launching bodies and experimenting with collisions is the session — the same emergent loop as a GMod construct map, compressed to 30 seconds to fun.
If you want the "empty world, build something from nothing" half, try Mine Clone. Creative Mode gives you infinite blocks to shape castles or tunnels without survival pressure, which is surprisingly close to GMod's build-server meditation: spawn, stack, step back, show a friend.
If you want the comedy-physics half — the reason the physics gun never got old — load Stickman Destruction 3 Heroes. Every limb reacts independently, slow-motion replays reward spectacular failure, and optimizing launch angles feels like tuning thrusters and ropes, just funnier.
And if you want the "build, then fight your friends in what you built" evolution that turned GMod into TTT and Prop Hunt, queue BuildNow GG. Its Freebuild island is a no-stakes sandbox for 90s and edits, while V-Arena and BoxFight turn building into a weapon — the shortest path from sandbox toy to social shooter.
None of these replace GLua modding. They let you test which itch you actually have — building, breaking, performing, or competing — before you commit to learning if SERVER the hard way.
Bottom line
GMod bet that a borrowed AAA engine + a toy language + one-click sharing would beat a custom engine with better graphics. Twenty million copies and a 2026 Source 2 successor suggest it was right, at least for sandboxes where players are the content.
The uncomfortable part for engine purists: the worst technical choices — old Source branch, frozen Lua 5.1, trusting clients — were load-bearing social choices. Fix them too early and you might have killed the thing that made it spread.
Build your own engine if you must. But if you want an empire of mods, consider stealing Newman's actual trick: borrow something great, make it scriptable by children, and get out of the way.
Top comments (0)