(Feat) Add mulitplayer
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameFramework/GameModeBase.h"
|
||||
#include "SurvivalGameMode.generated.h"
|
||||
|
||||
/**
|
||||
* L'arbitre de la partie. N'existe QUE sur le serveur -- sur un client,
|
||||
* GetGameMode() rend nullptr, toujours. Ce n'est pas un bug mais le design du
|
||||
* framework : le GameMode decide, le GameState montre.
|
||||
*
|
||||
* Corollaire a garder en tete pour tout le portage coop : le moindre appel a
|
||||
* GetGameMode() ecrit du cote client doit etre remplace par un RPC serveur ou
|
||||
* par une lecture du GameState. C'est le cas du respawn, aujourd'hui declenche
|
||||
* depuis AFpsPlayerController.
|
||||
*
|
||||
* Y mettra plus tard : les regles de mort, le cycle jour/nuit, la sauvegarde
|
||||
* du monde. Pour l'instant il ne fait que borner le nombre de joueurs et
|
||||
* cabler GameState et PlayerState.
|
||||
*/
|
||||
UCLASS()
|
||||
class SURVIVAL_PROJET_API ASurvivalGameMode : public AGameModeBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
ASurvivalGameMode();
|
||||
|
||||
virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
|
||||
virtual void PostLogin(APlayerController* NewPlayer) override;
|
||||
virtual void Logout(AController* Exiting) override;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Plafond de joueurs, applique a la AGameSession.
|
||||
*
|
||||
* Regle ici et pas seulement dans les reglages de session : la session
|
||||
* annonce des places libres, mais c'est le GameMode qui refuse reellement la
|
||||
* connexion. Sans ce plafond, un cinquieme joueur qui arrive par une
|
||||
* invitation directe entre quand meme.
|
||||
*
|
||||
* Sa valeur par defaut est posee dans le constructeur depuis
|
||||
* USessionSubsystem::DefaultMaxPlayers, pour qu'il n'existe qu'UN seul 4
|
||||
* dans le projet : deux nombres qui doivent rester egaux finissent toujours
|
||||
* par diverger, et le symptome serait une place annoncee mais refusee.
|
||||
*/
|
||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Coop", meta = (ClampMin = "1", ClampMax = "16"))
|
||||
int32 MaxCoopPlayers;
|
||||
};
|
||||
Reference in New Issue
Block a user