Neue Moddingmöglichkeiten in BtS (Civ4): Unterschied zwischen den Versionen
(→14.8 Organisation) |
K (Klammer hinzugefügt) |
||
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | __NOMATHJAX__ | ||
[[Kategorie:Civ4]] | [[Kategorie:Civ4]] | ||
[[Kategorie:Modifizieren (Civ4)]] | [[Kategorie:Modifizieren (Civ4)]] | ||
'''<u>Ein Modder-Leitfaden zu Beyond the Sword</u>'''<br> | '''<u>Ein Modder-Leitfaden zu Beyond the Sword</u>'''<br> | ||
− | (Original unter: [http://forums.civfanatics.com/showthread.php?t=229557| http://forums.civfanatics.com/showthread.php?t=229557] | + | (Original unter: [http://forums.civfanatics.com/showthread.php?t=229557| http://forums.civfanatics.com/showthread.php?t=229557]) |
<br><br> | <br><br> | ||
'''Über die Autoren''': | '''Über die Autoren''': | ||
Zeile 101: | Zeile 102: | ||
Damit kannst du eine neue Einheit, Einheitenklasse und Einheitendarstellungsklasse hinzufügen, die nur die Daten deiner neuen Einheit enthält. Verändert sich die Mod, betrifft das deine Dateien in keinster Weise und du musst deine Veränderungen nicht erneut vornehmen. | Damit kannst du eine neue Einheit, Einheitenklasse und Einheitendarstellungsklasse hinzufügen, die nur die Daten deiner neuen Einheit enthält. Verändert sich die Mod, betrifft das deine Dateien in keinster Weise und du musst deine Veränderungen nicht erneut vornehmen. | ||
<br> | <br> | ||
− | Das ist noch vielversprechender, wenn man die Möglichkeit bedenkt, mehrere XML-Mods zusammenzufügen. Du könntest 3 verschiedene Mods nutzen, die jeweils eine neue Zivilisation, einzigartige Einheiten und Gebäude hinzufügen, und sie zusammen spielen, allein indem du sie in den entsprechenden Ordner kopierst. Keine Notwendigkeit, PHP | + | Das ist noch vielversprechender, wenn man die Möglichkeit bedenkt, mehrere XML-Mods zusammenzufügen. Du könntest 3 verschiedene Mods nutzen, die jeweils eine neue Zivilisation, einzigartige Einheiten und Gebäude hinzufügen, und sie zusammen spielen, allein indem du sie in den entsprechenden Ordner kopierst. Keine Notwendigkeit, PHP zusammenzupuzzeln und wenn die Modder ihre Dateien updaten, ist es leicht genug, das zu übernehmen, ohne alles andere in deinem Spiel zu verändern. |
<br> | <br> | ||
Für detailliertere Informationen über modulares XML siehe Anhang A. | Für detailliertere Informationen über modulares XML siehe Anhang A. | ||
Zeile 134: | Zeile 135: | ||
Das ist eine neue XML-Datei in BtS. Sie enthält die Definitionen für die Einheitenanzeigearten und erlaubt es, neue Einheitenmeshes für eine festgelegte Einheit zu nutzen. Im Beispiel unten ist die | Das ist eine neue XML-Datei in BtS. Sie enthält die Definitionen für die Einheitenanzeigearten und erlaubt es, neue Einheitenmeshes für eine festgelegte Einheit zu nutzen. Im Beispiel unten ist die | ||
− | ART_DEF_UNIT_ARCHER_EURASIAN die frühe Anzeigeeinstellung, die für einen Bogenschützen benutzt wird, ART_DEF_UNIT_ARCHER_EUROPEAN wird in den mittleren und späteren Perioden verwendet. Der Bogenschütze hat, wie die meisten Einheiten, nur ein einziges UnitMesh, wie in seinem CIV4UnitInfos.xml-Element festgelegt ist. Aber Einheiten können in der Tat beliebig viele Meshes(3D-Modelle) haben - die Siedlereinheiten sind die einzigen Einheiten im Originalspiel, die mehr als ein Mesh nutzen – und um diese zu verändern, | + | ART_DEF_UNIT_ARCHER_EURASIAN die frühe Anzeigeeinstellung, die für einen Bogenschützen benutzt wird, ART_DEF_UNIT_ARCHER_EUROPEAN wird in den mittleren und späteren Perioden verwendet. Der Bogenschütze hat, wie die meisten Einheiten, nur ein einziges UnitMesh, wie in seinem CIV4UnitInfos.xml-Element festgelegt ist. Aber Einheiten können in der Tat beliebig viele Meshes(3D-Modelle) haben - die Siedlereinheiten sind die einzigen Einheiten im Originalspiel, die mehr als ein Mesh nutzen – und um diese zu verändern, für die Ersetzungsmeshes einfach als <UnitMeshGroup>-Elemente auf und sie werden in der Reihenfolge mit den CIV4UnitInfos-Meshes passend gemacht und ersetzen diese nacheinander. Jede Anzahl an Meshes kann in einer Einheit vorhanden sein und alle können auf diese Art ersetzt werden. |
<br> | <br> | ||
Jede Einheit, für die in einem StyleType keine Ersetzungen angegeben werden werden, wird einfach das Aussehen aus der UnitInfos.xml-Datei als Standard übernehmen und alle ARTDEFs können beliebig oft und in beliebig vielen StyleTypes aufgerufen werden, indem sie Teilen und Erstellen von Styles , die sich nur zu bestimmten Zeiten unterscheiden, um Kulturaufsplittung und -zusammenwachsen darzustellen, erlauben. | Jede Einheit, für die in einem StyleType keine Ersetzungen angegeben werden werden, wird einfach das Aussehen aus der UnitInfos.xml-Datei als Standard übernehmen und alle ARTDEFs können beliebig oft und in beliebig vielen StyleTypes aufgerufen werden, indem sie Teilen und Erstellen von Styles , die sich nur zu bestimmten Zeiten unterscheiden, um Kulturaufsplittung und -zusammenwachsen darzustellen, erlauben. | ||
Zeile 203: | Zeile 204: | ||
<br><br> | <br><br> | ||
− | Durch Veränderung des SDK kannst du alternative Arten der Einheitendarstellungslogik mit ihren eigenen XML-Dateien und logischen Strukturen erstellen, wie zum Beispiel Einheiten, die unterschiedliches Aussehen zeigen, | + | Durch Veränderung des SDK kannst du alternative Arten der Einheitendarstellungslogik mit ihren eigenen XML-Dateien und logischen Strukturen erstellen, wie zum Beispiel Einheiten, die unterschiedliches Aussehen zeigen, je nachdem, wie stark sie beschädigt sind, oder welche Beförderungen sie haben. |
Zeile 234: | Zeile 235: | ||
include "Mods/[ModName]/Resource/Themes/Civ4/Civ4Theme.thm"; | include "Mods/[ModName]/Resource/Themes/Civ4/Civ4Theme.thm"; | ||
}} | }} | ||
− | Alle möglichen Optionen detailliert auszuführen, die sich so verändern lassen, ist nicht Ziel dieses Leitfadens, es handelt sich grundsätzlich um alles, das in den früheren Versionen getan werden konnte, aber jetzt können diese Themes in Mods eingebaut werden, anstatt auf das gesamte Spiel angewendet werden zu müssen. Wenn du vorhast, ein Theme für eine eigene Mod zu erstellen, kannst du jetzt damit anfangen, indem du es in dem Vanilla- oder Warlords- „Ressource“-Ordner erstellst (denke daran, eine Sicherungskopie des Originals anzufertigen). Sobald BtS | + | Alle möglichen Optionen detailliert auszuführen, die sich so verändern lassen, ist nicht Ziel dieses Leitfadens, es handelt sich grundsätzlich um alles, das in den früheren Versionen getan werden konnte, aber jetzt können diese Themes in Mods eingebaut werden, anstatt auf das gesamte Spiel angewendet werden zu müssen. Wenn du vorhast, ein Theme für eine eigene Mod zu erstellen, kannst du jetzt damit anfangen, indem du es in dem Vanilla- oder Warlords- „Ressource“-Ordner erstellst (denke daran, eine Sicherungskopie des Originals anzufertigen). Sobald BtS herauskommt, kannst du es in deinen Mod-Ordner kopieren und anfangen, es zu benutzen. |
== 5.0 Neue Python-Funktionen == | == 5.0 Neue Python-Funktionen == | ||
− | Firaxis hat hart daran gearbeitet, neue Python-Funktionen hinzuzufügen, ebenso wie Stellen, an denen wir Funktionen unterbrechen und unsere eigene Logik, um Geschehnisse (wie es Einheiten unmöglich zu machen, bestimmte Orte zu betreten (in der Funktion unitCannotMoveInto)zu verhindern, | + | Firaxis hat hart daran gearbeitet, neue Python-Funktionen hinzuzufügen, ebenso wie Stellen, an denen wir Funktionen unterbrechen und unsere eigene Logik, um Geschehnisse (wie es Einheiten unmöglich zu machen, bestimmte Orte zu betreten (in der Funktion unitCannotMoveInto)zu verhindern, anwenden oder die Aktionen (wie z.B. neue Erfahrungspunktanforderungen in getExperienceNeeded zu erstellen) verändern zu können |
=== 5.1 CvEventManager.py === | === 5.1 CvEventManager.py === | ||
Zeile 251: | Zeile 252: | ||
: '''unitSpreadReligionAttempt''' - Einheit, Religion und ob die Religionsverbreitung erfolgreich war, werden übergeben | : '''unitSpreadReligionAttempt''' - Einheit, Religion und ob die Religionsverbreitung erfolgreich war, werden übergeben | ||
: '''UnitGifted''' - Übergibt die Einheit, den alten Besitzer der Einheit und den Ort, an dem die Einheit sich befindet | : '''UnitGifted''' - Übergibt die Einheit, den alten Besitzer der Einheit und den Ort, an dem die Einheit sich befindet | ||
− | : '''unitBuildImprovement''' - Einheit, Art der Geländemodernisierung und ob diese | + | : '''unitBuildImprovement''' - Einheit, Art der Geländemodernisierung und ob diese fertig gestellt ist, werden übergeben |
: '''corporationFounded''' - Unternehmen und gründender Spieler werden übergeben | : '''corporationFounded''' - Unternehmen und gründender Spieler werden übergeben | ||
: '''corporationSpread''' - Unternehmen, das sich verbreitet, besitzender Spieler und Stadt werden übergeben | : '''corporationSpread''' - Unternehmen, das sich verbreitet, besitzender Spieler und Stadt werden übergeben | ||
Zeile 283: | Zeile 284: | ||
== 6.0 Help-Attribut == | == 6.0 Help-Attribut == | ||
− | Dies mag nach einer Kleinigkeit | + | Dies mag nach einer Kleinigkeit aussehen, ist aber so wirkungsvoll und leicht zu benutzen, dass es besondere Erwähnung verdient. Es gibt ein neues Schemenattribut „Help“ zu Eigenschaften, Einheiten, Beförderungen, Gelände, Gebäuden, Features und Technologien. Help ist dafür vorgesehen, eine Text-Zeichenkette wie TXT_KEY_UNIT_GIANT_DEATH_ROBOT_HELP zu enthalten und alles, was diese Zeichenkette enthält wird für dieses Objekt an der Maus als Hilfetext angezeigt. |
In früheren Versionen mussten Modder, um zusätzliche Hilfetexte anzuzeigen, das SDK verändern. So ist das viel einfacher. | In früheren Versionen mussten Modder, um zusätzliche Hilfetexte anzuzeigen, das SDK verändern. So ist das viel einfacher. | ||
Zeile 301: | Zeile 302: | ||
Man kann ein großes Feld möglicher Ereignisse allein durch XML-Modden erzeugen, aber die Events können für größere Vielseitigkeit auch durch Python verbessert werden. Anhang B dieses Leitfadens enthält einige Beispiele für Ereignisse, die eingepflegt werden können. Die hier beschriebenen Events können, zusammen mit einigen anderen, in einer Event-Mod von Solver gefunden werden. Stell dir die Mod als eine Ergänzung zu diesem Leitfaden vor, wenn du willst. Sie kann unter: ([http://forums.civfanatics.com/showthread.php?t=234527]) gefunden werden. | Man kann ein großes Feld möglicher Ereignisse allein durch XML-Modden erzeugen, aber die Events können für größere Vielseitigkeit auch durch Python verbessert werden. Anhang B dieses Leitfadens enthält einige Beispiele für Ereignisse, die eingepflegt werden können. Die hier beschriebenen Events können, zusammen mit einigen anderen, in einer Event-Mod von Solver gefunden werden. Stell dir die Mod als eine Ergänzung zu diesem Leitfaden vor, wenn du willst. Sie kann unter: ([http://forums.civfanatics.com/showthread.php?t=234527]) gefunden werden. | ||
<br> | <br> | ||
− | Es ist wichtig, die beiden grundlegenden Blöcke des Event-Systems zu verstehen: Trigger und Events. „Trigger“ sind eine Sammlung von Parametern, die Bedingungen anzeigen, wenn sie auslösen können. Trigger überprüfen, ob du die nötige Technologie, Bevölkerung, etc. hast. Wenn die Bedingungen erfüllt sind, hat der Trigger eine Chance, auszulösen. Wenn ein Trigger auslöst, eröffnet er dem Spieler die Wahl zwischen ein oder mehreren Ereignissen („Events“) ( | + | Es ist wichtig, die beiden grundlegenden Blöcke des Event-Systems zu verstehen: Trigger und Events. „Trigger“ sind eine Sammlung von Parametern, die Bedingungen anzeigen, wenn sie auslösen können. Trigger überprüfen, ob du die nötige Technologie, Bevölkerung, etc. hast. Wenn die Bedingungen erfüllt sind, hat der Trigger eine Chance, auszulösen. Wenn ein Trigger auslöst, eröffnet er dem Spieler die Wahl zwischen ein oder mehreren Ereignissen („Events“) (nun gut, wenn es lediglich ein Ereignis ist, gibt es keine Wahl). Events selbst sind das, was die zugehörigen Ergebnisse zur Verfügung stellt, die dann den Spieler betreffen. |
<br> | <br> | ||
Spieler mögen geneigt sein, das Eventsystem als aus Ereignissen und Wahlmöglichkeiten bestehend anzusehen – das ist nicht wirklich angebracht. Jede Wahlmöglichkeit ist ein eigenes Event und der Trigger ist das, was die Auswahl zur Verfügung stellt. | Spieler mögen geneigt sein, das Eventsystem als aus Ereignissen und Wahlmöglichkeiten bestehend anzusehen – das ist nicht wirklich angebracht. Jede Wahlmöglichkeit ist ein eigenes Event und der Trigger ist das, was die Auswahl zur Verfügung stellt. | ||
Zeile 411: | Zeile 412: | ||
: '''iAdvancedStartCost''' - Die Kosten, das Gebäude beim fortgeschrittenen Spielstart zu erzeugen | : '''iAdvancedStartCost''' - Die Kosten, das Gebäude beim fortgeschrittenen Spielstart zu erzeugen | ||
: '''iAdvancedStartCostIncrease''' - Zusatzkosten pro beim fortgeschrittenen Start gekauftem Gebäude | : '''iAdvancedStartCostIncrease''' - Zusatzkosten pro beim fortgeschrittenen Start gekauftem Gebäude | ||
− | : '''iGoldenAgeModifier''' - Prozentuale Veränderung auf die Länge eines | + | : '''iGoldenAgeModifier''' - Prozentuale Veränderung auf die Länge eines Goldenen Zeitalters für den Besitzer durch das Gebäude |
: '''iAirUnitCapacity''' - Ob das Gebäude die in der Stadt lagerbare Anzahl an Lufteineinheiten betrifft | : '''iAirUnitCapacity''' - Ob das Gebäude die in der Stadt lagerbare Anzahl an Lufteineinheiten betrifft | ||
: '''iEnemyWarWearinessModifier'''- Feinde erleiden diese prozentuale Veränderung zur Kriegsunzufriedenheit | : '''iEnemyWarWearinessModifier'''- Feinde erleiden diese prozentuale Veränderung zur Kriegsunzufriedenheit | ||
Zeile 454: | Zeile 455: | ||
== 11.0 Spieleinstellungen == | == 11.0 Spieleinstellungen == | ||
− | == 11.1 Neue Global Defines == | + | === 11.1 Neue Global Defines === |
In Warlords gab es 17 neue global defines (globale Festlegungen). Es ist gerecht, zu sagen, dass Firaxis sich auch hier selbst übertroffen hat, Moddern einfache Kontrolle über noch mehr Funktionen zu geben. Denke daran, dass alle globalen Festlegungen in der GlobalDefinesAlt.xml vorgenommen werden sollten. | In Warlords gab es 17 neue global defines (globale Festlegungen). Es ist gerecht, zu sagen, dass Firaxis sich auch hier selbst übertroffen hat, Moddern einfache Kontrolle über noch mehr Funktionen zu geben. Denke daran, dass alle globalen Festlegungen in der GlobalDefinesAlt.xml vorgenommen werden sollten. | ||
Zeile 492: | Zeile 493: | ||
: '''NEW_CITY_BUILDING_VALUE_MODIFIER''' - Modifikator auf die KI-Vorliebe, in einer neuen Stadt ein Gebäude zu bauen | : '''NEW_CITY_BUILDING_VALUE_MODIFIER''' - Modifikator auf die KI-Vorliebe, in einer neuen Stadt ein Gebäude zu bauen | ||
: '''IGNORE_PLOT_GROUP_FOR_TRADE_ROUTES''' - Wenn das gesetzt ist, muss der Spieler Felder nicht besitzen, um durch sie Handel zu treiben | : '''IGNORE_PLOT_GROUP_FOR_TRADE_ROUTES''' - Wenn das gesetzt ist, muss der Spieler Felder nicht besitzen, um durch sie Handel zu treiben | ||
− | : '''EVENT_PROBABILITY_ROLL_SIDES''' - Je höher diese Zahl, desto | + | : '''EVENT_PROBABILITY_ROLL_SIDES''' - Je höher diese Zahl, desto seltener treten Events auf |
: '''FIRST_EVENT_DELAY_TURNS''' - Events werden nicht vor der hier eingestellten Runde auslösen | : '''FIRST_EVENT_DELAY_TURNS''' - Events werden nicht vor der hier eingestellten Runde auslösen | ||
: '''CIVILOPEDIA_SHOW_ACTIVE_CIVS_ONLY''' - Ob die Zivilopädie nur aktive Zivilisationen aufführt | : '''CIVILOPEDIA_SHOW_ACTIVE_CIVS_ONLY''' - Ob die Zivilopädie nur aktive Zivilisationen aufführt | ||
Zeile 499: | Zeile 500: | ||
: '''SHIP_BLOCKADE_RANGE''' - Umkreis in Feldern, in dem ein feindliches Schiff Handelsrouten verhindert | : '''SHIP_BLOCKADE_RANGE''' - Umkreis in Feldern, in dem ein feindliches Schiff Handelsrouten verhindert | ||
: '''PATH_DAMAGE_WEIGHT''' - Je höher dies, desto stärker wird die KI es vermeiden, durch schädigendes Gelände zu ziehen | : '''PATH_DAMAGE_WEIGHT''' - Je höher dies, desto stärker wird die KI es vermeiden, durch schädigendes Gelände zu ziehen | ||
− | : '''RENDER_AREABORDER_UNDER_FEATURES''' - Ob das Spiel Grenzen | + | : '''RENDER_AREABORDER_UNDER_FEATURES''' - Ob das Spiel Grenzen unter Geländeeigenschaften anzeigen soll |
: '''RENDER_GLOBEVIEW_CLOUDS''' - Ob das Spiel beim Rauszoomen Wolken anzeigen soll | : '''RENDER_GLOBEVIEW_CLOUDS''' - Ob das Spiel beim Rauszoomen Wolken anzeigen soll | ||
: '''RENDER_WATER''' - Ob das Spiel Wasser aktiv rendern soll | : '''RENDER_WATER''' - Ob das Spiel Wasser aktiv rendern soll | ||
Zeile 569: | Zeile 570: | ||
: '''COMBAT_SYNCH_DIE_FADE''' | : '''COMBAT_SYNCH_DIE_FADE''' | ||
− | == 11.2 Neue ini-Optionen == | + | === 11.2 Neue ini-Optionen === |
BtS enthält ebenfalls ein paar neue einstellbare Optionen in deiner [Modname].ini-Datei. Diejenigen, die schon seit einer gewissen Zeit modden, sind über CustomAssets-Kompatibilitätsprobleme gestolpert. Das Problem ist, dass ein Modder seine Mod in den CustomAssets-Ordner installieren oder der Spieler dort Dateien verändern mag. Diese Veränderungen sind dann vielleicht mit dem normalen Spiel verträglich, sodass der Nutzer kein Problem bemerkt, bis er eine Mod lädt und sie nicht funktioniert. Ich vermag nicht zu sagen, wie viele Leute von genau deshalb von Modladeproblemen geschrieben haben. Ich weiß, dass es einen größeren Anteil gibt, der gar nichts postet; er glaubt dann, die Mod funktioniere nicht. | BtS enthält ebenfalls ein paar neue einstellbare Optionen in deiner [Modname].ini-Datei. Diejenigen, die schon seit einer gewissen Zeit modden, sind über CustomAssets-Kompatibilitätsprobleme gestolpert. Das Problem ist, dass ein Modder seine Mod in den CustomAssets-Ordner installieren oder der Spieler dort Dateien verändern mag. Diese Veränderungen sind dann vielleicht mit dem normalen Spiel verträglich, sodass der Nutzer kein Problem bemerkt, bis er eine Mod lädt und sie nicht funktioniert. Ich vermag nicht zu sagen, wie viele Leute von genau deshalb von Modladeproblemen geschrieben haben. Ich weiß, dass es einen größeren Anteil gibt, der gar nichts postet; er glaubt dann, die Mod funktioniere nicht. | ||
Ich möchte wärmstens empfehlen, dass jeder Modder in seiner Mod NoCustomArt und NoCustomAssets auf 1 setzt, um derartige Fehler zu vermeiden. | Ich möchte wärmstens empfehlen, dass jeder Modder in seiner Mod NoCustomArt und NoCustomAssets auf 1 setzt, um derartige Fehler zu vermeiden. | ||
Zeile 586: | Zeile 587: | ||
Wenn du kein Changelog für deine Mod führst, solltest du deine Veränderungen durchgehen und dokumentieren. Ich schlage vor, „Beyond Compare“ ([http://www.scootersoftware.com| http://www.scootersoftware.com]) über deine und die Originaldatein laufen zu lassen (Wenn du eine Warlordsmodifikation bist, zwischen deinen Dateien und den Warlordsdateien, wenn du eine Vanillamod bist, zwischen deiner Mod und den Vanilla-Dateien). Es gibt eine Menge kleiner Veränderungen, die wir vornehmen und dann vergessen; das wird dich all diese kleinen Veränderungen einfangen lassen. | Wenn du kein Changelog für deine Mod führst, solltest du deine Veränderungen durchgehen und dokumentieren. Ich schlage vor, „Beyond Compare“ ([http://www.scootersoftware.com| http://www.scootersoftware.com]) über deine und die Originaldatein laufen zu lassen (Wenn du eine Warlordsmodifikation bist, zwischen deinen Dateien und den Warlordsdateien, wenn du eine Vanillamod bist, zwischen deiner Mod und den Vanilla-Dateien). Es gibt eine Menge kleiner Veränderungen, die wir vornehmen und dann vergessen; das wird dich all diese kleinen Veränderungen einfangen lassen. | ||
<br><br> | <br><br> | ||
− | Dieser Artikel sollte dir genug Informationen darüber geben, was mit BtS kommt, um mit der Planung für Ergänzungen für deine Mod zu beginnen. Ereignisse, die du ergänzen möchtest, neue pythonfunktionen, aus denen du einen Vorteil ziehen möchtest, usw. Vielleicht sogar einige Dinge zu überarbeiten, sodass sie die neuen Features nutzen. All diese Designarbeit kann jetzt getan werden. | + | Dieser Artikel sollte dir genug Informationen darüber geben, was mit BtS kommt, um mit der Planung für Ergänzungen für deine Mod zu beginnen. Ereignisse, die du ergänzen möchtest, neue pythonfunktionen, aus denen du einen Vorteil ziehen möchtest, usw. Vielleicht sogar einige Dinge zu überarbeiten, sodass sie die neuen Features nutzen. All diese Designarbeit kann jetzt getan werden. Bevor du BtS spielst, frage dich selbst, wie du Ereignisse gern eingebaut wüsstest (aus Spielersicht) und welche Art von Ereignissen du gerne sähest. Wenn dann BtS rauskommt, wirst du vielleicht überrascht sein zu sehen, dass sie so sind, wie du dir gedacht hast, oder sogar noch besser oder vielleicht magst du deine Idee dann lieber und hast dann alles, was du brauchst, um sie auszuprobieren. |
== 13.0 Zu Beyond the Sword konvertieren == | == 13.0 Zu Beyond the Sword konvertieren == | ||
− | Sogar bei alles verändernden Modifikationen wird es sich als leichter erweisen, die Änderungen nach BtS zu übernehmen als die Dateien in BtS- | + | Sogar bei alles verändernden Modifikationen wird es sich als leichter erweisen, die Änderungen nach BtS zu übernehmen als die Dateien in BtS-Dateien zu konvertieren. Du willst beispielsweise nicht deine CIV4UnitInfos.xml BtS-kompatibel machen. Nimm stattdessen die Standard- CIV4UnitInfos.xml von BtS und ergänze hier deine Veränderungen. Auch wenn es schneller scheinen mag, ersteres zu tun, wirst du in dem Fall auf lange Sicht mit unerwarteten Unterschieden, vielleicht sogar Abstürzen zu kämpfen haben. Besser ist es, sauber anzufangen. |
Zweitens: Wenn du eine Mod mit vielen Veränderungen konvertierst, ergänze nicht alles auf einmal. | Zweitens: Wenn du eine Mod mit vielen Veränderungen konvertierst, ergänze nicht alles auf einmal. | ||
<br><br> | <br><br> | ||
− | Konvertiere ein wenig, Einheiten oder Gebäude, | + | Konvertiere ein wenig, Einheiten oder Gebäude, füge ein oder zwei Zivs hinzu und dann spiele ein Spiel. Stell sicher, dass alles funktioniert, bevor du noch mehr ergänzt. Nichts so frustrierend wie eine Menge Zeit zum Konvertieren aufzuwenden, nur um einen allgemeinen Absturz zu finden, den abzugrenzen du all deine gerade vorgenommenen Veränderungen rückgängig machen musst. |
<br><br> | <br><br> | ||
Untersuch die XmlLoadUtilitySet.cpp-Datei, um all die Dateitypen zu sehen, die das Spiel lädt. Ein guter Erfahrungswert ist, dass du deine Mod in die Reihenfolge, in der diese Dateien geladen werden, bringen solltest, um „dangling reference“-Fehler zu vermeiden. Technologien kommen so früh, gefolgt von den Gebäuden, dann Einheitenklassen, dann die Typen, dann Anführer und Zivilisationen ziemlich gegen Ende. | Untersuch die XmlLoadUtilitySet.cpp-Datei, um all die Dateitypen zu sehen, die das Spiel lädt. Ein guter Erfahrungswert ist, dass du deine Mod in die Reihenfolge, in der diese Dateien geladen werden, bringen solltest, um „dangling reference“-Fehler zu vermeiden. Technologien kommen so früh, gefolgt von den Gebäuden, dann Einheitenklassen, dann die Typen, dann Anführer und Zivilisationen ziemlich gegen Ende. | ||
Zeile 599: | Zeile 600: | ||
Wenn es sich nicht um eine „total conversion“-Mod handelt, zieh das „modulares XML“-Feature von BtS ernsthaft in Erwägung. Es wird dir zumindest ersparen, jedesmal, wenn Firaxis einen Patch herausbringt, die Mod zu verändern (weil Veränderungen an ihrem Kern deine Dateien nicht betreffen). Es macht es Modderkollegen und Spielern auch leichter, deine Mod mit anderen zusammenzuführen. | Wenn es sich nicht um eine „total conversion“-Mod handelt, zieh das „modulares XML“-Feature von BtS ernsthaft in Erwägung. Es wird dir zumindest ersparen, jedesmal, wenn Firaxis einen Patch herausbringt, die Mod zu verändern (weil Veränderungen an ihrem Kern deine Dateien nicht betreffen). Es macht es Modderkollegen und Spielern auch leichter, deine Mod mit anderen zusammenzuführen. | ||
<br><br> | <br><br> | ||
− | Wenn du vorhast, eine große Modifikation zu portieren, sprich dich mit den Erstellern | + | Wenn du vorhast, eine große Modifikation zu portieren, sprich dich mit den Erstellern der Komponenten, die du in der Vergangenheit eingebaut hast, ab, um zu sehen, ob sie auf „modulares XML“ umsteigen und dir dadurch Zeit und Mühen sparen werden. Mit deinen eigenen, einzigartigen Inhalten beginn, indem du sie von dem Originalinhalt trennst, und erstelle dann ein Modul, das aus den Veränderungen gegenüber dem Original besteht, wenn du welche vorgenommen hast, und konvertiere und modularisiere die neuen Materialien Bit für Bit, indem du sie der Mod hinzufügst und testest, wie das funktioniert, und dann Module von anderen ergänzt und auf den neuesten Stand bringst. |
<br><br> | <br><br> | ||
− | Die BtS-SDK-Dateien kommen auf der CD, sie werden nicht erhältlich sein, bis das Siel in die Läden kommt. Modifikationen des Warlords-Codes zu | + | Die BtS-SDK-Dateien kommen auf der CD, sie werden nicht erhältlich sein, bis das Siel in die Läden kommt. Modifikationen des Warlords-Codes zu übertragen wird in manchen Fällen wegen der Veränderungen vieler Funktionsargumente und der vollständigen Entfernung einiger Funktionen knifflig werden. Glücklicherweise arbeiten einige Betatester bereits daran, Code zu portieren, das CCCP (Civ4 Community Core Project) – zu finden unter [http://forums.civfanatics.com/forumdisplay.php?f=195-| http://forums.civfanatics.com/forumdisplay.php?f=195-] ist das Bestreben, eine DLL zu erstellen, die viele beliebte Erweiterungen in sich derart vereint, dass sie alle optional gemacht werden und auf Standard gestellt keinen Effekt haben. Es wird als eine Art „Skelett-Mod“ verteilt, die aus nur der DLL, Codebasis und angepassten Schemata besteht. Modder, die nicht ihre eigene DLL kompilieren können, können sie dann als Grundlage verwenden, ihre eigenen Inhalte hinzuzufügen und nur die speziellen Features einzuschalten, die sie wollen. Darüberhinaus können die, die programmieren können, ihre eigenen Mods hinzufügen und dadurch einen Sprung auf BtS-Portierung zu machen. Das CCCP ist ein anhaltendes Bemühen, jeder ist aufgerufen, teilzuhaben und seine Codeveränderungen zu teilen und für Einbau in das Projekt bereitzustellen. Die BtS-Version des CCCP sollte sofort erhältlich sein, wenn BtS die Ladenregale erreicht, und dadurch sofortiges Testen und Verwenden zu ermöglichen. |
Python wird wegen Veränderungen des Callback-Interfaces nicht gänzlich zuverlässig sein, aber es sollte leichter sein, sie wieder zum Laufen zu bringen wie wegen ihrer interpretierenden Natur und leichten Kodierbarkeit gewünscht. | Python wird wegen Veränderungen des Callback-Interfaces nicht gänzlich zuverlässig sein, aber es sollte leichter sein, sie wieder zum Laufen zu bringen wie wegen ihrer interpretierenden Natur und leichten Kodierbarkeit gewünscht. | ||
== 14.0 Anhang A- Modulares XML Laden == | == 14.0 Anhang A- Modulares XML Laden == | ||
− | == 14.1 Einleitung == | + | === 14.1 Einleitung === |
− | „Modulares XML Laden“ (MXMLL) ist ein neues Feature in BtS, das kreiert wurde, um Modder beim Teilen und Kombinieren ihrer Modifikationen zu unterstützen. Die, die sich mit den XML-Dateien aus Vanilla und Warlords auskennen, wissen, dass das Spiel Daten aus mehreren Dutzend XML-Dateien lädt; eine Datei für Gebäude, eine für Einheiten, usw. Früher war es nur möglich, eine Datei jeder Art zu laden und diese Datei musste unter einem ganz | + | „Modulares XML Laden“ (MXMLL) ist ein neues Feature in BtS, das kreiert wurde, um Modder beim Teilen und Kombinieren ihrer Modifikationen zu unterstützen. Die, die sich mit den XML-Dateien aus Vanilla und Warlords auskennen, wissen, dass das Spiel Daten aus mehreren Dutzend XML-Dateien lädt; eine Datei für Gebäude, eine für Einheiten, usw. Früher war es nur möglich, eine Datei jeder Art zu laden und diese Datei musste unter einem ganz bestimmten Dateipfad abgelegt sein und genau den richtigen Namen haben, um korrekt geladen zu werden. MXMLL ist eine Möglichkeit, Mods zu erstellen, die diese Einschränkungen umgehen; Indem man es verwendet, kann man „Module“ erstellen, kleine Pakete, die alle gleichzeitig geladen werden können und dadurch dem Nutzer einen einfachen Weg eröffnen, viele Mods gleichzeitig zu spielen. Dieser Leitfaden ist für Modder gedacht; er wird die Regeln, Strukturen und besten Vorgehensweisen zum Erstellen von Modulen und Konvertieren existenter Mods in das Modulformat. Sobald ein Modul erstellt ist, muss niemand mehr das ermüdende Ausschneiden-und-Einfügen verwenden, um Mods zu kombinieren und Modder werden in der Lage sein, ihre Objekte zu erneuern, ohne die von anderen anzurühren. |
− | == 14.2 Module erstellen == | + | === 14.2 Module erstellen === |
Weil die meisten bisherigen Mods in dem „aus einem Guss“-Format, soll heißen einer Datei jeder Art, vorliegen, werden die meisten neuen Mods auf einem von drei Wegen erstellt werden: | Weil die meisten bisherigen Mods in dem „aus einem Guss“-Format, soll heißen einer Datei jeder Art, vorliegen, werden die meisten neuen Mods auf einem von drei Wegen erstellt werden: | ||
Zeile 616: | Zeile 617: | ||
3. Erzeugung neuen Inhalts von Grund auf. | 3. Erzeugung neuen Inhalts von Grund auf. | ||
− | Welchen Weg du nutzt, wird von der Art deiner Modifikation abhängen. Hersteller von „Komponenten“ und Inhalten, die in einer | + | Welchen Weg du nutzt, wird von der Art deiner Modifikation abhängen. Hersteller von „Komponenten“ und Inhalten, die in einer Vielzahl von Mods genutzt werden sollen, werden den Bibliotheksansatz wählen wollen. Beispielsweise könnten Erweiterungen des neuen Einheiten-Aussehens-Typ-Features als eine Aussehenstypbibliothek gepackt werden, wobei jedes Modul eine Liste all des Aussehensarten und diese Aussehen selbst enthält. |
Dann ist es leicht für den Anwender, das Modul auszuwählen und die Wirkungen zu erhalten. Für Mods, die immer komplexer werden und von Querverweisen abhängen, wie neuen Technologien, die von neuen Einheiten, die neue Ressourcen benötigen, benötigt werden, wird es schwerer sein, Module zu erstellen als ein „stand alone“. In solchen Fällen könnte Modularisieren zu Zwecken der Organisation großer Dateien durch Aufteilung in Kategorien sinnvoller sein. | Dann ist es leicht für den Anwender, das Modul auszuwählen und die Wirkungen zu erhalten. Für Mods, die immer komplexer werden und von Querverweisen abhängen, wie neuen Technologien, die von neuen Einheiten, die neue Ressourcen benötigen, benötigt werden, wird es schwerer sein, Module zu erstellen als ein „stand alone“. In solchen Fällen könnte Modularisieren zu Zwecken der Organisation großer Dateien durch Aufteilung in Kategorien sinnvoller sein. | ||
Teamprojekte können von der verteilten Art der Arbeit profitieren, weil Teammitglieder an verschiedenen Dateien arbeiten können, ohne sie abgleichen und zusammenführen zu müssen (für teilweise große Projekte wird Versionskontrollsoftware sehr empfohlen). | Teamprojekte können von der verteilten Art der Arbeit profitieren, weil Teammitglieder an verschiedenen Dateien arbeiten können, ohne sie abgleichen und zusammenführen zu müssen (für teilweise große Projekte wird Versionskontrollsoftware sehr empfohlen). | ||
Zeile 622: | Zeile 623: | ||
− | == 14.3 Wie es funktioniert == | + | === 14.3 Wie es funktioniert === |
MXMLL arbeitet komplett während der XML-Ladezeit des Spiels. Während des Ladens liest das Spiel Daten für jeden Dateityp nacheinander, sodass es die Anzahl jeder Art von Spielelementen bestimmen und sie korrekt indizieren kann. Für jede Datei wird der „Basis-“Inhalt wie gewöhnlich von den Standarddateipfaden geladen, die man aus Warlords kennt. Dann wird der config-Parameter „Modulares Laden“ überprüft. Ist er 1 (true), wird eine Suche in den Ordnern „Modules“ innerhalb der gespielten Mod und „custom assets“ durchgeführt. Ein regulärer Ausdruck wird verwendet, um die Art einer jeden XML-Datei festzulegen, und nur die der richtigen Art werden geladen. Elemente innerhalb der Module werden nach den Basisinhalten geladen und können Basisinhalte ersetzen, die einen gleichen Typnamen haben, Module werden ebenfalls nacheinander geladen und ersetzen sich gegenseitig, sodass das letztgeladene im Spiel vorkommt. Die Reihenfolge des Modulladens wird nicht dadurch beeinflusst,ob das Modul in den Custom Assets oder der Mod selber vorliegt, beide könnten das andere ersetzen. Vermeide also immer, zwei konkurrierende Module zu haben. | MXMLL arbeitet komplett während der XML-Ladezeit des Spiels. Während des Ladens liest das Spiel Daten für jeden Dateityp nacheinander, sodass es die Anzahl jeder Art von Spielelementen bestimmen und sie korrekt indizieren kann. Für jede Datei wird der „Basis-“Inhalt wie gewöhnlich von den Standarddateipfaden geladen, die man aus Warlords kennt. Dann wird der config-Parameter „Modulares Laden“ überprüft. Ist er 1 (true), wird eine Suche in den Ordnern „Modules“ innerhalb der gespielten Mod und „custom assets“ durchgeführt. Ein regulärer Ausdruck wird verwendet, um die Art einer jeden XML-Datei festzulegen, und nur die der richtigen Art werden geladen. Elemente innerhalb der Module werden nach den Basisinhalten geladen und können Basisinhalte ersetzen, die einen gleichen Typnamen haben, Module werden ebenfalls nacheinander geladen und ersetzen sich gegenseitig, sodass das letztgeladene im Spiel vorkommt. Die Reihenfolge des Modulladens wird nicht dadurch beeinflusst,ob das Modul in den Custom Assets oder der Mod selber vorliegt, beide könnten das andere ersetzen. Vermeide also immer, zwei konkurrierende Module zu haben. | ||
− | == 14.4 Was nicht funktioniert == | + | === 14.4 Was nicht funktioniert === |
Leider gibt es eine Gruppe von Dateien, die nicht mit MXMLL zusammenarbeitet, und zwar jede, die mit Sound- oder Audio-Dateien zu tun hat. Diese wurden bisher nicht kompatibel gemacht, ebenso sind einige Dateitypen wie MissionInfos.xml und CommerceTypes.xml mit Enums im SDK verknüpft, sodass jede Erweiterung dieser Dateien ohne eine zugehörige Veränderung im SDK keine Wirkung hätte. Es wird empfohlen, keine Module mit diesen Dateien zu erstellen. | Leider gibt es eine Gruppe von Dateien, die nicht mit MXMLL zusammenarbeitet, und zwar jede, die mit Sound- oder Audio-Dateien zu tun hat. Diese wurden bisher nicht kompatibel gemacht, ebenso sind einige Dateitypen wie MissionInfos.xml und CommerceTypes.xml mit Enums im SDK verknüpft, sodass jede Erweiterung dieser Dateien ohne eine zugehörige Veränderung im SDK keine Wirkung hätte. Es wird empfohlen, keine Module mit diesen Dateien zu erstellen. | ||
− | == 14.5 Benennungsregeln == | + | === 14.5 Benennungsregeln === |
Das Dateienbenennungssystem, das benutzt werden muss, damit eine modulare XML-Datei geladen wird, ist streng, aber einfach und allgemeingültig. Weil * ein (mehrstelliges) Platzhalterzeichen ist, kannst du einen beschreibenden Namen vorweg platzieren, wie Ninja_CIV4UnitInfos.xml. Auch kann es eine beliebige Anzahl zwischengeordneter Ordner innerhalb des xml-Ordners geben; Daten können also nach Herzenslust verschachtelt werden. Beispiel: "modules/Custom Units/Ninja/Ninja_CIV4UnitInfos.xml". Das ist anders als das Standardladen des Spiels, das sehr starr war und noch immer ist. Das Ausbleiben der Übereinstimmung mit dem regulären Ausdruck ist der wahrscheinlichste Grund dafür, dass Inhalte im Spiel still und heimlich nicht auftreten (keine Ladewarnung!). | Das Dateienbenennungssystem, das benutzt werden muss, damit eine modulare XML-Datei geladen wird, ist streng, aber einfach und allgemeingültig. Weil * ein (mehrstelliges) Platzhalterzeichen ist, kannst du einen beschreibenden Namen vorweg platzieren, wie Ninja_CIV4UnitInfos.xml. Auch kann es eine beliebige Anzahl zwischengeordneter Ordner innerhalb des xml-Ordners geben; Daten können also nach Herzenslust verschachtelt werden. Beispiel: "modules/Custom Units/Ninja/Ninja_CIV4UnitInfos.xml". Das ist anders als das Standardladen des Spiels, das sehr starr war und noch immer ist. Das Ausbleiben der Übereinstimmung mit dem regulären Ausdruck ist der wahrscheinlichste Grund dafür, dass Inhalte im Spiel still und heimlich nicht auftreten (keine Ladewarnung!). | ||
− | == 14.6 Unterstützte Dateitypen == | + | === 14.6 Unterstützte Dateitypen === |
Die folgenden Arten von Dateien werden unterstützt; in allen Fällen wird das Spiel Dateien namens modules/*_TYP.xml suchen und finden, bei denen TYP eine der folgenden Zeichenketten ist: | Die folgenden Arten von Dateien werden unterstützt; in allen Fällen wird das Spiel Dateien namens modules/*_TYP.xml suchen und finden, bei denen TYP eine der folgenden Zeichenketten ist: | ||
Zeile 753: | Zeile 754: | ||
: "CIV4EspionageMissionInfo" | : "CIV4EspionageMissionInfo" | ||
− | == 14.7 Schema == | + | === 14.7 Schema === |
− | Der hauptsächliche Nachteil dieser Ordnerflexibilität ist, dass jede XML-Datei noch immer vor dem Laden für gültig erklärt werden muss und dass Civ das Schema in dem selben Ordner verlangt wie die Datei, die für | + | Der hauptsächliche Nachteil dieser Ordnerflexibilität ist, dass jede XML-Datei noch immer vor dem Laden für gültig erklärt werden muss und dass Civ das Schema in dem selben Ordner verlangt wie die Datei, die für gültig erklärt werden soll. Andernfalls schlägt das Laden fehl und eine Warnung wird ausgegeben, bei der man auf „OK“ klicken kann, um mit dem Laden fortzufahren, dann wird es allerdings danach wahrscheinlich „ITEM NOT FOUND“-Warnungen geben, weil die anderen mit dem Modul verbundenen Dateien mit in der Luft hängenden Referenzen zurückbleiben. In manchen Fällen ist es möglich, nur die Original-Schema-Dateien unverändert zu kopieren und das laufen zu lassen, aber das führt eventuell zu schwer behebbaren Überkreuzvalidationsfehlern, wenn man beginnt, irgendein verändertes Schema zu verwenden, deshalb ist es empfehlenswert, alle Modulschemata so umzubenennen, dass ein einfaches „Modulname_“ am Anfang steht, um das Modul mit dem Modul darin in Einklang zu bringen. Das stellt sicher, dass das Schema nur lokal genutzt wird und andere Module nicht zerstört. Denke daran, die Header der das Schema verwendenden Dateien abzuändern, sodass sie richtig darauf verweisen. Das ist besonders wichtig bei den Modulen, die einen neuen XML-Tag verwenden wollen, der mit einer modifizierten DLL geladen werden soll; das lokale Schema wird es ermöglichen, das Modul unter einer nichtmodifizierten DLL zu laden und das modifizierte Schema davon abzuhalten, andere XML-Dateien ungültig zu machen, im besten Fall wird es rückwärtskompatibel zu der bereitgestellten unmodifizierten DLL sein; keine Tags werden entfernt. |
− | == 14.8 Organisation == | + | === 14.8 Organisation === |
− | Auch wenn es nicht notwendig ist, | + | Auch wenn es nicht notwendig ist, wird doch empfohlen, dass Modder diese Organisationsvorschläge nutzen, damit alle auf dem selben Stand sind und Module leicht benutzt werden können. Innerhalb der Module wird es für jeden der größeren datentypen zwei Ordner geben, einen für Modifikationen an bestehenden Objekten „Modified TYPE“ und einen für neues Material „Custom TYPE“, wobei TYPE das Selbe ist wie ein Dateityp. Solche Sachen wie ganze Zivilisationen, die abhängige Unterelemente haben, sollten diese in ihren eigenen Ordnern beinhalten, sodass ein einzelnes Package alles enthält, um eine Civ hinzuzufügen oder zu entfernen. In der Regel sollte der Inhalt in den kleinsten Teilen, die eigenständig verwendbar sind vorliegen, wie einzelnen Einheiten, Technologien und Gebäuden. Nur wenn viele Elemente wegen Querverweisen voneinander abhängen, sollten sie zusammengepackt werden; das kann dadurch geschehen, dass einfach mehrere Elemente in jeder XML-Datei aufgeführt werden, genauso, wie die originalen „monolithischen“ Spieldateien aufgebaut waren. Wenn alle Abhängigkeiten innerhalb einer solchen XML-Datei vorliegen, wird sie sauber geladen. |
<br><br> | <br><br> | ||
: 1. Erstell einen neuen Ordner, der den Modulnamen trägt. Nimm für diesen etwas Beschreibendes, etwas sehr Einfaches. Z.B. „Ninja“. | : 1. Erstell einen neuen Ordner, der den Modulnamen trägt. Nimm für diesen etwas Beschreibendes, etwas sehr Einfaches. Z.B. „Ninja“. | ||
Zeile 769: | Zeile 770: | ||
: 4. Ergänze den Modulnamen vor jedem Dateinamen, auch der der Schemata, z.B. wird "_CIV4UnitInfos.xml" zu "Ninja_CIV4UnitInfos.xml". | : 4. Ergänze den Modulnamen vor jedem Dateinamen, auch der der Schemata, z.B. wird "_CIV4UnitInfos.xml" zu "Ninja_CIV4UnitInfos.xml". | ||
− | : 5. Öffne jede nicht-Schema-XML-Datei und | + | : 5. Öffne jede nicht-Schema-XML-Datei und ergänze den Modulnamen am Dateianfang. |
: 6. Wenn du ein Objekt aus einem bestehenden Mod extrahierst, kopiere den XML-Eintrag eines jeden Dateityps aus der monolithischen Datei der Mod in die dem Modul zugehörige XML-Datei. | : 6. Wenn du ein Objekt aus einem bestehenden Mod extrahierst, kopiere den XML-Eintrag eines jeden Dateityps aus der monolithischen Datei der Mod in die dem Modul zugehörige XML-Datei. | ||
Zeile 777: | Zeile 778: | ||
: 7. Öffne die ArtDef-Datei des Moduls, ändere einen jeden Dateipfadeintrag zu for "module/TYPE/MODULE/FILE", TYPE ist dabei ein Objekt wie "Custom Civilizations" oder "Modified Techs", MODULE ist einfach der in Schritt 1 benutzte Ordnername und FILE der Name der entsprechenden Graphikdatei wie Ninja_button.dds | : 7. Öffne die ArtDef-Datei des Moduls, ändere einen jeden Dateipfadeintrag zu for "module/TYPE/MODULE/FILE", TYPE ist dabei ein Objekt wie "Custom Civilizations" oder "Modified Techs", MODULE ist einfach der in Schritt 1 benutzte Ordnername und FILE der Name der entsprechenden Graphikdatei wie Ninja_button.dds | ||
− | : 8. Wenn es sich um ein großes, aus mehreren Objekten bestehendes Modul wie eine neue Zivilisation mit einzigartigen Einheiten, Gebäuden und Anführern handelt,stell zuerst das das übergeordnete Objekt (die Zivilisation) fertig und teste es, dann geh wieder zu Schritt 1 und | + | : 8. Wenn es sich um ein großes, aus mehreren Objekten bestehendes Modul wie eine neue Zivilisation mit einzigartigen Einheiten, Gebäuden und Anführern handelt, stell zuerst das das übergeordnete Objekt (die Zivilisation) fertig und teste es, dann geh wieder zu Schritt 1 und erstelle jedes Unterelement als Unterordner innerhalb des höherrangigen Objekts. Bei Schritt 7 zieh eine zusätzliche Ordnerebene in Betracht. |
: 9. Wirf, um Platz zu sparen, alle Dateien aus der Vorlage weg, die du nicht veränderst, beispielsweise müssen zivilisationsspezifische Einheiten und Gebäude keine neuen Einheiten- oder Gebäudetypen definieren. | : 9. Wirf, um Platz zu sparen, alle Dateien aus der Vorlage weg, die du nicht veränderst, beispielsweise müssen zivilisationsspezifische Einheiten und Gebäude keine neuen Einheiten- oder Gebäudetypen definieren. | ||
− | : 10. Schließlich | + | : 10. Schließlich fülle die Readme.txt aus, sodass andere, die dein Modul nutzen, es dir anrechnen oder dich kontaktieren können, baue alle speziellen Konfigurationseinstellungen oder Abhängigkeiten, um die zu wissen gut wäre, ein. |
+ | |||
+ | |||
+ | === 14.9 Fehlerbehebung=== | ||
+ | |||
+ | Einige der häufigsten Probleme, die du haben wirst, und ihre Ursachen sowie Möglichkeiten der Abhilfe: | ||
+ | |||
+ | Obwohl es beim Laden keine Fehlermeldung gab, ist kein Unterschied erkennbar - | ||
+ | Das liegt daran, dass die modulare xml-Datei komplett ausgelassen wird. Du kannst in deinem xml-Log sehen, dass die Dateien nie geladen wurden. Überprüfe zunächst, ob die „modular loading“-Option in der .ini auf 1 gesetzt ist. Wenn immer noch nichts passiert, schau nach, ob das Modulpaket unter "Assets/modules" und nicht direkt unter Assets oder im xml-Ordner gespeichert ist. Und schließlich versichere dich, dass die xml-Dateien '_'-Zeichen enthalten, es ist leicht, sie zu vergessen. | ||
+ | |||
+ | Magentafarbene Schaltflächen oder „roter Ball“-Einheiten und Gebäude - | ||
+ | Der Pfad der ArtDef-Date ist falsch und sie kann nicht gefunden werden. Überprüfe deine Graphikdateien auf Dopplungen. Hast du daran gedacht, sie ins Modul zu packen? Überprüfe die ArtDef und sorge dafür, dass der Dateipfad mit dem Modulpfad übereinstimmt, meist wird das "modules/TYPEOFMODULE/MODULENAME/FILENAME" sein, oder referenziere Inhalte der ursprünglich installierten Graphik. | ||
+ | |||
+ | Ladefehler "invalid according to schema" – | ||
+ | Das kann zwei Gründe haben: Folgt der Fehlermeldung ein bestimmter Tag mit Zeile folgt – so etwas wie " on line # is invalid" -, harmoniert die xml-Dateinicht mit deinem Schema (eines ist Warlords, das andere BtS; das könnte auch andersrum sein und du bekämest die eine ähnliche Fehlermeldung. Im anderen Fall, wenn nichts folgt, zeigt das an, dass das Schema nicht gefunden wurde und es keine Übereinstimmung zwischen Schemenname und Schemenreferenz gibt, siehe Schritt 4 und 5. | ||
+ | |||
+ | Ladefehler "reference not found" – | ||
+ | Zu diesem Fehler kommt es, wenn ein Zeichenkettenname im globalen Hash nicht gefunden wird. Du kannst OK anklicken, um weiterzukommen und mit dem Laden fortfahren, um weitere Fehler zu jagen; dann wird die nicht gefundene Zeichenkette zu NONE verstümmelt. Modulares Laden entfernt keine der Originalzeichenketten, solange also das Modul nur Sachen aus dem ursprünglichen Spiel (oder Mod) referenziert, wird dieser Fehler nicht auftreten. Wenn du aber Module erstellst, die aufeinander angewiesen sind, sagen wir, zwei Einheiten,Einheit A, die zu B modernisiert werden kann, wird A einen Verweis auf B benötigen und A ohne B zu laden würde zu dieser Fehlermeldung führen. | ||
+ | |||
+ | Ansehen des Objekts in der Zivilopädie zeigt eine leere Seite, keine Schaltfläche in einer Liste oder Python-Meldung - | ||
+ | Das liegt meist an einer fehlenden ArtDef, wenn z.B. eine Einheit auf eine ArtDef BLA_ARTDEF verweist, die nicht gefunden wird, weil sie falsch benannt wurde, fehlt oder ihr einfach der Unterstrich fehlt. Sobald das korrigiert ist, wird die leere Seite erlöschen und man wird zumindest magentafarbene Schaltflächen sehen. | ||
+ | |||
+ | |||
+ | === 14.10 Laden des Caches === | ||
+ | |||
+ | Wenn Cache-Laden aktiviert ist, wird das Suchen regulärer Ausdrücke für jede Datei, die auf diese Art geladen werden kann (die 13 größten Dateien einschließlich des Hauptteils des Inhalts), übersprungen werden, andere Dateiarten werden immer noch Module suchen und laden. Wenn das Spiel Änderungen in den Custom Assets oder Mod Assets entdeckt, wird es die komplette Suche durchführen und die Inhalte aller gefundenen Module in die Cache-Dateien, diese werden in den folgenden Spielen mit höherer Geschwindigkeit geladen. Es hat sich beim Testen gezeigt, dass das Spiel in manchen Fällen dazu gebracht wird, fälschlicherweise aus dem Cache zu laden, wenn Module hinzugefügt oder entfernt wurden, daher wird empfohlen, Cache-Laden durch Drücken der Umschalttaste, wenn das Spiel zu laden beginnt, explizit zu verbieten, nachdem Module hinzugefügt/entfernt wurden, um auf der sicheren Seite zu sein. Wenn du beim Laden des Caches eine Fehlermeldung erhältst, ist der erste Reparaturversuch, einfach nochmal ohne Caching neu zu laden. | ||
+ | |||
+ | |||
+ | === 14.11 Templates === | ||
+ | Als Hilfe zur Erleichterung der Erstellung neuer Mods habe ich einen Satz Vorlagen für einige der größeren Dateiarten eingefügt. Diese Ordner enthalten eine leere Kopie einer jeden Datei, die eingebaut werden muss, um ein neues Element dieser Art im Spiel zu erhalten. Um ein Objekt zu verändern, musst du lediglich eine Kopie der Dateien, die du tatsächlich veränderst, einfügen, z.B. erfordert die Änderung eines Gebäudenamens eine kurze GameText-Datei und alles andere könnte gestrichen werden. Eine typische Vorlage sieht so aus: | ||
+ | {{Quote | | ||
+ | text=PHP-Code:<br> | ||
+ | <?xml version="1.0"?> | ||
+ | <!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by Soren Johnson (Firaxis Games) --> | ||
+ | <!-- Sid Meier's Civilization 4 --> | ||
+ | <!-- Copyright Firaxis Games 2005 --> | ||
+ | <!-- --> | ||
+ | <!-- Tech Infos --> | ||
+ | <Civ4TechInfos xmlns="x-schema:_CIV4TechnologiesSchema.xml"> | ||
+ | <TechInfos> | ||
+ | |||
+ | </TechInfos> | ||
+ | </Civ4TechInfos> | ||
+ | }} | ||
+ | |||
+ | 14.12 Ressourcen | ||
+ | |||
+ | Bald wird im civfanatics CIV4 Creation and Customization forum ein neues Unterforum, genannt das "Plug and Play" forum, eröffnet werden, zu finden unter http://forums.civfanatics.com/forumdisplay.php?f=255. Es wird zum Posten neuer Module bestimmt sein. Eine andere Ressource, die sich bereits in Entwicklung befindet, ist der 'Bibliothekszweig' des CCCP unter http://sourceforge.net/projects/civ4ccp/library/, wo man eine wachsende Sammlung von Modulen jeder Art finden kann. Sie waren ursprünglich für die Warlordsversion des MXMLL geschrieben und werden zu BtS konvertiert werden. All diese Module sind zu Download, Gebrauch, Veränderung und Weiterverteilung freigegeben. Purplexus von CFC ist der Chef-Modulersteller der ursprünglichen Warlordsversion und moderiert das neue P&P-Forum und die CCCP-Bibliothek und ist der erfahrenste „Guru“ bzgl. der Module, genauso wie ihres Schreibens, er kann zusätzliche Tipps und Hilfen zum Modulerstellen geben. Erwarte in den nächsten Wochen auf Feedback basierende, detailliertere Anleitungen von ihm. | ||
== Quelle == | == Quelle == |
Aktuelle Version vom 20. Dezember 2013, 17:49 Uhr
__NOMATHJAX__
Ein Modder-Leitfaden zu Beyond the Sword
(Original unter: http://forums.civfanatics.com/showthread.php?t=229557)
Über die Autoren:
Kael – Chefdesigner des BtS-Szenarios „Fall from Heaven: Age of Ice“
Impaler[WrG]- Chefdesigner und Programmierer der Einheitendarstellungsarten- und „Modulares XML“-Eigenschaften BtS', Teamleiter des CCCP (Civ4 Community Core Project)
Solver- Designberater und Programmierer für Beyond the Sword
Wir haben Artikel gelesen, die das in BtS kommende neue Gameplay beschreiben und spannende Hinweise, was es anbieten wird. Dieser Artikel wurde geschrieben, um einige der neuen Features genauer zu beschreiben, die vielleicht dem Durchschnittsspieler nicht viel bedeuten, aber für Modder wichtig sein werden.
Disclaimer: Bis BtS ausgeliefert werden wird, ist noch nichts endgültig festgelegt. Alles in diesem Leitfaden kann noch geändert werden. ALLES, das in BtS so ist oder nicht so ist wie hier beschrieben, kann auf letzte Änderungen oder meine Fehler beim Dokumentieren zurückzuführen sein.
Inhaltsverzeichnis
- 1 1.0 Weniger Routinearbeit
- 2 2.0 Modulares XML
- 3 3.0 Einheitendarstellungsarten
- 4 4.0 Mod-spezifische Anzeige
- 5 5.0 Neue Python-Funktionen
- 6 6.0 Help-Attribut
- 7 7.0 Beförderungen können das Aussehen von Einheiten verändern
- 8 8.0 Events
- 9 9.0 Die „Python Callback Defines“-Datei
- 10 10.0 Neue Attribute
- 11 11.0 Spieleinstellungen
- 12 12.0 Was kannst du jetzt machen?
- 13 13.0 Zu Beyond the Sword konvertieren
- 14 14.0 Anhang A- Modulares XML Laden
- 15 Quelle
1.0 Weniger Routinearbeit
Zuallererst zwei Dinge, die BtS entfernt: Modder kennen die Dateien Civ4FormationInfos.xml und Civ4CityLSystem.xml sehr gut. In Vanilla und Warlords müssen alle zum Spiel hinzugefügten Einheiten in der „formation“-Datei und alle Gebäude in der „CityLSystem“-Datei ergänzt werden. BtS schafft die Notwendigkeit ab, diese Dateien mit jedem neuen Eintrag auf den neuesten Stand bringen zu müssen.
1.1 CIV4FormationInfos.xml
Stattdessen enthält die formation-Datei alle Formationsarten. Wenn du eine neue Einheit erstellst, definierst du ihre Formationsart (z.B. FORMATION_TYPE_ANIMAL) und es verwendet diese Formationsdefinition mit der Einheit, anstatt dass eine solche für jede Einheit festgelegt werden muss. Das Folgende wäre also das Attribut einer Einheit in der CIV4UnitInfos.xml-Datei:
<FormationType>FORMATION_TYPE_DEFAULT</FormationType>
Ich werde hier eine Kopie der Definitionen einer Formationsdatei hier einfügen. Aber in der Regel werden Modder sie niemals anrühren müssen. Ich selbst habe meine verändert um einige größere Gruppen als die üblichen hinzuzufügen. Aber selbst das war einfacher als in Vanilla oder Warlords, weil ich lediglich die neue Formation erstellen und FORMATION_TYPE_DEFAULT (oder welchen Formationstyp ich auch immer verwenden wollte) zuweisen musste und die Einheiten sie zu nutzen begannen.
<UnitFormation>
<Name>IDLE (1)</Name> <FormationType>FORMATION_TYPE_DEFAULT</FormationType> <EventMaskList> <EventType>ENTITY_EVENT_IDLE</EventType> <EventType>ENTITY_EVENT_SURRENDER</EventType> <EventType>ENTITY_EVENT_CAPTURED</EventType> <EventType>ENTITY_EVENT_GREAT_EVENT</EventType> <EventType>ENTITY_EVENT_FOUND</EventType> <EventType>ENTITY_EVENT_BUILD</EventType> <EventType>ENTITY_EVENT_PARADROP</EventType> <EventType>ENTITY_EVENT_SHOVEL</EventType> <EventType>ENTITY_EVENT_DIE_ANIMATION</EventType> </EventMaskList> <UnitEntry> <UnitEntryType>UNIT</UnitEntryType> <Position> <x>-0.0201342281879</x> <y>-0.201342281879</y> </Position> <PositionRadius>13.0384048104</PositionRadius> <Direction>3.14159265359</Direction> <DirVariation>0.188679622641</DirVariation> </UnitEntry> <UnitEntry> <UnitEntryType>GENERAL</UnitEntryType> <Position> <x>-0.332214765101</x> <y>0.694630872483</y> </Position> <PositionRadius>22.0</PositionRadius> <Direction>3.11129889367</Direction> <DirVariation>0.440454310911</DirVariation> </UnitEntry> <UnitEntry> <UnitEntryType>SIEGE</UnitEntryType> <Position> <x>-0.573825503356</x> <y>-0.53355704698</y> </Position> <PositionRadius>25.0</PositionRadius> <Direction>2.44685437739</Direction> <DirVariation>0.521536192416</DirVariation> </UnitEntry> </UnitFormation>
1.2 CIV4CityLSystem.xml
Genauso wird die Lsystem-Größe eines Gebäudes in seiner „art“-Definition gesetzt (z.B. LSYSTEM_3x2) anstatt jedes Gebäude in der Lsystem-Datei definieren zu müssen.
<BuildingArtInfo>
<Type>ART_DEF_BUILDING_PALACE</Type> <LSystem>LSYSTEM_3x2</LSystem> <bAnimated>0</bAnimated> <fScale>1.15</fScale> <fInterfaceScale>0.43</fInterfaceScale> <NIF>Art/Structures/Buildings/Palace/Palace.nif</NIF> <KFM/> <Button>,Art/Interface/Buttons/Buildings/Palace.dds,Art/Interface/Buttons/Buildings_Atlas.dds,6,5</Button> </BuildingArtInfo>
Das war's schon. Das Spiel kümmert sich um den Rest.
2.0 Modulares XML
Schonmal vorgehabt, eine neue Einheit zu einer Mod hinzuzufügen, ohne auch nur eine der Originaldateien anzurühren? Oder neue Objekte zu ergänzt und dann veränderte sich die Grundmodifikation und du musstest deine ganze Arbeit nochmal machen?
Modulares XML erlaubt dem Spiel, mehrere verschiedene XML-Dateien als eine einzige zu laden.
Damit kannst du eine neue Einheit, Einheitenklasse und Einheitendarstellungsklasse hinzufügen, die nur die Daten deiner neuen Einheit enthält. Verändert sich die Mod, betrifft das deine Dateien in keinster Weise und du musst deine Veränderungen nicht erneut vornehmen.
Das ist noch vielversprechender, wenn man die Möglichkeit bedenkt, mehrere XML-Mods zusammenzufügen. Du könntest 3 verschiedene Mods nutzen, die jeweils eine neue Zivilisation, einzigartige Einheiten und Gebäude hinzufügen, und sie zusammen spielen, allein indem du sie in den entsprechenden Ordner kopierst. Keine Notwendigkeit, PHP zusammenzupuzzeln und wenn die Modder ihre Dateien updaten, ist es leicht genug, das zu übernehmen, ohne alles andere in deinem Spiel zu verändern.
Für detailliertere Informationen über modulares XML siehe Anhang A.
3.0 Einheitendarstellungsarten
Eine Menge phantastischer Arbeit, neue Einheitenmodelle für CivIV zu erstellen, ist verrichtet worden. Viele dieser Einheiten wurden als „Gewürz-“einheiten implementiert, mit gleichen Eigenschaften, aber hinzugefügt, um das Aussehen verschiedener Zivilisationen zu variieren. Leider erfordert das, dass im Spiel eine neue Einheit ergänzt wird, beispielsweise ein Schwertkämpfer, der in jeder Hinsicht, außer der „art definition“, ein Duplikat ist.
BtS erlaubt uns, „unit art types“ zu definieren, ähnlich den „building art types“ in Warlords. Dadurch kann man eine Einheitendefinition haben, aber verschiedene Zivilisationen unterschiedliche Graphiken für diese Einheit benutzen lassen. SO kann der griechische Scout dazu gebracht werden, anders auszusehen als der atztekische, ohne dass eine neue Einheit hinzugefügt werden müsste.
Um das zu ermöglichen, sind 3 Schritte nötig
3.1 Schritt 1: CIV4CivilizationsInfos.xml
In dieser Datei müssen wir den „Unit Art Style“ der Zivilisationen wie folgt festlegen:
<CivilizationInfo>
<Type>CIVILIZATION_AMERICA</Type> <Description>TXT_KEY_CIV_AMERICA_DESC</Description> <ShortDescription>TXT_KEY_CIV_AMERICA_SHORT_DESC</ShortDescription> <Adjective>TXT_KEY_CIV_AMERICA_ADJECTIVE</Adjective> <Civilopedia>TXT_KEY_CIV_AMERICA_PEDIA</Civilopedia> <DefaultPlayerColor>PLAYERCOLOR_BLUE</DefaultPlayerColor> <ArtDefineTag>ART_DEF_CIVILIZATION_AMERICA</ArtDefineTag> <ArtStyleType>ARTSTYLE_EUROPEAN</ArtStyleType> [B]<UnitArtStyleType>UNIT_ARTSTYLE_EUROPEAN</UnitArtStyleType>[/B]
Das ist der Art, auf die Stadtanzeigearten in Warlords festgelegt wurden, sehr ähnlich, aber als ein anderes Attribut festgelegt, sodass Modder unterschiedliche Einheiten- und Stadtbauten-Anzeigearten verwenden können. Ein Wert „NONE“ wird die Zivilisation dazu bringen, die Standardmodelle der Einheiten zu verwenden.
3.2 Schritt 2: CIV4UnitArtStyleTypeInfos.xml
Das ist eine neue XML-Datei in BtS. Sie enthält die Definitionen für die Einheitenanzeigearten und erlaubt es, neue Einheitenmeshes für eine festgelegte Einheit zu nutzen. Im Beispiel unten ist die
ART_DEF_UNIT_ARCHER_EURASIAN die frühe Anzeigeeinstellung, die für einen Bogenschützen benutzt wird, ART_DEF_UNIT_ARCHER_EUROPEAN wird in den mittleren und späteren Perioden verwendet. Der Bogenschütze hat, wie die meisten Einheiten, nur ein einziges UnitMesh, wie in seinem CIV4UnitInfos.xml-Element festgelegt ist. Aber Einheiten können in der Tat beliebig viele Meshes(3D-Modelle) haben - die Siedlereinheiten sind die einzigen Einheiten im Originalspiel, die mehr als ein Mesh nutzen – und um diese zu verändern, für die Ersetzungsmeshes einfach als <UnitMeshGroup>-Elemente auf und sie werden in der Reihenfolge mit den CIV4UnitInfos-Meshes passend gemacht und ersetzen diese nacheinander. Jede Anzahl an Meshes kann in einer Einheit vorhanden sein und alle können auf diese Art ersetzt werden.
Jede Einheit, für die in einem StyleType keine Ersetzungen angegeben werden werden, wird einfach das Aussehen aus der UnitInfos.xml-Datei als Standard übernehmen und alle ARTDEFs können beliebig oft und in beliebig vielen StyleTypes aufgerufen werden, indem sie Teilen und Erstellen von Styles , die sich nur zu bestimmten Zeiten unterscheiden, um Kulturaufsplittung und -zusammenwachsen darzustellen, erlauben.
<UnitArtStyleTypeInfo>
<Type>UNIT_ARTSTYLE_EUROPEAN</Type> <StyleUnits> <StyleUnit> <UnitType>UNIT_ARCHER</UnitType> <UnitMeshGroup> <EarlyArtDefineTag>ART_DEF_UNIT_ARCHER_EURASIAN</EarlyArtDefineTag> <LateArtDefineTag>ART_DEF_UNIT_ARCHER_EUROPEAN</LateArtDefineTag> <MiddleArtDefineTag> ART_DEF_UNIT_ARCHER_EUROPEAN </MiddleArtDefineTag> </UnitMeshGroup> </StyleUnit> <StyleUnit> <UnitType>UNIT_SETTLER</UnitType> <UnitMeshGroup> <EarlyArtDefineTag>ART_DEF_SETTLER_MALE_EUROPEAN</EarlyArtDefineTag> <LateArtDefineTag> ART_DEF_SETTLER_MALE_EUROPEAN </LateArtDefineTag> <MiddleArtDefineTag> ART_DEF_SETTLER_MALE_EUROPEAN </MiddleArtDefineTag> </UnitMeshGroup> <UnitMeshGroup> <EarlyArtDefineTag>ART_DEF_SETTLER_FEMALE </EarlyArtDefineTag> <LateArtDefineTag>ART_DEF_SETTLER_FEMALE </LateArtDefineTag> <MiddleArtDefineTag>ART_DEF_SETTLER_FEMALE </MiddleArtDefineTag> </UnitMeshGroup> </StyleUnit> </StyleUnits> </UnitArtStyleTypeInfo>
3.3 Schritt 3: CIV4ArtDefines_Unit.xml
Genau wie in Civ IV muss Einheitendarstellungsinformation für die Einheit existieren. Aber anstatt die der Einheit in der Civ4UnitInfos.xml (ART_DEF_UNIT_ARCHER beispielsweise) zugewiesenen Standardaussehen zu verwenden, erlaubt uns Unit Art Styles ein anderes, so wie dieses, zu nutzen:
<UnitArtInfo>
<Type>ART_DEF_UNIT_ARCHER_EUROPEAN</Type> <Button>,Art/Interface/Buttons/Units/Archer.dds,Art/Interface/Buttons/Unit_Resource_Atlas.dds,4,1</Button> <fScale>0.44</fScale> <fInterfaceScale>1.0</fInterfaceScale> <bActAsLand>0</bActAsLand> <bActAsAir>0</bActAsAir> <NIF>Art/Units/Archer_European/Archer_European.nif</NIF> <KFM>Art/Units/Archer_European/Archer.kfm</KFM> <SHADERNIF>Art/Units/Archer_European/Archer_European_fx.nif</SHADERNIF> <ShadowDef> <ShadowNIF>Art/Units/01_UnitShadows/UnitShadow.nif</ShadowNIF> <ShadowAttachNode>BIP Pelvis</ShadowAttachNode> <fShadowScale>0.85</fShadowScale> </ShadowDef> <fBattleDistance>0.35</fBattleDistance> <fRangedDeathTime>0.31</fRangedDeathTime> <bActAsRanged>1</bActAsRanged> <TrainSound>AS2D_UNIT_BUILD_UNIT</TrainSound> <AudioRunSounds> <AudioRunTypeLoop/> <AudioRunTypeEnd/> </AudioRunSounds> </UnitArtInfo>
Beachte, dass die Graphik für den Einheitenbutton in der UnitArtInfo definiert wird, sie wird nicht länger in der CIV4UnitInfos.xml-Datei festgelegt. Das ermöglicht uns, verschiedene Buttons für verschiedene Einheitendarstellungsarten zu verwenden. Diese Änderung wird es auch notwendig machen, dass Modder, die ältere Mods zu BtS konvertieren, all ihre Buttoninfos in die Darstellungsdatei verschieben.
Durch Veränderung des SDK kannst du alternative Arten der Einheitendarstellungslogik mit ihren eigenen XML-Dateien und logischen Strukturen erstellen, wie zum Beispiel Einheiten, die unterschiedliches Aussehen zeigen, je nachdem, wie stark sie beschädigt sind, oder welche Beförderungen sie haben.
4.0 Mod-spezifische Anzeige
Das blaue Standardinterface von Firaxis ist recht schön, aber es ist nicht allen Mods angemessen. Es ist bereits in Vanilla und Warlords möglich, die Anzeige zu verändern, aber das ist eine Spieleinstellung und kann nicht gemoddet werden. BtS ändert das. Modder können Farbe der Anzeige, Schriftarten, Leisten, alles, was sie für ihre Mod wollen, verändern.
Zunächst wirst du den folgenden Eintrag in deiner CIV4ArtDefines_Misc.xml-Datei benötigen:
MiscArtInfo
<MiscArtInfo> <Type>DEFAULT_THEME_NAME</Type> <Path>Mods/[ModName]/Resource/Civ4.thm</Path> <fScale>0.0</fScale> <NIF>None</NIF> <KFM>None</KFM> </MiscArtInfo>
Alles in den Unterordnern von “..\Sid Meier's Civilization 4\Resource” kann durch passende Dateien im “..\Sid Meier's Civilization 4\Beyond the Sword\Mods\[ModName]\Resource”-Ordner überschrieben werden. Dieser Ordner muss eine Civ4.thm-Datei enthalten, die wie folgt zu den zugehörigen modspezifischen Ressourcen umleitet:
// *** Control Bitmap Theme file
// Set the resource
resource_path "Mods/[ModName]/Resource";
// Setup common properties
include "Mods/[ModName]/Resource/Themes/Civ4/Civ4Theme.thm";
Alle möglichen Optionen detailliert auszuführen, die sich so verändern lassen, ist nicht Ziel dieses Leitfadens, es handelt sich grundsätzlich um alles, das in den früheren Versionen getan werden konnte, aber jetzt können diese Themes in Mods eingebaut werden, anstatt auf das gesamte Spiel angewendet werden zu müssen. Wenn du vorhast, ein Theme für eine eigene Mod zu erstellen, kannst du jetzt damit anfangen, indem du es in dem Vanilla- oder Warlords- „Ressource“-Ordner erstellst (denke daran, eine Sicherungskopie des Originals anzufertigen). Sobald BtS herauskommt, kannst du es in deinen Mod-Ordner kopieren und anfangen, es zu benutzen.
5.0 Neue Python-Funktionen
Firaxis hat hart daran gearbeitet, neue Python-Funktionen hinzuzufügen, ebenso wie Stellen, an denen wir Funktionen unterbrechen und unsere eigene Logik, um Geschehnisse (wie es Einheiten unmöglich zu machen, bestimmte Orte zu betreten (in der Funktion unitCannotMoveInto)zu verhindern, anwenden oder die Aktionen (wie z.B. neue Erfahrungspunktanforderungen in getExperienceNeeded zu erstellen) verändern zu können
5.1 CvEventManager.py
Diese Pythonfunktionen machen das Spiel nicht von Natur aus besser. Aber sie bieten kreativen Moddern eine Möglichkeit, phantastische Dinge zu tun. Mit wenigen Zeilen Python wird es leicht, Atombombenexplosionen abzufangen und die Welt vor ihrem Gebrauch zu warnen, ihre Wirkung zu verstärken oder gar stärkste post-apokalyptische Effekte zu triggern.
- plotFeatureRemoved - der Punkt, das entfernte Feature und die Stadt (wenn der Punkt eine Stadt war) werden übergeben
- plotPicked - ? nicht vom SDK aus aufgerufen
- nukeExplosion -der Punkt und die explosionsverursachende Einheit werden übergeben
- gotoPlotSet - ? nicht vom SDK aus aufgerufen
- cityHurry - Immer aufgerufen, wenn die Produktion in einer Stadt beschleunigt wird
- unitSpreadReligionAttempt - Einheit, Religion und ob die Religionsverbreitung erfolgreich war, werden übergeben
- UnitGifted - Übergibt die Einheit, den alten Besitzer der Einheit und den Ort, an dem die Einheit sich befindet
- unitBuildImprovement - Einheit, Art der Geländemodernisierung und ob diese fertig gestellt ist, werden übergeben
- corporationFounded - Unternehmen und gründender Spieler werden übergeben
- corporationSpread - Unternehmen, das sich verbreitet, besitzender Spieler und Stadt werden übergeben
- corporationRemove - Unternehmen, das entfernt wurde, besitzender Spieler und Stadt werden übergeben
- playerChangeStateReligion - Spieler, neue und alte Religion werden übergeben
- playerGoldTrade - Geld gebender Spieler, Geldempfänger und die Geldsumme werden übergeben
5.2 CvGameUtils.py
- isVictory - Ermöglicht eine Überprüfung, ob es bereits einem Spieler erlaubt ist, zu gewinnen
- canDeclareWar - Um es Moddern zu möglich zu machen, Kriegserklärungen dynamisch zu ermöglichen oder nicht
- unitCannotMoveInto - Um Bewegungen an Orte nach irgendwelchen Kriterien zu verhindern
- canBuild - Um Bauaufträge nach irgendwelchen Kriterien zu verhindern
- cannotFoundCity - Spieler und Koordinaten werden übergeben
- cannotSpreadReligion - Um die Fähigkeit zur Religionsverbreitung abzuschalten
- citiesDestroyFeatures - Um das Feature der Zerstörung ein- oder auszuschalten, wenn Städte erzeugt werden
- canFoundCitiesOnWater - Um Städten zu ermöglichen, auf Wasserfeldern erzeugt zu werden
- doCombat - um die SDK-Kampffunktion durch einen Python-Prozess zu ersetzen
- getConscriptUnitType - um den durch Einberufung bereitgestellten Einheitentyp zu liefern
- getCityFoundValue - Um die KI-Vorlieben für Stadtstandorte zu verändern
- canPickPlot - ? nicht vom SDK aus aufgerufen
- getUnitCostMod - Um Einheitenkosten dynamisch anzupassen
- getBuildingCostMod - Um Gebäudekosten dynamisch anzupassen
- canUpgradeAnywhere - Damit eine Einheit überall modernisiert werden kann
- getWidgetHelp - Um der Maus über Hilfe zusätzlichen Text hinzuzufügen
- getUpgradePriceOverride - Um Upgradekosten durch einen neuen Wert zu ersetzen
- getExperienceNeeded - Um das Erfahrungssystem durch andere Werte zu ersetzen
Dies ist zur Ergänzung für zusätzliche Informationen, die an andere Python-Funktionen gesandt werden. Beispielsweise bekommt die onUnitMove-Funktion nun auch den alten Ort übergeben. Wenn du also eine Python-Aktion durchführen willst, wenn eine Einheit die kulturellen Grenzen verlässt, ist das jetzt leichter.
6.0 Help-Attribut
Dies mag nach einer Kleinigkeit aussehen, ist aber so wirkungsvoll und leicht zu benutzen, dass es besondere Erwähnung verdient. Es gibt ein neues Schemenattribut „Help“ zu Eigenschaften, Einheiten, Beförderungen, Gelände, Gebäuden, Features und Technologien. Help ist dafür vorgesehen, eine Text-Zeichenkette wie TXT_KEY_UNIT_GIANT_DEATH_ROBOT_HELP zu enthalten und alles, was diese Zeichenkette enthält wird für dieses Objekt an der Maus als Hilfetext angezeigt. In früheren Versionen mussten Modder, um zusätzliche Hilfetexte anzuzeigen, das SDK verändern. So ist das viel einfacher.
7.0 Beförderungen können das Aussehen von Einheiten verändern
Ich möchte mich im Voraus für das Fehlen von Details in diesem Abschnitt entschuldigen. Ich bin kein Graphiker und habe dieses Feature nicht selbst benutzt. Aber ich habe mit manchen Einheiten herumgespielt, die es verwenden. Grundsätzlich ist es möglich, ein Modell in Abhängigkeit von den Beförderungen, die es hat, zu verändern.
Du könntest beispielsweise ein Bombermodell machen, das, wenn es die richtige Beförderung hat, eine Bombe an seiner Unterseite zeigt. Wenn dann die Beförderung entfernt wird, sagen wir, durch eine Bombardierungsaktion, würde sich das Modell verändern, sodass die Bombe nicht länger sichtbar ist. Das Selbe könnte man mit der Anzeige von Schwertern und Äxten in den Händen der Einheiten machen, mit ihren Rüstungen, Einheiten, die von Wolken fauligen Gases oder Radioaktivität umgeben werden...
Ich möchte betonen, dass das nicht so einfach ist wie eine Beförderung zu erstellen, sie auf die Graphik zeigen zu lassen und alles funktionieren zu sehen. Das Modell muss mit eingebautem „Anhang“ erstellt werden. Standardmäßig wird er nicht angezeigt, aber mit der Beförderung erscheint er. Es wird also bedeutende Modellierungsarbeit sein, diese Funktion zu benutzen, aber ich zweifele nicht daran, dass die phantastischen Künstler hier bei den civfanatics eine Menge Spaß mit diesem Feature haben werden.
8.0 Events
Zufallsereignisse, die von Zufriedenheits- und Diplomatieboni bis zu freien Beförderungen und technologischen Durchbrüchen reichen, sind eines der neuen Spielelemente in BtS. Das Ereignissystem stellt Moddern eine große Basis zur Verfügung, darauf zu bauen, da alle Events gemodded werden können und sich neue ergänzen lassen.
Man kann ein großes Feld möglicher Ereignisse allein durch XML-Modden erzeugen, aber die Events können für größere Vielseitigkeit auch durch Python verbessert werden. Anhang B dieses Leitfadens enthält einige Beispiele für Ereignisse, die eingepflegt werden können. Die hier beschriebenen Events können, zusammen mit einigen anderen, in einer Event-Mod von Solver gefunden werden. Stell dir die Mod als eine Ergänzung zu diesem Leitfaden vor, wenn du willst. Sie kann unter: ([1]) gefunden werden.
Es ist wichtig, die beiden grundlegenden Blöcke des Event-Systems zu verstehen: Trigger und Events. „Trigger“ sind eine Sammlung von Parametern, die Bedingungen anzeigen, wenn sie auslösen können. Trigger überprüfen, ob du die nötige Technologie, Bevölkerung, etc. hast. Wenn die Bedingungen erfüllt sind, hat der Trigger eine Chance, auszulösen. Wenn ein Trigger auslöst, eröffnet er dem Spieler die Wahl zwischen ein oder mehreren Ereignissen („Events“) (nun gut, wenn es lediglich ein Ereignis ist, gibt es keine Wahl). Events selbst sind das, was die zugehörigen Ergebnisse zur Verfügung stellt, die dann den Spieler betreffen.
Spieler mögen geneigt sein, das Eventsystem als aus Ereignissen und Wahlmöglichkeiten bestehend anzusehen – das ist nicht wirklich angebracht. Jede Wahlmöglichkeit ist ein eigenes Event und der Trigger ist das, was die Auswahl zur Verfügung stellt.
Wie die meisten anderen Dinge in Civ 4 werden Events in erster Linie im SDK behandelt. Events werden von der Klasse CvEventInfo beschrieben, die die XML-Beschreibung der Events imitiert. Anhang B enthält eine Beschreibung der Ereignis-Tags in der XML-Datei. Wenn du C++ lesen kannst, möchtest du vielleicht einen Blick auf die Definition von CvEventInfo werfen. Die Übereinstimmung der Member-Funktionen der Klasse mit den XML-Werten sollte geradezu offensichtlich sein.
Event-Trigger werden in Civ4EventTriggerInfos.xml gehalten und diese Datei wird, mit Triggern im Allgemeinen, nach der Ereignisbeschreibungserklärung beschrieben werden.
Für mehr Details zu Events lies den Eventführer in Anhang B durch.
9.0 Die „Python Callback Defines“-Datei
BtS ist schnell. Eine der Maßnahmen, die Firaxis ergriffen hat, um das Spiel zu beschleunigen, war, eine PythonCallbackDefines.xml-Datei einzubauen. Diese Datei hat Einträge für viele rechenintensive Pythonfunktionen, wie z.B. die folgenden
<Define>
<DefineName>USE_CANNOT_FOUND_CITY_CALLBACK</DefineName> <iDefineIntVal>0</iDefineIntVal> </Define>
Standardmäßig (wie oben eingestellt) wird die Pythonroutine „ Found City“ nie aufgerufen werden. Möchtest du diese Funktion in deiner Mod nutzen, musst du eine modifizierte Kopie der PythonCallbackDefines.xml mit dem auf 1 gesetzten iDefineIntVal beilegen, um diesen Pythonaufruf zu ermöglichen. Die folgenden Funktionen sind standardmäßig deaktiviert:
- USE_CANNOT_FOUND_CITY_CALLBACK
- USE_CAN_FOUND_CITIES_ON_WATER_CALLBACK
- USE_IS_PLAYER_RESEARCH_CALLBACK
- USE_CAN_RESEARCH_CALLBACK
- USE_CANNOT_DO_CIVIC_CALLBACK
- USE_CAN_DO_CIVIC_CALLBACK
- USE_CANNOT_CONSTRUCT_CALLBACK
- USE_CAN_CONSTRUCT_CALLBACK
- USE_CAN_DECLARE_WAR_CALLBACK
- USE_CANNOT_RESEARCH_CALLBACK
- USE_GET_UNIT_COST_MOD_CALLBACK
- USE_GET_BUILDING_COST_MOD_CALLBACK
- USE_GET_CITY_FOUND_VALUE_CALLBACK
- USE_CANNOT_HANDLE_ACTION_CALLBACK
- USE_CAN_BUILD_CALLBACK
- USE_CANNOT_TRAIN_CALLBACK
- USE_CAN_TRAIN_CALLBACK
- USE_UNIT_CANNOT_MOVE_INTO_CALLBACK
- USE_CANNOT_SPREAD_RELIGION_CALLBACK
- USE_FINISH_TEXT_CALLBACK
- USE_ON_UNIT_SET_XY_CALLBACK
- USE_ON_UNIT_SELECTED_CALLBACK
- USE_ON_UPDATE_CALLBACK
- USE_ON_UNIT_CREATED_CALLBACK
- USE_ON_UNIT_LOST_CALLBACK
Denke daran, dass diese Pythonfunktionen ausgewählt wurden, weil sie oft genug aufgerufen wurden, um merklich Rechenleistung zu benötigen, wenn sie aktiviert sind. Wenn du sie also aktiviert, um sie in deiner Mod zu verwenden, erwarte einen Performanceeinbruch auf langsameren Rechnern.
10.0 Neue Attribute
Dieser Artikel wird nicht all die neuen Attribute in BtS abdecken können. Aber ich habe die neuen Attribute einiger der am häufigsten modifizierten Elemente des Spiels herausgesucht. Die meisten sind für diejenigen, die sich mit den Benennungsrichtlinien von Firaxis auskennen, selbsterklärend und für die von besonderem Interesse habe ich Notizen hinzugefügt. Viele dieser Attribute wurden für ein spezielles BtS-Szenario hinzugefügt (und zwar so, dass Modder diese Funktionen einfach benutzen können). Nimm nicht an, dass, nur weil ein Attribut hier existiert, dieses im normalen Spiel verwendet wird.
10.1 Einheiten
Help- (optional) siehe Kapitel 6
- bQuickCombat - Bringt die Einheit dazu, quick combat (schnellen Kampf) zu nutzen
- bSpy - Einheit kann in feindlichem Gelände Spionagemissionen durchführen
- bCanMoveAllTerrain - Ob die Einheit jedes Gelände (inkl. Land- und Wasserfelder) passieren kann
- bRenderAlways - ? nicht im SDK
- bSuicide - Wenn „true“ stirbt die Einheit nach einem Angriff ihrerseits
- bLineofSight - Erlaubt der Einheit lediglich geradeaus zu schauen
- bHiddenNationality - Wenn „true“ können andere Spieler die Nationalität nicht erkennen und die Einheit kann ohne Krieg angreifen
- bAlwaysHostile - Die Einheit ist unabhängig vom diplomatischen Status ein Feind
- FlankingStrikes - Ermöglicht der Einheit Flankenangriffe gegen angegebene Einheitenklassen
- CorporationSpread - Ermöglicht der Einheit, Konzerne zu verbreiten
- PrereqCorporation - Einheit kann nur in Städten mit dem angegebenen Konzern ausgebildet werden
- iAdvancedStartCost - Kosten, diese Einheit beim fortgeschrittenen Start zu erzeugen
- iAdvancedStartCostIncrease - Zusätzliche Kosten pro Einheit, die beim fortgeschrittenen Start gekauft wird
- bNoRevealMap - Einheit kann kein unerforschtes Gelände aufdecken
- iAirUnitCap - Wie viel Luftkapazität die Einheit in einer Stadt aufnimmt
- iDropRange - Ob die Einheit als Fallschirmscpringer genutzt werden kann
- iEspionagePoints - Menge der Spionagepunkte, die die Arbeit eines großen Spions bereitstellt
- TerrainPassableTechs - Schaltet die Fähigkeit frei, sich durch das Gelände zu bewegen, wenn die entsprechende Technologie bekannt ist
- FeaturePassableTechs - Schaltet die Fähigkeit frei, sich durch die (Gelände-)Eigenschaft zu bewegen, wenn die entsprechende Technologie bekannt ist
- iCombatLimit - maximaler Schaden, den diese Einheit anrichten kann, in Prozent. Auf 100 gesetzt, können andere Einheiten getötet werden.
- TerrainAttacks - Modifikator für Angriffe in das angegebene Gelände
- FeatureAttacks - Modifikator für Angriffe in die angegebene Geländeeigenschaft
- FormationType - genutzter Formationstyp, siehe Kap. 1.1
- Button - Das Button-Attribut wurde von der Einheitendefinition zur UnitArtDef verschoben.
10.2 Beförderungen
Help- s.Kap. 6
- LayerAnimationPath - Wird verwendet, um Beförderungen das Aussehen von Einheiten verändern zu lassen
- StateReligionPrereq - Sorgt dafür, dass die Beförderung die ausgewählte Staatsreligion benötigt
- iAirRangeChange - Verändert die Luftreichweite der Einheit
- iInterceptChange - Verändert die Abfangwahrscheinlichkeit der Einheit
- iEvasionChange - Verändert die Fluchtchance der Einheit
- iCargoChange - Verändert die Ladekapazität der Einheit
- TerrainAttacks - Prozentmodifikator bei einem Angriff auf das angegebene Gelände
- FeatureAttacks - Prozentmodifikator bei einem Angriff auf die angegebene Eigenschaft
10.3 Gebäude
Help- s.Kap. 6
- bStateReligion - Wenn „true“ kann das Gebäude nicht gebaut werden, wenn der Spieler keine Staatsreligion hat
- PrereqCorporation - benötigt den angegebenen Konzern
- FoundsCorporation - Bau des Gebäudes wird den angegebenen Konzern gründen
- GlobalCorporationCommerce - Hier angegebene Werte verändern die Kommerzrate der Konzerne
- NoBonus - If the building blocks are resource
- DiploVoteType -ersetzt bDiploVote
- bAllowsNukes - Ob ein Gebäude Nuklearraketen erlaubt, ähnlich wie aktuelle Projekte
- iAdvancedStartCost - Die Kosten, das Gebäude beim fortgeschrittenen Spielstart zu erzeugen
- iAdvancedStartCostIncrease - Zusatzkosten pro beim fortgeschrittenen Start gekauftem Gebäude
- iGoldenAgeModifier - Prozentuale Veränderung auf die Länge eines Goldenen Zeitalters für den Besitzer durch das Gebäude
- iAirUnitCapacity - Ob das Gebäude die in der Stadt lagerbare Anzahl an Lufteineinheiten betrifft
- iEnemyWarWearinessModifier- Feinde erleiden diese prozentuale Veränderung zur Kriegsunzufriedenheit
- iForeignTradeRouteModifier - Prozentuale Veränderung der Erträge interkontinentaler Handelswege
- iEspionageDefense - Prozentuale Verteidigung gegen Spionagemissionen
- RiverPlotYieldChanges - Veränderte die Flussfelderträge für diese Stadt
- ImprovementFreeSpecialists - Stellt freie Spezialisten für jedes Auftreten dieser Verbesserung zur Verfügung
10.4 LeaderHeads
- iEspionageWeight - Setzt die KI-Vorliebe für Spionage
- iFreedomAppreciation - Setzt die KI-Vorliebe für Kolonisation
- FavoriteReligion -Legt die Lieblingsreligion der KI fest
10.5 Technologien
Help- s.Kap.6
- iAdvancedStartCost - Kosten, beim fortgeschrittenen Start mit dieser Technologie zu beginnen
- iAdvancedStartCostIncrease - Zusätzliche Kosten pro beim fortgeschrittenen Start gekaufter Technologie
- bRiverTrade - ermöglicht Handel entlang der Flüsse
10.6 Features
Help- s. Kap. 6
- iTurnDamage - Bringt das Feature (die Geländeeigenschaft) dazu, die Einheiten auf dem Feld zu beschädigen
- bVisibleAlways -Ob die Geländeeigenschaft immer angezeigt wird
- bNukeImmune - Ob die Geländeeigenschaft von Nuklearwaffen unberührt bleibt
- OnUnitChangeTo - Wenn eine Einheit sich darauf bewegt, verändert sich die Geländeeigenschaft zu der angegebenen
- iAdvancedStartRemoveCost - Kosten, die Geländeeigenschaft beim fortgeschrittenen Start zu entfernen
10.7 Verbesserungen
Help- s. Kap. 6
- iAdvancedStartCost -Kosten beim fortgeschrittenen Start
- iAdvancedStartCostIncrease - zusätzliche Kosten pro gekaufter Geländeverbesserung beim fortgeschrittenen Start
- iFeatureGrowth - Verändert die Wachstumsrate einer Geländeeigenschaft auf dem jeweiligen Feld
- iHappiness - Ob die Geländeverbesserung einen Zufriedenheitsbonus ergibt
- bOutsideBorders - Ob die Geländeverbesserung außerhalb der Grenzen gebaut werden kann
11.0 Spieleinstellungen
11.1 Neue Global Defines
In Warlords gab es 17 neue global defines (globale Festlegungen). Es ist gerecht, zu sagen, dass Firaxis sich auch hier selbst übertroffen hat, Moddern einfache Kontrolle über noch mehr Funktionen zu geben. Denke daran, dass alle globalen Festlegungen in der GlobalDefinesAlt.xml vorgenommen werden sollten.
- RECON_VISIBILITY_RANGE - Gibt die Reichweite für Aufklärungsmissionen an
- CITY_FREE_CULTURE_GROWTH_FACTOR - Modifikator für die Kulturwachstumsrate in Feldern
- GREAT_WORKS_CULTURE_TURNS - Nach so vielen Runden wird die Kultur großer Werke ausgelöscht
- NUM_CORPORATION_PREREQ_BONUSES - Größte Anzahl an Rohstoffen, die ein Konzern benötigen kann
- NUM_ROUTE_PREREQ_OR_BONUSES - Größte Anzahl von Bonusvoraussetzungen für eine Route
- MAX_NATIONAL_WONDERS_PER_CITY_FOR_OCC - Legt fest, wie viel Kleidung die Anführer haben, schau dir Pacal nicht nackt an!
- POWER_HEALTH_CHANGE - Auswirkung von Elektrizität auf die Gesundheit der Städte
- INTERCEPTION_MAX_ROUNDS - Größte Anzahl von Kampfrunden während Abfangen
- MAX_INTERCEPTION_DAMAGE - Größtmögliche Menge an Schaden während des Abfangens
- MIN_INTERCEPTION_DAMAGE - Kleinstmögliche Menge an Schaden während des Abfangens
- RANGE_COMBAT_DAMAGE - Grundlegender Fernkampfschaden, verändert durch die relative Stärke der zwei Einheiten
- FOUND_CORPORATION_CITY_RAND -Je höher die Zahl, desto zufälliger die Zuweisung der Konzerne
- GOLDEN_AGE_GREAT_PEOPLE_MODIFIER - Modifikator auf Zuwachs an Großen Persönlichkeiten während goldener Zeitalter
- OVERSEAS_TRADE_MODIFIER - Modifikator auf interkontinentale Handelsrouten
- DEFY_RESOLUTION_POP_ANGER - Menge des von der KI erzeugten Ärgers, wenn du dich über eine Resolution hinwegsetzt
- DEFY_RESOLUTION_ANGER_DIVISOR - Je höher diese Zahl, desto länger brauchen die KI-Staatsoberhäupter, ihren Ärger über deinen Resolutionsbruch zu vergessen
- TEMP_HAPPY - Menge der Zufriedenheit durch Ereignisse
- CORPORATION_FOREIGN_SPREAD_COST_PERCENT - Modifikator auf Konzernverbreitungskosten
- MAX_INTERCEPTION_PROBABILITY - Größte Abfangwahrscheinlichkeit
- MAX_EVASION_PROBABILITY - Größtmögliche Fluchtchance (du wusstest das richtig!)
- FOW_WAS_VISIBLE_COLOR - ? Nicht im SDK, ich nehme an, diese Einstellung legt die Farbe des Kriegsnebels fest
- FOW_MINIMAP_WAS_VISIBLE_COLOR - ? Nicht im SDK, ich nehme an, diese Einstellung legt die Farbe des Kriegsnebels auf der Minikarte fest
- CITY_SCREEN_FOG_ENABLED - Wenn dies auf „true“ gesetzt ist, erscheint der Nebel des Krieges im Stadtbildschirm
- AI_CAN_DISBAND_UNITS - Setze diesen Wert auf „false“, um die KI davon abzuhalten, Einheiten auflösen zu können
- CITY_SCREEN_CLICK_WILL_EXIT - Ob ein Klick auf den Bildschirm den Stadtbildschirm schließen wird
- WATER_POTENTIAL_CITY_WORK_FOR_AREA - Ob eine Stadt Wasserfelder bearbeiten kann
- LAND_UNITS_CAN_ATTACK_WATER_CITIES - Ob Landeinheiten Städte auf Wasser angreifen können
- CITY_MAX_NUM_BUILDINGS - Für den Fall, dass Modder eine Maximalanzahl von Gebäuden pro Stadt festlegen wollen
- RANGED_ATTACKS_USE_MOVES - Ob eine Fernkampfattacke Bewegungspunkte verbraucht
- AI_SHOULDNT_MANAGE_PLOT_ASSIGNMENTS - ? Nicht im SDK
- ROUTE_Z_BIAS - ? Nicht im SDK
- RIVER_Z_BIAS - ? Nicht im SDK
- NEW_CITY_BUILDING_VALUE_MODIFIER - Modifikator auf die KI-Vorliebe, in einer neuen Stadt ein Gebäude zu bauen
- IGNORE_PLOT_GROUP_FOR_TRADE_ROUTES - Wenn das gesetzt ist, muss der Spieler Felder nicht besitzen, um durch sie Handel zu treiben
- EVENT_PROBABILITY_ROLL_SIDES - Je höher diese Zahl, desto seltener treten Events auf
- FIRST_EVENT_DELAY_TURNS - Events werden nicht vor der hier eingestellten Runde auslösen
- CIVILOPEDIA_SHOW_ACTIVE_CIVS_ONLY - Ob die Zivilopädie nur aktive Zivilisationen aufführt
- CITY_AIR_UNIT_CAPACITY - Standard-Lufteinheitenkapazität der Städte
- COLONY_NUM_FREE_DEFENDERS - Menge der geschenkten Einheiten, wenn eine Kolonie abgespalten wird
- SHIP_BLOCKADE_RANGE - Umkreis in Feldern, in dem ein feindliches Schiff Handelsrouten verhindert
- PATH_DAMAGE_WEIGHT - Je höher dies, desto stärker wird die KI es vermeiden, durch schädigendes Gelände zu ziehen
- RENDER_AREABORDER_UNDER_FEATURES - Ob das Spiel Grenzen unter Geländeeigenschaften anzeigen soll
- RENDER_GLOBEVIEW_CLOUDS - Ob das Spiel beim Rauszoomen Wolken anzeigen soll
- RENDER_WATER - Ob das Spiel Wasser aktiv rendern soll
- USE_MODDERS_PLAYEROPTION_1 - Erzwingt Spieleroption 1 wie in CIV4PlayerOptionInfos.xml festgelegt
- USE_MODDERS_PLAYEROPTION_2 - Erzwingt Spieleroption 2 wie in CIV4PlayerOptionInfos.xml festgelegt
- USE_MODDERS_PLAYEROPTION_3 - Erzwingt Spieleroption 3 wie in CIV4PlayerOptionInfos.xml festgelegt
Die folgenden Festlegungen geben Moddern mehr Kontrolle über die Kameraeinstellungen:
- DISABLE_CLOSE_ZOOM_MODE
- CAMERA_UPPER_PITCH
- CAMERA_LOWER_PITCH
- CAMERA_MIN_SCROLL_SPEED
- CAMERA_MAX_SCROLL_SPEED
- CAMERA_MIN_YAW
- CAMERA_MAX_YAW
- CAMERA_MAX_TURN_OFFSET
- CAMERA_FORCE_TO_SMALLEST_MAX_DISTANCE
- CAMERA_NEAR_FAR_PLANE_RATIO
- CAMERA_FAR_CLIP_Z_HEIGHT
- CAMERA_CITY_TURN
- CAMERA_CITY_NO_PITCH
- CAMERA_SPECIAL_PITCH
Die folgenden Festlegungen werden auf die zugehörige Spionagemission als prozentuale Kostenanpassungen angewandt:
- ESPIONAGE_CITY_POP_EACH_MOD
- ESPIONAGE_CITY_TRADE_ROUTE_MOD
- ESPIONAGE_CITY_RELIGION_STATE_MOD
- ESPIONAGE_CITY_HOLY_CITY_MOD
- ESPIONAGE_CULTURE_MULTIPLIER_MOD
- ESPIONAGE_DISTANCE_MULTIPLIER_MOD
- ESPIONAGE_SPENDING_MULTIPLIER_MOD
- ESPIONAGE_EACH_TURN_UNIT_COST_DECREASE
- ESPIONAGE_INTERCEPT_SPENDING_MAX
- ESPIONAGE_INTERCEPT_COUNTERSPY
- ESPIONAGE_INTERCEPT_COUNTERESPIONAGE_MISSION
- ESPIONAGE_INTERCEPT_RECENT_MISSION
- ESPIONAGE_SPY_REVEAL_IDENTITY_PERCENT
- ESPIONAGE_SPY_INTERCEPT_MOD
- ESPIONAGE_SPY_NO_INTRUDE_INTERCEPT_MOD
- ESPIONAGE_SPY_MISSION_ESCAPE_MOD
Die folgenden Festlegungen werden beim fortgeschrittenen Start im Falle von Kostenoptionen genutzt:
- ADVANCED_START_ALLOW_UNITS_OUTSIDE_CITIES
- ADVANCED_START_MAX_UNITS_PER_CITY
- ADVANCED_START_SIGHT_RANGE
- ADVANCED_START_CITY_COST
- ADVANCED_START_CITY_COST_INCREASE
- ADVANCED_START_POPULATION_COST
- ADVANCED_START_POPULATION_COST_INCREASE
- ADVANCED_START_CULTURE_COST
- ADVANCED_START_CULTURE_COST_INCREASE
- ADVANCED_START_VISIBILITY_COST
- ADVANCED_START_VISIBILITY_COST_INCREASE
- ADVANCED_START_CITY_PLACEMENT_MAX_RANGE
Die folgenden globalen Festlegungen haben in BtS neue Werte:#
- CIV4_VERSION - Geändert zu 300
- SAVE_VERSION - Geändert zu 300
- BASE_GOLDEN_AGE_UNITS - Von 2 auf 1 gesetzt
- UNIT_TRAIL_RESOLUTION - Von 10.0 auf 5.0 herabgesetzt
Die folgenden globalen Festlegungen wurden aus BtS entfernt:
- DIPLO_VOTE_TURN_FREQUENCY
- COMBAT_SYNCH_DIE_FADE
11.2 Neue ini-Optionen
BtS enthält ebenfalls ein paar neue einstellbare Optionen in deiner [Modname].ini-Datei. Diejenigen, die schon seit einer gewissen Zeit modden, sind über CustomAssets-Kompatibilitätsprobleme gestolpert. Das Problem ist, dass ein Modder seine Mod in den CustomAssets-Ordner installieren oder der Spieler dort Dateien verändern mag. Diese Veränderungen sind dann vielleicht mit dem normalen Spiel verträglich, sodass der Nutzer kein Problem bemerkt, bis er eine Mod lädt und sie nicht funktioniert. Ich vermag nicht zu sagen, wie viele Leute von genau deshalb von Modladeproblemen geschrieben haben. Ich weiß, dass es einen größeren Anteil gibt, der gar nichts postet; er glaubt dann, die Mod funktioniere nicht. Ich möchte wärmstens empfehlen, dass jeder Modder in seiner Mod NoCustomArt und NoCustomAssets auf 1 setzt, um derartige Fehler zu vermeiden.
NoCustomArt- auf '0' gesetzt werden die Darstellungsressourcen aus CustomAssets geladen, bei '1' nicht NoCustomAssets-'0':XML und python aus CustomAssets werden geladen, '1': sie werden nicht geladen. NoCustomScenario- '0': eigene Szenarien sind erlaubt, '1': deaktiviert ForceScenario- '1' um ein Szenario zu erzwingen, '0' um alles (freies Spiel, eigenes Spiel ...) zu erlauben NoTeams- '0' um Teams zu erlauben, '1' um sie zu verbieten ForceStandardEra- '0' um die übliche Auswahl zu erlauben, '1', damit das Spiel immer im Standardzeitalter beginnt SkipMainMenu- '0' um das Hauptmenü zum Spiel wie üblich anzuzeigen, '1' um es zu überspringen.
12.0 Was kannst du jetzt machen?
Es ist ein guter Zeitpunkt, alles nochmal durchzusehen, was du in deiner Mod hast, und in Erwägung zu ziehen, Elemente, die nicht so gut funktioniert haben wie erhofft, herauszunehmen. Bei SDK- und Pythonmods sieh deinen Code durch und suche nach Möglichkeiten, ihn aufzuräumen oder Teile, auf die du auch verzichten kannst, zu entfernen.
Wenn du kein Changelog für deine Mod führst, solltest du deine Veränderungen durchgehen und dokumentieren. Ich schlage vor, „Beyond Compare“ (http://www.scootersoftware.com) über deine und die Originaldatein laufen zu lassen (Wenn du eine Warlordsmodifikation bist, zwischen deinen Dateien und den Warlordsdateien, wenn du eine Vanillamod bist, zwischen deiner Mod und den Vanilla-Dateien). Es gibt eine Menge kleiner Veränderungen, die wir vornehmen und dann vergessen; das wird dich all diese kleinen Veränderungen einfangen lassen.
Dieser Artikel sollte dir genug Informationen darüber geben, was mit BtS kommt, um mit der Planung für Ergänzungen für deine Mod zu beginnen. Ereignisse, die du ergänzen möchtest, neue pythonfunktionen, aus denen du einen Vorteil ziehen möchtest, usw. Vielleicht sogar einige Dinge zu überarbeiten, sodass sie die neuen Features nutzen. All diese Designarbeit kann jetzt getan werden. Bevor du BtS spielst, frage dich selbst, wie du Ereignisse gern eingebaut wüsstest (aus Spielersicht) und welche Art von Ereignissen du gerne sähest. Wenn dann BtS rauskommt, wirst du vielleicht überrascht sein zu sehen, dass sie so sind, wie du dir gedacht hast, oder sogar noch besser oder vielleicht magst du deine Idee dann lieber und hast dann alles, was du brauchst, um sie auszuprobieren.
13.0 Zu Beyond the Sword konvertieren
Sogar bei alles verändernden Modifikationen wird es sich als leichter erweisen, die Änderungen nach BtS zu übernehmen als die Dateien in BtS-Dateien zu konvertieren. Du willst beispielsweise nicht deine CIV4UnitInfos.xml BtS-kompatibel machen. Nimm stattdessen die Standard- CIV4UnitInfos.xml von BtS und ergänze hier deine Veränderungen. Auch wenn es schneller scheinen mag, ersteres zu tun, wirst du in dem Fall auf lange Sicht mit unerwarteten Unterschieden, vielleicht sogar Abstürzen zu kämpfen haben. Besser ist es, sauber anzufangen.
Zweitens: Wenn du eine Mod mit vielen Veränderungen konvertierst, ergänze nicht alles auf einmal.
Konvertiere ein wenig, Einheiten oder Gebäude, füge ein oder zwei Zivs hinzu und dann spiele ein Spiel. Stell sicher, dass alles funktioniert, bevor du noch mehr ergänzt. Nichts so frustrierend wie eine Menge Zeit zum Konvertieren aufzuwenden, nur um einen allgemeinen Absturz zu finden, den abzugrenzen du all deine gerade vorgenommenen Veränderungen rückgängig machen musst.
Untersuch die XmlLoadUtilitySet.cpp-Datei, um all die Dateitypen zu sehen, die das Spiel lädt. Ein guter Erfahrungswert ist, dass du deine Mod in die Reihenfolge, in der diese Dateien geladen werden, bringen solltest, um „dangling reference“-Fehler zu vermeiden. Technologien kommen so früh, gefolgt von den Gebäuden, dann Einheitenklassen, dann die Typen, dann Anführer und Zivilisationen ziemlich gegen Ende.
Wenn es sich nicht um eine „total conversion“-Mod handelt, zieh das „modulares XML“-Feature von BtS ernsthaft in Erwägung. Es wird dir zumindest ersparen, jedesmal, wenn Firaxis einen Patch herausbringt, die Mod zu verändern (weil Veränderungen an ihrem Kern deine Dateien nicht betreffen). Es macht es Modderkollegen und Spielern auch leichter, deine Mod mit anderen zusammenzuführen.
Wenn du vorhast, eine große Modifikation zu portieren, sprich dich mit den Erstellern der Komponenten, die du in der Vergangenheit eingebaut hast, ab, um zu sehen, ob sie auf „modulares XML“ umsteigen und dir dadurch Zeit und Mühen sparen werden. Mit deinen eigenen, einzigartigen Inhalten beginn, indem du sie von dem Originalinhalt trennst, und erstelle dann ein Modul, das aus den Veränderungen gegenüber dem Original besteht, wenn du welche vorgenommen hast, und konvertiere und modularisiere die neuen Materialien Bit für Bit, indem du sie der Mod hinzufügst und testest, wie das funktioniert, und dann Module von anderen ergänzt und auf den neuesten Stand bringst.
Die BtS-SDK-Dateien kommen auf der CD, sie werden nicht erhältlich sein, bis das Siel in die Läden kommt. Modifikationen des Warlords-Codes zu übertragen wird in manchen Fällen wegen der Veränderungen vieler Funktionsargumente und der vollständigen Entfernung einiger Funktionen knifflig werden. Glücklicherweise arbeiten einige Betatester bereits daran, Code zu portieren, das CCCP (Civ4 Community Core Project) – zu finden unter http://forums.civfanatics.com/forumdisplay.php?f=195- ist das Bestreben, eine DLL zu erstellen, die viele beliebte Erweiterungen in sich derart vereint, dass sie alle optional gemacht werden und auf Standard gestellt keinen Effekt haben. Es wird als eine Art „Skelett-Mod“ verteilt, die aus nur der DLL, Codebasis und angepassten Schemata besteht. Modder, die nicht ihre eigene DLL kompilieren können, können sie dann als Grundlage verwenden, ihre eigenen Inhalte hinzuzufügen und nur die speziellen Features einzuschalten, die sie wollen. Darüberhinaus können die, die programmieren können, ihre eigenen Mods hinzufügen und dadurch einen Sprung auf BtS-Portierung zu machen. Das CCCP ist ein anhaltendes Bemühen, jeder ist aufgerufen, teilzuhaben und seine Codeveränderungen zu teilen und für Einbau in das Projekt bereitzustellen. Die BtS-Version des CCCP sollte sofort erhältlich sein, wenn BtS die Ladenregale erreicht, und dadurch sofortiges Testen und Verwenden zu ermöglichen.
Python wird wegen Veränderungen des Callback-Interfaces nicht gänzlich zuverlässig sein, aber es sollte leichter sein, sie wieder zum Laufen zu bringen wie wegen ihrer interpretierenden Natur und leichten Kodierbarkeit gewünscht.
14.0 Anhang A- Modulares XML Laden
14.1 Einleitung
„Modulares XML Laden“ (MXMLL) ist ein neues Feature in BtS, das kreiert wurde, um Modder beim Teilen und Kombinieren ihrer Modifikationen zu unterstützen. Die, die sich mit den XML-Dateien aus Vanilla und Warlords auskennen, wissen, dass das Spiel Daten aus mehreren Dutzend XML-Dateien lädt; eine Datei für Gebäude, eine für Einheiten, usw. Früher war es nur möglich, eine Datei jeder Art zu laden und diese Datei musste unter einem ganz bestimmten Dateipfad abgelegt sein und genau den richtigen Namen haben, um korrekt geladen zu werden. MXMLL ist eine Möglichkeit, Mods zu erstellen, die diese Einschränkungen umgehen; Indem man es verwendet, kann man „Module“ erstellen, kleine Pakete, die alle gleichzeitig geladen werden können und dadurch dem Nutzer einen einfachen Weg eröffnen, viele Mods gleichzeitig zu spielen. Dieser Leitfaden ist für Modder gedacht; er wird die Regeln, Strukturen und besten Vorgehensweisen zum Erstellen von Modulen und Konvertieren existenter Mods in das Modulformat. Sobald ein Modul erstellt ist, muss niemand mehr das ermüdende Ausschneiden-und-Einfügen verwenden, um Mods zu kombinieren und Modder werden in der Lage sein, ihre Objekte zu erneuern, ohne die von anderen anzurühren.
14.2 Module erstellen
Weil die meisten bisherigen Mods in dem „aus einem Guss“-Format, soll heißen einer Datei jeder Art, vorliegen, werden die meisten neuen Mods auf einem von drei Wegen erstellt werden:
1. Extraktion bisherigen Inhalts aus Warlordsmods in Bts-kompatible Module, vielleicht mit einem Blick darauf, die Mod vollständig in eine „Bibliothek“ von Modulen zu zerlegen.
2. Dann deren große Bandbreite kompletter Mod-Umwandlung ins Modulformat zu Zwecken der Organisation und Größenverringerung.
3. Erzeugung neuen Inhalts von Grund auf.
Welchen Weg du nutzt, wird von der Art deiner Modifikation abhängen. Hersteller von „Komponenten“ und Inhalten, die in einer Vielzahl von Mods genutzt werden sollen, werden den Bibliotheksansatz wählen wollen. Beispielsweise könnten Erweiterungen des neuen Einheiten-Aussehens-Typ-Features als eine Aussehenstypbibliothek gepackt werden, wobei jedes Modul eine Liste all des Aussehensarten und diese Aussehen selbst enthält. Dann ist es leicht für den Anwender, das Modul auszuwählen und die Wirkungen zu erhalten. Für Mods, die immer komplexer werden und von Querverweisen abhängen, wie neuen Technologien, die von neuen Einheiten, die neue Ressourcen benötigen, benötigt werden, wird es schwerer sein, Module zu erstellen als ein „stand alone“. In solchen Fällen könnte Modularisieren zu Zwecken der Organisation großer Dateien durch Aufteilung in Kategorien sinnvoller sein. Teamprojekte können von der verteilten Art der Arbeit profitieren, weil Teammitglieder an verschiedenen Dateien arbeiten können, ohne sie abgleichen und zusammenführen zu müssen (für teilweise große Projekte wird Versionskontrollsoftware sehr empfohlen). Und zum Letzten können Fans der Mods viel einfacher Module übersenden, die ihre vorgeschlagenen Änderungen/Fehlerbehebungen enthalten und diese können schneller getestet und eingebaut werden.
14.3 Wie es funktioniert
MXMLL arbeitet komplett während der XML-Ladezeit des Spiels. Während des Ladens liest das Spiel Daten für jeden Dateityp nacheinander, sodass es die Anzahl jeder Art von Spielelementen bestimmen und sie korrekt indizieren kann. Für jede Datei wird der „Basis-“Inhalt wie gewöhnlich von den Standarddateipfaden geladen, die man aus Warlords kennt. Dann wird der config-Parameter „Modulares Laden“ überprüft. Ist er 1 (true), wird eine Suche in den Ordnern „Modules“ innerhalb der gespielten Mod und „custom assets“ durchgeführt. Ein regulärer Ausdruck wird verwendet, um die Art einer jeden XML-Datei festzulegen, und nur die der richtigen Art werden geladen. Elemente innerhalb der Module werden nach den Basisinhalten geladen und können Basisinhalte ersetzen, die einen gleichen Typnamen haben, Module werden ebenfalls nacheinander geladen und ersetzen sich gegenseitig, sodass das letztgeladene im Spiel vorkommt. Die Reihenfolge des Modulladens wird nicht dadurch beeinflusst,ob das Modul in den Custom Assets oder der Mod selber vorliegt, beide könnten das andere ersetzen. Vermeide also immer, zwei konkurrierende Module zu haben.
14.4 Was nicht funktioniert
Leider gibt es eine Gruppe von Dateien, die nicht mit MXMLL zusammenarbeitet, und zwar jede, die mit Sound- oder Audio-Dateien zu tun hat. Diese wurden bisher nicht kompatibel gemacht, ebenso sind einige Dateitypen wie MissionInfos.xml und CommerceTypes.xml mit Enums im SDK verknüpft, sodass jede Erweiterung dieser Dateien ohne eine zugehörige Veränderung im SDK keine Wirkung hätte. Es wird empfohlen, keine Module mit diesen Dateien zu erstellen.
14.5 Benennungsregeln
Das Dateienbenennungssystem, das benutzt werden muss, damit eine modulare XML-Datei geladen wird, ist streng, aber einfach und allgemeingültig. Weil * ein (mehrstelliges) Platzhalterzeichen ist, kannst du einen beschreibenden Namen vorweg platzieren, wie Ninja_CIV4UnitInfos.xml. Auch kann es eine beliebige Anzahl zwischengeordneter Ordner innerhalb des xml-Ordners geben; Daten können also nach Herzenslust verschachtelt werden. Beispiel: "modules/Custom Units/Ninja/Ninja_CIV4UnitInfos.xml". Das ist anders als das Standardladen des Spiels, das sehr starr war und noch immer ist. Das Ausbleiben der Übereinstimmung mit dem regulären Ausdruck ist der wahrscheinlichste Grund dafür, dass Inhalte im Spiel still und heimlich nicht auftreten (keine Ladewarnung!).
14.6 Unterstützte Dateitypen
Die folgenden Arten von Dateien werden unterstützt; in allen Fällen wird das Spiel Dateien namens modules/*_TYP.xml suchen und finden, bei denen TYP eine der folgenden Zeichenketten ist:
- "CIV4ArtDefines_Interface"
- "CIV4ArtDefines_Movie"
- “CIV4ArtDefines_Misc"
- "CIV4ArtDefines_Unit"
- "CIV4ArtDefines_Building"
- "CIV4ArtDefines_Civilization"
- "CIV4ArtDefines_Leaderhead"
- "CIV4ArtDefines_Bonus"
- "CIV4ArtDefines_Improvement"
- "CIV4ArtDefines_Terrain"
- "CIV4ArtDefines_Feature"
- "CIV4BasicInfos"
- "CIV4NewConceptInfos"
- "CIV4CityTabInfos"
- "CIV4CalendarInfos"
- "CIV4SeasonInfos"
- "CIV4MonthInfos"
- "CIV4DenialInfos"
- "CIV4InvisibleInfos"
- "CIV4UnitCombatInfos"
- "CIV4DomainInfos"
- "CIV4UnitAIInfos"
- "CIV4GameText"
- "GlobalDefines"
- "PythonCallbackDefines"
- "CIV4AttitudeInfos"
- "CIV4MemoryInfos"
- "CIV4GameSpeedInfo"
- "CIV4TurnTimerInfo"
- "CIV4WorldInfo"
- "CIV4ClimateInfo"
- "CIV4SeaLevelInfo"
- "CIV4AdvisorInfos"
- "CIV4TerrainInfos"
- "CIV4EraInfos"
- "CIV4UnitClassInfos"
- "CIV4SpecialistInfos"
- "CIV4VoteSourceInfos"
- "CIV4TechInfos"
- "Civ4FeatureInfos"
- "CIV4ReligionInfo"
- "CIV4AnimationInfos"
- "CIV4AnimationPathInfos"
- "CIV4PromotionInfos"
- "CIV4TraitInfos"
- "CIV4GoodyInfo"
- "CIV4HandicapInfo"
- "CIV4CursorInfo"
- "CIV4CivicOptionInfos"
- "CIV4UpkeepInfo"
- "CIV4HurryInfo"
- "CIV4SpecialBuildingInfos"
- "CIV4CultureLevelInfo"
- "CIV4BonusClassInfos"
- "CIV4VictoryInfo"
- "CIV4BonusInfos"
- "CIV4CorporationInfo"
- "Civ4RouteInfos"
- "CIV4ImprovementInfos"
- "CIV4BuildingClassInfos"
- "CIV4BuildingInfos"
- "CIV4SpecialUnitInfos"
- "CIV4ProjectInfo"
- "CIV4CivicInfos"
- "CIV4LeaderHeadInfos"
- "CIV4ColorVals"
- ”CIV4PlayerColorInfos"
- "CIV4EffectInfos"
- "CIV4EntityEventInfos"
- "CIV4BuildInfos"
- "CIV4UnitInfos"
- "CIV4UnitArtStyleTypeInfos"
- "CIV4CivilizationInfos"
- "CIV4Hints"
- "CIV4MainMenus"
- "CIV4SlideShowInfos"
- "CIV4SlideShowRandomInfos"
- "CIV4WorldPickerInfos"
- "Civ4SpaceShipInfos"
- "CIV4YieldInfos"
- "CIV4CommerceInfo"
- "CIV4GameOptionInfos"
- "CIV4MPOptionInfos"
- "CIV4ForceControlInfos"
- "CIV4ThroneRoomCameraInfos"
- "CIV4ThroneRoomInfos"
- "CIV4ThroneRoomStyleInfos"
- "CIV4EventInfos"
- "CIV4EventTriggerInfos"
- "Civ4RouteModelInfos"
- "CIV4RiverInfos"
- "CIV4RiverModelInfos"
- "CIV4WaterPlaneInfos"
- "CIV4TerrainPlaneInfos"
- "CIV4CameraOverlayInfos"
- "CIV4ProcessInfo"
- "CIV4EmphasizeInfo"
- "CIV4MissionInfos"
- "CIV4ControlInfos"
- "CIV4CommandInfos"
- "CIV4AutomateInfos"
- "CIV4VoteInfo"
- "CIV4CameraInfos"
- "CIV4InterfaceModeInfos"
- "CIV4FormationInfos"
- "CIV4AttachableInfos"
- "CIV4DiplomacyInfos"
- "Civ4QuestInfos"
- "Civ4TutorialInfos"
- "CIV4EspionageMissionInfo"
14.7 Schema
Der hauptsächliche Nachteil dieser Ordnerflexibilität ist, dass jede XML-Datei noch immer vor dem Laden für gültig erklärt werden muss und dass Civ das Schema in dem selben Ordner verlangt wie die Datei, die für gültig erklärt werden soll. Andernfalls schlägt das Laden fehl und eine Warnung wird ausgegeben, bei der man auf „OK“ klicken kann, um mit dem Laden fortzufahren, dann wird es allerdings danach wahrscheinlich „ITEM NOT FOUND“-Warnungen geben, weil die anderen mit dem Modul verbundenen Dateien mit in der Luft hängenden Referenzen zurückbleiben. In manchen Fällen ist es möglich, nur die Original-Schema-Dateien unverändert zu kopieren und das laufen zu lassen, aber das führt eventuell zu schwer behebbaren Überkreuzvalidationsfehlern, wenn man beginnt, irgendein verändertes Schema zu verwenden, deshalb ist es empfehlenswert, alle Modulschemata so umzubenennen, dass ein einfaches „Modulname_“ am Anfang steht, um das Modul mit dem Modul darin in Einklang zu bringen. Das stellt sicher, dass das Schema nur lokal genutzt wird und andere Module nicht zerstört. Denke daran, die Header der das Schema verwendenden Dateien abzuändern, sodass sie richtig darauf verweisen. Das ist besonders wichtig bei den Modulen, die einen neuen XML-Tag verwenden wollen, der mit einer modifizierten DLL geladen werden soll; das lokale Schema wird es ermöglichen, das Modul unter einer nichtmodifizierten DLL zu laden und das modifizierte Schema davon abzuhalten, andere XML-Dateien ungültig zu machen, im besten Fall wird es rückwärtskompatibel zu der bereitgestellten unmodifizierten DLL sein; keine Tags werden entfernt.
14.8 Organisation
Auch wenn es nicht notwendig ist, wird doch empfohlen, dass Modder diese Organisationsvorschläge nutzen, damit alle auf dem selben Stand sind und Module leicht benutzt werden können. Innerhalb der Module wird es für jeden der größeren datentypen zwei Ordner geben, einen für Modifikationen an bestehenden Objekten „Modified TYPE“ und einen für neues Material „Custom TYPE“, wobei TYPE das Selbe ist wie ein Dateityp. Solche Sachen wie ganze Zivilisationen, die abhängige Unterelemente haben, sollten diese in ihren eigenen Ordnern beinhalten, sodass ein einzelnes Package alles enthält, um eine Civ hinzuzufügen oder zu entfernen. In der Regel sollte der Inhalt in den kleinsten Teilen, die eigenständig verwendbar sind vorliegen, wie einzelnen Einheiten, Technologien und Gebäuden. Nur wenn viele Elemente wegen Querverweisen voneinander abhängen, sollten sie zusammengepackt werden; das kann dadurch geschehen, dass einfach mehrere Elemente in jeder XML-Datei aufgeführt werden, genauso, wie die originalen „monolithischen“ Spieldateien aufgebaut waren. Wenn alle Abhängigkeiten innerhalb einer solchen XML-Datei vorliegen, wird sie sauber geladen.
- 1. Erstell einen neuen Ordner, der den Modulnamen trägt. Nimm für diesen etwas Beschreibendes, etwas sehr Einfaches. Z.B. „Ninja“.
- 2. Kopier alle nötigen Graphikdateien in diesen Ordner, darunter Schaltflächenbilder, Einheiten- und Anführeranimationen können manchmal ausgelassen und referenziert werden.
- 3. Kopier den Inhalt eines der Objektart, die du erstellen möchtest, zugeordneten Vorlagen-Ordners, der blanke XML- und Schema-Dateien, die für das Objekt nötig sind, enthält.
- 4. Ergänze den Modulnamen vor jedem Dateinamen, auch der der Schemata, z.B. wird "_CIV4UnitInfos.xml" zu "Ninja_CIV4UnitInfos.xml".
- 5. Öffne jede nicht-Schema-XML-Datei und ergänze den Modulnamen am Dateianfang.
- 6. Wenn du ein Objekt aus einem bestehenden Mod extrahierst, kopiere den XML-Eintrag eines jeden Dateityps aus der monolithischen Datei der Mod in die dem Modul zugehörige XML-Datei.
- Wenn die Originalmod für Warlords oder gar Vanilla war, wird das gerade kopierte xml-Element wahrscheinlich veraltet sein und neuer für das Funktionieren wichtige BtS-Elemente entbehren. Um diese xml-Dateien auf den neuesten Stand zu bringen, lass ein Vergleichsprogramm mit einer aktuellen xml-Datei gleichen Typs laufen, indem du das Fehlende hereinmischst und angemessene Werte einsetzt.
- 7. Öffne die ArtDef-Datei des Moduls, ändere einen jeden Dateipfadeintrag zu for "module/TYPE/MODULE/FILE", TYPE ist dabei ein Objekt wie "Custom Civilizations" oder "Modified Techs", MODULE ist einfach der in Schritt 1 benutzte Ordnername und FILE der Name der entsprechenden Graphikdatei wie Ninja_button.dds
- 8. Wenn es sich um ein großes, aus mehreren Objekten bestehendes Modul wie eine neue Zivilisation mit einzigartigen Einheiten, Gebäuden und Anführern handelt, stell zuerst das das übergeordnete Objekt (die Zivilisation) fertig und teste es, dann geh wieder zu Schritt 1 und erstelle jedes Unterelement als Unterordner innerhalb des höherrangigen Objekts. Bei Schritt 7 zieh eine zusätzliche Ordnerebene in Betracht.
- 9. Wirf, um Platz zu sparen, alle Dateien aus der Vorlage weg, die du nicht veränderst, beispielsweise müssen zivilisationsspezifische Einheiten und Gebäude keine neuen Einheiten- oder Gebäudetypen definieren.
- 10. Schließlich fülle die Readme.txt aus, sodass andere, die dein Modul nutzen, es dir anrechnen oder dich kontaktieren können, baue alle speziellen Konfigurationseinstellungen oder Abhängigkeiten, um die zu wissen gut wäre, ein.
14.9 Fehlerbehebung
Einige der häufigsten Probleme, die du haben wirst, und ihre Ursachen sowie Möglichkeiten der Abhilfe:
Obwohl es beim Laden keine Fehlermeldung gab, ist kein Unterschied erkennbar - Das liegt daran, dass die modulare xml-Datei komplett ausgelassen wird. Du kannst in deinem xml-Log sehen, dass die Dateien nie geladen wurden. Überprüfe zunächst, ob die „modular loading“-Option in der .ini auf 1 gesetzt ist. Wenn immer noch nichts passiert, schau nach, ob das Modulpaket unter "Assets/modules" und nicht direkt unter Assets oder im xml-Ordner gespeichert ist. Und schließlich versichere dich, dass die xml-Dateien '_'-Zeichen enthalten, es ist leicht, sie zu vergessen.
Magentafarbene Schaltflächen oder „roter Ball“-Einheiten und Gebäude - Der Pfad der ArtDef-Date ist falsch und sie kann nicht gefunden werden. Überprüfe deine Graphikdateien auf Dopplungen. Hast du daran gedacht, sie ins Modul zu packen? Überprüfe die ArtDef und sorge dafür, dass der Dateipfad mit dem Modulpfad übereinstimmt, meist wird das "modules/TYPEOFMODULE/MODULENAME/FILENAME" sein, oder referenziere Inhalte der ursprünglich installierten Graphik.
Ladefehler "invalid according to schema" – Das kann zwei Gründe haben: Folgt der Fehlermeldung ein bestimmter Tag mit Zeile folgt – so etwas wie " on line # is invalid" -, harmoniert die xml-Dateinicht mit deinem Schema (eines ist Warlords, das andere BtS; das könnte auch andersrum sein und du bekämest die eine ähnliche Fehlermeldung. Im anderen Fall, wenn nichts folgt, zeigt das an, dass das Schema nicht gefunden wurde und es keine Übereinstimmung zwischen Schemenname und Schemenreferenz gibt, siehe Schritt 4 und 5.
Ladefehler "reference not found" – Zu diesem Fehler kommt es, wenn ein Zeichenkettenname im globalen Hash nicht gefunden wird. Du kannst OK anklicken, um weiterzukommen und mit dem Laden fortfahren, um weitere Fehler zu jagen; dann wird die nicht gefundene Zeichenkette zu NONE verstümmelt. Modulares Laden entfernt keine der Originalzeichenketten, solange also das Modul nur Sachen aus dem ursprünglichen Spiel (oder Mod) referenziert, wird dieser Fehler nicht auftreten. Wenn du aber Module erstellst, die aufeinander angewiesen sind, sagen wir, zwei Einheiten,Einheit A, die zu B modernisiert werden kann, wird A einen Verweis auf B benötigen und A ohne B zu laden würde zu dieser Fehlermeldung führen.
Ansehen des Objekts in der Zivilopädie zeigt eine leere Seite, keine Schaltfläche in einer Liste oder Python-Meldung - Das liegt meist an einer fehlenden ArtDef, wenn z.B. eine Einheit auf eine ArtDef BLA_ARTDEF verweist, die nicht gefunden wird, weil sie falsch benannt wurde, fehlt oder ihr einfach der Unterstrich fehlt. Sobald das korrigiert ist, wird die leere Seite erlöschen und man wird zumindest magentafarbene Schaltflächen sehen.
14.10 Laden des Caches
Wenn Cache-Laden aktiviert ist, wird das Suchen regulärer Ausdrücke für jede Datei, die auf diese Art geladen werden kann (die 13 größten Dateien einschließlich des Hauptteils des Inhalts), übersprungen werden, andere Dateiarten werden immer noch Module suchen und laden. Wenn das Spiel Änderungen in den Custom Assets oder Mod Assets entdeckt, wird es die komplette Suche durchführen und die Inhalte aller gefundenen Module in die Cache-Dateien, diese werden in den folgenden Spielen mit höherer Geschwindigkeit geladen. Es hat sich beim Testen gezeigt, dass das Spiel in manchen Fällen dazu gebracht wird, fälschlicherweise aus dem Cache zu laden, wenn Module hinzugefügt oder entfernt wurden, daher wird empfohlen, Cache-Laden durch Drücken der Umschalttaste, wenn das Spiel zu laden beginnt, explizit zu verbieten, nachdem Module hinzugefügt/entfernt wurden, um auf der sicheren Seite zu sein. Wenn du beim Laden des Caches eine Fehlermeldung erhältst, ist der erste Reparaturversuch, einfach nochmal ohne Caching neu zu laden.
14.11 Templates
Als Hilfe zur Erleichterung der Erstellung neuer Mods habe ich einen Satz Vorlagen für einige der größeren Dateiarten eingefügt. Diese Ordner enthalten eine leere Kopie einer jeden Datei, die eingebaut werden muss, um ein neues Element dieser Art im Spiel zu erhalten. Um ein Objekt zu verändern, musst du lediglich eine Kopie der Dateien, die du tatsächlich veränderst, einfügen, z.B. erfordert die Änderung eines Gebäudenamens eine kurze GameText-Datei und alles andere könnte gestrichen werden. Eine typische Vorlage sieht so aus:
PHP-Code:
<?xml version="1.0"?> <Civ4TechInfos xmlns="x-schema:_CIV4TechnologiesSchema.xml"> <TechInfos> </TechInfos> </Civ4TechInfos>
14.12 Ressourcen
Bald wird im civfanatics CIV4 Creation and Customization forum ein neues Unterforum, genannt das "Plug and Play" forum, eröffnet werden, zu finden unter http://forums.civfanatics.com/forumdisplay.php?f=255. Es wird zum Posten neuer Module bestimmt sein. Eine andere Ressource, die sich bereits in Entwicklung befindet, ist der 'Bibliothekszweig' des CCCP unter http://sourceforge.net/projects/civ4ccp/library/, wo man eine wachsende Sammlung von Modulen jeder Art finden kann. Sie waren ursprünglich für die Warlordsversion des MXMLL geschrieben und werden zu BtS konvertiert werden. All diese Module sind zu Download, Gebrauch, Veränderung und Weiterverteilung freigegeben. Purplexus von CFC ist der Chef-Modulersteller der ursprünglichen Warlordsversion und moderiert das neue P&P-Forum und die CCCP-Bibliothek und ist der erfahrenste „Guru“ bzgl. der Module, genauso wie ihres Schreibens, er kann zusätzliche Tipps und Hilfen zum Modulerstellen geben. Erwarte in den nächsten Wochen auf Feedback basierende, detailliertere Anleitungen von ihm.
Quelle
übertragen aus dem Civforum
Übersetzt von Swoon