What a Server Object is
What a Server Object is, what it gives a game (server-owned values every player sees change, and functions only the server can carry out), how its parts fit, and what you need before you use one.
Create a Server Object type
Describe a type of Server Object with a UCrowdyServerObjectDefinition data asset in its Blueprint-style editor (toolbar, Server Code tab, Server Object panel with its Variables and Functions, and a Details tab that follows the selection), variables, inputs and outputs added in the asset or taken from a struct, every setting on it and the platform term behind each, who can call each Server Function, the field types a Server Object can carry, and how to change a type without losing data.
Access, members and timers
The settings that make the server enforce who may read a Server Object and who may call each Server Function (Readable By, Callable By, Cooldown, Value Range), give it members (Members From This Object or a Crowdy Team, Max Members, the Join, Leave, Add Member, Remove Member, Make Leader and Set Open for Joining functions, Open for Joining, the leader rules), run timers and player events, and let one type call another (Call other Server Objects), with what a refused player sees and the names logic.rs gets.
Relate Server Objects to each other
How to model relations with Server Objects: one to one (a player, an actor or a team and its own object), one to many (a registry that lists other objects by Instance Id), many to one (many players on one shared object, many objects reporting to one), many to many (players and lobbies, teams and their objects), and good practice for ids, ownership, calls between types, limits and Readable By.
Write its server logic
Generate a Server Object type's server code (a Rust crate) from its definition asset with Generate Server Code, the Server Code tab of the asset's editor, what each generated file holds, how to write your Server Functions in logic.rs or in a file of your own with Code Source, viewing, comparing and restoring what an earlier deploy sent, the revisions.json record to commit, what the generated code already does for you, regenerating after a change, and how to build and deploy the crate today.
Deploy it with Server Compute
Build and deploy a project's Server Object code from the Server Compute page in Crowdy Studio, which types changed since the live version, what a deploy sends and replaces, removing a type, versions and rolling back, switching one type or the whole app off and on, reading logs and following one call, call activity, the Settings tab, and the same operations from the command line for CI.
From Blueprint
4 items
From C++
3 items
Troubleshooting
What to check when a Server Object stays in Connecting or fails, a value is not what you expect, or a call is refused (every call outcome and the refusals that come from your server code), and how to watch one work with crowdy.exec.trace. It applies to Blueprint and C++ alike.
Unreal and ck-exec names
The Unreal SDK's name for each part of a Server Object next to the name ck-exec uses for it, for reading the platform's pages, its operations tools and its logs.
Examples
3 items
Move from Game Models
What the Game Model deprecation does to a project (C++ warnings, one Blueprint warning per asset, calls that fail at once, Crowdy Studio and CrowdyMass), which Server Object feature replaces each Game Model one, the steps to move a system, and why Server Objects are not marked on a class.