Skip to main content

User accounts

A user represents an identity within the server. Every user is registered and has a profile for other users to find and become friends with or join groups and chat.

A user can own records, share public information with other users, and authenticate via a variety of different social providers.

info

The system owner identity is represented by a user account with a nil UUID (00000000-0000-0000-0000-000000000000).

Fetch account

When a user has a session you can retrieve their account. The profile contains a variety of information which includes various “linked” social providers.

Some information like wallet, device IDs and custom ID are private but part of the profile is visible to other users.

Public FieldDescription
user.idThe unique identifier for the user.
user.usernameA unique nickname for the user.
user.display_nameThe display name for the user (empty by default).
user.avatar_urlA URL with a profile picture for the user (empty by default).
user.langThe preferred language settings for the user (default is “en”).
user.locationThe location of the user (empty by default).
user.timezoneThe timezone of the user (empty by default).
user.metadataA slot for custom information for the user - Read only from the client.
user.edge_countNumber of friends this user has.
user.facebook_idFacebook identifier associated with this user.
user.google_idGoogle identifier associated with this user.
user.gamecenter_idGameCenter identifier associated with this user.
user.steam_idSteam identifier associated with this user.
user.create_timeA timestamp for when the user was created.
user.update_timeA timestamp for when the user was last updated.
user.onlineA boolean that indicates whether the user is currently online or not.


Private FieldDescription
emailEmail address associated with this user.
devicesList of device IDs associated with this user.
custom_idCustom identifier associatedwith this user.
walletUser’s wallet - Read only from the client.
verify_timeA timestamp for when the user was verified (currently only used by Facebook).

User metadata

You can store additional fields for a user in user.metadata which is useful to share data you want to be public to other users. We recommend using user metadata to store very common fields which other users will need to see. For example, use metadata to enable users to show biographical details if desired, or to display their character name, level, and game statistics.

For all other information you can store records with public read permissions which other users can find.

Metadata is limited to 16KB per user. This can be set only via the script runtime, similar to the wallet.

The following example showcases using user metadata to store a VIP status which is then used as part of a before join tournament hook which only allows VIP members to join.

Virtual wallet

LayerG has the concept of a virtual wallet and transaction ledger. LayerG allows developers to create, update and list changes to the user’s wallet. This operation has transactional guarantees and is only achievable with the script runtime.

With server-side code it’s possible to update the user’s wallet.

The wallet is private to a user and cannot be seen by other users. You can fetch wallet information for a user via Fetch Account operation.

Online indicator

LayerG can report back user online indicators in two ways:

  1. Fetch user information to see if they are online. The user presence will be detected if they have an active socket connection to the server and did not set appearOnline=false.
  2. Publish and subscribe to user status presence updates. This will give you updates when the online status of the user changes (along side a custom message).

Fetch users

You can fetch one or more users by their IDs or handles. This is useful for displaying public profiles with other users.

You can also fetch one or more users in server-side code.

Update account

When a user is registered most of their profile is setup with default values. A user can update their own profile to change fields but cannot change any other user’s profile.

With server-side code it’s possible to update any user’s profile.

Delete account

You can delete a user’s account on the server. This will remove all data associated with the user.