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

125 lines
3.2 KiB
Markdown

# Part 8 (C++): Create Game Mode
[← Previous: Part 7 (C++) - Create UI](part-7-cpp-create-ui.md) | [Back to Index](README.md) | [Next: Part 9 (C++) - Polish & Debug Features →](part-9-cpp-polish.md)
---
## 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`).
```cpp
#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:
```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](part-7-cpp-create-ui.md) | [Back to Index](README.md) | [Next: Part 9 (C++) - Polish & Debug Features →](part-9-cpp-polish.md)