Quick answer: Either set the target map’s GameMode Override in World Settings, or pass ?game=/Game/... in the ServerTravel URL. Otherwise the project default is used.

A multiplayer game ServerTravels from the lobby to a match map. The match runs with the default GameMode instead of the intended one — rules aren’t applied.

How GameMode Is Resolved

  1. The URL’s ?game=... parameter, if present.
  2. The target map’s World Settings → GameMode Override.
  3. Project Settings → Maps & Modes → Default GameMode.
  4. The class “default for prefix” rules (legacy).

Whichever is set first wins. If you didn’t set the URL or World Settings, you get the default.

Set GameMode Override

Open the match map → World Settings → GameMode Override → pick your gamemode class. Save the map. Now any travel to this map uses that gamemode.

Or Pass It in the URL

GetWorld()->ServerTravel(TEXT("/Game/Maps/Match?game=/Game/Modes/BP_MatchMode.BP_MatchMode_C"));

Explicit per-travel control — useful when the same map runs multiple modes.

Common Trap: Path Format

The gamemode reference in the URL must be the class path with _C suffix (or the asset path that resolves to a class). Wrong path = silent fallback to default.

Verifying

Travel to the match map. The expected gamemode runs (check via GetGameMode() log on the server). Rules, scoring, and spawn logic come from your class.

“GameMode resolution falls through to default silently. Set the override on the map, or pin it via the URL.”

For maps that always run one mode, World Settings is cleanest. For configurable modes, parameterize via the URL.