Das SWMA Tool (Star Wars Modding Assistant) ist ein Python-basiertes Tool zur automatischen Modifikation von Star Wars Empire at War XML-Dateien. Es unterstützt intelligente Backup-Verwaltung, Hardpoint-Modifikationen und Geschwader-Konfiguration.
XML/
├── Units/
│ ├── Templates_Frigates.xml # Template-Definitionen für Fregatten
│ ├── Templates_Capitals.xml # Template-Definitionen für Großkampfschiffe
│ ├── Republic_Space_Units.xml # Campaign-Einheiten
│ └── Skirmish/
│ └── SkirmishUnits_Republic.xml # Skirmish-Einheiten
├── Hardpoints/
│ ├── HardPoints_Coresaga_Frigates.xml # Waffen-Hardpoints für Fregatten
│ └── HardPoints_Coresaga_Capitals.xml # Waffen-Hardpoints für Großkampfschiffe
└── backups/ # Automatische Backups
Das Spiel verwendet eine 3-stufige Vererbungshierarchie:
- Templates (
Templates_*.xml) - Basis-Definitionen - Campaign Units (
Republic_Space_Units.xml) - Erben von Templates - Skirmish Units (
SkirmishUnits_Republic.xml) - Erben von Campaign Units
WICHTIG: Vererbung ist additiv - Werte werden addiert, nicht überschrieben!
Das Tool implementiert eine robuste Backup-Strategie:
- Erste Ausführung: Automatische Backups aller relevanten Dateien
- Jede weitere Ausführung: Wiederherstellung von Original-Backups vor Änderungen
- Sicherheit: Verhindert kumulative Änderungen
backups/
├── Templates_Frigates_YYYYMMDD_HHMMSS.xml
├── Templates_Capitals_YYYYMMDD_HHMMSS.xml
├── Republic_Space_Units_YYYYMMDD_HHMMSS.xml
├── SkirmishUnits_Republic_YYYYMMDD_HHMMSS.xml
├── HardPoints_Coresaga_Frigates_YYYYMMDD_HHMMSS.xml
└── HardPoints_Coresaga_Capitals_YYYYMMDD_HHMMSS.xml
- Konsistenz: Immer von echten Originalwerten ausgehend
- Sicherheit: Keine kumulativen Änderungen
- Zuverlässigkeit: Automatische Verwaltung
- Rückgängig: Einfache Wiederherstellung
WICHTIG: Das <Damage> Tag ist nur für Auto-Resolve relevant!
Tatsächliche Kampfschäden werden durch Hardpoint-Parameter kontrolliert:
- Parameter:
Fire_Min_Recharge_Seconds,Fire_Max_Recharge_Seconds - Effekt: Reduziert Zeit zwischen Salven
- Formel:
neuer_wert = alter_wert / (1 + prozent / 100) - Beispiel:
+100%= doppelte Feuerrate
- Parameter:
Fire_Pulse_Count - Effekt: Mehr Schüsse pro Salve
- Formel:
neuer_wert = max(alter_wert + 1, int(alter_wert * (1 + prozent / 100))) - Beispiel:
+100%= doppelte Schüsse pro Salve
- Parameter:
Fire_Pulse_Delay_Seconds - Effekt: Kontrolliert Verzögerung zwischen Schüssen in einer Salve
- Formel:
neuer_wert = alter_wert * (1 + prozent / 100) - Minimum: 0.05 Sekunden
- Beispiel:
-25%= schnellere Schüsse,+50%= langsamere Schüsse
| Parameter | XML-Tag | Beschreibung | Standard |
|---|---|---|---|
| Salven-Zeit | Fire_Min_Recharge_Seconds |
Minimale Zeit zwischen Salven | 1.0-20.0s |
| Salven-Zeit | Fire_Max_Recharge_Seconds |
Maximale Zeit zwischen Salven | 1.0-20.0s |
| Schüsse pro Salve | Fire_Pulse_Count |
Anzahl Schüsse pro Salve | 2-6 |
| Schuss-Verzögerung | Fire_Pulse_Delay_Seconds |
Zeit zwischen Schüssen | 0.05-0.5s |
Das Tool erkennt automatisch, ob eine Skirmish-Unit direkt von einem Template erbt:
- Erkennung:
Variant_Of_Existing_Typebeginnt mitTemplate_ - Platzierung: Geschwader in
SkirmishUnits_Republic.xml - Beispiel:
Venator→ Template-basiert
- Erkennung:
Variant_Of_Existing_Typeverweist auf Campaign-Unit - Platzierung: Geschwader in
Republic_Space_Units.xml - Beispiel:
Acclamator_II→ Campaign-basiert
Das Tool entfernt automatisch Geschwader-Tags aus der anderen Datei:
- Template-basiert → Entfernt aus Campaign-Datei
- Campaign-basiert → Entfernt aus Skirmish-Datei
<Spawned_Squadron_Delay_Seconds>0.0</Spawned_Squadron_Delay_Seconds>
<Starting_Spawned_Units_Tech_0>Clone_Arc_170_Squadron, 2</Starting_Spawned_Units_Tech_0>
<Reserve_Spawned_Units_Tech_0>Clone_Arc_170_Squadron, 4</Reserve_Spawned_Units_Tech_0>game_mode: skirmish # oder campaign
units:
Unit_Name:
template: Template_Unit_Name
base_unit: Skirmish_Unit_Name
campaign_unit: Campaign_Unit_Name
template_changes:
shield_points: +10%
energy_refresh_rate: +20%
cost_changes:
Tactical_Build_Cost_Multiplayer: -25% # 25% günstiger im Skirmish
Maintenance_Cost: +10% # 10% höhere Wartungskosten
squadrons:
delay_seconds: 0
starting:
0: # Tech Level
- type: Clone_Arc_170_Squadron
count: 2
reserve:
0:
- type: Clone_Arc_170_Squadron
count: 4
hardpoints:
fire_rate_increase: +100%
damage_increase: +200%
burst_delay_adjustment: -25%shield_points: Schildpunkte (z.B.+10%,-5%,1000)shield_refresh_rate: Schild-Regeneration (z.B.+50%)energy_refresh_rate: Energie-Regeneration (z.B.+20%)tactical_health: Hüllenpunkte (z.B.+15%)population_value: Bevölkerungsverbrauch (absoluter Wert)
Tactical_Build_Cost_Multiplayer: Kaufpreis für Multiplayer/Skirmish (z.B.+25%,-10%,5000)Tactical_Build_Cost_Campaign: Kaufpreis für Campaign (z.B.+25%,-10%,5000)Build_Cost_Credits: Allgemeiner Kaufpreis (z.B.+25%,-10%,5000)Maintenance_Cost: Wartungskosten (z.B.+25%,-10%,100)
fire_rate_increase: Feuerratenerhöhung (z.B.+100%)damage_increase: Schadenserhöhung (z.B.+200%)burst_delay_adjustment: Salven-Verzögerung (z.B.-25%)
Republik/Jedi Squadron-Typen:
Clone_ARC_170_Squadron- Standard ARC-170 GeschwaderClone_ARC_170_Squadron_Double- Doppeltes ARC-170 GeschwaderClone_ARC_170_Squadron_Half- Halbes ARC-170 GeschwaderClone_Nimbus_V_Wing_Squadron- V-Wing GeschwaderClone_BTLB_Y_Wing_Squadron- Y-Wing Bomber GeschwaderClone_BTLB_Y_Wing_Squadron_Double- Doppeltes Y-Wing GeschwaderClone_BTLB_Y_Wing_Squadron_Half- Halbes Y-Wing GeschwaderTorrent_Squadron- Torrent Jäger GeschwaderNTB_630_Squadron- NTB-630 Bomber GeschwaderDelta7_Squadron_Double- Doppeltes Delta-7 GeschwaderBTLS1_Y_Wing_Squadron- BTLS1 Y-Wing GeschwaderBTLS1_Y_Wing_Squadron_Double- Doppeltes BTLS1 Y-Wing GeschwaderBTLS1_Y_Wing_Squadron_Half- Halbes BTLS1 Y-Wing GeschwaderZ95_Headhunter_Squadron- Z-95 Headhunter GeschwaderZ95_Headhunter_Squadron_Double- Doppeltes Z-95 GeschwaderZ95_Headhunter_Squadron_Half- Halbes Z-95 GeschwaderZ95XT_Headhunter_Squadron- Z-95XT Headhunter GeschwaderZ95XT_Headhunter_Squadron_Double- Doppeltes Z-95XT GeschwaderZ95XT_Headhunter_Squadron_Half- Halbes Z-95XT GeschwaderZ95ML_Headhunter_Squadron- Z-95ML Headhunter GeschwaderZ95ML_Headhunter_Squadron_Double- Doppeltes Z-95ML GeschwaderZ95ML_Headhunter_Squadron_Half- Halbes Z-95ML GeschwaderZ95_Bomber_Squadron- Z-95 Bomber GeschwaderZ95_Bomber_Squadron_Double- Doppeltes Z-95 Bomber GeschwaderZ95_Bomber_Squadron_Half- Halbes Z-95 Bomber Geschwader
Imperium Squadron-Typen:
TIE_Fighter_Squadron- Standard TIE Fighter GeschwaderTIE_Fighter_Squadron_Double- Doppeltes TIE Fighter GeschwaderTIE_Fighter_Squadron_Half- Halbes TIE Fighter GeschwaderTIE_Fighter_Squadron_Third- Drittel TIE Fighter GeschwaderTIE_Bomber_Squadron- TIE Bomber GeschwaderTIE_Bomber_Squadron_Double- Doppeltes TIE Bomber GeschwaderTIE_Bomber_Squadron_Half- Halbes TIE Bomber GeschwaderTIE_Starfighter_Squadron- TIE Starfighter GeschwaderTIE_Starfighter_Squadron_Double- Doppeltes TIE Starfighter GeschwaderTIE_Starfighter_Squadron_Half- Halbes TIE Starfighter GeschwaderTIE_Pod_Squadron- TIE Pod GeschwaderTIE_Pod_Squadron_Double- Doppeltes TIE Pod GeschwaderTIE_Pod_Squadron_Half- Halbes TIE Pod GeschwaderMissile_TIE_Squadron- Missile TIE Geschwader
Allgemeine Squadron-Typen:
ARC_170_Squadron- Standard ARC-170 GeschwaderARC_170_Squadron_Double- Doppeltes ARC-170 GeschwaderARC_170_Squadron_Half- Halbes ARC-170 GeschwaderNimbus_V_Wing_Squadron- V-Wing GeschwaderNimbus_V_Wing_Squadron_Double- Doppeltes V-Wing GeschwaderNimbus_V_Wing_Squadron_Half- Halbes V-Wing GeschwaderY_Wing_Squadron- Y-Wing GeschwaderY_Wing_Squadron_Double- Doppeltes Y-Wing GeschwaderY_Wing_Squadron_Half- Halbes Y-Wing GeschwaderBTLB_Y_Wing_Squadron- BTLB Y-Wing GeschwaderBTLB_Y_Wing_Squadron_Double- Doppeltes BTLB Y-Wing GeschwaderBTLB_Y_Wing_Squadron_Half- Halbes BTLB Y-Wing GeschwaderZ95_Headhunter_Squadron- Z-95 Headhunter GeschwaderZ95_Headhunter_Squadron_Double- Doppeltes Z-95 GeschwaderZ95_Headhunter_Squadron_Half- Halbes Z-95 GeschwaderZ95XT_Headhunter_Squadron- Z-95XT Headhunter GeschwaderZ95XT_Headhunter_Squadron_Double- Doppeltes Z-95XT GeschwaderZ95XT_Headhunter_Squadron_Half- Halbes Z-95XT GeschwaderZ95ML_Headhunter_Squadron- Z-95ML Headhunter GeschwaderZ95ML_Headhunter_Squadron_Double- Doppeltes Z-95ML GeschwaderZ95ML_Headhunter_Squadron_Half- Halbes Z-95ML GeschwaderZ95_Bomber_Squadron- Z-95 Bomber GeschwaderZ95_Bomber_Squadron_Double- Doppeltes Z-95 Bomber GeschwaderZ95_Bomber_Squadron_Half- Halbes Z-95 Bomber Geschwader
Spezial-Squadron-Typen:
Skipray_Squadron- Skipray GeschwaderSkipray_Squadron_Double- Doppeltes Skipray GeschwaderSkipray_Squadron_Half- Halbes Skipray GeschwaderEarly_Skipray_Squadron- Frühes Skipray GeschwaderEarly_Skipray_Squadron_Double- Doppeltes frühes Skipray GeschwaderEarly_Skipray_Squadron_Half- Halbes frühes Skipray GeschwaderMankvim_Squadron- Mankvim GeschwaderMankvim_Squadron_Double- Doppeltes Mankvim GeschwaderMankvim_Squadron_Half- Halbes Mankvim GeschwaderAggressor_Assault_Fighter_Squadron- Aggressor Assault Fighter GeschwaderAggressor_Assault_Fighter_Squadron_Double- Doppeltes Aggressor GeschwaderAggressor_Assault_Fighter_Squadron_Half- Halbes Aggressor Geschwader2_Warpod_Squadron- 2-Warpod Geschwader2_Warpod_Squadron_Double- Doppeltes 2-Warpod Geschwader2_Warpod_Squadron_Half- Halbes 2-Warpod GeschwaderN1_Squadron- N-1 Starfighter GeschwaderN1_Squadron_Skirmish- N-1 Skirmish GeschwaderN1_Squadron_Double- Doppeltes N-1 GeschwaderN1_Squadron_Half- Halbes N-1 GeschwaderG1_Squadron- G-1 Starfighter GeschwaderG1_Squadron_Double- Doppeltes G-1 GeschwaderG1_Squadron_Half- Halbes G-1 GeschwaderI_BEAM_Squadron- I-BEAM GeschwaderI_BEAM_Squadron_Double- Doppeltes I-BEAM GeschwaderI_BEAM_Squadron_Half- Halbes I-BEAM Geschwader
Hutt/Underworld Squadron-Typen:
Cloakshape_Stock_Squadron- Standard Cloakshape GeschwaderCloakshape_Stock_Squadron_Double- Doppeltes Cloakshape GeschwaderCloakshape_Stock_Squadron_Half- Halbes Cloakshape GeschwaderCloakshape_Squadron- Cloakshape GeschwaderCloakshape_Squadron_Double- Doppeltes Cloakshape GeschwaderCloakshape_Squadron_Half- Halbes Cloakshape GeschwaderCloakshape_New_Squadron- Neues Cloakshape GeschwaderCloakshape_New_Squadron_Double- Doppeltes neues Cloakshape GeschwaderCloakshape_New_Squadron_Half- Halbes neues Cloakshape GeschwaderToscan_Stock_Squadron- Standard Toscan GeschwaderToscan_Stock_Squadron_Double- Doppeltes Toscan GeschwaderToscan_Stock_Squadron_Half- Halbes Toscan GeschwaderToscan_Missile_Squadron- Toscan Missile GeschwaderToscan_Missile_Squadron_Double- Doppeltes Toscan Missile GeschwaderToscan_Missile_Squadron_Half- Halbes Toscan Missile GeschwaderToscan_Gunship_Squadron- Toscan Gunship GeschwaderToscan_Gunship_Squadron_Double- Doppeltes Toscan Gunship GeschwaderToscan_Gunship_Squadron_Half- Halbes Toscan Gunship GeschwaderToscan_Interceptor_Squadron- Toscan Interceptor GeschwaderToscan_Interceptor_Squadron_Double- Doppeltes Toscan Interceptor GeschwaderToscan_Interceptor_Squadron_Half- Halbes Toscan Interceptor GeschwaderToscan_Bomber_Squadron- Toscan Bomber GeschwaderToscan_Bomber_Squadron_Double- Doppeltes Toscan Bomber GeschwaderToscan_Bomber_Squadron_Half- Halbes Toscan Bomber Geschwader
Spezial-Hero Squadron-Typen:
Firespray_Squadron- Firespray GeschwaderFirespray_Squadron_Double- Doppeltes Firespray GeschwaderFirespray_Squadron_Half- Halbes Firespray GeschwaderFirespray_Gunship_Squadron- Firespray Gunship GeschwaderFirespray_Gunship_Squadron_Double- Doppeltes Firespray Gunship GeschwaderFirespray_Gunship_Squadron_Half- Halbes Firespray Gunship GeschwaderFirespray_Bomber_Squadron- Firespray Bomber GeschwaderFirespray_Bomber_Squadron_Double- Doppeltes Firespray Bomber GeschwaderFirespray_Bomber_Squadron_Half- Halbes Firespray Bomber GeschwaderR22_Spearhead_Squadron- R-22 Spearhead GeschwaderR22_Spearhead_Squadron_Double- Doppeltes R-22 Spearhead Geschwader
Mission/PDF Squadron-Typen:
PDF_Z95_Headhunter_Squadron- PDF Z-95 Headhunter GeschwaderH60_Tempest_Squadron- H-60 Tempest GeschwaderGozanti_Cruiser_Squadron- Gozanti Cruiser GeschwaderCitadel_Cruiser_Squadron- Citadel Cruiser Geschwader
Hinweise:
- Double/Half Varianten: Bieten unterschiedliche Geschwader-Größen
- Fraktions-spezifisch: Einige Squadron-Typen sind nur für bestimmte Fraktionen verfügbar
- Tech Level: Verschiedene Squadron-Typen sind für verschiedene Tech Levels verfügbar
- Verfügbarkeit: Nicht alle Squadron-Typen sind in allen Spielmodi verfügbar
# Standard-Ausführung
python swma.py --config shipchanges.yaml
# Ohne Backups (nicht empfohlen)
python swma.py --config shipchanges.yaml --no-backup
# Vorschau-Modus
python swma.py --config shipchanges.yaml --preview
# Reset aller Änderungen
python swma.py --config shipchanges.yaml --reset
# Reset einer spezifischen Einheit
python swma.py --config shipchanges.yaml --reset-unit "Acclamator_II"- Konfiguration erstellen:
shipchanges.yamlanpassen - Tool ausführen:
python swma.py --config shipchanges.yaml - Automatische Backups: Werden bei der ersten Ausführung erstellt
- Wiederherstellung: Alle Dateien werden von Backups wiederhergestellt
- Änderungen anwenden: Neue Modifikationen werden angewendet
- Immer Backups aktiviert lassen (
--no-backupnur für Tests) - Backup-Verzeichnis nicht löschen - enthält Originale
- Tool nicht während Spielausführung verwenden
- Kleine Änderungen testen vor großen Modifikationen
- Prozentuale Werte verwenden für bessere Kontrolle
- Hardpoint-Parameter kombinieren für optimale Ergebnisse
- Geschwader-Platzierung automatisch vom Tool bestimmen lassen
- "Kein Backup gefunden": Manuelles Backup einspielen
- "Unit nicht gefunden": Unit-Namen in YAML prüfen
- "Hardpoint nicht gefunden": Schiffsklasse prüfen (Frigates/Capitals)
# Hohe Feuerrate + hoher Schaden
hardpoints:
fire_rate_increase: +100%
damage_increase: +200%
burst_delay_adjustment: -25%
# Ausgewogene Konfiguration
hardpoints:
fire_rate_increase: +50%
damage_increase: +100%
burst_delay_adjustment: -10%
# Defensive Konfiguration
hardpoints:
fire_rate_increase: +25%
damage_increase: +50%
burst_delay_adjustment: +10%- Fire Rate: Beeinflusst DPS am stärksten
- Damage Increase: Erhöht Burst-Schaden
- Burst Delay: Kontrolliert Feuerrate innerhalb von Salven
- Unterstützung für andere Fraktionen (CIS, Empire)
- Automatische Balance-Tests
- GUI-Interface
- Batch-Verarbeitung mehrerer Konfigurationen
- Integration mit Mod-Managern
- Caching für bessere Performance
- Erweiterte Validierung
- Logging-System
- Unit-Tests
Bei Problemen bitte folgende Informationen bereitstellen:
- SWMA Tool Version
- Python Version
- Fehlermeldung (vollständig)
- Konfigurationsdatei (anonymisiert)
- Betroffene XML-Dateien
Neue Features können über GitHub Issues vorgeschlagen werden.
Version: 2.0
Letzte Aktualisierung: 2025-08-02
Autor: SWMA Tool Development Team