Part 1 final build: Los Santos RP written on camera by the agent
rp_core (sessions, scrypt auth, self-written MySQL-wire driver rp_db), county-records NUI: residency-file auth, identity-record character intake, survey-grid spawn, procedural night-city loading screen. Secrets replaced with .example files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Los Santos RP — server notes
|
||||
|
||||
Everything here was written for this server. No ESX, no QBCore, no downloaded
|
||||
resources: `cfx-server-data` is not used at all, and the bundled `chat` and
|
||||
`monitor` resources are not started.
|
||||
|
||||
## Layout
|
||||
|
||||
/opt/fivem/server FXServer artefacts (build 25770, the recommended one)
|
||||
/opt/fivem/data server-data root; run FXServer with this as cwd
|
||||
server.cfg main config
|
||||
secrets.cfg licence key + DB credentials, mode 600
|
||||
resources/[rp]/ our resources
|
||||
/opt/fivem/bin supervise.sh (keep-alive), rcon (console pipe)
|
||||
/opt/fivem/logs server.log, rotated at 200MB
|
||||
/opt/fivem/etc/schema.sql the database schema
|
||||
|
||||
## Resources
|
||||
|
||||
| resource | what it is |
|
||||
|---------------|------------|
|
||||
| `rp_db` | MariaDB client speaking the MySQL wire protocol directly over a TCP socket — handshake, `mysql_native_password`, text result sets, connection pool, transactions. No npm packages. Lua front end in `lib/db.lua`. |
|
||||
| `rp_core` | Config, shared validation, appearance model, scrypt password hashing, the player registry, and the client/server request bridge. |
|
||||
| `rp_session` | Connection gate (bans, capacity), accounts, characters, spawn. Every decision is made here; the client can only ask. |
|
||||
| `rp_loading` | Loading screen: procedural night-city flyover on canvas, progress bound to the game's real load events, ambience synthesised with the Web Audio API. |
|
||||
| `rp_ui` | Sign in / register, character creation with a live ped preview, spawn picker. Scripted cameras live in `client/camera.lua`. |
|
||||
| `rp_selftest` | Checks the account/character data path on every boot and proves it survived the restart. |
|
||||
| `rp_dbtest` | Driver test suite. Not started by default; `ensure rp_dbtest` to run it. |
|
||||
|
||||
## Operating it
|
||||
|
||||
service fivem start|stop|restart|status
|
||||
rcon <command> # e.g. rcon refresh, rcon status
|
||||
tail -f /opt/fivem/logs/server.log
|
||||
|
||||
`supervise.sh` restarts FXServer if it dies, backing off from 5s up to 5min so
|
||||
a server that cannot start (bad key, database down) does not hammer Cfx. It
|
||||
also holds a FIFO open on the server's stdin — FXServer quits the moment stdin
|
||||
reaches EOF, and that FIFO is what `rcon` writes to.
|
||||
|
||||
## Starting on boot
|
||||
|
||||
There is no systemd in this container. The platform runs a login shell as PID 1,
|
||||
which sources `/etc/profile.d/redl-autostart.sh`, which starts everything marked
|
||||
in `/etc/redl/enabled`. Both `mariadb` and `fivem` are marked, and `/etc/init.d/fivem`
|
||||
waits for MariaDB to answer before starting the server.
|
||||
|
||||
## Database
|
||||
|
||||
MariaDB, database `rp`, application user `rp@127.0.0.1` with only
|
||||
SELECT/INSERT/UPDATE/DELETE. Passwords are scrypt with a per-password salt and
|
||||
the cost parameters stored in the hash. Tables: `accounts`, `auth_attempts`,
|
||||
`characters`, `transactions`, `inventory`, `vehicles`.
|
||||
|
||||
Every query goes through `DB.Query`/`DB.Insert`/... with `?` parameters.
|
||||
`CLIENT_MULTI_STATEMENTS` is deliberately not negotiated, so even a failure of
|
||||
the escaper could not turn a parameter into a second statement.
|
||||
|
||||
## Not yet built
|
||||
|
||||
The pre-spawn experience and the framework underneath it are done. Gameplay on
|
||||
top of it — chat, HUD, inventory, jobs, vehicles, policing, medical — is not.
|
||||
`characters`, `transactions`, `inventory` and `vehicles` already have their
|
||||
tables and the money API in `rp_core/server/player.lua` is journalled and ready.
|
||||
Reference in New Issue
Block a user