Troubleshooting

The messages you may see with PingCore in Unity, grouped by where they appear, each with its cause and its fix.

Find the message you see, then follow the fix under it. Messages are quoted as the product shows them. Text in italics stands for a value the message fills in, such as a fleet name.

Opening the project

"An error occurred while resolving packages: One or more packages could not be added to the local file system: package: EPERM: operation not permitted, rename"

Windows locked a folder while Unity installed a large package. Click Retry, and if it comes back, close Unity, delete the project's Library folder and open the project again.

"Your active build profile is name, a dedicated server profile, so client scenes cannot run in Play mode. Switch to a player profile in Build Profiles."

Shown at the top of the PingCore window. On a Dedicated Server profile, Unity compiles player-only scripts out of the Editor, so a client scene plays with no menu, and the Console shows "[PingCore] Play mode started with n components in the open scenes missing their scripts". Open File > Build Profiles, pick Windows or macOS (or a player build profile), click Switch Platform (Switch Profile for a build profile), and press Play again.

The Beacon Rush banner

Beacon Rush shows this banner at launch and after Discovery refuses a join. Press Check again under it after a fix.

"Not connected to PingCore yet. Set up the game and a fleet in your PingCore panel, then open Window > PingCore, sign in and pick the fleet."

The client settings asset holds no app id. Sign in under Connect in the PingCore window and pick the fleet.

"PingCore does not recognise this game's app id. Pick the fleet again in Window > PingCore."

Discovery does not know the app id, or the app is disabled. Pick the fleet again under Connect, and check the app on the panel's Discovery page.

"No game servers are running for this game. Add a deployment to your fleet in the panel."

No game server is listed for the fleet's app. If the fleet has no deployment, click Deploy New on the fleet page. The Editor's extra line, below, names the reason.

"Cannot reach PingCore Discovery. Check your connection."

No answer at all. Check your network, then press Check again.

"PingCore Discovery could not answer the check (reason). Try again in a moment."

Discovery answered, but not with the server list, for example because it was busy (Degraded 503) or this address sent too many requests (RateLimited 429). Wait a moment, then press Check again.

The Editor's extra line

In the Editor only, once you are signed in with a fleet picked, a second line under the banner gives the reason. A player build never shows it.

"Fleet name has no deployment."

On the fleet page in the panel, click Deploy New.

"Fleet name: its deployment is starting (0 of n ready)."

The deployment is being created. Wait, then press Check again.

"Fleet name: its deployment is running, but no game server is ready yet (0 of n ready). Ship a build if none has been released."

For a minute or two after Deploy New this is normal: the game server is downloading your build. Wait, then press Check again. If it stays, the deployment was probably added before your first push, so its game server has no build. Push from Ship, then open the deployment in the panel and click Restart, which needs brand.servers.manage (which build your game servers run).

"Fleet name: its deployment is running, but no game server is ready (0 of n ready, m draining). A game server reads draining until the game calls ready."

The game server runs but never called ready. Check its boot code against The Game Server SDK.

"Fleet name has n game servers ready; Discovery lists a game server a few seconds after it calls ready. Check again."

Discovery is a few seconds behind. Press Check again.

"Deployment name of Fleet name failed."

Open the deployment in the panel and read why.

**"This game's app id is not the Discovery app of Fleet name (dscp_...). Pick the fleet again in Window > PingCore, Connect."**

The settings asset the scene reads names another app. Pick the fleet again, and keep one PingCoreClientSettings asset in the project.

Connect

"Paste a usr_ key into the API key field first."

Sign in was clicked with the field empty. Paste the key, then click Sign in.

"That is not a usr_ API key (usr_ followed by letters and digits)."

Create a key on the panel's Settings > API Keys page and paste the whole key.

A message starting "Unauthorized access." that ends "Sign in again on Window > PingCore, Connect with a valid usr_ key."

The workspace did not accept the key: it was deleted or mistyped. Sign in with a valid key.

A message starting "Unauthorized access." with "This needs the brand permission permission."

The brand member who created the key lacks that permission (or the workspace does not have it). Grant it, or use another member's key. The PingCore Window lists the permissions the plugin needs.

"Set up your game and a fleet in the panel first."

The key can see no fleet. Click Open Fleets in the panel, add the fleet, then click Refresh.

"Stored in EditorPrefs, not the OS credential store: ..."

A warning, not an error. On macOS and Linux the plugin keeps the key in EditorPrefs. See where the plugin keeps your key.

Ship

Build

"This project has no Linux Dedicated Server build profile. Create one in File > Build Profiles: pick Linux Server (Dedicated Server), then Add Build Profile, and set its scenes."

Create the profile as the message says, then pick it under Build profile.

"Linux Build Support (with Dedicated Server) is not installed for this editor"

In Unity Hub, add the Linux Dedicated Server Build Support module to this Editor version.

A failure starting "missing scripts:"

A build scene, or a prefab it uses, holds a component whose script is missing. Fix the reference and build again.

"PingCore build guard (stage) rejected the build:"

The build carries a credential or a tool your rules keep out, and the Console names the finding. See The build guard.

"Your game launches different files (...). Pick the one this build writes under Server executable, then press Build."

Your template sets launch more than one file. Pick one under Server executable.

Push

"Branch name has no data source, so there is nowhere to push. Set its data source to a CDN source in the panel."

Edit the branch in the panel, set Data Source to a CDN source, then click Refresh under Connect. Open branch in panel takes you there.

"Branch name gets its files from Steam, and the plugin pushes to CDN sources only." (or "This fleet runs a container image. ...")

The plugin pushes to CDN sources only. Ship those builds outside the plugin, or move the branch to a manual CDN source.

"Your game launches ./file; this build has no such file."

The process name in your startup command and the build's executable differ. Build again with Build, which names the executable after the process, or fix Process Name in the panel.

"The build guard wrote no verdict for this project; build the folder again in this project."

Push sends only a folder the build guard passed in this project. Click Build, then push.

"No push token was issued and nothing was pushed; the current token, if any, keeps working. ..."

You cancelled Issue a push token?. If a teammate or CI already pushes to this source, paste their token under Use an existing push token.

A failed push ending "Issue or regenerate a push token on the source page in the workspace UI"

The stored push token no longer works, usually because someone issued a new one. Paste the current token under Use an existing push token, or click Replace push token....

"This push token belongs to CDN source #a, not #b. Nothing was stored."

Paste the token of the CDN source your branch delivers from.

"The PingCore Editor package carries no pingctl for platform. ..."

Download pingctl and set its path under Your own pingctl.

Release

"Pushed builds wait in the CDN source. Add a deployment to the fleet in the panel to run one."

The fleet has no deployment. Add one in the panel.

"There is no pushed snapshot to release yet: press Push first."

Release releases the snapshot your last push published. Click Push, then Release.

"Fleet id is already pinned to snapshot; nothing to release. Release it again only on purpose (force)."

The fleet already runs that build. Push a change first.

"The fleet's deployments do not all deliver from one CDN source, ..." or "The build targets of fleet id still do not list snapshot after 90 s (they list ...)."

The fleet's deployments deliver from different CDN sources, or from another one than you pushed to. Give every deployment's branch the CDN source you push to, or release from the panel.

"Release id failed (reason). It was acknowledged, so it no longer holds scale-down. Fix the cause and release again."

The bracket names why, such as crash_loop or timeout. Read the game server's logs in the panel. Shipping an Update explains each reason.

Joining a game

"The queue refused the ticket: Forbidden (403): anonymous_tokens_disabled"

Shown by Find match. Beacon Rush has no login, so it asks Discovery for an anonymous player token, and those are off on a new fleet's Discovery app. Open the fleet page, click the Discovery App link, and turn on Anonymous player tokens under Player Access. It reaches Discovery within about 60 seconds. A game with its own accounts uses signed tokens instead (Choosing How Players Connect).

"Quick play could not find a game server: Forbidden (403): anonymous_tokens_disabled" (or "Could not reserve a seat: ..." from Browse)

The same cause and fix as above.

Find match keeps showing "Searching rush-p2..." with a clock, then "No match was found in time (m:ss)."

A match from the queue needs at least two players, so one player never matches. Start a second player with Multiplayer Play Mode and click Find match in both. With two players the match forms after about 10 s. One player can use Quick play, which claims an idle game server alone.

"Could not join: That game server runs a different version of Beacon Rush. Update the game or pick another game server."

The client and the game server were built from different versions. Push and release a game server build from the same project version.

"Could not join: No answer from the game server. Check the address, and that its game port is open."

The game port is closed to UDP, or the client and game server use different Netcode for GameObjects versions. Set the container's game port protocol to TCP + UDP in the panel, and build both from the same project.

"Could not join: That game server is full. Pick another one or try again shortly."

Every seat is taken. Pick another game server, or add game servers to the deployment.

Every other "Could not join:" sentence maps to a reject reason on Admitting Players, or is the client's own connection failure.

Multiplayer Play Mode

How to start a second player. Open Window > Multiplayer > Multiplayer Play Mode, enable Player 2, wait for it to activate, then press Play. In SampleGame, the Two Players scenario in the Play Mode drop-down does the same in one click.

"Could not join: You are already in that game from another copy of the game."

Two copies share one player. Give each copy its own Profile (The Client SDK).

Both players reach the game server, but the join times out.

Check that the game port's protocol is TCP + UDP, and that both players and the game server use the same Netcode for GameObjects version.