UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GameMode.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
9#include "GameMode.generated.h"
10
11class APlayerState;
12class ULocalMessage;
13class UNetDriver;
14
16namespace MatchState
17{
18 extern ENGINE_API const FName EnteringMap; // We are entering this map, actors are not yet ticking
19 extern ENGINE_API const FName WaitingToStart; // Actors are ticking, but the match has not yet started
20 extern ENGINE_API const FName InProgress; // Normal gameplay is occurring. Specific games will have their own state machine inside this state
21 extern ENGINE_API const FName WaitingPostMatch; // Match has ended so we aren't accepting new players, but actors are still ticking
22 extern ENGINE_API const FName LeavingMap; // We are transitioning out of the map to another location
23 extern ENGINE_API const FName Aborted; // Match has failed due to network issues or other problems, cannot continue
24
25 // If a game needs to add additional states, you may need to override HasMatchStarted and HasMatchEnded to deal with the new states
26 // Do not add any states before WaitingToStart or after WaitingPostMatch
27}
28
34UCLASS(MinimalAPI)
35class AGameMode : public AGameModeBase
36{
38
39 // Code to deal with the match state machine
40
41
42 UFUNCTION(BlueprintCallable, Category="Game")
43 FName GetMatchState() const { return MatchState; }
44
46 UFUNCTION(BlueprintCallable, Category="Game")
47 ENGINE_API virtual bool IsMatchInProgress() const;
48
50 UFUNCTION(BlueprintCallable, Category="Game")
51 ENGINE_API virtual void StartMatch();
52
54 UFUNCTION(BlueprintCallable, Category="Game")
55 ENGINE_API virtual void EndMatch();
56
58 UFUNCTION(BlueprintCallable, Category="Game")
59 ENGINE_API virtual void RestartGame();
60
62 UFUNCTION(BlueprintCallable, Category="Game")
63 ENGINE_API virtual void AbortMatch();
64
65protected:
66
70
72 ENGINE_API virtual void SetMatchState(FName NewState);
73
75 ENGINE_API virtual void OnMatchStateSet();
76
78 UFUNCTION(BlueprintImplementableEvent, Category="Game", meta=(DisplayName="OnSetMatchState", ScriptName="OnSetMatchState"))
79 ENGINE_API void K2_OnSetMatchState(FName NewState);
80
81 // Games should override these functions to deal with their game specific logic
82
84 ENGINE_API virtual void HandleMatchIsWaitingToStart();
85
87 UFUNCTION(BlueprintNativeEvent, Category="Game")
88 ENGINE_API bool ReadyToStartMatch();
89
91 ENGINE_API virtual void HandleMatchHasStarted();
92
94 UFUNCTION(BlueprintNativeEvent, Category="Game")
95 ENGINE_API bool ReadyToEndMatch();
96
98 ENGINE_API virtual void HandleMatchHasEnded();
99
101 ENGINE_API virtual void HandleLeavingMap();
102
104 ENGINE_API virtual void HandleMatchAborted();
105
106public:
107
109 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="GameMode")
110 uint32 bDelayedStart : 1;
111
113 UPROPERTY(BlueprintReadOnly, Category=GameMode)
114 int32 NumSpectators;
115
117 UPROPERTY(BlueprintReadOnly, Category=GameMode)
118 int32 NumPlayers;
119
121 UPROPERTY(BlueprintReadOnly, Category=GameMode)
122 int32 NumBots;
123
125 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=GameMode, meta=(DisplayName="Minimum Respawn Delay"))
126 float MinRespawnDelay;
127
129 UPROPERTY(BlueprintReadOnly, Category=GameMode)
130 int32 NumTravellingPlayers;
131
133 UPROPERTY()
134 TSubclassOf<class ULocalMessage> EngineMessageClass;
135
137 UPROPERTY()
138 TArray<TObjectPtr<class APlayerState>> InactivePlayerArray;
139
141
143 UPROPERTY(EditAnywhere, Category=GameMode)
144 float InactivePlayerStateLifeSpan;
145
147 UPROPERTY(EditAnywhere, Category = GameMode)
148 int32 MaxInactivePlayers;
149
151 UPROPERTY(config)
152 bool bHandleDedicatedServerReplays;
153
154public:
155
157 ENGINE_API virtual FString GetNetworkNumber();
158
160 ENGINE_API void PlayerSwitchedToSpectatorOnly(APlayerController* PC);
161
163 ENGINE_API void RemovePlayerControllerFromPlayerCount(APlayerController* PC);
164
166 ENGINE_API virtual bool GetTravelType();
167
169 UFUNCTION(Exec, BlueprintCallable, Category = AI)
170 ENGINE_API virtual void Say(const FString& Msg);
171
173 ENGINE_API virtual void Broadcast( AActor* Sender, const FString& Msg, FName Type = NAME_None );
174
180 ENGINE_API virtual void BroadcastLocalized( AActor* Sender, TSubclassOf<ULocalMessage> Message, int32 Switch = 0, APlayerState* RelatedPlayerState_1 = NULL, APlayerState* RelatedPlayerState_2 = NULL, UObject* OptionalObject = NULL );
181
183 ENGINE_API virtual void AddInactivePlayer(APlayerState* PlayerState, APlayerController* PC);
184
187 ENGINE_API virtual bool FindInactivePlayer(APlayerController* PC);
188
191
193 ENGINE_API virtual void SetSeamlessTravelViewTarget(APlayerController* PC);
194
200 ENGINE_API virtual void PreCommitMapChange(const FString& PreviousMapName, const FString& NextMapName);
201
203 ENGINE_API virtual void PostCommitMapChange();
204
210 ENGINE_API virtual void NotifyPendingConnectionLost(const FUniqueNetIdRepl& ConnectionUniqueId);
211
213 ENGINE_API virtual void HandleDisconnect(UWorld* InWorld, UNetDriver* NetDriver);
214
215 //~ Begin AActor Interface
216 ENGINE_API virtual void Tick(float DeltaSeconds) override;
217 //~ End AActor Interface
218
219 //~ Begin AGameModeBase Interface
220 ENGINE_API virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
221 ENGINE_API virtual void StartPlay() override;
222 ENGINE_API virtual bool HasMatchStarted() const override;
224 ENGINE_API virtual bool HasMatchEnded() const override;
227 ENGINE_API virtual int32 GetNumPlayers() override;
228 ENGINE_API virtual int32 GetNumSpectators() override;
229 ENGINE_API virtual bool IsHandlingReplays() override;
230 ENGINE_API virtual void HandleStartingNewPlayer_Implementation(APlayerController* NewPlayer) override;
231 ENGINE_API virtual bool PlayerCanRestart_Implementation(APlayerController* Player) override;
232 ENGINE_API virtual void PostSeamlessTravel() override;
233 ENGINE_API virtual void HandleSeamlessTravelPlayer(AController*& C) override;
234 ENGINE_API virtual void InitSeamlessTravelPlayer(AController* NewController) override;
235 ENGINE_API virtual bool CanServerTravel(const FString& URL, bool bAbsolute) override;
236 ENGINE_API virtual void StartToLeaveMap() override;
237 ENGINE_API virtual bool SpawnPlayerFromSimulate(const FVector& NewLocation, const FRotator& NewRotation) override;
238 //~ End AGameModeBase Interface
239};
#define NULL
Definition oodle2base.h:134
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Controller.h:41
Definition GameMode.h:36
Definition PlayerController.h:261
Definition PlayerState.h:42
Definition NameTypes.h:617
Definition Array.h:670
Definition SubclassOf.h:30
Definition LocalMessage.h:58
Definition NetDriver.h:799
Definition Object.h:95
Definition World.h:918
Definition GameMode.h:17
ENGINE_API const FName LeavingMap
Definition GameMode.cpp:30
ENGINE_API const FName WaitingToStart
Definition GameMode.cpp:27
ENGINE_API const FName EnteringMap
Definition GameMode.cpp:26
ENGINE_API const FName InProgress
Definition GameMode.cpp:28
ENGINE_API const FName Aborted
Definition GameMode.cpp:31
ENGINE_API const FName WaitingPostMatch
Definition GameMode.cpp:29
Definition OnlineReplStructs.h:26
Definition ObjectPtr.h:488