Skip to main content
The page runs in the player’s game, and injected scripts can post anything to it. ug-multicharacter treats every request as untrusted, and checks it at three levels: the page bridge in Lua, the ug-core callback, and the server rule.

What is checked

Every callback has a schema and a rate limit through ug-core. One request at a time per player: a second one while the first waits on the database is refused. The page bridge also refuses more than 30 page events per second.

Privacy and isolation

  • The page gets names, birth dates, last played dates, street names and death states. Never character ids, raw data or coordinates.
  • While choosing, each player is alone in a private routing bucket, so nobody sees another player’s scene or ped. With ug-core’s sessions module, it is a session of its own.

What it never does

  • Load a character before the player arrived.
  • Trust a coordinate, a character id or a spawn choice from the page.
  • Revive a downed or dead character by sending it somewhere else.
  • Tell a kicked player which check failed.