Przejdź do głównej zawartości

Opis struktury skryptów

Skrypty Gothic podzielone są na dwa główne katalogi: Content (treść gry) i System (systemy silnika). Każdy z nich posiada własny zestaw plików .src — specjalnych plików kompilacji, które określają kolejność ładowania skryptów.

Pliki .src — kompilacja

Pliki .src to listy plików .d (Daedalus) w kolejności, w jakiej mają być skompilowane. Silnik Gothic czyta je od góry do dołu:

PlikKatalogOpis
Gothic.srcContent/Główna kompilacja treści gry (NPC, przedmioty, dialogi, questy)
Fight.srcContent/Kompilacja taktyk walki (FAI)
Camera.srcSystem/Ustawienia kamery
Menu.srcSystem/Definicje menu gry
Music.srcSystem/Instancje muzyki
ParticleFX.srcSystem/Efekty cząsteczkowe
SFX.srcSystem/Efekty dźwiękowe
VisualFX.srcSystem/Efekty wizualne (czary, aury)
ważne

Kolejność wpisów w Gothic.src jest krytyczna! Jeśli odwołujesz się do instancji (np. przedmiotu w NPC), musi być ona zdefiniowana wcześniej w pliku .src.


Content — treść gry

Katalog Content/ zawiera wszystko, co definiuje świat gry: postacie, przedmioty, dialogi, AI, magię i questy. Jest kompilowany przez Gothic.src i Fight.src.

Content/
├── Gothic.src ← główny plik kompilacji
├── Fight.src ← kompilacja taktyk walki

├── _intern/ ← klasy i stałe silnika
├── AI/ ← sztuczna inteligencja
├── Items/ ← przedmioty
├── FAI/ ← taktyki walki
├── Story/ ← fabuła, NPC, dialogi
├── Cutscene/ ← przerywniki filmowe
└── Spine/ ← integracja z platformą Spine

_intern/ — klasy i stałe silnika

Zawiera deklaracje klas silnika oraz stałe globalne. To fundament, na którym opierają się wszystkie inne skrypty.

PlikOpis
Classes.dKlasy silnika: C_NPC, C_Item, C_INFO, C_Mission i inne
Constants.dStałe globalne, zmienne stanu misji, zmienne fabuły
Fight.dStałe systemu walki
informacja

Pliki w _intern/ są zawsze na początku Gothic.src — definiują typy danych, z których korzysta reszta skryptów.

AI/ — sztuczna inteligencja

Kontroluje zachowanie postaci i potworów. Podzielony na osobne podsystemy:

AI/
├── AI_Intern/ ← rdzeń AI
│ ├── AI_Constants.d ← stałe AI (dystanse, priorytety)
│ ├── Externals.d ← deklaracje funkcji silnika
│ ├── Perception.d ← reakcje na otoczenie
│ ├── Focus.d ← ustawienia focusu (na co NPC zwraca uwagę)
│ ├── Species.d ← definicje gatunków
│ └── BodyStates.d ← stany ciała (siedzi, leży, walczy)

├── Human/ ← zachowanie ludzi
│ ├── B_Human/ ← funkcje zachowań (B_ = Behavior)
│ ├── C_Human/ ← funkcje warunków (C_ = Condition)
│ ├── TA_Human/ ← daily routines (TA = Tagesablauf)
│ └── ZS_Human/ ← automaty stanów (ZS = Zustandsautomat)

├── Monster/ ← zachowanie potworów
│ ├── B_Monster/ ← zachowania potworów
│ ├── C_Monster/ ← warunki potworów
│ ├── RTN_Monster/ ← plany dnia potworów
│ └── ZS_Monster/ ← automaty stanów potworów

├── Magic/ ← system magii
│ ├── Spells/ ← definicje zaklęć
│ └── ZS_Magic/ ← stany rzucania czarów

└── Test_Skripts/ ← skrypty testowe/debugowe

Konwencje nazewnicze w AI:

  • B_ (Behavior) — funkcje wykonujące akcje, np. B_Attack, B_Flee
  • C_ (Condition) — funkcje sprawdzające warunki, np. C_CanSeeNpc
  • TA_ (Tagesablauf) — plany dnia NPC
  • ZS_ (Zustandsautomat) — automaty stanów AI (stan bezczynności, walki, ucieczki itp.)

Items/ — przedmioty

Wszystkie definicje przedmiotów w grze. Pliki pogrupowane według typu:

PlikOpis
IT_Melee_Weapons.dBroń biała (miecze, topory)
IT_Ranged_Weapons.dBroń dystansowa (łuki, kusze)
IT_Armor.dZbroje
IT_Food.dJedzenie
IT_Potions.dMikstury
IT_Plants.dRośliny (składniki alchemiczne)
IT_Runen.dRuny magiczne
IT_Scrolls.dZwoje zaklęć
IT_Ringe.dPierścienie
IT_Amulette.dAmulety
IT_Keys.dKlucze
IT_Misc.dPrzedmioty różne (złoto, pochodnie)
IT_Written.dDokumenty, listy, księgi
MissionItems_*.dPrzedmioty misyjne (per rozdział)

FAI/ — taktyki walki

Definicje taktyk walki (Fight AI) dla różnych typów przeciwników:

PlikOpis
FAI_Human_Normal.dStandardowa taktyka ludzka
FAI_Human_Strong.dSilny przeciwnik
FAI_Human_Master.dMistrz walki
FAI_Human_Coward.dTchórz (ucieka przy niskim HP)
FAI_Wolf.dWilk
FAI_Orc.dOrk
FAI_Dragon.dSmok
FAI_Troll.dTroll
FAI_Demon.dDemon
wskazówka

Taktyki walki są przypisywane do NPC przez pole fight_tactic w instancji C_NPC.

Story/ — fabuła

Największy i najważniejszy katalog. Zawiera NPC, dialogi, questy, eventy i wszelkie skrypty fabularne:

Story/
├── Startup.d ← Funkcje startowe światów (spawn NPC)
├── Story_Globals.d ← Zmienne globalne fabuły
├── NPC_Globals.d ← Zmienne globalne NPC
├── SVM.d ← Standard Voice Messages (okrzyki NPC)
├── Text.d ← Stałe tekstowe
├── XP_Constants.d ← Stałe doświadczenia

├── NPC/ ← Definicje NPC (instancje C_NPC)
│ ├── PC_Hero.d ← Postać gracza
│ ├── VLK_*.d ← Mieszczanie
│ ├── MIL_*.d ← Milicjanci
│ ├── PAL_*.d ← Paladyni
│ ├── SLD_*.d ← Najemnicy
│ ├── BAU_*.d ← Farmerzy
│ ├── BDT_*.d ← Bandyci
│ ├── KDF_*.d ← Magowie ognia
│ ├── KDW_*.d ← Magowie wody
│ ├── PIR_*.d ← Piraci
│ ├── NOV_*.d ← Nowicjusze
│ ├── DJG_*.d ← Łowcy smoków
│ └── Monster/ ← Definicje potworów

├── NPC_Scripts/ ← Funkcje pomocnicze NPC
│ ├── NPC_Default.d ← Prototyp Npc_Default
│ ├── B_SetNpcVisual.d ← Ustawianie wyglądu
│ ├── B_GiveNpcTalents.d ← Przydzielanie umiejętności
│ └── B_SetFightSkills.d ← Ustawianie umiejętności walki

├── Dialoge/ ← Dialogi (~1200+ plików)
│ ├── DIA_VLK_*.d ← Dialogi mieszczan
│ ├── DIA_MIL_*.d ← Dialogi milicjantów
│ ├── DIA_BAU_*.d ← Dialogi farmerów
│ └── ... ← (plik per NPC)

├── B_Story/ ← Funkcje fabularne
│ ├── B_GivePlayerXP.d ← Dawanie doświadczenia
│ ├── B_LogEntry.d ← Wpis do dziennika
│ ├── B_Enter_NewWorld.d ← Wejście do nowego świata
│ └── B_Kapitelwechsel.d ← Zmiana rozdziału

├── B_GiveTradeInv/ ← Ekwipunek handlarzy
│ ├── B_GiveTradeInv.d ← Główna funkcja
│ └── B_GiveTradeInv_*.d ← Per handlarz

├── B_Content/ ← Funkcje pomocnicze treści
├── B_AssignAmbientInfos/ ← Dialogi tła (ambientowe)

├── Dialog_Mobsis/ ← Interakcje z obiektami
│ ├── SmithWeapon.d ← Kowalstwo
│ ├── Potion_Alchemy.d ← Alchemia
│ ├── cook_s1.d ← Gotowanie
│ └── SleepABit.d ← Spanie w łóżku

├── Events/ ← Eventy fabularne
│ └── EVT_*.d ← Skrypty eventowe (bitwy, cutscenki)

├── G_Functions/ ← Funkcje globalne gry
│ ├── G_PickLock.d ← Otwieranie zamków
│ └── G_CanSteal.d ← Kradzież

└── Log_Entries/ ← Dziennik questów
└── LOG_Constants_*.d ← Stałe tematów dziennika

Konwencje nazewnicze NPC (prefixy):

PrefixGildia
PC_Gracz (Player Character)
VLK_Mieszczanin (Volk)
MIL_Milicjant (Miliz)
PAL_Paladyn
SLD_Najemnik (Söldner)
BAU_Farmer (Bauer)
BDT_Bandyta (Bandit)
KDF_Mag ognia (Kreisfeuer)
KDW_Mag wody (Kreiswasser)
PIR_Pirat
NOV_Nowicjusz (Novize)
DJG_Łowca smoków (Drachenjäger)

System — systemy silnika

Katalog System/ zawiera definicje systemów silnika: menu, kamery, muzyki, efektów dźwiękowych i wizualnych. Każdy podsystem ma własny plik .src.

System/
├── Camera.src ← kompilacja kamery
├── Menu.src ← kompilacja menu
├── Music.src ← kompilacja muzyki
├── ParticleFX.src ← kompilacja efektów cząsteczkowych
├── SFX.src ← kompilacja efektów dźwiękowych
├── VisualFX.src ← kompilacja efektów wizualnych

├── _intern/ ← deklaracje klas systemowych
├── Camera/ ← ustawienia kamery
├── Menu/ ← definicje menu
├── Music/ ← instancje muzyki
├── PFX/ ← efekty cząsteczkowe
├── SFX/ ← efekty dźwiękowe
└── VisualFX/ ← efekty wizualne

_intern/ — klasy systemowe

Deklaracje klas silnika dla poszczególnych systemów. Analogicznie do Content/_intern/, ale dla podsystemów:

PlikOpis
Camera.dKlasa C_CamSys — parametry kamery
Menu.dKlasy C_Menu, C_MenuItem — definicje menu
Music.dKlasa C_MusicTheme — motywy muzyczne
ParticleFX.dKlasa C_ParticleFX — efekty cząsteczkowe
SFX.dKlasa C_SFX — efekty dźwiękowe
VisualFX.dKlasa C_VisualFX — efekty wizualne

Camera/ — kamera

Instancje kamer używanych w grze:

PlikOpis
CamInst.dDefinicje kamer: standardowa, dialogowa, walki, cutscenki

Definicje wszystkich ekranów menu:

PlikOpis
Menu_Main.dMenu główne
Menu_Status.dEkran postaci (statystyki, ekwipunek)
Menu_Log.dDziennik questów
Menu_Opt.dOpcje gry
Menu_Opt_Graphics.dOpcje grafiki
Menu_Opt_Audio.dOpcje dźwięku
Menu_Opt_Controls.dOpcje sterowania
Menu_Savegame.dZapis/odczyt gry
Menu_Defines.dStałe i definicje wspólne

Music/ — muzyka

PlikOpis
MusicInst.dInstancje motywów muzycznych (eksploracja, walka, zagrożenie per lokacja)

PFX/ — efekty cząsteczkowe

PlikOpis
PfxInst.dEfekty ogólne (ogień, dym, iskry)
PfxInstEngine.dEfekty silnikowe
PfxInstMagic.dEfekty magiczne (zaklęcia, runy)

SFX/ — efekty dźwiękowe

PlikOpis
SfxInst.dDźwięki otoczenia, interfejsu, obiektów
SfxInstSpeech.dDźwięki mowy (konfiguracja systemu dialogów)

VisualFX/ — efekty wizualne

PlikOpis
VisualFxInst.dEfekty wizualne zaklęć, aur, buffy

Podsumowanie

ObszarKatalogKompilacjaOpis
Klasy silnikaContent/_intern/Gothic.srcFundamenty — klasy C_NPC, C_Item, C_INFO...
AIContent/AI/Gothic.srcZachowania, percepcja, stany AI
PrzedmiotyContent/Items/Gothic.srcBronie, zbroje, mikstury, jedzenie
Taktyki walkiContent/FAI/Fight.srcTaktyki walki per typ wroga
FabułaContent/Story/Gothic.srcNPC, dialogi, questy, eventy
KameraSystem/Camera/Camera.srcTryby kamery
MenuSystem/Menu/Menu.srcEkrany menu gry
MuzykaSystem/Music/Music.srcMotywy muzyczne
CząsteczkiSystem/PFX/ParticleFX.srcEfekty cząsteczkowe
DźwiękSystem/SFX/SFX.srcEfekty dźwiękowe
Efekty wizualneSystem/VisualFX/VisualFX.srcEfekty zaklęć i aur