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.
Nine 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 |
-- 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 |
| 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 254 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 DFFThe Neon Lua API is the complete reference, with signatures, lifecycle rules, source commits and test evidence for every entry.
| Neon wiki | Everything: guides, Lua API, evidence |
| Synchronized NPCs | How shared native AI works |
| Extended world | Boundaries, radar, water, seabed |
| 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.














