Migrating from FiveM
Moving a FiveM server to Vital.sandbox
Overview
FiveM is a multiplayer framework for GTA V. It supports Lua and C# scripting, a CEF-based UI layer, and custom asset streaming on top of the GTA V engine. Server operators are subject to FiveM's Terms of Service.
Vital.sandbox is a standalone platform with no dependency on GTA V or its assets. Asset formats, the resource system, and scripting patterns differ from FiveM.
Platform comparison
| Area | FiveM | Vital.sandbox |
|---|---|---|
| Open source | Partially | Yes |
| Base game required | Yes — GTA V client install | No — standalone |
| Licensing | FiveM Terms of Service | No restrictions |
| Hosting | Self-hosted | Self-hosted |
| Discovery | External master list | External master list |
| Monetization | Your own implementation | Your own implementation |
| Revenue cut | None | None |
| Language | Lua or C# | Lua |
| Maintenance | Active | Actively developed |
| Rendering | GTA V renderer | Godot 4 — PBR, SDFGI, SSR, SSAO, volumetric fog, glow, full GFX API |
| Physics | GTA V physics | Godot physics — rigid body, character, vehicle, area, collision shapes, raycast |
| Networking | FiveM OneSync | Built-in sync — net IDs, ISyncable, server-authoritative replication |
| UI | NUI (CEF) | Native WebView, Canvas 2D, SVG, Render Targets, custom fonts and textures |
| Audio | GTA V audio | Audio 2D + Audio 3D — spatial attenuation, pitch, FX chain |
| Model formats | .YDR, .YDD, .YFT, .YBN | GLB |
| Texture formats | .YTD | JPG, PNG, WEBP, BMP, DDS, KTX, EXR |
| Collision formats | .YBN | Built into GLB |
| Audio formats | .AWC | OGG, WAV, MP3 |
| Database | MySQL via oxmysql (plugin) | MySQL — core.database with async query API |
| HTTP | PerformHttpRequest | util.http — GET/POST, custom headers, timeout |
| File I/O | LoadResourceFile / SaveResourceFile | util.file — read, write, hash, delete |
What carries over
FiveM's Lua scripting model is the closest of any platform to Vital.sandbox. Event patterns, resource structure concepts, and async patterns all have direct equivalents:
| System | FiveM | Vital.sandbox |
|---|---|---|
| Events | • AddEventHandler• TriggerEvent• TriggerClientEvent• TriggerServerEvent | • util.event.on• util.event.off• util.event.emit• util.event.emit_callback |
| Timers | • SetTimeout• SetInterval• ClearTimeout | • util.timer.create• util.timer.next_tick |
| HTTP | • PerformHttpRequest | • util.http.get• util.http.post |
| Database | • oxmysql (plugin) | • core.database.create• core.database_query.select• core.database_query.insert• core.database_query.update• core.database_query.delete• core.database_query.fetch• core.database_query.execute |
| 3D Models | • Custom streaming • .YDR / .YDD / .YFT / .YTD | • core.model.load• core.model.unload• core.model.create |
| Vehicles | • FiveM vehicle API • GTA V natives | • physics.vehicle_body.create• physics.vehicle_wheel.create |
| UI | • NUI (CEF browser) | • core.webview.create• core.svg.create• core.svg.create_from_raw |
| Audio | • GTA V audio system | • core.audio_2d.create• core.audio_3d.create |
| Images | • .YTD textures | • core.image.create |
| File I/O | • LoadResourceFile• SaveResourceFile | • util.file.read• util.file.write• util.file.exists• util.file.delete• util.file.hash• util.file.size• util.file.contents |
| Networking | • FiveM OneSync | • core.engine.get_entity_by_net_id |
| Async scripting | • Citizen.CreateThread• Wait | • util.thread.create• util.thread.current• util.promise.create |
What does not carry over
- GTA V assets — map, vehicles, peds, interiors, audio. You need your own assets in supported formats.
- GTA V native calls — anything that invokes GTA V natives (
GetEntityCoords,TaskGoStraightToCoord, etc.) addresses the GTA binary directly and has no equivalent. - C# resources — must be rewritten in Lua.
- FiveM resource manifest (
fxmanifest.lua) — Vital.sandbox usesmanifest.yamlwith a different structure. - OneSync entity locking — Vital.sandbox uses its own server-authoritative replication model via
ISyncable.