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

AreaFiveMVital.sandbox
Open sourcePartiallyYes
Base game requiredYes — GTA V client installNo — standalone
LicensingFiveM Terms of ServiceNo restrictions
HostingSelf-hostedSelf-hosted
DiscoveryExternal master listExternal master list
MonetizationYour own implementationYour own implementation
Revenue cutNoneNone
LanguageLua or C#Lua
MaintenanceActiveActively developed
RenderingGTA V rendererGodot 4 — PBR, SDFGI, SSR, SSAO, volumetric fog, glow, full GFX API
PhysicsGTA V physicsGodot physics — rigid body, character, vehicle, area, collision shapes, raycast
NetworkingFiveM OneSyncBuilt-in sync — net IDs, ISyncable, server-authoritative replication
UINUI (CEF)Native WebView, Canvas 2D, SVG, Rendertargets, custom fonts and textures
AudioGTA V audioAudio 2D + Audio 3D — spatial attenuation, pitch, FX chain
Model formats.YDR, .YDD, .YFT, .YBNGLB
Texture formats.YTDJPG, PNG, WEBP, BMP, DDS, KTX, EXR
Collision formats.YBNBuilt into GLB
Audio formats.AWCOGG, WAV, MP3
DatabaseMySQL via oxmysql (plugin)MySQL — core.database with async query API
HTTPPerformHttpRequestutil.http — GET/POST, custom headers, timeout
File I/OLoadResourceFile / SaveResourceFileutil.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:

SystemFiveMVital.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 uses manifest.yaml with a different structure.
  • OneSync entity locking — Vital.sandbox uses its own server-authoritative replication model via ISyncable.

On this page