# Crowdy Unreal SDK > The Unreal Engine plugin for Crowded Kingdoms, driven from C++ or Blueprint. Every page is listed below, grouped into sections. Each section is one plain-text file you can read whole, so pull the one a task needs. The file with every section in it is too large for most context windows. ## Start here The introduction, installation, quickstart and the page for AI agents. - [Start here as one file (64 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-start.txt) - [Crowdy Unreal SDK](https://docs.dev.crowdedkingdoms.com/unreal-sdk/intro): What the Crowdy Unreal SDK is, the two planes of state it is built on, and how to read the rest of this guide. - [Installation](https://docs.dev.crowdedkingdoms.com/unreal-sdk/installation): Add the CrowdySDK plugin to a UE 5.8 C++ project, add its module dependencies, and connect it to your app with Crowdy Studio. - [Quickstart](https://docs.dev.crowdedkingdoms.com/unreal-sdk/quickstart): Sign in and sync your app, sign the player in at runtime, make your player pawn an entity the server can see, watch your own reflection, then build one lantern that shows an entity, an RPC event, and a replicated property. - [For AI Agents](https://docs.dev.crowdedkingdoms.com/unreal-sdk/for-ai-agents): The fastest correct path for a coding agent working in an Unreal project that uses the Crowdy SDK: where each kind of state goes, the marker vocabulary with one example each, what breaks silently in a cooked build, the settings never to hand-edit, how to do from a shell what the editor's Server Compute and Crowdy Studio pages do, and the console variables for testing alone. ## Concepts The ideas the rest of the SDK documentation assumes: the two planes of state, entities, sessions, hosts, and how Blueprint and C++ share one surface. - [Concepts as one file (21 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-concepts.txt) - [The Two Planes](https://docs.dev.crowdedkingdoms.com/unreal-sdk/concepts/two-planes): Why the SDK splits networked state into a fast, client-owned view plane and a server-enforced truth plane, and how to tell which one a field belongs to. - [Entities, Identity, and Ownership](https://docs.dev.crowdedkingdoms.com/unreal-sdk/concepts/entities-identity-ownership): How every networked actor gets a NetID that every client agrees on, who is allowed to write its view state, and the difference between an owner and a proxy. - [Sessions and Presence](https://docs.dev.crowdedkingdoms.com/unreal-sdk/concepts/sessions-and-presence): What the word session means in the SDK, how the server decides a player is present, and where a match, a lobby or a room lives. - [The Host Is a Convention](https://docs.dev.crowdedkingdoms.com/unreal-sdk/concepts/host-is-a-convention): Why the elected host is a coordination convention on the view plane, not a security boundary, and when to reach for the server-validated host check instead. ## Crowdy Studio (Management) Connect your app to your project and author teams, channels, grids, and more from inside the editor. Start here before you write any game code. - [Crowdy Studio (Management) as one file (50 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-studio.txt) - [Crowdy Studio Overview](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/overview): What Crowdy Studio is, when to use it, and the pages in its sidebar. - [Signing In](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/sign-in): The account and organization-token sign-in options in Crowdy Studio, what each grants, and where the session is kept. - [Projects and Apps](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/projects-and-apps): Picking an organization and app on the Project page, creating a new app with its datacenter, and what the page's cards mean. - [Config Sync](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/config-sync): What Config Sync writes into your project, which settings it owns versus the ones you edit, where they land on disk, and how to list apps, create one and sync from the command line, along with the command line's operations for access features, teams, channels and grids. - [Teams and Channels](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/teams-and-channels): Author teams and channels in Crowdy Studio, or create and manage them at runtime with UCrowdyTeams and UCrowdyChannels. - [Grids](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/grids): Define spatial permission regions on the Grid page in Crowdy Studio. Grids are authored and enforced entirely on the server; game code never reads them. - [Inspector and Registry](https://docs.dev.crowdedkingdoms.com/unreal-sdk/studio/inspector-and-registry): Watch a running Play in Editor session in the Inspector, and rebake the Crowdy metadata that packaged builds read in the Registry. ## Runtime SDK The view plane in game: signing the player in, map profiles, entities and spawning, the entity component, RPC events and their routing, Crowdy State, continuous state, host authority and ownership transfer, replicated subsystems, rendering backends, channels, the connection, and video frames. - [Runtime SDK as one file (203 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-runtime.txt) - [Player Sign-in](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/player-sign-in): The smallest sign-in that gets a player onto the wire: one call from the Game Instance in C++, or one small widget in Blueprint. Everything else about accounts and tokens is on the Authentication page. - [Map Profiles](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/map-profile): The data asset that switches the SDK on for a map, how the SDK finds it, what each field controls, and the one field the shipped default leaves empty. - [Entities and Spawning](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/entities-and-spawning): Spawn an entity at runtime so every client sees the same actor, destroy it everywhere, and understand how a remote client rebuilds an entity it has never met. - [Entity Component](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/entity-component): Every callable, event, and setting on UCrowdyEntityComponent, one line each, with the two examples that show the accessor family and the lifecycle events. - [RPC Events in C++](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/rpc-events-cpp): Declare a CrowdyEvent receiver, generate its call site with CROWDY_EVENT, and know which parameter types, sizes, and references make it across the wire. - [RPC Events in Blueprint](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/rpc-events-blueprint): Tick Crowdy Replicates on a Custom Event, pick a recipient, and call it like any other event; the body runs on every recipient with no second node. - [Recipients and Routing](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/recipients-and-routing): The four CrowdyEvent recipients, what a chunk is and how far a spatial event travels, what reliable means on the channel path, and the targeted sends for callers with no actor. - [Crowdy State](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/crowdy-state): Mark a property CrowdyState and the owning client diffs it every tick and ships the change to every proxy; the five metadata keys, the notify, the keyframe, what a property may be and what is rejected at discovery, the static Mark Crowdy State Dirty nodes and the host push they become on an entity you do not own, host precedence, and how to see a property that silently dropped out. - [Continuous State](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/continuous-state): Dynamic entity mode: the transform snapshot the owner sends every replication interval with nothing to write, when that default is enough, and the custom executor path for a snapshot that carries more. - [Host Authority](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/host-authority): The calls that ask whether this client is the elected host, host-owned world entities, the host subsystem and its event, and the server-validated check for the moments a local answer is not enough. - [Ownership Transfer](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/ownership-transfer): Move an entity's owner at runtime with a request and a grant: the four static nodes, the two subsystem events, what happens to in-flight state, and why ignoring a request is the rejection. - [Replicated Subsystems](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/replicated-subsystems): Give a world or game-instance subsystem Crowdy State properties and CrowdyEvent functions by inheriting one of two bases, the enrollment order that must hold, and the two things a subsystem cannot do that an actor can. - [Rendering Backends](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/rendering-backends): How a remote entity's continuous state becomes something on screen: the two backends the SDK ships (the default actor pool and the Crowdy Mass Rendering Backend), the policy class you subclass to apply your own state struct, the pool policy, and how to write a backend of your own. - [Channels](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/channels): Named, non-spatial message groups: create and join one, ban a member, publish raw bytes to every member, receive them, and understand the session channel every client joins and the three kinds of traffic that ride it. - [Connection and Reconnect](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/connection-and-reconnect): How the realtime connection comes up, what it reports while it is up, how it reconnects on its own when it drops, the two events a game reacts to, bundled sends, and the per-frame receive budget. - [Video Frames](https://docs.dev.crowdedkingdoms.com/unreal-sdk/runtime/video-frames): Receive another player's webcam frames as whole encoded images: bind once, read the bytes, tell senders apart by the exact id, and decode them yourself. ## Crowds with Mass Draw hundreds to thousands of remote players as rows of a crowd instead of one actor each. Turn the Mass rendering backend on for a map, make a character draw as a crowd row, give the crowd an animation set, poses and one-shot actions, promote close entities to real actors, run your code on a row, add your own crowd data, then target an entity and read its events, fields and server values from Blueprint or from C++. Fix what goes wrong with the troubleshooting page and follow the worked example in Oakford. This section is split into 4 files, each readable whole. ### Crowds with Mass: top-level pages - [Crowds with Mass: top-level pages as one file (177 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-mass.txt) - [Draw a crowd with Mass](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/draw-a-crowd-with-mass): What Crowds with Mass is, when to choose it over the actor pool, the three ways one entity is drawn, why you author everything once on the actor class, how view state and server values stay apart, and the order to read this section in. - [Turn Mass on for a map](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/turn-mass-on-for-a-map): Choose the Crowdy Mass Rendering Backend on a map profile, start from the shipped Mass profile, set the Backend Config and the Crowdy Mass project settings, flag the character's material, learn that the SDK turns off the engine's animation pass for you, add the module dependency, and check the crowd with one client. - [Make a character draw as a crowd row](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/make-a-character-draw-as-a-crowd-row): Set up the Crowdy entity component and the state struct a crowd row reads, give the class a skinned mesh, check it with crowdy.mass.derive, and learn where a row's entity config comes from. - [Set up the animation set](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/set-up-the-animation-set): Create a Crowdy Mass Anim Set and the animation bank behind it, set the bank on the set, connect it to an authored config's mesh, bind the set to a character class, and author gaits. - [Play poses and one-shot actions](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/play-poses-and-one-shot-actions): Hold a pose on a crowd row from a replicated enum with CrowdyState and CrowdyHeartbeat, and play one-shot actions with Send Crowdy Action or an event marked CrowdyAction (Is A One-Shot Action). - [Promote close entities to actors](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/promote-close-entities-to-actors): Build a near tier shell so a crowd row that comes close is drawn as a real pooled actor with its own animation Blueprint: the shell, Entity Transform Offset, pooling, distances and counts, the animation getters, the shell's animation Blueprint, and demotion. - [Run your code on a crowd row](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/run-your-code-on-a-crowd-row): What a Crowdy event body does when the observer draws the entity as a crowd row: the per-class stand-in, what cannot work there, which recipients reach rows, registered handlers and what they replace, and the rate limit. - [Add your own crowd data](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/add-your-own-crowd-data): Give crowd rows a value of your own: write a Mass fragment, trait and processor, land a replicated Crowdy State property on the fragment with RegisterStateFragmentField, and check it with crowdy.mass.state.verdict. - [Fix a crowd that does not look right](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/troubleshooting): Fix a grey crowd, rows that never appear, stand in bind pose, float or play another row's clip, poses and actions that do nothing, missing server values, a class that never promotes, and a Blueprint field read that answers false. Lists the crowdy.mass console commands and the order to check a new setup. ### Crowds with Mass: From Blueprint - [Crowds with Mass: From Blueprint as one file (41 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-mass-from-blueprint.txt) - [Target an entity](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-blueprint/target-an-entity): Get a Crowdy Mass Entity Target from a Blueprint: trace or overlap the crowd, read the hit, check a target with Is Crowdy Mass Target Live, and set up hit zones. - [Call an event on it](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-blueprint/call-an-event-on-it): Act on a crowd entity from a Blueprint: send a one-shot action by name with Send Crowdy Action, or send any Crowdy event with Call Crowdy Event on Entity, using the Event dropdown and the pins it grows. - [Receive its events](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-blueprint/receive-its-events): React in a Blueprint graph when a Crowdy event arrives for a crowd entity with the Receive Crowdy Event on Entity node, and learn what a bound graph replaces. - [Read and write its fields](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-blueprint/read-and-write-its-fields): Read and write the fields of a crowd row from a Blueprint with the Get and Set Crowdy Mass Field nodes, find out why a read answers false, and set a pose by name. - [Read its server values](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-blueprint/read-its-server-values): Read the values a Server Object keeps about a crowd entity from a Blueprint: set up the class, read a value with Get Server Value, and react to a change with Receive Server Values Changed on Entity. ### Crowds with Mass: From C++ - [Crowds with Mass: From C++ as one file (48 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-mass-from-cpp.txt) - [Target an entity](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-cpp/target-an-entity): Get an FCrowdyMassEntityTarget from C++: trace or overlap the crowd with UCrowdyMassTraceBlueprintLibrary, read the hit, check a target with IsTargetLive, and set up hit zones. - [Call an event on it](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-cpp/call-an-event-on-it): Act on a crowd entity from C++: send a one-shot action by name with UCrowdyMassTargetLibrary::SendEntityAction, or send any Crowdy event with the CROWDY_MASS_SEND_EVENT macro. - [Receive its events](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-cpp/receive-its-events): React in C++ when a Crowdy event arrives for a crowd entity with UCrowdyMassEntitySubsystem::RegisterEventHandler, write an action with CrowdyMassWriteAction, and learn what a registered handler replaces. - [Read and write its fields](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-cpp/read-and-write-its-fields): Register, read and write the fields of a crowd row from C++ with CrowdyMassFields::RegisterField and the UCrowdyMassTargetLibrary Get and Set field functions, and set a pose by name. - [Read its server values](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/from-cpp/read-its-server-values): Read the values a Server Object keeps about a crowd entity from C++: set up the class, read a value with UCrowdyMassServerValuesLibrary::GetServerValueAs, and react to a change with UCrowdyMassServerRecordsSubsystem. ### Crowds with Mass: Examples - [Crowds with Mass: Examples as one file (37 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-mass-examples.txt) - [Market night in Oakford](https://docs.dev.crowdedkingdoms.com/unreal-sdk/mass/examples/market-night-in-oakford): A worked Crowds with Mass example in Oakford, end to end: the map profile, the material flag, the anim set and bank, a sitting pose, a wave and a cheer, a near tier actor for close players, a torch brightness field, and raiders whose Health is read from the server. ## Server Logic Game state the server owns and the code that changes it; every player sees each change. Start with what a Server Object is, then create a type, set who may read and call it, relate objects to each other, write its server logic and deploy it with Server Compute. Add the Game Kit's starters as types of your own. Keep a record per entity for a crowd. Send messages to everyone listening. Make a Server Function Library for logic that keeps nothing between calls. Use it from Blueprint or from C++, fix what goes wrong with the troubleshooting page, read the Unreal and ck-exec names side by side, and follow the worked examples in Oakford. It also says how to move from the removed Game Models to Server Objects. This section is split into 4 files, each readable whole. ### Server Logic: top-level pages - [Server Logic: top-level pages as one file (422 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-exec.txt) - [What a Server Object is](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/overview): 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](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/create-a-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, Functions and Server Messages, and a Details tab that follows the selection), variables, inputs and outputs added in the asset or taken from a struct, the messages the server sends to everyone listening and who may hear them, every setting on it (including Kind, and the Scaling of a Server Function Library) 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](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/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, who receives each variable of a record, the Platform Data settings such as Reads World Data and Changes the World, a type players cannot reach, 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, a Server Function Library, or any type with Can Call Any Type) or hear another's messages (Listen To), with what a refused player sees and the names logic.rs gets. - [Relate Server Objects to each other](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/relate-server-objects): 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](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/write-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, sending a message to everyone listening and listening to another type's messages from server code, the server code of a Server Function Library (the Library struct, a library calling a Server Object, a Server Object calling a library, what a library cannot do), 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](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/deploy-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, a deploy built in several parts and server code reused by its digest, adding a Game Kit starter, removing a type, versions and rolling back, switching one type or the whole app off and on, restarting a type and moving running Server Objects to a new deploy, the app's use against its limits, calling a Server Only or Developers Only function as the developer, reading logs and following one call, call activity, the Settings tab, and the same operations from the command line for CI, including generating server code, checking the sign-in, defining a Server Object type from a JSON file, and removing, renaming or restarting types. - [Use the Game Kit starters](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/use-game-kit-starters): Add the platform's Game Kit starters (world, matchmaker, session, leaderboard, player, market, npcs, minigame, tactics, director, instance, territory, zone, deck, arena, race and ball) to a project as ordinary Server Object types with Add starter in Server Compute or -op=addstarter, world as the app's root and Get Players Online, using them from Blueprint and C++ with the nodes you already know, a starter's collection as records (the world's resource nodes), a session posting its scores to a leaderboard, the Find Match node and Is My Turn, the Refused outcome and its Code, a starter's actors with Kit Actors and the Crowdy Kit Actor component, Send Once, snake_case field names, the C++ value structs, the functions only a developer calls, running a duel, a battle, a wave defence, a dungeon run, a war or a shrinking circle with the six game-mode starters, a card game with a hand only its player sees with the deck starter, reporting where the player is with the Crowdy Server Object component, fighting in an arena with the arena starter, a value that may be none and its Has flag, reacting to a director's waves with its Encounter Event message, changing a starter's Rust and asset, and removing starters with -op=removestarter. - [Keep a record per entity](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/keep-a-record-per-entity): Give every entity in a crowd its own values on the server with Holds set to A Record per Entity - when to use it instead of one Server Object per entity, the settings (Holds, the audience of each variable, Max Records, Send Changes Every, Area Size, Areas Followed Around a Player, Reads World Data), who receives Everyone, Owner Only and Team Only values and when, This Actor's Area, the Records functions in logic.rs and a census of nearby actors, reading records from Blueprint (Find Record, Get Record Ids, Watch Record, On Records Changed, On Records Updated) and from C++, crowd rows that read the same values, sizing, and the limits and reserved names. - [Make a Server Function Library](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/server-function-libraries): What a Server Function Library is (a Server Object type with functions and nothing else, like a Blueprint Function Library), when to use one and when to use a Server Object, the loot roller in Oakford, setting Kind on a definition, what the editor hides and ignores, the Scaling settings (Min Instances, Max Instances, Parallel Calls per Instance), the checks made when you save, switching Kind and what happens to the saved data, the instance limit, and where to call one and write its server code. - [Troubleshooting](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/troubleshooting): What to check when a Server Object stays in Connecting or fails, a value is not what you expect, a message never arrives (Players Can Listen, a closed connection, a refused listen, the subscription limits), or a call is refused (every call outcome, a Game Kit starter's Refused with its Code, Paused for a switched-off or paused server, and the refusals that come from your server code), a call to a Server Function Library from server code that fails on its first, cold call, a library that will not save (Members and Leader callers, a Cooldown, Max Instances below Min Instances), and how to watch one work with crowdy.exec.trace. It applies to Blueprint and C++ alike. - [Unreal and ck-exec names](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/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. - [Move from Game Models](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/move-from-game-models): What the removal of the Game Model API takes out of a project, the steps to take before you upgrade (compile first, search for CrowdyModel, clean cook), the C++ API that is gone, which Server Object feature replaces each Game Model one, and why Server Objects are not marked on a class. ### Server Logic: From Blueprint - [Server Logic: From Blueprint as one file (54 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-exec-from-blueprint.txt) - [Get a Server Object](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-blueprint/get-a-server-object): Get the Server Object a Blueprint uses: the typed nodes a Definition asset adds to the palette, finding the object by Target, by asset or with Only One Instance, the Crowdy Server Object component (Instance Id, Signed-In Player, This Actor, This Actor's Area, Player's Team and From Server Value) with its events and nodes, and getting one without the component, with its status. - [Read and follow its variables](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-blueprint/read-and-follow-variables): Read a Server Object's variables from Blueprint with Get and Get Server State, follow each change with On Changed, show the village beacon's oil in a graph and in a widget with Find By Asset, and the by-name nodes (Get Variables, Get Server Value, Watch Variables and the member nodes) for dynamic cases, and Get Players Online for how many players are in the app's world. - [Hear its messages](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-blueprint/hear-server-messages): Hear a Server Object's messages from Blueprint with the typed On Message Received node, announce the shared boss's fall with a BossDefeated message and its payload pins, what a game does with a message that arrives while the values are being read or the connection is closed, and the by-name Watch Message and Stop Watching Message nodes. - [Call its functions](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-blueprint/call-functions): Call a Server Function from Blueprint with the typed Call node, with a pin for every input and output and On Success and On Failed, the advanced Code pin for a Game Kit starter's refusal, feed the village beacon from an overlap event, give up on a call sooner with Timeout, measure the round trip with Ping Server Objects, and call by name with Make Inputs, Set Server Value and Call Server Function. - [Call a Server Function Library](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-blueprint/call-a-library): Call a Server Function Library from Blueprint with the typed Call node that needs no Target and no Instance Id, found under Server Function Libraries in the palette, roll loot from the chest on the north road, what the node reports (outcome, reason, retryable, timeout), why the first call after idle can be slow, and why a library offers no Get, On Changed or On Received nodes. - [Pins for every type](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-blueprint/pins-for-every-type): The pin each Server Object variable, input and output type gets in Blueprint (bool, integers, floats, strings, enums, structs, containers, optionals and the C++-only types), names a node cannot use, types with no pin, and what the nodes do when the asset changes. ### Server Logic: From C++ - [Server Logic: From C++ as one file (44 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-exec-from-cpp.txt) - [Get a Server Object](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-cpp/get-a-server-object): Acquire a Server Object from UCrowdyServerObjectSubsystem, how owners share one object and when it is given back, the four statuses, Owner Only types, and what sign-out, map travel and a dropped connection do. - [Read and follow its variables](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-cpp/read-and-follow-variables): Read a Server Object's variables that players can see from its state struct and react to each change with WatchValues, when the listener runs, what the field names in it are, and what a client can and cannot do with the values, and GetPlayersOnline for how many players are in the app's world. - [Hear its messages](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-cpp/hear-server-messages): Hear a Server Object's messages from C++ with WatchMessage and UnwatchMessage, the FOnCrowdyServerMessage listener and its payload in the message's struct or read by name, the announcement of the shared boss's fall, when a message is delivered, held or lost, and what happens to a message that players cannot listen to. - [Call its functions](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-cpp/call-functions): Call a Server Function with UCrowdyServerObject::Call, with a struct or with inputs added in the asset, what the SDK retries for you, a Game Kit starter's refusal Code, and binding a C++ handler to the Blueprint call's FCrowdyServerCallDone, which has five parameters. The call outcomes and the refusals that come from your own server code are on the troubleshooting page. - [Call a Server Function Library](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/from-cpp/call-a-library): Call a Server Function Library from C++ with UCrowdyServerObjectLibrary::CallLibraryFunction, with a struct or with inputs added in the asset, roll loot from the chest on the north road, how the call is held and answered exactly once, what a missing definition, a type that is not a library, an unknown function or a missing world answer, and why the first call after idle can be slow. ### Server Logic: Examples - [Server Logic: Examples as one file (57 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-exec-examples.txt) - [Tip jar: your first Server Object](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/examples/tip-jar): Build a shared tip jar from nothing with only the editor and Blueprints, step by step. Make the Server Object asset with a Total variable and a Tip function, paste its few lines of server code, Generate and Deploy, then add a component to an actor, follow On Total Changed with Print String, call Tip from a key press, and watch two players see the same total rise. - [Guild halls and arena lobbies](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/examples/guild-halls-and-arenas): Two worked Server Object examples in Oakford, using members, access, timers and Can Call - guild halls of five players seated by a registry and followed with From Server Value, and an arena lobby of eight where the leader starts the match, joining closes and a ten-minute timer ends it - with the asset settings, the logic.rs lines and the Blueprint side of each. - [Shared boss fight](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/examples/shared-boss): A worked Server Object example in Oakford - one boss every player hits, with its health kept on the server - covering the structs or the asset's own variables, the asset rows (Readable By, Hit's Callable By, Cooldown and Value Range, a Respawn timer), the logic.rs that refuses hits while it is defeated and respawns it, Deploy, the actor and its Crowdy Server Object component, the Blueprint with typed nodes, two players in Play In Editor, switching the type off and on from Server Compute, and what players see when the boss falls. - [Raiders on the north road](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/examples/raiders-on-the-north-road): A worked Server Object example in Oakford - a raider warband with a record for each raider - covering the asset (Holds A Record per Entity, Everyone, Owner Only, Team Only and Server Only variables, Reads World Data, Area Size 2), the logic.rs with a census of the raiders standing in an area, Hire and a skirmish timer, Deploy, the raider actor and the player's Crowdy Server Object components in This Actor's Area mode, the Blueprint with typed nodes, and two players in Play In Editor seeing different values of the same raider. - [Loot for the Hollow Giant](https://docs.dev.crowdedkingdoms.com/unreal-sdk/exec/examples/hollow-giant-loot): A worked Server Function Library example in Oakford - a loot roller that turns a seed and a tier into an item name - covering the asset (Kind, the function, Scaling left at its defaults), the logic.rs on the unit struct Library, deploying it with the boss, a chest on the north road that calls it from Blueprint or C++ with no Instance Id, and the Hollow Giant's server code calling it through a typed helper that takes no key when it falls. ## Player Services Sign-in and account settings, player names, teams, playing together with parties, chat, emotes and spectating, avatars, voice, host election and the optional UI hooks. - [Player Services as one file (161 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-services.txt) - [Authentication](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/authentication): Sign a player in with a password, a magic link, or a social provider, what the SDK hands back, the two tokens it holds for you and why you never see the one that talks to the game, session persistence, sign-out, account settings (password, email, delete, sign out everywhere), linked identities, the player's own access and claiming free access, and what to show when the app is paused, the player's access ends or the account is blocked. - [Player Names](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/player-names): Read a player's public name by User ID for a nametag, read up to 100 at once for a roster, and let the signed-in player choose their own, with the Name Taken refusal, in C++ and Blueprint. - [Teams](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/teams): Persistent, server-owned player groups with membership, roles, and permissions: the cache for instant UI, the per-call and async-action surfaces, and why runtime code and Crowdy Studio edit the same rows. - [Play together with parties, chat, emotes and spectating](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/play-together): The Game Kit's social conventions in Unreal: parties and guilds as a team and its chat channel with Create Party, Invite To Party, Create Guild and Accept Into Guild, chat rooms with Find Or Create Chat Room, text chat with Send Chat and On Chat Message, a guild's grid with Claim Guild Territory, emotes between nearby players with Send Emote and On Emote, and watching a match without an avatar with the Crowdy Spectator component, all named and sent the way CrowdyCPP and CrowdyJS players do. - [Avatars](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/avatars): A player's stored profile: the record fields, who may write them, per-app state keyed by AppId, the cache-only reads versus the network refresh, and the struct serialization helpers, in C++ and Blueprint. - [Voice Chat](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/voice-chat): Turn on the built-in voice channel: open your microphone, hear other players, set how far your voice reaches, see who is talking and what the microphone is doing, test with owner echo, send audio that is not the microphone, what changes across maps, devices and platforms, and why every player needs the same SDK version. - [Nearby Text Chat](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/nearby-text-chat): Send a line of text to the players near you and hear theirs: how far a line reaches, who sent it, what Sent means, refusals, limits, and how it differs from channel chat. - [Host Election](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/host-election): The server's own answer to whether an actor is the elected host: the host subsystem's getters and event, and the server-validated check for the moment a local answer is not enough to act on. - [UI Interfaces](https://docs.dev.crowdedkingdoms.com/unreal-sdk/services/ui-interfaces): Optional hooks for plugging your own HUD, player, and minigame classes into the SDK, the Blueprint reception layer that forwards events and actor updates to delegates, and the entity and session utility library. ## Guides Where state goes, how to test locally, how to package, what to do when it breaks, the sample project, and what changed since the July docs. - [Guides as one file (236 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-guides.txt) - [Best Practices](https://docs.dev.crowdedkingdoms.com/unreal-sdk/guides/best-practices): Where a piece of state belongs, who decides an outcome, what a per-entity loop costs, and what the elected host is for. The rules every other page assumes you already know, stated once in the abstract. - [Testing Locally](https://docs.dev.crowdedkingdoms.com/unreal-sdk/guides/testing-locally): How to exercise RPC and Crowdy State replication with a single Play in Editor client using the loopback console variables, how to set up a genuine two-client PIE session and its account caveats, the per-area trace console variables worth reaching for first, and a short debugging loop. - [Packaging and Shipping](https://docs.dev.crowdedkingdoms.com/unreal-sdk/guides/packaging): A pre-cook checklist for setup mistakes that pass in the editor and only break in a packaged build: the baked registry, map profiles, project settings, what Shipping strips, and the plugin's own CoreRedirects. - [Troubleshooting](https://docs.dev.crowdedkingdoms.com/unreal-sdk/guides/troubleshooting): A symptom-to-cause-to-fix table for the SDK's most common failures, then one section per row: a map profile that did not load, no rendering backend, entities tracked but never drawn, only some entities of a class appearing, a new player invisible until they move, events that never arrive, an entity you cannot target, a CrowdyState property that does nothing on the crowd, IPv4 versus IPv6, and a refused connection flooding the log. - [Sample Project](https://docs.dev.crowdedkingdoms.com/unreal-sdk/guides/sample-project): A tour of crowdy-sdk-sample: the interact-switch pattern, the eight working examples, and what the repo does not (yet) contain. - [What's Changed](https://docs.dev.crowdedkingdoms.com/unreal-sdk/guides/whats-changed): A changelog for a project that integrated the Unreal SDK at 2.0 or 2.1 and is updating to 2.15 or later: the Game Models section and sessions, bundled sends, the teams rename, the retired connection monitor, the removed dev sign-in bypass, the deprecated persistence subsystem, the array-delegate signature change in 2.15.0, the Crowdy Studio live-values panel, the Game Model deprecation, the Game Model removal, and Server Objects that keep a record per entity, with This Actor's Area, Reads World Data and server values on crowd rows, and the sign-in prompt for the terms and the player's age, then the Platform Data settings, the platform's own refusal reasons, the Server Limits settings, Restart on Server Compute, Server messages with Listen To, and Server Function Libraries with Can Call Any Type, and in 2.21.0 the Game Kit starters as Server Object types with the Refused outcome and its Code, deploys built in parts, parties, chat, emotes and spectating, and driving the editor from a shell, then in 2.22.0 the rewritten voice chat, which every player needs the new SDK version for, and in 2.23.0 nearby text chat and the voice distance, then in 2.24.0 spawned entities that appear once and reach late joiners, the sign-out host fix, packaged Config and MIGRATION.md. ## Reference Lookup tables, generated from the SDK surface where it has the data: subsystems, async actions, delegates, console variables, settings, metadata keys, enums, log categories, the RPC parameter type rules, and the surface file itself. - [Reference as one file (62 KB)](https://docs.dev.crowdedkingdoms.com/helpers/unreal-sdk/llms-reference.txt) - [Classes and Subsystems](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/subsystems): The 23 subsystem classes a game fetches from GetGameInstance or GetWorld, one line of purpose each, grouped by module, with a link to where each one is explained in full. - [Blueprint Async Actions](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/async-actions): Every latent Blueprint node the SDK ships, grouped by the page that explains it, with the node's display name and the completion pins it exposes. - [Blueprint Delegates](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/delegates): Every dynamic multicast delegate the SDK exposes to Blueprint, grouped by the class that owns it, with its signature type and the page that explains when it fires. - [Console Variables](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/console-cvars): The console surface the SDK ships: trace gates you flip to see one area's internal decisions, behavior switches that change what the SDK does, and one-shot diagnostic commands, with which of them exist in a Shipping build. - [Project Settings](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/project-settings): Every property on the SDK's settings classes, under Project Settings, Plugins, Crowdy SDK: which ones Crowdy Studio's Config Sync writes for you and must not be hand-edited, and which ones are yours to set. - [RPC Metadata Keys](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/rpc-meta-keys): The metadata a CrowdyEvent receiver's UFUNCTION carries: who gets the call, how it decays with distance, and the Blueprint-only markers that tell the router an event is RPC-style. - [Crowdy State Metadata Keys](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/state-meta-keys): The metadata a UPROPERTY carries to replicate on the Crowdy State view plane: the five keys, their defaults, and what a property may hold. - [Enums](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/enums): The BlueprintType enums you reach for most often while working with entities, RPC events, and Crowdy State, plus the generated table of every other BlueprintType enum the SDK exposes. - [RPC Parameter Types](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/rpc-types): Which C++ and Blueprint types a CrowdyEvent parameter can carry, the wire limits on payload size and array length, how object references travel, and how a receiver reads a value back safely. - [Log Categories](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/log-categories): Every LogCrowdy category the SDK ships, which module owns it, which crowdy..trace CVar (if any) gates its informational lines, and which categories are absent from a packaged build. - [SDK Surface Manifest](https://docs.dev.crowdedkingdoms.com/unreal-sdk/reference/sdk-surface): What sdk-surface.json is, how it stays current, the groups it reports and what each one holds, and how the reference tables and this documentation set's own completeness check both read from it.