Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pjv:laboratoare:2024:a05 [2024/12/02 13:02]
andrei.lapusteanu
pjv:laboratoare:2024:a05 [2024/12/03 20:52] (current)
andrei.lapusteanu Added extra info
Line 31: Line 31:
   * Jocul poate functiona in mod client-server (aveti nevoie de 3 instante/​build-uri,​ unul pentru server, 2 pentru clienti) sau in mod host-client (aveti nevoie de 2 instante/​build-uri,​ unul care va fi atat server cat si client, si un alt client)   * Jocul poate functiona in mod client-server (aveti nevoie de 3 instante/​build-uri,​ unul pentru server, 2 pentru clienti) sau in mod host-client (aveti nevoie de 2 instante/​build-uri,​ unul care va fi atat server cat si client, si un alt client)
  
-**Bonus**: Click-and-move ​folosing ​cursorul+**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). [[https://​www.youtube.com/​watch?​v=U-CP6OlgZic&​t=305s|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)+**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). [[https://​www.youtube.com/​watch?​v=U-CP6OlgZic&​t=305s|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 ====== ===== Documentatie video ======
 Gasiti pe MS Teams inregistrat Gasiti pe MS Teams inregistrat
Line 39: Line 39:
 ===== Documentatie text ====== ===== Documentatie text ======
  
-Pentru acest laborator sugestia este sa folositi **Photon Fusion**.+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: 
 +  * NetCode for GameObjects 
 +  * Mirror 
 +  * FishNet 
 +  * DarkRift Networking 2 
 +  * Photon PUN (predecesor al lui Fusion, asadar recomandam Fusion in schimb) 
 +  * Solutia de networking built-in din Unreal Engine
  
 Concepte de interes pentru acest laborator (acestea vor fi parcurse pe scurt in laborator dar voi va trebui apoi sa le implementati):​ Concepte de interes pentru acest laborator (acestea vor fi parcurse pe scurt in laborator dar voi va trebui apoi sa le implementati):​
Line 45: Line 51:
   - [[https://​doc.photonengine.com/​fusion/​current/​tutorials/​host-mode-basics/​2-setting-up-a-scene|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    - [[https://​doc.photonengine.com/​fusion/​current/​tutorials/​host-mode-basics/​2-setting-up-a-scene|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 
   - [[https://​doc.photonengine.com/​fusion/​current/​tutorials/​host-mode-basics/​5-property-changes|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   - [[https://​doc.photonengine.com/​fusion/​current/​tutorials/​host-mode-basics/​5-property-changes|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
-    - Gasiti [[https://​doc.photonengine.com/​fusion/​current/​manual/​data-transfer/​networked-properties|aici]] informatii mai detaliate despre aceste ​prorietati ​sincronizate+    - Gasiti [[https://​doc.photonengine.com/​fusion/​current/​manual/​data-transfer/​networked-properties|aici]] informatii mai detaliate despre aceste ​proprietati ​sincronizate
   - [[https://​doc.photonengine.com/​fusion/​current/​tutorials/​host-mode-basics/​6-remote-procedure-calls|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)   - [[https://​doc.photonengine.com/​fusion/​current/​tutorials/​host-mode-basics/​6-remote-procedure-calls|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)
     - Gasisti [[https://​doc.photonengine.com/​fusion/​current/​manual/​data-transfer/​rpcs|aici]] informatii mai detaliate despre RPC-uri     - Gasisti [[https://​doc.photonengine.com/​fusion/​current/​manual/​data-transfer/​rpcs|aici]] informatii mai detaliate despre RPC-uri
  
-Pentru testarea jocurilor multiplayer pe local, direct din editor, fara build, un utilitar foarte folositor pentru ​rulare ​in pararel a mai multor sesiuni il puteti gasiti aici: [[https://​github.com/​VeriorPies/​ParrelSync|ParrelSync (GitHub)]]+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: [[https://​github.com/​VeriorPies/​ParrelSync|ParrelSync (GitHub)]]
  
-**Important**:​ Evenimentele ''​OnTriggerEnter''​ (si similare) nu sunt realiable ​pe clienti intr-un context sincronizat. Implementati logica pentru acestea pe host/server sau folositi-va de [[https://​doc-api.photonengine.com/​en/​fusion/​current/​class_fusion_1_1_hitbox_manager.html|overlap-uri]] (''​OverlapSphere'',​ ''​OverlapBox'',​ etc.)+**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 [[https://​doc-api.photonengine.com/​en/​fusion/​current/​class_fusion_1_1_hitbox_manager.html|overlap-uri]] (''​OverlapSphere'',​ ''​OverlapBox'',​ etc.) 
 +  * Potential [[https://​forum.photonengine.com/​discussion/​20514/​fusion-and-collisions-ontriggerenter-and-ontriggerexit-questions?​utm_source=chatgpt.com|thread]] de interes care descrie problema mai in detaliu. TL;DR, folositi overlaps (links mai sus), ''​OnTriggerStay'',​ faceti calculele necesare pe server/host
pjv/laboratoare/2024/a05.1733137374.txt.gz · Last modified: 2024/12/02 13:02 by andrei.lapusteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0