praca_magisterska/games/unreal/tutorial/part-8-cpp-create-game-mode.md

3.2 KiB

Part 8 (C++): Create Game Mode

← Previous: Part 7 (C++) - Create UI | Back to Index | Next: Part 9 (C++) - Polish & Debug Features →


Overview

Create a custom Game Mode to set the default pawn class and manage game rules.

Time: ~5 minutes


Step 8.1: Create STGGameMode C++ Class

  1. Tools → New C++ Class
  2. Choose "Game Mode Base" as parent
  3. Name: STGGameMode
  4. Create Class

Step 8.2: Define Game Mode

STGGameMode.h:

⚠️ IMPORTANT: Replace YOURPROJECTNAME_API with your actual project's API macro (e.g., BULLETHELLCPP_API).

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "STGGameMode.generated.h"

UCLASS()
class YOURPROJECTNAME_API ASTGGameMode : public AGameModeBase
{
    GENERATED_BODY()
    
public:
    ASTGGameMode();
};

STGGameMode.cpp:

#include "STGGameMode.h"
#include "STGPawn.h"

ASTGGameMode::ASTGGameMode()
{
    // Default to C++ pawn class
    // We'll override this in a Blueprint child to use BP_Player
    DefaultPawnClass = ASTGPawn::StaticClass();
    
    bStartPlayersAsSpectators = false;
}

Note: We use the C++ STGPawn as default. In the next step, we'll create a Blueprint child of this GameMode to set BP_Player as the default pawn. This approach is more flexible than hardcoding Blueprint paths, which can break if files are moved.


Step 8.3: Create BP_STGGameMode Blueprint

We create a Blueprint child of STGGameMode to configure BP_Player as the default pawn:

  1. Content Browser → Right-click in empty space
  2. Select Blueprint Class
  3. In the popup, expand All Classes and search for STGGameMode
  4. Select STGGameMode as parent → Click Select
  5. Name: BP_STGGameMode
  6. Double-click to open the Blueprint
  7. In Class Defaults panel (right side):
    • Find Default Pawn Class
    • Click dropdown → Select BP_Player
  8. Compile (top toolbar) → Save

Why use a Blueprint GameMode?

  • Avoids hardcoded paths that break when files move
  • Allows designers to change settings without recompiling
  • Standard Unreal Engine practice for configuration

Step 8.4: Set Game Mode in Project Settings

  1. Edit → Project Settings
  2. Project → Maps & Modes
  3. Under "Default Modes":
    • Default GameMode → Select BP_STGGameMode (the Blueprint, not the C++ class)
  4. Close Project Settings

⚠️ Important: Make sure to select BP_STGGameMode, not STGGameMode. The Blueprint version has BP_Player configured as the default pawn.


Step 8.4: Test

Create a new level or use existing one:

  1. File → New Level → Empty Level

  2. Save as BulletHellLevel

  3. Add:

    • Player Start (from Place Actors panel)
    • STGEnemySpawner
    • STGGameDirector
    • STGHUDManager
    • Directional Light (for visibility)
  4. Press Play

Expected Result:

  • Player automatically spawns at Player Start location
  • No need to manually drag BP_Player into level
  • All game systems work together

← Previous: Part 7 (C++) - Create UI | Back to Index | Next: Part 9 (C++) - Polish & Debug Features →