Skip to content

alinatircob/TheLogicGraphDetective

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🕵️‍♂️ The Logic Graph: Procedural Detective Prototype

Un prototip de joc de investigație 3D creat în Unity, care demonstrează concepte avansate de programare: generare procedurală bazată pe Teoria Grafurilor, arhitectură Event-Driven și manipulare procedurală de text (NLP de bază).

Jocul generează un caz complet nou la fiecare apăsare a butonului de "New Game", creând o rețea complexă de suspecți, alibiuri încrucișate, dovezi incriminatorii (inclusiv indicii false - Red Herrings) și o singură soluție logică posibilă.


✨ Caracteristici Tehnice (Technical Highlights)

Acest proiect a fost dezvoltat cu un accent puternic pe Clean Architecture și Design Patterns, fiind perfect pentru a demonstra abilități de nivel Mid-Level în C# și Unity:

  • Teoria Grafurilor (Directed Graphs): Întregul mister este generat și stocat ca un graf orientat (LogicGraph). Nodurile reprezintă Suspecți, Locații, Obiecte și Timp, iar muchiile (LogicEdge) reprezintă relațiile dintre ele (Declarații, Dovezi, Motive).
  • Generare Procedurală de Text (Context-Free Grammar): Folosind un sistem bazat pe RegEx (TextResolver), jocul preia șabloane din GrammarDictionary și le populează dinamic cu datele din graf pentru a genera rapoarte medico-legale, extrase CCTV și declarații unice la fiecare joc.
  • Event-Driven Architecture (Observer Pattern): UI-ul, sistemul de input și logica jocului sunt complet decuplate. Interacțiunile vizuale (ex. tragerea unei ațe între două documente) emit evenimente prin GameEventManager, care sunt ascultate de motorul logic pentru a verifica validitatea acțiunii.
  • State Machine Pattern: Gestionarea stărilor jocului (InvestigationState vs MindPalaceState) se face printr-un state machine curat (GameStateManager), permițând tranziții fluide între masa de detectiv și modul de reconstrucție mentală.
  • Shadere Custom (URP HLSL): Efectul de eroare logică din "Mind Palace" este realizat printr-un shader procedural (HologramGlitch) scris special pentru Universal Render Pipeline, care manipulează vertecșii și adaugă aberații cromatice bazate pe timp.
  • Editor Scripting (Tooling): Proiectul include unelte personalizate pentru Unity Editor (DetectiveSetupTool, DetectivePrefabGenerator) pentru a automatiza crearea asset-urilor vizuale (prefabs) și setup-ul scenei, optimizând workflow-ul.

📂 Structura Proiectului (Clean Architecture)

Codul este organizat logic, respectând principiile SOLID:

  • /Core - Managerii principali și State Machine-ul (MasterBootstrapper, CaseManager).
  • /Model - Structurile de date fundamentale (BaseNode, LogicEdge, LogicGraph).
  • /Logic - Motorul de validare a regulilor și condițiile de victorie (VictoryValidator, LocationAlibiRule).
  • /Events - Event Bus-ul global (GameEventManager).
  • /ProceduralGeneration - Algoritmii care generează misterul, alibiurile false și adevărul (CaseGenerator).
  • /ProceduralText - Sistemul CFG pentru generarea documentelor din text (TextResolver, DocumentGenerator).
  • /Visuals - Orice script care interacționează direct cu Unity, UI-ul și 3D-ul (BoardInteractionManager, ProceduralAssetFactory, MindPalaceController).
  • /Editor - Extensii pentru fereastra Unity (generare prefabs).

🎮 Cum se joacă

  1. Investighează Tabla: Pe masa ta se află pozele suspecților, locațiile, armele și documentele procedurale. Folosește click stânga pe un anumit item pentru a afla mai multe despre el.
  2. Conectează Indiciile: Apasă click pe un item și ține apasat pentru a trage ațe (Spline-uri Bezier) între documente, locații și suspecți.
  3. Găsește Contradicțiile: Dacă încerci să creezi o legătură care încalcă o lege a fizicii sau un alibi (ex: un suspect nu poate fi în două locuri în același timp), jocul va intra în modul Mind Palace. Tabla va levita, hologramele vor suferi un efect de Glitch, iar ața greșită se va rupe.
  4. Ferește-te de Red Herrings: Jocul generează intenționat dovezi circumstanțiale pentru inocenți. Trebuie să coroborezi Ora crimei cu Arma și Locația pentru a găsi adevăratul vinovat.
  5. Rezolvă Cazul: Apasă butonul "Rezolvă Cazul" când ai legat corect Criminalul de Victimă, Locație și Arma Crimei. Dacă ai dreptate, câștigi!

🛠️ Setare și Instalare (Setup)

  1. Clonează acest repository local. (Asigură-te că folosești Unity 6 sau o versiune recentă compatibilă cu URP).
  2. Deschide proiectul în Unity Hub.
  3. (Opțional, dacă lipsește ceva vizual) Navighează în meniul de sus al Unity la Detective -> Auto-Setup Scene și apoi la Detective -> 2. Generate Aesthetic Prefabs. Aceasta va regenera materialele și prefab-urile procedurale.
  4. Deschide scena principală din Assets/Scenes/SceneMaster.unity.
  5. Apasă Play în Editor! Un caz complet nou va fi generat instant.

Proiect dezvoltat cu pasiune pentru a demonstra tehnici avansate de programare în Unity C#.

About

Unity C# prototype where mysteries are procedurally generated using Directed Graphs, Context-Free Grammar, and Custom URP Shaders.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors