Players only need the Windows client installer. Server owners should use the separate server package. Both links track the latest explicitly published Neon release.
New to Neon? Start with the documentation, feature guides, and complete Lua API.
An independent MTA:BLUE-derived playground for deeper GTA:SA engine work.
MTA:SA Neon is an experimental fork of Multi Theft Auto: San Andreas that opens up parts of the GTA:SA engine that were never exposed to scripts: a bigger world, higher engine limits, and GTA's own native systems turned into Lua primitives.
Its flagship system brings GTA:SA's single-player NPCs and traffic into a shared multiplayer world, running the original AI on one authoritative client.
Neon renders all of this itself. Nothing to install and no ASI files: every option is a toggle in the settings menu, and servers can drive them too.
Draw distance
Distant lights at night
PS2-style color
Neon also ships its own GTA:SA-inspired menu and server browser, with an optional Discord identity.
A selection of systems that used to be locked inside the engine. Each clip is a real in-game recording.
![]() Native CULL zones Edit GTA's culling from Lua |
![]() Dynamic world objects Track, move, damage and break San Andreas' own props |
![]() Runtime collision Build collision shapes from Lua, no .col file |
![]() Custom foliage Grow GTA's own vegetation anywhere |
![]() Managed fire Synchronized fires that keep their identity and follow a target |
![]() SA-MP maps Load Pawn exports directly, retextured material slots included |
![]() Scriptable birds Steerable flocks with their own renderer, past GTA's six slots |
![]() Model 2DFX effects Drive the lights baked into GTA models, no custom assets |
![]() Object fracture Make any object breakable at runtime, no .dff editing |
![]() Object physics Give any object GTA's real rigid-body simulation, synchronized |

Custom vehicle audio and backfires
Copy an existing Assetto Corsa or Soundize .bank, assign it to a car, and Neon makes it follow the RPM, throttle and gears automatically.
Other players hear configured cars too, and Lua can trigger a backfire pop with matching exhaust flames.
Watch the in-game recording with sound
-- Build a wall's collision from a Lua table, then change it live
local col = engineLoadCOL({
boxes = { { position = { 0, 0, 0 }, size = { 6, 0.5, 2 }, material = 1 } },
})
engineReplaceCOL(col, modelId)
-- Grow GTA's own grass inside a triangle
local patch = createFoliage(v1, v2, v3, 10, 1.5)
patch.density = 2.0
-- Light a synchronized fire, then move it onto a car while it burns
local fire = createFire(x, y, z, { duration = 10000, strength = 1.5 })
setFireTarget(fire, theVehicle)Download the Windows client installer, run it, and join a server from the Neon browser. Neon checks for newer signed releases on launch and offers them as optional updates.
Server owners use the separate server package. Both downloads are linked at the top of this page.
| Area | MTA:SA | MTA:SA Neon |
|---|---|---|
| Ambient NPCs and traffic | Local only, disabled by MTA | Server-owned peds running GTA's native AI, with one syncer and handoff |
| World size | Approximately -3,000 to +3,000 | -10,000 to +9,999, with matching radar and F11 map |
| GTA corona pool | 64 | 4,096 |
| GTA 3D marker pool | 32 | 4,096 |
| Visible entity pointers | 1,000 | 8,192 |
| Collision authoring | A packaged .col file |
Generated from a Lua table and rebuildable live |
| Vegetation placement | Whatever the map contains | Resource-owned foliage driving GTA's plant manager |
| Fire | Client-only, returns a boolean, no handle | Synchronized fire elements you can retarget and change while burning |
| Ambient birds | Six native slots, no script access | Resource-owned bird elements you steer, restyle and shoot; 128 verified at once |
| Model 2DFX effects | Baked into models, not exposed | Read, edit, add and remove them from Lua, with per-resource rollback |
| Breakable objects | Only models shipping the breakable plugin | Any streamed object, fractured from its own geometry |
| Object physics | Static unless scripted frame by frame | Opt-in native rigid-body simulation, with velocities synchronized through syncer changes |
| Ropes | Only the legacy createSWATRope call |
All eight native rope types as synchronized elements, with cargo attachment and slot leasing |
| Vehicle audio | GTA's sound assigned to each model | Import prepared engine banks from other car projects, assign them to models, and let Neon follow RPM, throttle and gears, with scriptable backfire sounds and exhaust flames |
| Distant lights and draw distance | Not integrated | Built in, 300 to 5,000 units, off by default |
That is the short list. The full comparison table covers every pool, boundary and subsystem.
Neon adds 302 documented Lua functions on top of MTA's API, plus new elements and events. A few, to give the shape of it:
engineSetRadarMapTile(column, row, txd) -- resource-owned extended radar tiles
engineCreateCullZone(...) -- native CULL zones from Lua
createFoliage(v1, v2, v3, surface, density) -- GTA's native vegetation
engineSetCOLData(col, collisionTable) -- rebuild collision in place
getAmbientPedSpawnCandidate(origin, "cop") -- ask GTA where a ped belongs
setFireTarget(fire, vehicle) -- a burning fire follows an element
createBird(x, y, z, { preset = "desert" }) -- flocks with their own renderer
setModel2DFXProperty(1226, 0, "color", c) -- recolour every lamp post of a model
createObjectBreakEffect(obj, { force = 4 }) -- fracture any object, no breakable DFF
setObjectDynamicPhysics(ball, true) -- real GTA physics, synchronized
createRope(x, y, z, { type = "wreckingBall" }) -- GTA's own cranes and winches
enginePlayVehicleAudioBackfire(car, 2) -- a strong pop and flames from the exhaustThe Neon Lua API is the complete reference, with signatures, lifecycle rules, source commits and test evidence for every entry.
The Neon CLI gives an AI coding agent the complete MTA + Neon API and the exact context for your gamemode. The agent can find the right functions, read their arguments and client/server side, check common project mistakes, and verify whether the server, client, and GTA actually joined a test—all locally, without an MCP server.
Start once from your gamemode folder:
neon init --workspace /path/to/gamemode --profile neon-pair --jsonThen point the agent to the generated NEON_AGENT.md and let it use the CLI while it works. The same portable ZIP supports Windows and macOS with Python 3.10 or newer.
Download Neon CLI Portable v1.0.0 · Setup and complete agent workflow
| Neon wiki | Everything: guides, Lua API, evidence |
| Synchronized NPCs | How shared native AI works |
| Extended world | Boundaries, radar, water, seabed |
| Neon CLI for AI agents | Give an agent the complete API, project context, checks, and runtime proof |
| Tooling and verification | What is actually proven, and what is not |
| BUILDING.md | Compiling the client and server |
Deeper technical notes live in LIMIT_PATCHING.md, EXTENDED_RADAR.md, STORY_RUNTIME.md, ENTITY_PERFORMANCE.md and MULTI_CLIENT.md.
Neon is built on Multi Theft Auto: San Andreas and preserves its complete history and GPLv3 licensing. Neon-specific experiments and builds are maintained independently; use the upstream project for official MTA:SA downloads, documentation, and support.
Neon is not affiliated with or endorsed by the Multi Theft Auto team.
Unless otherwise specified, all source code hosted on this repository is licensed under the GPLv3 license. See the LICENSE file for more details.
Grand Theft Auto and all related trademarks are © Rockstar North 1997–2026.















