(Feat) Add mulitplayer
This commit is contained in:
@@ -40,7 +40,14 @@ public:
|
||||
|
||||
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
|
||||
|
||||
/** Declenche l'interaction sur l'objet vise, s'il y en a un. */
|
||||
/**
|
||||
* Declenche l'interaction sur l'objet vise, s'il y en a un.
|
||||
*
|
||||
* Le trace, lui, reste PUREMENT LOCAL : chacun vise chez soi, a sa propre
|
||||
* frequence, sans le moindre aller-retour reseau -- le prompt doit s'afficher
|
||||
* a l'instant ou l'on vise, pas 60 ms plus tard. Seule l'action part au
|
||||
* serveur, qui est le seul a pouvoir modifier le monde.
|
||||
*/
|
||||
UFUNCTION(BlueprintCallable, Category = "Interaction")
|
||||
void TryInteract();
|
||||
|
||||
@@ -93,7 +100,36 @@ protected:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Interaction")
|
||||
bool bDrawDebug = false;
|
||||
|
||||
/**
|
||||
* Marge accordee par le serveur quand il verifie la distance annoncee par un
|
||||
* client. 1.0 refuserait des interactions parfaitement legitimes : entre le
|
||||
* moment ou le client vise et celui ou son message arrive, son personnage a
|
||||
* bouge, et la position que le serveur connait de lui a jusqu'a un aller-retour
|
||||
* de retard.
|
||||
*
|
||||
* Ce n'est PAS de l'anti-triche -- coop entre amis, on ne paie pas ce prix --
|
||||
* mais un garde-fou contre un client desynchronise qui ouvrirait un coffre a
|
||||
* l'autre bout de la carte.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Interaction|Reseau", meta = (ClampMin = "1.0"))
|
||||
float ServerRangeTolerance = 2.f;
|
||||
|
||||
private:
|
||||
/**
|
||||
* L'interaction demandee par un client, executee par le serveur.
|
||||
*
|
||||
* Reliable : rater un ramassage parce qu'un paquet s'est perdu serait
|
||||
* incomprehensible pour le joueur. Le debit est nul de toute facon, une
|
||||
* interaction est un evenement rare a l'echelle du reseau.
|
||||
*/
|
||||
UFUNCTION(Server, Reliable)
|
||||
void Server_Interact(AActor* Target);
|
||||
|
||||
/**
|
||||
* L'execution reelle, cote autorite. Revalide la cible : le client peut
|
||||
* l'avoir vue valide alors qu'un autre joueur venait de la ramasser.
|
||||
*/
|
||||
void PerformInteract(AActor* Target);
|
||||
/** Relance le trace et met a jour FocusedActor. */
|
||||
void UpdateFocus();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user