Struktur eines Moduls
Aus PantheonWiki
Inhaltsverzeichnis |
Modultypen
- Common
Inhalte von Common-Modulen sind in allen Modulen verfügbar
- Abenteuermodul
Diese Module enthalten Inhalte, die nur in dem jeweiligen Modul vorhanden sind.
Struktur
Ein Modul hat üblicherweise folgende Struktur
| Verzeichnis | Inhalt |
|---|---|
| modules | |
| modules/{Modul} | |
| modules/{Modul}/dialogs | Dialogdaten |
| modules/{Modul}/dsa | DSA-Daten wie Talente/SF/Kampftechniken sowie Personen, Monster |
| modules/{Modul}/gui | Konfigurationsdatei für CEGUI |
| modules/{Modul}/gui/fonts | Schriftarten und dazugehörende Konfigurationsdateien |
| modules/{Modul}/gui/imagesets | Imagesets und dazugehörende Bilddateien |
| modules/{Modul}/gui/schemes | Schemadateien für CEGUI |
| modules/{Modul}/gui/windows | GUI-Fenster in Form von XML-Dateien |
| modules/{Modul}/gui/windows/buttons | Knöpfe für Aktionen von Gegenständen (technisch gesehen sind das komplette GUI-Fenster), Name muss {Aktionsname}.xml sein |
| modules/{Modul}/maps | .rlscene (Definitionsdateien für die Szenen) und .rlmap (Beschreibungsdatei für die einzelnen Karten) Dateien der Level |
| modules/{Modul}/materials | alle Material-Dateien, die Namen der Materials (nicht der Dateien) müssen einmalig sein |
| modules/{Modul}/materials/alpha | Blendingtexturen |
| modules/{Modul}/materials/env | Skytexturen |
| modules/{Modul}/materials/model | uv-gemappte Texturdateien |
| modules/{Modul}/materials/tiled | wiederholende Texturdateien |
| modules/{Modul}/models | alle Mesh- und Skeleton-Dateien der Modelle und Level |
| modules/{Modul}/scripts | Skriptdateien, bei einem nicht-Common-Modul auf jeden Fall die moduleconfig.rb |
| modules/{Modul}/scripts/maps | Skriptdateien, die direkt nach dem Laden eines Levels ausgeführt werden |
| modules/{Modul}/sound | Soundeffekte |
| modules/{Modul}/sound/ost | Musik |
Dateien, die vorhanden sein müssen
Konfigurationsdatei
- Name: moduleconfig.rb
- Position: in modules/{Modulverzeichnis}/scripts/
Dieses Ruby-Skript wird ausgeführt, wenn die Liste der Module durchgegangen wird, also noch bevor das Spiel startet. Es muss eine Klasse enthalten, die von ContentModule erbt und muss ein Objekt davon beim CoreSubsystem anmelden. Sie enthält Informationen zum Modul, wie dessen Name, benötigte RL-Version und Pfade zu den Resourcen. Die Methode start() wird aufgerufen, wenn das Modul gestartet wird und sollte mindestens die Anfangsmap des Moduls laden.
Hier ein Beispielskript:
include RlScript
class MapTestModule < ContentModule
def initialize()
# Das erste Argument ist die ID des Moduls
# Das zweite Argument ist der eigentliche Name des Moduls. unter diesem Namen erscheint das modul im Menu
# Das dritte Argument sollte "false" sein falls das Modul ein Abendteuer Modul ist sonst "true" für ein Common Modul
# Das vierte Argument ist die minimale Engine version die vorhanden sein muss damit das Modul korrekt geladen werden kann.
# C++ Verison: ContentModule(const Ogre::String& id, const CeGuiString& name, bool common, long minimumEngineVersion);
super("maptest", "MapTest", false, 200603080)
end
def getDependencies()
return ["common"]
end
def getTextureLocations()
return ["textures"]
end
def getModelLocations()
return ["models"]
end
def getSoundLocations()
return ["sound"]
end
def start()
require "mckhero.rb"
require "hero.rb"
require "clothing.rb"
SceneManager::getSingleton().loadScene("scene01", false);
$PM.setEnabled(true)
end
end
CoreSubsystem.getSingleton().registerModule(MapTestModule.new())
