Does GameModeBase not Tick?

For whatever reason, my Tick functions will not fire in my GameModeBase.

Relevant code:

header file:

UCLASS()
class DELAWARE2_API ADelaware2GameModeBase : public AGameModeBase
{
	GENERATED_BODY()

public:
	ADelaware2GameModeBase();

	virtual void Tick(float DeltaTime) override;

};

cpp file

void ADelaware2GameModeBase::Tick(float DeltaTime)
{
	UE_LOG(LogTemp, Warning, TEXT("Tick Function called!"));
}```

FIrst, game modes only run on the server.
Second, game modes only run if you actually make them the mode for your level :smiley:
Third, actors only tick if they are marked as ticking. Which maybe game mode base isn’t by default?

The documentation says:

you will need to check PrimaryActorTick.bCanEverTick is set to true to enable it

1 Like

Ah. Game modes only run on the server (I thought that was GameModeBase?). So where is the appropriate place to have rules for the game?

I made it the mode for my level and I marked it as ticking.

If your game is single-player, then there’s a GameMode right there (because “single player” is actually a server, of a sort. Without the networking.)

If you have a networked game, then rules should be enforced on the server. If you need to speculate about the rules, predict outcomes, and give user feedback, then that’s more about the UI/gameplay implementation of the prediction, rather than the rules themselves.

From my experiments, GameMode and GameModeBase do NOT tick.

Moved everything to GameStateBase, and that worked out great!