Ihr werdet lernen:
- wie man ein neues Land erstellt
- wie man neue Start Divisionen festlegt
- wie man neue Ideologien erstellt
- wie man einen neuen Fokusbaum erstellt
- wie man Events schreibt
- wie man neue Ideen erstellen kann
- wie man Ressourcen & Gebäude von Provinzen verändert
1. Erste Schritte
Als erstes solltet ihr euch natürlich Gedanken machen, was ihr überhaupt verändern wollt. Dann startet ihr das Spiel und geht im Launcher auf den Modreiter, dann auf Mod Werkzeuge und 'erstellt' dort eure Mod. Das Spiel erstellt nun unter Dokumente/Paradox Interactive/Hearts of Iron IV/mod einen Ordner mit dem Namen eurer Mod sowie eine Textdatei, in welcher alle wichtigen Informationen zu eurer Mod angegeben sind, wie z.B. die benötigte Version und die Kategorien.
Nun ist es noch sinnvoll, sich ein vernünftiges Notepad herunterzuladen. Ich benutze dafür Atom, welches u.a. auch im Modding Wiki zu Hearts of Iron IV empfohlen wird. Eventuell müsst ihr bei der Installation kurz euer Antiviren Programm ausschalten.
Ebenfalls könnt ihr schon mal den Debug Modus im Spiel aktivieren. Dazu klickt ihr mit der rechten Maustaste in Steam auf HoI 4, wählt Eigenschaften aus und klickt dann auf Startoptionen festlegen. Hier fügt ihr nun -debug an. Der Debug Modus hilft euch, schnell Daten im Spiel zu finden und zeigt euch zu 95% an, wenn etwas nicht läuft, warum es nicht läuft. Wobei diese Meldung immer mit Vorsicht zu genießen ist und man ggf. alles selber testen sollte, da manchmal Fehler aus dem Nichts herbeigezaubert werden und selbst bei einer ungemoddeten Version Fehler auftauchen.
Für das bearbeiten von Grafiken solltet ihr euch GIMP downloaden (sofern ihr nicht bereits ein anderes Programm nutzt) sowie ein Plugin dafür, welches .dds Dateien öffnen und bearbeiten kann.
2. Ein Land erstellen
Passend zum Brexit werden wir nun Schottland erstellen. Als erstes bauen wir dafür eine Grundlegende Ordnerstruktur auf. Fettgedruckte Ordner sind hierbei 'Hauptordner', kursiv gedruckte befinden sich in diesen Ordnern.
common
countries
country_tags
ideas
history
countries
states
units
localisation
gfx
flags
medium
small
leaders
Nun erstellen wir unter history/countries die .txt Datei SCO - Schottland. SCO ist hierbei der vom Land genutzte Tag und darf nicht noch einmal exisitieren. Wir schauen also im gleichen Ordner beim Spiel nach und sehen, dass dieser Tag noch ungenutzt ist.
Der Inhalt dieser Datei sieht nun so aus:
Code: Alles auswählen
### Alles was hinter einer Raute steht, hat für das Spiel keine Bedeutung.
# Penis
capital = 121 # Die Hauptstadt des Landes. Den Wert finden wir, wenn wir das Spiel im Debug Modus starten, auf Nudge! klicken und dann auf States und über die gewünschte Provinz fahren.
oob = "SCO_1936" # Gibt dem Spiel an, welche Templates existieren und ob sowie wo bereits Divisionen stehen. Dazu später mehr.
set_technology = { # Die Starttechnologien
infantry_weapons = 1
gwtank = 1
basic_light_tank = 1
}
1939.1.1 = { # Alles relevante für den 1939 Start steht hier und ist für uns erst einmal uninteressant und deshalb nicht enthalten
}
set_politics = { # die Beliebtheitswerte der Parteien
parties = {
democratic = {
popularity = 0
}
fascism = {
popularity = 15
}
communism = {
popularity = 10
#banned = no #default is no
}
neutrality = {
popularity = 75
}
}
ruling_party = neutrality # die Regierungspartei
last_election = "1936.1.1" # die letzte Wahl
election_frequency = 48 # dauer der Amtszeit in Monaten
elections_allowed = no # Zulassung bzw. Nichtzulassung von Wahlen
}
# Der Chef des Landes
create_country_leader = {
name = "Max Mustermann"
#desc = "POLITICS_MOHAMMED_ZAHIR_SHAH_DESC" # Beschreibung des Anführers, hier von Afghanistan. Ich habe ehrlich gesagt keine Ahnung, wo ich die finde und halte es auch nicht für sonderlich wichtig, weshalb ich es mit einer Raute weglasse.
picture = "gfx/leaders/Portrait_Max_Mustermann.dds" # zu finden unter gfx/leaders
expire = "1965.1.1" # das Todesdatum
ideology = despotism # Ideologie des Leaders
traits = { # besondere Eigenschaften
#
}
}
create_corps_commander = { # Generäle vom Land
name = "Max Mustermann sein Bruder"
portrait_path = "gfx/leaders/Europe/Portrait_Europe_Generic_land_3.dds" # das Bild, in dem Fall ein generisches
traits = { desert_fox } # Fähigkeiten vom General, hier der für Schottland typische Wüstenfuchs
skill = 4 # Fähigkeit des Generals
}
Als Codierung hierbei immer UTF8 wählen.
Nun brauchen wir noch eine Datei, welche dem Land eine Farbe sowie einen Grafikstil für Gebäude etc zuweißt.
Diese Datei heißt schottland.txt und ist unter common/countries zu finden.
Code: Alles auswählen
graphical_culture = western_european_gfx
graphical_culture_2d = western_european_2d
color = { 10 50 10 } # Farbe RotGrünBlau
Nun kopieren wir aus dem Spielordner unter common/country_tags die sich darin befinde Datei 00_countries in den gleichen Ordner unserer Mod und fügen unten an
Code: Alles auswählen
SCO = "countries/Schottland.txt"
Unser Land existiert jetzt, hat aber noch keinerlei Gebiete. Dafür suchen wir wieder im Nudge! Modus die ID's von den Staaten raus, suchen die Staaten dann unter history/states im Spielordner und kopieren sie in den gleichnamigen Ordner unserer Mod und bearbeiten die Dateien wie folgt:
Code: Alles auswählen
state={
id=121
name="STATE_121" # Lothian
manpower = 1431624 # Bevölkerung
state_category = city # Gebietart
resources={ # Rohstoffe
steel = 20 # 20 Stahl, welche vorher nicht da waren
}
history={
owner = SCO # Besitzer
victory_points = { 9392 10 } #Siegpunkte einzelner Provinzen
victory_points = { 6300 1 }
buildings = { #Gebäude
infrastructure = 7
industrial_complex = 1
dockyard = 1
air_base = 3
6300 = {
naval_base = 5
}
9392 = {
bunker = 10 # Edingburgh ist nun befestigt
}
}
add_core_of = SCO # Wer einen Kern besetzt. Steht hier nichts, wird der Staat als Kolonialstaat gewertet
}
provinces={ # zum Staat gehörende Provinzen
159 6300 9314 9383 9392 11378
}
}
Jetzt existiert Schottland, jedoch noch ohne Armee. Dafür gehen wir in den Ordner history/units und erstellen die vorher erwähnte Datei SCO_1936
Code: Alles auswählen
division_template = { # Wie der Name schon sagt, ein Divisions Template
name = "Highlander"
regiments = { # Die Regimer von links oben nach rechts unten, hier eine normale 3x3 Infanteriedivision
infantry = { x = 0 y = 0 }
infantry = { x = 0 y = 1 }
infantry = { x = 0 y = 2 }
infantry = { x = 1 y = 0 }
infantry = { x = 1 y = 1 }
infantry = { x = 1 y = 2 }
infantry = { x = 2 y = 0 }
infantry = { x = 2 y = 1 }
infantry = { x = 2 y = 2 }
}
priority = 2 # Priorität, in diesem Fall Elite
}
units = { # im Feld stehende Einheiten
division = {
name = "Highlander Infanterie"
location = 9392 # Edinburgh
division_template = "Highlander"
start_experience_factor = 0.3 # Starterfahrung, hier Stufe 3
}
}
### Starting Equipment ### # was eben in der Produktion ist
instant_effect = {
add_equipment_production = {
equipment = {
type = infantry_equipment_0
creator = "SCO"
}
requested_factories = 1
progress = 0.28
efficiency = 100
}
}
Was nun noch fehlt, sind Minister. Da wir faul sind und erstmal nur ein spielbares Land kreieren möchten, kopieren wir die Minister von Luxemburg. Wir erstellen dafür im Ordner ideas die .txt Datei Schottland und fügen folgende Daten dort ein, wobei wir mit strg+f LUX durch SCO ersetzen.
Code: Alles auswählen
ideas = {
political_advisor = {
SCO_pierre_dupong = {
picture = generic_political_advisor_europe_1
allowed = {
original_tag = SCO
}
traits = { silent_workhorse } # Fähigkeit
}
SCO_martin_karp = {
picture = generic_political_advisor_europe_2
allowed = {
original_tag = SCO
}
traits = { war_industrialist }
}
SCO_pierre_krier = {
picture = generic_political_advisor_europe_3
allowed = {
original_tag = SCO
}
traits = { captain_of_industry }
}
}
# MILUXARY
army_chief = {
SCO_emile_speller = {
picture = generic_army_europe_1
allowed = {
original_tag = SCO
}
traits = { army_chief_defensive_2 } # die 2 steht für Experte. 1 Ist Spezialist und 3 Genie
ai_will_do = {
factor = 1
}
}
SCO_alexander_von_falkenhausen = {
picture = generic_army_europe_2
allowed = {
original_tag = SCO
}
traits = { army_chief_offensive_2 }
ai_will_do = {
factor = 1
}
}
}
air_chief = {
SCO_guillaume_soisson = {
picture = generic_air_europe_3
allowed = {
original_tag = SCO
}
traits = { air_air_combat_training_2 }
ai_will_do = {
factor = 1
}
}
SCO_nicholas_diedrich = {
picture = generic_air_europe_1
allowed = {
original_tag = SCO
}
traits = { air_chief_ground_support_2 }
ai_will_do = {
factor = 1
}
}
}
navy_chief = {
SCO_paul_medinger = {
picture = generic_navy_europe_3
allowed = {
original_tag = SCO
}
traits = { navy_chief_decisive_battle_2 }
ai_will_do = {
factor = 1
}
}
SCO_henri_ahnen = {
picture = generic_navy_europe_1
allowed = {
original_tag = SCO
}
traits = { navy_chief_maneuver_2 }
ai_will_do = {
factor = 1
}
}
}
high_command = {
SCO_dayan_moshe = {
picture = generic_army_europe_3
allowed = {
original_tag = SCO
}
traits = { army_infantry_3 }
ai_will_do = {
factor = 1
}
}
SCO_aloyse_glodt = {
picture = generic_air_europe_2
allowed = {
original_tag = SCO
}
traits = { army_armored_2 }
ai_will_do = {
factor = 1
}
}
SCO_damien_roeser = {
picture = generic_air_europe_2
allowed = {
original_tag = SCO
}
traits = { air_air_superiority_2 }
ai_will_do = {
factor = 1
}
}
SCO_pierre_fischbach = {
picture = generic_navy_europe_1
allowed = {
original_tag = SCO
}
traits = { navy_fleet_logistics_2 }
ai_will_do = {
factor = 1
}
}
}
theorist = {
SCO_alex_federspiel = {
picture = generic_army_europe_1
allowed = {
original_tag = SCO
}
research_bonus = {
land_doctrine = 0.07
}
traits = { military_theorist }
}
SCO_nicolas_de_dixmude = {
picture = generic_air_europe_1
allowed = {
original_tag = SCO
}
research_bonus = {
air_doctrine = 0.07
}
traits = { air_warfare_theorist }
}
SCO_florent_destriveaux = {
picture = generic_navy_europe_1
allowed = {
original_tag = SCO
}
research_bonus = {
naval_doctrine = 0.07
}
traits = { naval_theorist }
}
}
}
}
Spielerisch ist unser Land jetzt fertig, jedoch fehlt das optische Gewand, wie Name, Fahne und Bild für unseren Boss.
Für den Namen gehen wir im Spielordner unter localisation und kopieren für die deutsche Version die Datei countries_l_german.yml in den gleichnamigen Modordner und setzen unten an:
Code: Alles auswählen
SCO_fascism:0 "Schottisches Reich"
SCO_fascism_DEF:0 "Das Schottische Reich"
SCO_fascism_ADJ:0 "Schottisch"
SCO_communism:0 "Volksrepublik Schottland"
SCO_communism_DEF:0 "Die Volksrepublik Schottland"
SCO_communism_ADJ:0 "Schottisch"
SCO_democratic:0 "Republik Schottland"
SCO_democratic_DEF:0 "Die Republik Schottland"
SCO_democratic_ADJ:0 "Schottisch"
SCO_neutrality:0 "Schottland"
SCO_neutrality_DEF:0 "Schottland"
SCO_neutrality_ADJ:0 "Schottisch"
Nun müssen wir eine Fahne einfügen unter gfx/flags im Format 82x52 und als .tga Datei. Insgesamt tun wir das 4 mal, sprich für jede Ideologie eine.
Solltet ihr mit GIMP arbeiten, müsst ihr beim speichern den Haken unter RLE-Kompression rausnehmen.
SCO_communism.tga
SCO_fascism.tga
SCO_democratic.tga
SCO_neutrality.tga
Das Ganze wiederholt ihr dann, einmal für den Ordner Small (10x7) und einmal für Medium (41x26).
Für den Boss packen wir nun unter gfx/leaders die Datei Portrait_Max_Mustermann.dds (156x210)
Nun haben wir ein in der Theorie spielbares Land, wobei uns für die Praxis noch Militärfabriken fehlen, doch dazu kommen wir später. Wie wir bei den Bildern sehen können, stehen auch noch britische Truppen im Land. Dies könnten wir, sofern es uns stören würde, beheben, in dem wir unter history/units aus dem Hauptspiel die ENG_1936 Datei einsetzen, die Divisionen raussuchen und dann löschen bzw. umstellen.
Bilder (Öffnen)
3. Neue Ideologien
Wofür braucht man eigentlich eine neue Ideologie? Dies kann sinnvoll sein, wenn wir via Ereignis den Namen eines Landes ändern wollen oder aber auch, wenn wir verhindern möchten, dass Länder ohne gemeinsamen Feind eine Fraktion beitreten.
Gehen wir davon aus, dass wir neben Schottland nun auch Wales erstellt haben und sich beide in einer Fraktion befinden. Auch gehen wir davon aus, dass beide Länder faschistisch sind. Würde die schottische KI nun in Irland einmaschieren und zur gleichen Zeit führt Ungarn Krieg gegen Rumänien, so würde Ungarn wahrscheinlich der Fraktion beitreten, wenn gleich es für Schottland keinerlei nutzen hätte, da Ungarn keinerlei Verbindung zum Mehr hat.
Als erstes erstellen wir nun im Ordner common den Ordner ideologies und kopieren den Inhalt des gleichnamigen Ordners des Hauptspiels in diesen neuen Ordner und fügen vor der letzten } folgendes ein:
Code: Alles auswählen
celtic = { # id der Ideologie
types = {
despotism = { # unter Formen. Haben meines Wissens nach im Moment keinerlei Bedeutung für das Spiel.
}
oligarchism = {
}
moderatism = {
}
centrism = {
}
}
dynamic_faction_names = {
"FACTION_NAME_NONALIGNED_1" # hier könnte man dynamische Fraktionsnamen einsetzen, worauf wir erstmal verzichten
"FACTION_NAME_NONALIGNED_2"
"FACTION_NAME_NONALIGNED_3"
"FACTION_NAME_NONALIGNED_4"
"FACTION_NAME_NONALIGNED_5"
}
color = { 20 60 20 } #die Farbe der Ideologie
# nun kommt alles, was die Fraktion definiert. In diesem Fall ist es eine Kopie der Neutralen Ideologie. Ich denke der Inhalt muss nicht erklärt werden, da er recht einleuchtend ist.
war_impact_on_world_tension = 0.25 #no major danger
faction_impact_on_world_tension = 0.1
rules = {
can_force_government = no
can_puppet = no
can_send_volunteers = no
}
modifiers = {
#increased_influence_factor = 0.3 #30% easier to influence
generate_wargoal_tension = 0.5
join_faction_tension = 0.4
lend_lease_tension = 0.4
send_volunteers_tension = 0.4
guarantee_tension = 0.4
drift_defence_factor = -0.3
}
faction_modifiers = {
}
can_be_boosted = no
ai_neutral = yes #
}
So, nun haben wir auch eine neue Ideologie, welche später Verwendung findet.
4. Fokusbaum, Ideen & Events
Für einen neuen Fokus Baum erstellen wir erstmal im Ordner common den Ordner national_focus, wo die Datei schottland.txt rein kommt.
Code: Alles auswählen
focus_tree = {
id = scottish_focus
country = {
factor = 0
modifier = {
add = 10
tag = SCO
}
}
default = no
focus = { # der Beginn eines neuen Fokus'
id = sco_mil # die ID. sollte einzigartig sein, der rest ist egal, kann also auch der Namen eurer Mutter sein mit einer Zahl dahinter.
icon = GFX_goal_generic_construct_mil_factory #das Icon, in dem Fall das generische Militärfabrik Icon
x = 2
y = 0
### die Poisition im Fokusbaum
cost = 10 # die Dauer. 1 = 7 Tage, 10 = 70 usw.
completion_reward = { # die Belohung.
121 = { # Provinz, wo die Fabrik hinkommt
add_extra_state_shared_building_slots = 5 # fügt 5 neue bauplätze hinzu
### fügt 5 neue Fabrik sofort in der Provinz hinzu
add_building_construction = {
type = arms_factory
level = 5
instant_build = yes
}
}
}
}
### Keltenpower ###
focus = {
id = sco_cel
icon = GFX_goal_generic_more_territorial_claims
x = 2
y = 1
prerequisite = { focus = sco_mil } # Vorraussetzungen. Braucht man mehre, wiederholt man die Zeile, bei entweder oder fügt man in der Klammer einfach noch einmal focus = xyz ein
cost = 10
completion_reward = {
set_politics = { ruling_party = celtic elections_allowed = no } # die celtic Ideologie übernimmt nun das Ruder
set_political_party = { ideology = celtic popularity = 50 } # die celtic Ideologie hat nun eine Beliebtheit von 50%
}
}
}
Nun machen wir beim Fokusbaum erst einmal Pause und erstellen eine neue Idee, auf die wir dann zurückgreifen können.
Dafür setzen wir im Ordner ideas in der Datei schottland.txt zwischen ideas und political_advisator
Code: Alles auswählen
country = {
celticop = {
allowed = {
always = no
}
allowed_civil_war = {
always = yes
}
removal_cost = -1
picture = generic_morale_bonus # das Bild, hier von den Politkommisaren
modifier = {
conscription = 0.05 #5% rekutierbare Bevölkerung
army_morale_factor = 0.1 #10% Moral
army_core_attack_factor = 0.2 # 20% Angriff & Verteidigung in Kerngebieten
army_core_defence_factor = 0.2
}
}
Nun weiter im Fokusbaum
Code: Alles auswählen
### Keltischer Nationalismus ###
focus = {
id = sco_nat
icon = GFX_goal_generic_demand_territory
x = 1
y = 2
prerequisite = { focus = sco_cel }
mutually_exclusive = { focus = sco_union } # schließt sich gegenseitig mit einem anderen Fokus aus
cost = 10
completion_reward = {
add_ideas = celticop
}
}
Jetzt schreiben wir ein Event, welches Irland mit Schottland vereint und die Briten zwingt, Nordirland abzutreten. Dies kopeln wir dann an den Fokusbaum.
Dazu erstellen wir im Modordner den Ordner events und dort die Datei schottland.txt
Code: Alles auswählen
add_namespace = schottland #auf kleinschreibung achten
country_event = {
id = schottland.1 # muss ein Unikat sein
title = schottland.1.t
desc = schottland.1.d
#picture = # hier könnte man ein Bild einfügen
is_triggered_only = yes # gibt an, dass das Event nur über den Fokusbaum ausgelöst wird
option = { # wir könnten mehre Optionen hinzufügen. In diesem Fall machen wir nur eine und die KI hat keine Möglichkeit nein zusagen
name = schottland.1.a
113= {
if = {
limit = { is_owned_by = IRE } # sofern Ireland den Staat kontrolliert, bekommen wir einen Kern
add_core_of = SCO
}
}
SCO = {transfer_state = 113 } # sofern dies gegeben ist, bekommen wir den Staat
134 = {
if = {
limit = { is_owned_by = IRE }
add_core_of = SCO
}
}
SCO = {transfer_state = 134 }
135 = {
if = {
limit = { is_owned_by = IRE }
add_core_of = SCO
}
}
SCO = {transfer_state = 135 }
SCO = { annex_country = { target = IRE transfer_troops = yes } } # wir anektieren Irland und bekomme die Truppen
119 = {
if = {
limit = { is_owned_by = ENG }
add_core_of = SCO
}
}
SCO = {transfer_state = 119 }
}
So, fertig ist unser Event. Nun bauen wir dies noch schnell in den Fokusbaum ein.
Code: Alles auswählen
### Keltische Union ###
focus = {
id = sco_union
icon = GFX_goal_anschluss
x = 3
y = 2
prerequisite = { focus = sco_cel }
mutually_exclusive = { focus = sco_nat }
cost = 10
available = { # gibt an, wann der Fokus verfügbar ist
is_puppet = no
has_army_manpower = { size > 300 } # wir brauchen mindestens 300 tapfere Schotten, um die Briten zu zwingen Nordirland abzugeben sowie Irland zu anektieren.
}
completion_reward = {
IRE = {
country_event = schottland.1
}
ENG = {
country_event = schottland.1 }
}
}
}
Nun müssen wir noch die localisation bearbeiten, was ich jedoch nicht noch einmal erkläre. Die relevanten datein sind events_I_german,yml, focus_I_german.yml, ideas_I_german.yml sowie parties_I_german.yml.
Schnell noch ein Bild in den Modordner packen für Steam und in der Textdatei zum Mod picture="name.endung" einfügen, alles noch einmal testen und dann ab in den Workshop.
So und nun ist das Ganze auf Steam. =)
Steam
Bilder (Öffnen)
Nun haben wir eine fertige Mod. Bitte berücksichtigt, dass ich selbst noch ein Anfänger bin und es eventuell effektiviere Wege gibt als den meinen. Es funktioniert so jedoch alles.
Ebenfalls habe ich einige Dinge bewusst weggelassen, wie z.B. den Schwerpunkt der KI, Newsmeldungen uvm. Mit dieser Grundlage solltet ihr euch allerdings diese Dinge selbst aneignen können, sofern ihr einfach mal in den Spieldateien nachseht.
Ich hoffe mal das ein paar Leute damit etwas anfangen können.