Skip to main content

Installation

This page adds the CrowdySDK plugin to your project, enables it, adds the module dependencies your code needs, and points the project at your app.

Prerequisites​

  • Unreal Engine 5.8.
  • A C++ project (Visual Studio 2022 with the Desktop C++ workload). Gameplay can be driven entirely from Blueprint, but the plugin compiles as C++.
The plugin compiles C++ modules, so a Blueprint only project cannot use it.

Add a C++ class to a Blueprint project once (File, New C++ Class) and it becomes a C++ project.

Step 1: Get the release​

Download the v2.24.0 release of the plugin from the public repository, CrowdedKingdoms/CrowdySDK-Unreal on GitHub.

The release you install must match the version this guide describes (2.24).

From 2.24.0 the plugin root also carries a MIGRATION.md that lists, per release, what changed and the exact steps to migrate; read it when you update an existing project. The packaged zip of 2.24.0 is the first to include the plugin's Config/ folder (see What's Changed).

Step 2: Place the plugin at Plugins/CrowdySDK​

Unpack the release into your project's Plugins folder so the plugin descriptor sits at:

YourProject/Plugins/CrowdySDK/CrowdySDK.uplugin

Create the Plugins folder if it does not exist. The first time you open the project afterwards, the editor offers to build the plugin's modules; accept.

Keep it under Plugins. Do not reach it through an external plugin directory.

A plugin mounted from anywhere else (for example through AdditionalPluginDirectories in the .uproject) is an External plugin, and Unreal silently drops the config it ships in Plugins/CrowdySDK/Config/*.ini. That config is load-bearing:

  • CoreRedirects that repoint content saved against the SDK's older single-module layout to the current modules, so older assets still load.
  • AssetRegistry cook-tag exclusions that keep editor-only tags, left on assets saved by an older SDK, out of a packaged build's asset registry.
  • A packaging entry that cooks the plugin's shipped map profile (the per-map data asset that switches the SDK on; see Map profiles), without which a packaged build is inactive on any map that configured nothing.

Once the project opens in the editor (after Step 5), check the Output Log for Mounting Project plugin CrowdySDK. If the line says External, move the plugin.

Step 3: Enable the plugin​

From the editor: open the project, go to Edit, Plugins, search for CrowdySDK, tick Enabled, and restart when asked.

The Plugins window with CrowdySDK found and enabled

Or add it to your .uproject by hand:

{
"Name": "CrowdySDK",
"Enabled": true
}

Enabling CrowdySDK brings in all twelve modules in this table, including the two Mass modules, and the engine plugins they need (MassGameplay and MassCrowd). You never enable them one by one, and there is no separate Mass plugin to add. The engine marks MassGameplay and MassCrowd experimental, and they bring in the engine plugins they depend on (among them MassAI, ZoneGraph, SmartObjects, StateTree and PoseSearch), so every project with the SDK carries them and the engine's Mass processing runs each frame, even on maps that draw no crowd rows; the SDK's own Mass work runs only on maps whose profile selects the Mass backend. That holds since v2.19.0; on v2.18.0 and earlier CrowdyMass was a separate plugin, which a project upgrading removes from its .uproject. See What's Changed.

ModuleTypeWhat it holds
CrowdySDKRuntimeThe top-level subsystem: login, connection, voice toggle.
CrowdyReplicationRuntimeEntities, RPC events, Crowdy State, map profiles, project settings.
CrowdyServicesRuntimeAuthentication, teams, channels, avatars, host election.
CrowdyNetRuntimeThe UDP transport, the API client, and the routing enums.
CrowdyVoiceRuntimeMicrophone capture, encode and decode, playback.
CKSharedTypesRuntimeShared data types used across modules.
CrowdyCppBridgeRuntimeThe vendored native client the transport is built on. You never include it directly.
CrowdyMassRuntimeThe Crowdy Mass Rendering Backend, which draws remote entities as crowd rows. See Draw a crowd with Mass.
CrowdyNodesUncookedOnlyThe compiler checks for Crowdy-replicated variables.
CrowdyMassNodesUncookedOnlyThe editor-side Blueprint nodes for crowd rows.
CrowdySDKEditorEditorTurns event and state markers into Blueprint authoring surfaces and bakes them for cooked builds.
CrowdyStudioEditorCrowdy Studio, the management console: sign-in, apps, Config Sync, authoring pages.

The SDK has no Game Model API: the game API no longer serves game models, and the SDK dropped its side of them in v2.19.0. Keep the state your game must trust in your server code on ck-exec; see Move from Game Models and the two planes.

Step 4: Add the module dependencies​

In your game module's Build.cs, add the modules your code calls. Most projects need these four:

PrivateDependencyModuleNames.AddRange(new string[]
{
"CrowdySDK",
"CrowdyReplication",
"CrowdyServices",
"CrowdyNet"
});
Add CrowdyVoice only if your code calls the voice capture module directly.

The voice toggle on the SDK subsystem does not need it. CKSharedTypes arrives through the public dependencies of the four modules above, so it rarely needs listing.

Step 5: Recompile​

Regenerate project files and build:

  • Rider or Visual Studio: right-click the .uproject, choose Generate project files, then build.
  • Unreal Editor: accept the prompt to recompile on the next launch.

Or from a command line, which is what a build machine runs:

"C:\Program Files\Epic Games\UE_5.8\Engine\Build\BatchFiles\Build.bat" YourProjectEditor Win64 Development -Project="C:\Path\To\YourProject.uproject" -WaitMutex

The first build compiles the whole plugin and takes a few minutes. The log ends with Link [x64] UnrealEditor-CrowdyStudio.dll and Result: Succeeded. Expect a few warnings from a third-party header inside the plugin (a C4324 padding warning from the vendored client's spsc.hpp); they are harmless and repeat on every build.

Once it compiles, the SDK subsystems are available in both C++ and Blueprint.

Step 6: Connect your app​

Open Crowdy Studio inside the editor, sign in, pick your app, and run Config Sync. It writes the connection settings into the project for you.

Until you run Config Sync for the first time, the project has no Backend of its own, so it dials the tier the plugin release you downloaded was built for: Production for a tagged GitHub release. See Project settings.

Do not type your app id and API URLs into Project Settings by hand.

The network settings on UCrowdySDKDeveloperSettings (AppID, OrgId, Environment, DiscoveryUrl, GameApiHttpUrl, GameApiWsUrl, UDPProtocol, UDPTimeoutSeconds, HostPollIntervalSeconds) are read-only in Project Settings on purpose (they live under Project Settings, Plugins, Crowdy SDK). Crowdy Studio owns them; a value you type elsewhere is overwritten by the next sync. See Config Sync.