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())

Persönliche Werkzeuge
Link zur berliOS-Projektseite