Nicht angemeldet

Deine eigenen Themes erstellen

CreepTD ermöglicht es Entwicklern ihre eigenen Themes für das Spiel zu erstellen. Diese Seite wird alle notwendigen Informationen beinhalten, um dich mit der Entwicklung von eigenen Themes vertraut zu machen.

1. Theme-Struktur

Im Grunde besteht ein Theme aus einer Reihe an Grafiken und/oder Sounds, deren Verhalten in der "theme.ini" festgelegt wird. Du musst also alle Grafiken und Sounds erstellen, die dein Theme beinhalten soll, und daraufhin festlegen, wie sie sich im Spiel verhalten sollen.

Um dein Theme im Spiel lauffähig zu machen, musst du alle benötigen Dateien zu einem ZIP-Archiv zusammenfügen. Du kannst auch mit einem der Beispiel-Themes beginnen. Das ZIP-Archiv muss eine 'theme.ini' im Stammverzeichnis beinhalten. Beispiel:

your-theme-archive.zip
˫ theme.ini
˫ towers/
  ˪ ...
˫ creeps/
  ˪ ...
˪ sounds/
  ˪ ...

2. Grafiken und Animationen

Das Spiel verwendet zum Speichern von Animationen ein eigenes Format auf der Basis von PNG24, es steht dir aber völlig frei, dies auch zu nutzen. Einfache Bilder ohne Animationen funktionieren ebenfalls (Animationen sehen aber natürlich besser aus!). Um dies zu ermöglichen beinhaltet jede Grafik eine Sequenz aus Einzelbildern in der Horizontalen. Jedes Einzelbild muss dabei stets die gleiche Größe haben. Am unteren linken Rand jedes Einzelbildes befindet sich jeweils ein Beschreibungspixel, der die Anzeigezeit (0-255) in dessen blauen Farbwert beinhaltet. Ein Beispiel:

Example

Wie du siehst wird die Animation aus 19x19 px Einzelbildern plus einer weiteren Zeile für die Beschreibungspixel zusammengesetzt. Lass uns das einmal Bild für Bild betrachten:

1Blauer Farbwert im Beschreibungspixel ist 0. Dies ist ein Stop-Bild.
2Blauer Farbwert im Beschreibungspixel ist 6. Dieses Einzelbild wird für 6 Ticks angezeigt.
3Blauer Farbwert im Beschreibungspixel ist 6. Dieses Einzelbild wird für 6 Ticks angezeigt.
4Blauer Farbwert im Beschreibungspixel ist 35. Dieses Einzelbild wird für 35 Ticks angezeigt.
5Blauer Farbwert im Beschreibungspixel ist 6. Dieses Einzelbild wird für 6 Ticks angezeigt.
6Blauer Farbwert im Beschreibungspixel ist 6. Dieses Einzelbild wird für 6 Ticks angezeigt.

Präziser: Das zweite Einzelbild wird erstmals dargestellt, sobald der Turm schießt (und daraufhin nachläd). Sobald das 6. Einzelbild erreicht wurde, beginnt die Animation erneut mit dem 1. Einzelbild und stoppt.

Dennoch ist es, wie bereits erwähnt, nicht notwendig Animationen zu verwenden. Du kannst auch einfach ein einfaches Bild ohne Animation, das keine Beschreibungspixel enthält, verwenden.

Hinweis: Die meisten Bildbearbeitungsprogramme (Photoshop beispielsweise) 'optimieren' Bilder, wenn sie gespeichert werden. Das führt in der Regel dazu, dass jeder Beschreibungspixel einen Farbwert von 000000 (das ist schlecht) erhält, so dass du sicherstellen solltest, dass die Optimierungen beim Speichern deaktiviert sind.

3. Sounds

Soundeffekt-Dateien müssen im WAV-Format (OGG und MP3 sind noch experimentell und scheinen in manchen Fällen nicht den gesamten Sound abzuspielen) vorliegen und müssen so geschnitten werden, dass sie ohne Verzögerung abgespielt werden können.

Example

Wenn du es also richtig machen möchtest, schneide die Stille vor und hinter dem ersten Geräusch heraus, so dass die Tonkurve in etwa wie im Bild oberhalb aussieht.

Hinweis: Verwende WAV-Dateien mit 22050 kbit (wenn sich das zu schlecht anhört 44100 kbit), 16 bit, mono (1 Kanal), um die Dateigröße deines Themes gering zu halten. Es ist auch immer eine gute Idee, die Sounddateien so kurz wie möglich zu halten, da immer nur eine bestimmte Anzahl zur gleichen Zeit abgespielt werden kann.

4. Die theme.ini

Die theme.ini legt fest welche Grafiken für welchen Turm und für welchen Creep verwendet werden sollen und ermöglicht es dir viele Optionen für jedes einzelne Objekt festzulegen. Die ersten Zeilen definieren stets den Namen deines Themes, dich als Autor und welche Anpassungen es überhaupt bereitstellt. Beispiel:

name=My Cool Theme
author=MyPlayerName
providesTowers=yes
providesTowerSounds=yes
providesCreeps=yes
providesCreepSounds=yes

Optionally, a custom theme may extend one of the default themes (default or classicplus) as a starting point. However, it will only extend the theme.ini (effects, file names) and has no access to the actual contents of the extended theme (like images or sounds). You need to add those to your custom theme also, if you want to re-use them. Example:

extends=default

Daraufhin beinhaltet die theme.ini die Definitionen der Türme und Creeps entsprechend der Anpassungen, die es bereitstellt.


4.1 Turm-Spezifikationen

Jeder Turm wird durch eine Turm-Definition beschrieben und du musst für jeden einige Parameter festlegen. Der Anfang einer Definition wurd stets durch den jeweiligen Namen in eckigen Klammern markiert, wie z.B.: [TOWER1]. Verfügbare Türme sind:

TOWER1GeschützLevel 1
TOWER11GeschützLevel 2
TOWER12GeschützLevel 3
TOWER13GeschützLevel 4
TOWER2EMP SenderLevel 1
TOWER21EMP SenderLevel 2
TOWER22EMP SenderLevel 3
TOWER23EMP SenderLevel 4
TOWER3KanonenturmLevel 1
TOWER31KanonenturmLevel 2
TOWER32KanonenturmLevel 3
TOWER33KanonenturmLevel 4
TOWER4RaketensiloLevel 1
TOWER41RaketensiloLevel 2
TOWER42RaketensiloLevel 3
TOWER43RaketensiloLevel 4
TOWER5TeslaturmLevel 1
TOWER51TeslaturmLevel 2
TOWER52TeslaturmLevel 3
TOWER53TeslaturmLevel 4
TOWER6IonenkanoneLevel 1
TOWER61IonenkanoneLevel 2

Du musst für jeden Turm einige Parameter definieren (einige sind optional), die festlegen, wie sich der Turm verhalten soll und welche Inhalte er dafür verwenden soll. Paramter werden stets wie folgt festgelegt: name=Cooler Turmname. Verfügbare Parameter sind:

Wenn Grafiken bereitgestellt werden:
nameThe textuelle Name des Turms (ja, dieser kann geändert werden)
rotationDie Rotation der Turmkanone (siehe)
shotDer Schusstyp des Turms (siehe)Nicht verfügbar für TOWER4*
shotInnerStrokeInnere Kontur des Schussstrahls (siehe)Optional, Nicht verfügbar für TOWER4*
shotInnerColorInnere Farbe des Schussstrahls (siehe)Optional, Nicht verfügbar für TOWER4*
shotOuterStrokeÄußere Kontur des Schussstrahls (siehe)Optional, Nicht verfügbar für TOWER4*
shotOuterColorÄußere Farbe des Schussstrahls (siehe)Optional, Nicht verfügbar für TOWER4*
splashInnerStrokeInnere Kontur des Splashkreises (siehe)Optional, Nur verfügbar für Türme mit Umgebungsschaden
splashInnerColorInnere Farbe des Splashkreises (siehe)Optional, Nur verfügbar für Türme mit Umgebungsschaden
splashOuterStrokeÄußere Kontur des Splashkreises (siehe)Optional, Nur verfügbar für Türme mit Umgebungsschaden
splashOuterColorÄußere Farbe des Splashkreises (siehe)Optional, Nur verfügbar für Türme mit Umgebungsschaden
targetInnerStrokeInnere Kontur des Zielstrahls (siehe)Optional, Nur verfügbar für shot=ORBIT
targetInnerColorInnere Farbe des Zielstrahls (siehe)Optional, Nur verfügbar für shot=ORBIT
targetOuterStrokeÄußere Kontor des Zielstrahls (siehe)Optional, Nur verfügbar für shot=ORBIT
targetOuterColorÄußere Farbe des Zielstrahls (siehe)Optional, Nur verfügbar für shot=ORBIT
aniTurmgrafik/-animation (19x19px Einzelbilder) (siehe)
turretAniKanonengrafik/-animation (10x10px Einzelbilder) (siehe)Optional
projectileAniProjektilgrafik/-animation (7x7px Einzelbilder) (siehe)Optional, Nur verfügbar für TOWER4*
buildAniBauanimation (überlagernd, 19x19px Einzelbilder, 50 Ticks) (siehe)Optional
upgradeAniAusbauanimation (überlagernd, 19x19px Einzelbilder, 50 Ticks) (siehe)Optional, Nur verfügbar wenn ausbaubar
changestrategyAniStrategiewechselanimation (überlagernd, 19x19px Einzelbilder, 50 Ticks) (siehe)Optional
sellAniVerkaufsanimation (überlagernd, 19x19px Eizelbilder, 50 Ticks) (siehe)Optional
Wenn Sounds bereitgestellt werden:
soundSchuss-Sound (Schlachtfeld) (siehe)
projectileSoundProjektiltreffer-Sound (siehe)Optional, Nur verfügbar für TOWER4*
buildSoundBaubeginn-Sound (siehe)Optional
upgradeSoundAusbaubeginn-Sound (siehe)Optional, Nur verfügbar wenn ausbaubar
changestrategySoundStrategiewechselbeginn-Sound (siehe)Optional
sellSoundVerkaufsbeginn-Sound (siehe)Optional

Wenn du einen optionalen Parameter auslässt, wird dieser nichts zeigen, malen oder abspielen.

Wenn die Länge in Ticks einer Animation angegeben wurde, kann die Animation aus maximal dieser Anzahl an Einzelbildern zusammengesetzt werden (z.B. ausführliche Bauanimationen, die den Turm mit der Zeit immer ein Stückchen fertiger darstellen). Eine 'ani' Animation beginnt stets mit einem Stop-Bild, der den nichtstuenden Zustand anzeigt und kann eine zusätzliche Anzahl an Einzelbildern beinhalten, deren Anzahl der Nachladezeit des Turms entspricht (siehe das Raketensilo-Beispiel oben).


4.2 Creep-Spezifikationen

Wie Türme werden auch die Parameter der Creeps mit einer Creep-Definition festgelegt und du musst für jeden Creep eine Reihe von Parametern festlegen. Der Start einer Creep-Definition wird stets durch dessen Namen in eckigen Klammern markiert, wie z.B.: [CREEP1]. Verfügbare Creeps sind:

CREEP1Mercury
CREEP2Mako
CREEP3Fast Nova
CREEP4Large Manta
CREEP5Demeter
CREEP6Ray
CREEP7Speedy Raider
CREEP8Big Toucan
CREEP9Vulture
CREEP10Shark
CREEP11Racing Mamba
CREEP12Huge Titan
CREEP13Zeus
CREEP14Phoenix
CREEP15Express Raptor
CREEP16Mothership

Für jeden Creep musst du eine Reihe von Parametern (einige davon sind optional) festlegen, die bestimmen, wie sich der Creep im Spiel verhalten und welche Inhalte er dafür verwenden soll. Parameter werden stehts wie folgt festgelegt: name=Cooler Creep-Name. Verfügbare Parameter sind:

Wenn Grafiken bereitgestellt werden:
nameDer textuelle Name des Creeps (ja, dieser kann geändert werden)
rotationDie Rotation des Creeps (siehe)
aniCreepgrafik/-animation (19x19px Einzelbilder) (siehe)
dieAniSterbeanimation (19x19px Einzelbilder) (siehe)Optional
effectEingebauter Creep-Effekt, der verwendet werden soll (siehe)Optional
Wenn Sounds bereitgestellt werden:
dieSoundSterbesound (Schlachtfeld) (siehe)Optional
incomingSoundEinfall-Sound (siehe)Optional
escapeSoundFlucht-Sound (siehe)Optional

Wenn du einen optionalen Parameter auslässt, wird dieser nichts zeigen, malen oder abspielen.


4.3 Rotationswerte

AUTODie Kanone des Turms zielt automatisch auf Creeps / der Creep rotiert automatisch entsprechend des Pfads
float valueUnabhängige Rotation zwischen -PI (gegen den Uhrzeigersinn) und +PI (im Uhrzeigersinn) pro Tick (50ms). Für eine zufällige Richtung hänge ein "R" an.

4.4 Farbwerte

RGBHexadezimale rot/grün/blau-Werte in Kurznotation (0-F)
RRGGBBHexadezimale rot/grün/blau-Werte (00-FF)
RGBAHexadezimale rot/grün/blau/alpha-Werte in Kurznotation (0-F)
RRGGBBAAHexadezimale rot/grün/blau/alpha-Werte (00-FF)

4.5 Konturwerte

solid[:thickness]Eine feste Kontursolid:1
dashed[:thickness[:dashlength[:spacelength]]Eine gestrichelte Konturdashed:1:10:10
zigzac[:thickness[:amplitude[:wavelength]]]Eine zickzack Konturzigzag:1:1:3
wobble[:thickness[:amplitude[:detail]]]Eine verwackelte Konturwobble:1:3:1

4.6 Turm-Schusstypen

DIRECTDer Turm schießt mit einem direkten Strahl auf Creeps
ORBITDer Turm schießt über den Orbit auf Creeps (wie die Ionenkanone)

4.7 Creep-Effekt-Werte

REGENERATEDie Lebensanzeige des Creeps blendet sich ein und aus
SLOWIMMUNEUm den Creep wird ein Schild-Effekt dargestellt

Natürlich musst du die eingebauten Effekte nicht zwingend nutzen und kannst deine eigenen innerhalb der Creepgrafiken verwenden.

5. Dein Theme testen

Um dein Theme zu testen wähle "Neues Theme installieren" innerhalb der Theme-Auswahlbox im Optionsbildschirm aus. Nun starte ein Sandbox-Spiel und probiere aus, ob alles funktioniert, wie du dir das vorstellst. Sobald alles richtig funktioniert kannst du dein Theme veröffentlichen.

Hinweis: Ein guter Ort zur Veröffentlichung deines Themes könnte ein Beitrag für jeden im Forum sein.

Viel Spaß!

5. Beispiel Themes

Du kannst die Arbeit an deinem eigenen Theme gerne auf Basis eines der Standard-Themes, die du dir unten herunterladen kannst, beginnen. Dennoch, alle Inhalte der Standard-Themes dürfen nur für CreepTD verwenden werden. Es ist nicht erlaubt Inhalte daraus für etwas anderes zu verwenden.