mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 15:03:07 +02:00
110 lines
2.5 KiB
Markdown
110 lines
2.5 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++) - Final Setup →](part-9-cpp-final-setup.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"
|
|
#include "UObject/ConstructorHelpers.h"
|
|
|
|
ASTGGameMode::ASTGGameMode()
|
|
{
|
|
// Find and use the BP_Player Blueprint class
|
|
static ConstructorHelpers::FClassFinder<APawn> PlayerPawnBPClass(TEXT("/Game/BP_Player"));
|
|
if (PlayerPawnBPClass.Succeeded())
|
|
{
|
|
DefaultPawnClass = PlayerPawnBPClass.Class;
|
|
}
|
|
else
|
|
{
|
|
// Fallback to C++ class if Blueprint not found
|
|
DefaultPawnClass = ASTGPawn::StaticClass();
|
|
}
|
|
|
|
bStartPlayersAsSpectators = false;
|
|
}
|
|
```
|
|
|
|
> **Note:** The path `/Game/BP_Player` assumes BP_Player is in your Content root folder. If you placed it elsewhere (e.g., Content/Blueprints/), adjust the path accordingly (e.g., `/Game/Blueprints/BP_Player`).
|
|
|
|
---
|
|
|
|
## Step 8.3: Set Game Mode in Project Settings
|
|
|
|
1. **Edit → Project Settings**
|
|
2. **Project → Maps & Modes**
|
|
3. Under "Default Modes":
|
|
- **Default GameMode** → Select `STGGameMode`
|
|
4. Close Project Settings
|
|
|
|
---
|
|
|
|
## 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++) - Final Setup →](part-9-cpp-final-setup.md)
|