Skip to content

Conversation

@Alexandru-Boaru
Copy link

Feature: Skill tree backend and UI

Colaboratori:

  • BOARU Alexandru
  • GROSU Octavian-Alexandru

Features:

  • BOARU Alexandru:
    • Obiect numit SkillTreeCanvas care contine mai multe componente de UI asociate functionalitatii de Skill Tree:
      • Reprezentarea vizuala a skill tree-ului, alcatuita din iconite legate prin linii
      • Un panou cu indicatii despre utilizarea interfetei
      • Un panou cu detalii despre efectele unui skill. La runtime, acesta e vizibil cand cursorul se afla peste o iconita din skill tree
      • Un counter care arata cate skill points sunt disponibile pentru a face upgrade la un skill
    • Tool de creare de grafuri utilizand GraphView API, pentru creare rapida de skill tree-uri in editor
    • Scriptul SkillTreeUI.cs care se ocupa cu crearea si gestionarea Skill Tree-ului
    • Butoane gestionate prin intermediul scripturilor SkillIcon.cs
  • GROSU Octavian-Alexandru:
    • Functionalitati Server
      • Un buton, prin intermediul caruia se poate incrementa nivelul clientului conectat si prin care i se atribuie skill points, folosind metode ClientRpc
      • Un indicator al nivelului jucatorului
      • O lista cu skillurile pe care clientul le-a deblocat in timp real, receptionata de la acesta
    • Functionalitati Client
      • Deblocarea automata a primului rand din skill tree
      • Abilitatea de a aloca skill points in skilluri, in baza disponibilitatii, nivelului maxim si cantitatii disponibile
      • Deblocarea skillurilor ce urmeaza dupa un skill, in urma alocarii unui punct in acesta
      • Actualizarea mesajului de numar de skill points disponibili
      • Transmiterea informatiei relevante inapoi la server (skill list, numarul de skill points consumate) prin metode ServerRpc

Pachete externe:

  • Netcode for GameObject (com.unity.netcode.gameobjects)
  • Universal RP (com.unity.render-pipelines.universal)

Alte resurse externe:

Instructiuni utilizare:

  • Utilizare tool de creare Skill Tree

    1. Se deschide tool-ul din meniul Graph>Skill Tree Graph
    2. Se creaza noduri cu butonul Create Node si leaga intre ele cu scopul de a obtine un arbore (nodul start e radacina arborelui)
    3. Se asigneaza ScriptableObjects de tip SkillData in interiorul nodurilor
    4. Se scrie in casuta de text din bara de sus numele arborelui si se apasa butonul Save Data. Aceasta creeaza se creaza in _Assets/DEV/Feature-Skill-Tree/Resources un obiect de tip SkillTreeContainer care contine nodurile si muchiile grafului
    5. Se asigneaza SkillTreeContainer in componenta SkillTreeUI si se creeaza Skill Tree-ul
    6. Se utilizeaza meniul Window>Skill Tree Edit Mode Functions pentru a genera arborele in interiorul scenei
  • Testare la runtime:

    1. Se realizeaza build-ul cu scena de testare.
    2. Se deschide o instanta a build-ului, si se instantiaza server-ul prin butonul de Start Host.
    3. Se deschide o a doua instanta a build-ului, si se conecteaza clientul folosind butonul Start Client.
    4. Din instanta de client, se apasa tasta Tab pentru a vizualiza Skill Tree-ul. Initial, jucatorul va avea nivel 1 si va putea aloca un singur skill point. Folosind click stanga si drag, putem naviga prin Skill Tree.
    5. Se aloca skill point-ul intr-unul din skill-urle deblocate si se observa deblocarea skill-urilor urmatoare.
    6. Din instanta de server, se observa faptul ca lista de skill-uri a fost actualizata, si se foloseste butonul de Add Level pentru a creste nivelul jucatorului si implicit numarul de skill point-uri detinute.
    7. Din instanta de client, se observa faptul ca bugetul de skill points a fost actualizat si se foloseste pentru a debloca skill-urile dorite.
    8. In instanta de server, vom observa toate skillurile pe care le-am deblocat via client.

Imagini:

Tool de creare de de graf pentru Skill Tree

Screenshot (258)

Un graf demo pentru un skill tree

Screenshot (259)

Skill Tree Container rezultat

Screenshot (268)

Skill Tree rezultat in scena dupa generare

Screenshot (274)

Imagine scena demo la rulare

Screenshot (260)

Stare initiala pe host

Screenshot (263)

Stare initiala pe client

Screenshot (265)

Stare intermediara pe host

Screenshot (267)

Stare intermediara pe client

Screenshot (266)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant