Skip to content

Descriere Arhitecturală

Razvan Capatina edited this page Jan 30, 2025 · 18 revisions

Sinteza Produsului Arhitectural si Comparatie cu Livrabilul Intermediar

  Proiectul final este un joc 2D top-down shooter, axat pe multiplayer si conceput pentru o experienta dinamica si personalizabila. Jocul include doua moduri de joc: Zombie Survival si Team Deathmatch, oferind atat o componenta colaborativa, cat si una competitiva.

Realizari fata de livrabilul intermediar:

  • Multiplayer functional – jucatorii se pot conecta si juca impreuna intr-o sesiune multiplayer.
  • Doua moduri de joc implementate – atat Team Deathmatch, cat si Zombie Survival, fiind complet functionale.
  • Generare procedurala a hartii – fiecare sesiune poate avea o configuratie diferita a mediului de joc.
  • Server implementat – Permite gestionarea conexiunilor si coordonarea jucatorilor intr-o retea LAN sau extinsa prin VPN (LogMeIn Hamachi).
  • Personalizare completa a jocului – jocul este modular, elementele de skin-uri, harti sunt usor de modificat de utilizatorii finali fara cunostinte tehnice.
  • Suport nativ pentru multiplayer extins – conectarea prin VPN (LogMeIn Hamachi) este posibila, dar nu exista un sistem integrat pentru joc online fara solutii externe, cu exceptia LAN-ului.

Idei propuse in livrabilul intermediar care nu s-au concretizat in dezvoltarea proiectului:

  • Post-Processing Effects
  • Custom Input
  • Weapon Upgrade
  • Tutorial

Proiectul a atins majoritatea componentelor propuse in cadrul livrabilului intermediar.

Cerinte Non-Functionale


Proiectul s-a concentrat pe imbunatatirea:

  • Responsiveness - importanta pentru comunicare eficienta intre Client si Server si pentru sincronizarea informatiilor intre clienti.
  • Availability - Serverul trebuie sa aiba rezistenta la un volum ridicat de request-uri intr-un timp scurt (numar mare de jucatori, multe evenimente intr-un timp scurt, etc.).
  • Usability - Clientul trebuie sa poate sa se conecteze fara probleme la Server in orice moment de timp. Serverul trebuie sa poata gestiona conectarea si deconectarea repetata a unui numar mare de utilizatori la sesiunile de joc valabile.
  • Security - verificarea continutului campurilor dintr-un formular, verificarea informatiilor ce ajung de la Client la Server

Descriere Arhitecturala

  Aplicatia a avut ca scop dezvoltarea unui joc multiplayer. Astfel am gandit structura ca fiind formata dintr-un Client si un Server.


  Serverul este componenta centrala care administreaza toate conexiunile jucatorilor, sincronizeaza starea jocului si gestioneaza evenimentele din joc. Acesta functioneaza pe un protocol modificat folosit in special de biblioteca ENet, care se bazeaza pe o combinatie intre TCP si UDP.


  Jocul poate fi rulat atat in Singleplayer, cat si in Multiplayer. Singleplayer-ul este simulat prin ideea ca avem un singur Client conectat la Server (comunicare unu-la-unu).


  Atat in Singleplayer, cat si in Multiplayer, Clientul care initiaza sesiunea de joc va instantia un Server pe masina sa locala, urmand ca ceilalti Clienti sa se conecteze la acesta. Astfel, ceilalti Clienti se pot conecta la Server, fie prin apartenenta lor la acelasi LAN cu cel ce a creat sesiunea, cat si prin simularea unui LAN Virtual folosind LogMeIn Hamachi. Aceasta comunicare este ilustrata in diagramele de mai jos.


Diagrame


System Context Diagram

SystemContextDiagram

Imaginea prezinta diagrama contextuala ce descrie relatia dintre jucator, jocul video (DeadZone) si un serviciu VPN (LogMeIn Hamachi).

  • Player (Jucatorul): Reprezinta persoana care descarca si joaca jocul. Jucatorul trimite comenzi folosind tastatura si mouse-ul si primeste raspunsuri vizuale si audio din joc.
  • DeadZone (Jocul): Este un joc video 2D care permite jucatorilor sa participe in diferite moduri de joc. Jocul este punctul central unde toate interactiunile jucatorului au loc.
  • LogMeIn Hamachi (VPN): Este un serviciu folosit pentru a extinde jocul multiplayer in afara unei retele locale (LAN). Daca jucatorii se afla in locatii diferite, VPN-ul ajuta la conectarea acestora prin internet.



System Container Diagram

SystemContainerDiagram

Aceasta diagrama prezinta cum interactioneaza diferiti jucatori (Player 1, Player 2 si Player 3) cu jocul DeadZone si modul in care serverul si VPN-ul (LogMeIn Hamachi) sunt implicate in proces.

Elemente si Relatii

  1. Jucatorii (Player 1, Player 2, Player 3):

    • Sunt persoanele care ruleaza jocul.
    • Se folosesc de tastatura si mouse pentru a controla jocul si primesc raspunsuri vizuale si audio din partea jocului.
  2. Clientul:

    • Clientul trimite actiunile jucatorului catre server si primeste actualizari despre starea jocului.
  3. Serverul:

    • Este componenta care administreaza logica jocului si coordoneaza interactiunile intre mai multi jucatori.
    • Serverul primeste informatii de la fiecare client, actualizeaza starea jocului si trimite datele inapoi catre clienti pentru sincronizare.
    • Functioneaza fie in aceeasi retea locala (LAN), fie prin VPN pentru jucatori aflati in locatii diferite.
  4. LogMeIn Hamachi:

    • Este folosit atunci cand jucatorii nu se afla in aceeasi retea locala (LAN).
    • VPN-ul ajuta la conectarea jucatorilor prin internet, permitand serverului sa comunice cu clientii care nu sunt in aceeasi locatie fizica.

Fluxul de Date

  • In cazul unui LAN:

    • Clientul trimite actiuni catre server (de exemplu, miscarea personajului sau tragerea cu arma).
    • Serverul proceseaza aceste actiuni si trimite actualizari despre starea jocului (de exemplu, pozitia altor jucatori).
  • In cazul unei conexiuni prin VPN:

    • Clientul comunica cu serverul prin intermediul LogMeIn Hamachi.
    • VPN-ul asigura ca informatiile trimise si primite sunt transmise corect intre jucatorii din locatii diferite.



Class Diagram

ClassDiagram

Diagrama arata un sistem bine structurat, in care clasele sunt organizate in functie de functionalitati specifice. Aceasta abordare modulara permite dezvoltarea si extinderea usoara a jocului.