Planificare activitate proiect

Pe perioada celor 3 săptămâni de practică se va încerca terminarea translatării codului între cele două versiuni existente și corectarea tuturor bugurilor rămase. Se va încerca de asemenea și adăugarea unor functionalități noi.

În principiu, se va lucra în paralel cu 2 echipe. Una se va ocupa de lumea 3D iar cealaltă de lumea 2D. Este posibil ca în anumite momente să existe și o a treia echipă ce va lucra pe partea de acțiuni.

Scopul principal urmărit în aceste 3 săptămâni este realizarea lumii 3D. Restul sunt doar opționale (impuse de logica proiectului) centrate în jurul acestui obiectiv.

Descriere componente proiect

Vizualizați schema atașată și citiți descrierile fiecărei componente atât de aici cât și din prezentarea atașată.

Nucelul central (base.py)

  • Descriere
    • Conține componentele fără de care motorul nu poate exista, componente utile și pentru integrarea motorului în alte aplicații.
  • Detaliere clase
    • Task - Ancestor comun, toate modulele vitale ale proiectului vor fi derivate din task.
    • Log - Evident, loguri pentru diverse acțiuni. Deoarece orice modul vital moștenește Task, va avea acces la Log.
    • Kernel - Nucleul central al aplicației, locul unde rezidă bucla principală a motorului, rulând în paralel cu cea de randare.
  • Intrări
    • În kernel se inserează taskurile în ordinea dorită pentru rulare. Un exemplu poate fi găsit în fișierul de test din branches, hammer.py
  • Ieșiri
    • Clasa log realizează scrieri în fișiere
    • Kernelul poate comanda unele taskuri să-și încheie activitatea prematur, prin intermediul altor taskuri.
  • Importanță
    • Vital pentru tot proiectul
  • Statut
    • Complet terminat, mici modificări sunt posibile dar improbabile. Pentru orice modificări aici discutați cu Mihai Maruseac

Interfațare OpenGL, desenare (OGLbase, Render)

  • Descriere
    • Conține componentele care realizează munca low-level de desenare. Este indicat ca orice apel OpenGL să se afle în clasa corespunzătoare și orice funcție de desenare neparticularizată să se afle inclusă în Render. În caz de dubii privind introducerea unei funcții undeva discutați cu Mihai Maruseac.
  • Detaliere clase
    • OGL - Conține toate apelurile OpenGL. Este singurul loc în care aceste apeluri au voie să existe.
    • Render - Reprezintă taskul de randare al aplicației. Inițializează fereastra, reazlizează diverse setări și apoi pasează controlul Kernelului. La fiecare rulare, desenează tot ce trebuie desenat pe ecran.
  • Intrări
    • TODO
  • Ieșiri
    • Rezultat pe ecran
  • Importanță
    • Vital pentru tot proiectul
  • Statut
    • Funcțional, modificabil pe parcurs.
    • Va trebui introdus un nivel de indirectare pentru optimizări de desenare.
    • Orice modificare aici trebuie aprobată de Mihai Maruseac.

Listener, Consola (Listener, Console)

  • Descriere
    • Componente importante pentru interacțiunea cu utilizatorul sau cu evenimentele. Listenerul ascultă evenimente de la mouse și tastatură iar Consola permite debug mai ușor prin modificarea dinamică a parametrilor motorului sau lumii desenate.
  • Detaliere clase
    • Listener - Task-ul răspunzător de reacționarea la evenimente externe
    • Console - Task-ul răspunzător de reacționarea la comenzile de la consolă.
  • Intrări
    • Evenimente, comenzi - toate au atașate dinamic câte o funcție care se execută în momentul oportun. Consultați fișierul de test.
  • Ieșiri
    • Depind de tipul evenimentului/comenzii și de funcția atașată
  • Importanță
    • Vital pentru tot proiectul
  • Statut
    • Funcțional, modificabil pe parcurs.
    • Orice modificare majoră trebuie aprobată de Mihai Maruseac.
    • Se acceptă mici modificări dacă nu se influențează prea tare alte componente (cam aproape orice modificare posibilă)
    • Adăugarea de comenzi se va face dinamic în locul unde au vizibilitate suficientă (vedeți exemplul din branches)

Lumea 2D (GUI)

  • Descriere
    • Conține componentele necesare implementării unei interfețe grafice 2D cu utilizatorul.
  • Detaliere clase
    • Citiți documentațiile de pe pyglet și din interiorul claselor
  • Intrări
    • TODO
  • Ieșiri
    • TODO
  • Importanță
    • Necesar pentru consolă și pentru alte lucruri 2D. Esențial.
  • Statut
    • Funcțional.
    • Va fi modificat mult pe perioada următoare.
    • Trebuie să se poată permite realizarea unui mediu GUI configurabil și rapid.

Lumea 3D: Modele, Cameră, Lumini, Umbre

  • Descriere
    • Toate părțile importante din motorul grafic.
  • Detaliere clase
    • Citiți documentația aferentă sau contactați-l pe Mihai Maruseac
  • Intrări
    • TODO
  • Ieșiri
    • TODO
  • Importanță
    • Vital pentru finalizarea proiectului, fiecare modul are o importanță diferită
  • Statut
    • Modelele se vor încărca până cel târziu 12 Iulie.
    • Camera, Luminile și Umbrele se vor testa și se vor face funcționabile până cel târziu 19 Iulie
    • Animațiile în ultima săptămână.
    • Ultima săptămână de practică este destinată optimizărilor și îmbunătățirilor

Efecte. Optimizări. Algoritmi

  • Descriere
    • Ceață. Clipping. Culling. Selecție. Facilitare integrare într-o aplicație mai mare (construire primitive de tip API pentru clasele care nu fac deja asta)
  • Detaliere clase
    • TODO
  • Intrări
    • TODO
  • Ieșiri
    • TODO
  • Importanță
    • Neimportant acum, vitale în ultima etapă a proiectului
  • Statut
    • Selecția a fost implementată în versiunea veche, trebuie retestată pe noua versiune după integrarea modelelor (15 Iulie deadline)
    • Restul componentelor vor intra ca bonus în funcție de cum ne încadrăm cu restul aplicației.

Attachments