Files
TheGame/scripts

Scripts Structure - Domain-Driven Design

Detta projekt använder en Domain-Driven Design-struktur för att organisera koden på ett skalbart och underhållbart sätt.

Mappstruktur

Core/

Grundläggande spellogik och huvudsystem

  • Game.cs - Huvudklass för spelet
  • GameState.cs - Spelets tillstånd
  • GameSettings.cs - Spelinställningar

UI/

Användargränssnitt och visuella komponenter

UI/Menus/

Menyhantering

  • MainMenu.cs - Huvudmeny
  • LoadGameMenu.cs - Ladda spel-meny
  • SettingsMenu.cs - Inställningsmeny
  • PauseMenu.cs - Pausmeny
  • InstanceSelectionMenu.cs - Val av spelinstans

UI/Dialogs/

Dialogrutor och popup-fönster

  • SaveDialog.cs - Spara spel-dialog
  • AdvancedSaveDialog.cs - Avancerad spara-dialog
  • ExitConfirmationDialog.cs - Bekräftelse för avslut

UI/HUD/

Heads-up Display komponenter (framtida användning)

Gameplay/

Spelmekanik och spelspecifik logik

Gameplay/Units/

Enheter och karaktärer (framtida användning)

Gameplay/Actions/

Spelares aktioner och kommandon (framtida användning)

Gameplay/Stats/

Statistik och värdesystem (framtida användning)

Gameplay/Combat/

Stridssystem (framtida användning)

Gameplay/World/

Världslogik och miljö (framtida användning)

Story/

Berättelse och narrativ

Story/Events/

Story-events och händelser (framtida användning)

Story/Dialogue/

Dialogsystem (framtida användning)

Story/Quests/

Uppdragssystem (framtida användning)

Story/Narrative/

Berättarlogik (framtida användning)

Systems/

Återanvändbara system och managers

Systems/Save/

Spara/ladda-system

  • SaveManager.cs - Hanterar sparning/laddning
  • SaveInstance.cs - Representation av sparfil

Systems/Localization/

Lokaliseringssystem

  • LocalizationManager.cs - Hanterar språkstöd

Systems/Audio/

Ljudsystem (framtida användning)

Systems/Input/

Inputhantering (framtida användning)

Systems/Events/

Event bus och messaging (framtida användning)

Data/

Datamodeller och konfiguration

  • GameSeed.cs - Spelfrö för procedurell generering

Data/Configurations/

Konfigurationsfiler (framtida användning)

Data/Definitions/

Data definitions för units, actions etc (framtida användning)

Data/Serialization/

Serialization helpers (framtida användning)

Modding/

Mod-stöd och utbyggbarhet

Modding/API/

Mod API interfaces (framtida användning)

Modding/Loader/

Mod loading system (framtida användning)

Modding/Framework/

Mod framework (framtida användning)

Fördelar med denna struktur

  1. Skalbarhet - Lätt att lägga till nya features utan att påverka befintlig kod
  2. Separation of Concerns - Varje mapp har ett tydligt ansvar
  3. Moduläritet - System kan utvecklas oberoende av varandra
  4. Testbarhet - Enkel att skriva enhetstester för varje domän
  5. Mod-vänlighet - Tydlig struktur för mod-utvecklare
  6. Underhållbarhet - Utvecklare vet direkt var de ska leta efter funktionalitet

Riktlinjer för utveckling

  • Håll relaterade klasser tillsammans i samma undermapp
  • Använd namespaces som matchar mappstrukturen
  • Skapa nya undermappar när en mapp blir för stor (>10-15 filer)
  • Undvik cirkulära dependencies mellan mappar
  • Använd interfaces för att kommunicera mellan olika domäner