mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 16:43:12 +02:00
125 lines
3.2 KiB
Markdown
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)
|