Table of Contents

5. Multiplayer online server solutions

Cerinte

Realizarea unui joc multiplayer de tip whack-a-mole / colectare:

Bonus: Click-and-move folosind cursorul

Exemplu: In acest mini-game dintr-un mod de tower defense din Warcraft 3 se poate observa o scena in care apar in mod constant obiecte colectabile (coins), precum si o unitate controlata de player (minutele 5:05 → 5:20). Video referinta. Daca ar fi sa implementati un joculet similar, va trebui sa aveti 2 astfel de unitati spawn-ate in scena, controlabile in mod independent.

Documentatie video

Gasiti pe MS Teams inregistrat

Documentatie text

Pentru acest laborator sugestia este sa folositi Photon Fusion 2. Aceasta este solutia care se va prezenta in cadrul laboratorului, dar conceptele folosite in alte biblioteci de sincronizare sunt similare. Puteti opta pentru alte solutii precum:

Concepte de interes pentru acest laborator (acestea vor fi parcurse pe scurt in laborator dar voi va trebui apoi sa le implementati):

  1. Setup scena networked. Aici se prezinta conceptele de baza pentru integrarea Fusion-ului, cum se porneste un joc sincronizat in retea, crearea unui prefab pentru player, citirea si aplicarea de input
  2. Variabile sincronizate. Acestea sunt variabile marcate cu tag-ul [Networked], pe care host-ul sau server-ul le poate seta si sunt in mod automat replicate catre toti clientii conectati in sesiunea curenta. Ganditi-va la scorul fiecarui player, acesta s-ar putea defini in acest mod
    1. Gasiti aici informatii mai detaliate despre aceste proprietati sincronizate
  3. RPC-uri (remote procedure call). Metode care permit comunicarea client↔server. Ca exemplu, clientul poate trimite un RPC catre server atunci cand colecteaza un obiect a.i. server-ul sa poata face despawn acelui obiect (intrucat server-ul este cel cu autoritate)
    1. Gasisti aici informatii mai detaliate despre RPC-uri

Pentru testarea jocurilor multiplayer pe local, direct din editor, fara build, un utilitar foarte folositor pentru rularea in pararel a mai multor sesiuni il puteti gasiti aici: ParrelSync (GitHub)

Important: Evenimentele OnTriggerEnter (si similare) nu sunt reliable pe clienti intr-un context sincronizat. Implementati logica pentru acestea pe host/server sau folositi-va de overlap-uri (OverlapSphere, OverlapBox, etc.)