-
Notifications
You must be signed in to change notification settings - Fork 0
CI CD
Scopul implementării unui pipeline de Continuous Integration (CI) și Continuous Deployment/Delivery (CD) este de a asigura:
- Build automat și constant al proiectului (pe fiecare commit sau pull request).
- Testare automată (testele unitare și eventual teste funcționale/integrare).
- Deployment facil (după ce build-ul și testele au trecut cu succes)
- Sistemul de versionare (Git): pentru gestionarea codului sursă.
- Platforma CI/CD: GitHub Actions
- Scripturi de build & test: Direct din Visual Studio 2022.
Pentru a configura proiectul, începem prin clonarea repository-ului folosind comanda:
git clone --recursive https://github.com/unibuc-cs/software-engineering-product-deadzone
Apoi, navigăm în directorul proiectului:
cd software-engineering-product-deadzone
Odată ajunși în director, generăm fișierele proiectului rulând:
generate_project.bat
sau, ne aflăm pe un sistem Unix:
./generate_project.bat
După generarea proiectului, deschidem și compilăm fișierul soluției:
DeadZone.sln
Visual Studio este instalat cu componenta "Desktop development with C++" activată.
Pentru a adăuga fișiere noi în proiect, plasează-le în folderul DeadZone
și se rulează din nou scriptul de generare a proiectului:
generate_project.bat
Acest proces va actualiza automat configurația proiectului.
În dezvoltarea acestui proiect, folosirea unor medii separate a ajutat la izolarea diferitelor etape de lucru și la minimizarea riscurilor când apar modificări majore.
-
Scop: Dezvoltare și testare locală/inițială a codului.
-
Caracteristici:
- Codul este în stadiu incipient, cu funcționalități noi sau netestate suficient.
- Build de tip Debug.
- Logare extinsă pentru a diagnostica probleme (log-uri detaliate, mesaje de eroare, assert-uri etc.).
- În Visual Studio 2022, se folosește configurația Debug și se poate rula direct din IDE.
- Se lucrează pe ramuri de feature separate (branch-uri), iar la final se face un Pull Request către ramura principală (main).
- Branch-urile curente de testare sunt Player-Spawn-Position, client-server-architecture, gamemodes, menu, multiplayer-menu.
- Fiecare branch are un nume sugestiv și implementează un anumit feature sau un bug fix legat de modul de funcționare/logica al jocului
-
Configurări specifice:
- Fișiere de tip config
-
config/game.json
se ocupă de gestionarea conexiunilor dintre entități și texturi -
config/input.json
se ocupă de maparea tastelor într-un joc. Fiecare acțiune (deplasare, interacțiune, tragere, schimbarea armelor, pauză etc.) este asociată cu un cod de tastă specific.
-
Scop: Mediu intermediar pentru testare înainte de lansarea oficială.
-
Caracteristici:
- Cod considerat relativ stabil, dar încă în faza de validare.
- Build de tip Release.
- Teste unitare.
-
Generare de hartă:
- Folosim algoritmul Perlin Noise pe baza dimensiunilor hartei (width, height) pentru a genera harta într-un mod procedural. Astfel la fiecare rulare se generează o mapă nouă conţinând:
- celule libere
- pereţi
- uşi
- obstacole
- shop
- Folosim algoritmul Perlin Noise pe baza dimensiunilor hartei (width, height) pentru a genera harta într-un mod procedural. Astfel la fiecare rulare se generează o mapă nouă conţinând:
-
Configurarea logicii modurilor de joc
- Crearea unui server si stabilirea arhitecturii modurilor de joc, în corespondenţă cu acesta.
- Zombie Survival
- Team Deathmatch
- Crearea unui server si stabilirea arhitecturii modurilor de joc, în corespondenţă cu acesta.
-
config/save.json
...
-
Scop: Mediu final, pentru utilizatorii/jucătorii reali.
-
Caracteristici:
- Build de tip Release.
- Stabilitate maximă, testată în prealabil în staging.
- În pipeline-ul CI/CD, avem un tag care este released pe ramura main.
-
Config specific :
- ?