Mods
A mod is a folder. Put files in it at the paths the game knows, and they are laid over your disc when the game starts. Nothing from the disc goes into a mod, so mods can be shared freely.
What a mod can change
Textures and materials
Replace any texture by its hash, add normal, roughness, height and metal maps, write surface shaders, or drop in a colour LUT.
Dressing the streets
Scatter glTF ground cover at the foot of walls and beside kerbs, and hang props on the buildings’ walls.
Vehicles and weapons
New or replacement cars and guns as glTF, with their own handling, paints, lamps and grip.
Characters
Dress a character: hide parts of the original and add models skinned to its skeleton.
Voices and sounds
Re-voice any line in WAV, Ogg, FLAC or MP3, and replace sound effects.
Scripts and UI
Luau scripts with storage of their own, and windows drawn in the game’s style.
Missions
Mod missions offered in free roam, with markers, people and props placed in the world.
Plugins
WebAssembly plugins in a sandbox, for heavier work like building characters.
Whole worlds
A world mod brings another city, with its own roads, traffic network and parked cars.
A mod, start to finish
Every mod has a mod.ron that names it and says which mod API it was made for. The game provides API0.57.0; a mod runs on any later version with the same major number.
Lay out the folder
Use only the parts you need. A texture swap is a single PNG.
my-taxi/ mod.ron textures/<hash>.png a texture replaced normal/<name>.png its normal map vehicles/cab/ a car: glTF + vehicle.ron data/iop/english/1433/0.wav a voice line re-recorded scripts/main.luau a scriptDescribe it
Dependencies and conflicts are checked when the game loads. A mod that cannot load is switched off and the log says why.
( id: "my-taxi", name: "My taxi", version: "1.2.0", api_version: "0.57.0", description: Some("A cleaner black cab."), authors: ["Someone"], dependencies: [(id: "hd-textures", version: ">=1.0")], scripts: ["main.luau"], )Turn it on
List it in
settings.ron, or in the Mods tab of the options menu. A later mod overrides an earlier one.mods: ["hd-textures", "my-taxi"],
Scripts, UI and plugins
Scripts are Luau, the fast, sandboxed Lua that Roblox made. They react to the game, place people, props and markers in the world, run missions, and keep their own saved state. They draw windows in the game's own style and register their own hotkeys.
For heavier work a mod can carry a WebAssembly plugin. Plugins run sandboxed, see only their own folder, and can be called from scripts.
-- scripts/main.luau
local format = require("format")
local since = 0
game.on("enter_vehicle", function(name)
game.show_text("Driving the " .. name, 2)
since = 0
end)
game.on("tick", function(dt)
local v = game.vehicle()
local p = game.player()
if not (v and p.in_vehicle) then
return
end
since += dt
if since >= 5 then
since = 0
game.show_text(format.speed(v.speed), 1.5)
end
end)Server mods
Multiplayer servers run their own mods: WebAssembly components that hear the server's events and act on its world, in a sandbox with nothing else in it. They speak the same vocabulary as game mods: people, street props, markers and interactions.
A server can send its players the client mods it needs, and large ones come from a mod mirror you can host yourself behind any HTTPS proxy.
London RP
The largest example: a roleplay server where characters keep their money, licences and cars between sessions. Players work shifts driving cabs, buses and ambulances, take their driving tests, race for money and answer to players on police duty.
The HD texture pack
The community's AI-upscaled pack, made for PCSX2, works as it is. Import it once and add"hd-textures" to your mods:
getaway-mods import-pcsx2 <the pack's replacements folder>Texture mods listed after it override its textures, and a generated-materials mod can add normal and roughness maps on top.