Schrittgeräusche verwenden

In diesem Tutorial möchte ich dir zeigen, wie du verschiedene Schrittgeräusche, passend zu deinen Texturen, in deiner Map verwenden kannst. Bevor du aber loslegst, solltest du sicherstellen, dass du den Q3Map2-Compiler mindestens in Version 2.5.16 und den GtkRadiant 1.4 oder neuer für World of Padman installiert und konfiguriert hast. Mit älteren Versionen könnte es bei der Anwendung dieses Tutorials zu Fehlern kommen.

Schrittgeräusche

Quake 3 Arena bietet standardmäßig nur eine recht begrenzte Anzahl an Schrittgeräuschen an. Neben dem Standardschrittgeräusch, kann über den Key surfaceparm mit dem Wert metalsteps im Shader der Textur ein alternatives, metallisches Schrittgeräusch erzeugt werden, wenn der Spieler über die entsprechende Textur läuft. Der fortgeschrittene Q3Map2-Compiler ermöglicht es aber, dass noch weitere Schrittgeräusche von den Leveldesignern eingebunden werden können. Ohne jetzt gleich World of Padman mit einem unnötig komplexen Materialsystem auszustatten, haben wir uns schlicht auf die Erweiterung dieser Schrittgeräusch-Palette konzentriert. WoP verfügt zusätzlich zum Standardschrittgeräusch insgesamt sieben weitere Schrittgeräusche, die auf zwei unterschiedlichen Wegen in deine Map integriert werden können. Im Folgenden sind alle unterstützten Schrittgeräusch-Werte für den Key surfaceparm aufgelistet und kurz beschrieben.

  • carpetsteps – leises Schrittgeräusch für Teppiche
  • latticesteps – lautes Schrittgeräusch für Metallgitter
  • metalsteps – lautes Schrittgeräusch für metallische Oberflächen
  • sandsteps – leises Schrittgeräusch für sandige Oberflächen
  • softsteps – sehr leises Schrittgeräusch für weiche Oberflächen, z.B. Polstermöbel
  • woodsteps – lautes Schrittgeräusch für hölzerne Oberflächen
  • snowsteps – lautes Schrittgeräusch für knirschenden Schnee

Einsatz von Clip-Texturen

Falls du das Schreiben von eigenen Shadern für deine Texturen vermeiden willst kannst du bereits vorgefertigte Texturen verwenden, die bereits über das gewünschte Schrittgeräusch verfügen. Wir haben dazu entsprechende Clip-Texturen im Verzeichnis common zur Verfügung gestellt.

  • carpetclip für carpetsteps
  • latticeclip für latticesteps
  • metalclip für metalsteps
  • sandclip für sandsteps
  • softclip für softsteps
  • woodclip für woodsteps
  • snowclip für snowsteps

Diese vermeintlich einfache Möglichkeit, um individuelle Schrittgeräuschen in der eigenen Map umzusetzen, kann sich auch als sehr zeitaufwendig herausstellen, da du alle entsprechenden Bereiche mit einem zusätzlichen, flachen Brush (1 Unit hoch) überdecken musst, dessen Oberfläche mit der gewünschten Clip-Textur belegt ist. Diese Methode eignet sich daher eigentlich nur, wenn du einen kleinen Anteil einer Textur mit einem alternativen Schrittgeräusch versehen willst. Die folgende Abbildung zeigt den Betondeckel eines Schachts in der Trashmap. Dort wurde über das mittig angeordnete Metallgitter in der Textur ein zusätzlicher Brush erstellt, dessen Oberfläche mit der Textur common/metalclip belegt wurde.

Bodentextur mit Metalclip-Textur im Teilbereich

Bodentextur mit Metalclip-Textur im Teilbereich

Umsetzung über einen Textur-Shader

Der beste Weg alternative Schrittgeräusche in deine Map einzubauen besteht darin, den Key surfaceparm mit einem gewünschten Wert direkt in den Shader deiner Textur einzupflegen. Der zusätzliche Aufwand besteht darin, dass Texturen, die vorher gar keinen Shader benötigten, nun einen brauchen. So ein Shader für z.B. eine Schneetextur mit Schneeschrittgeräusch (Wert: snowsteps) könnte folgendermaßen aussehen:

textures/meinemap/meineschneetextur
{
   qer_editorimage textures/meinemap/meineschneetextur.tga
   surfaceparm snowsteps
   {
      map $lightmap
      rgbGen identity
   }
   {
      map textures/meinemap/meineschneetextur.tga
      blendFunc GL_DST_COLOR GL_ZERO
      rgbGen identity
   }
}

Der Vorteil ist, dass du nun die mit dem Shader versehene Textur wie gewohnt im Radiant verwenden kannst. Im Spiel erzeugt sie dann das alternative Schrittgeräusch für den Spieler, wenn er darüber läuft. Der Nachteil ist, dass du der Textur grundsätzlich nur ein Schrittgeräusch zuweisen kannst. Das eignet sich also nur für homogene Texturen ohne einen Materialwechsel.

Falls du eine bereits existierende Textur aus World of Padman verwenden willst (z.B. eine Metalltextur), die leider keinen Shader mit einem metallischen Schrittsound bekommen hat, kannst du dir auch dazu einen neuen Shader schreiben, der genau auf diese WoP-Textur verweist. Um jedoch die Eigenschaft der Textur nicht global zu verändern, sollte dein Shader folgendermaßen aussehen.

textures/meinemap/meinemetalltextur
   {
      qer_editorimage textures/pad_texturverzeichnis/woptextur.tga
      surfaceparm metalsteps
   {
      map $lightmap
      rgbGen identity
   }
   {
      map textures/pad_texturverzeichnis/woptextur.tga
      blendFunc GL_DST_COLOR GL_ZERO
      rgbGen identity
   }
}

Beachte hier jetzt den Unterschied zwischen dem Shaderpfad und dem Texturpfad. Dadurch erreichst du, dass die Textur aus WoP mit den von dir ausgewählten Schrittsound im Texturverzeichnis deiner Map angezeigt wird. Der Shader referenziert also nur auf die WoP-Textur im Verzeichnis pad_texturverzeichnis und versieht sie mit den von dir definierten Eigenschaften. Du kannst also ohne Probleme diese Textur aus WoP verwenden, ohne sie nochmals manuell in deinen Texturordner kopieren zu müssen. Zusätzlich bleiben unsere Textur-Eigenschaften unangetastet. Wichtig ist nur, dass dein Shader einen einzigartigen Shaderpfad besitzt.

Hinweise zu Q3Map2Build und Q3ASE

Damit die von dir eingebauten Schrittgeräusche im Spiel funktionieren, bedarf es beim Kompilieren deiner Map des Parameters -custinfoparms im BSP und LIGHT-Stage, der am besten direkt vor dem Parameter -meta ergänzt wird. Der benötigte Parameter ist von uns bereits in allen Befehlen im Build-Menü des Radiant eingefügt worden. Solltest du Q3Map2Build zum Kompilieren benutzen, muss du den Parameter zusätzlich auswählen. Grundvoraussetzung ist jedoch, dass sich im Verzeichnis scripts die Datei custinfoparms.txt befindet. Diese Textdatei liegt der WoP-Installation im Verzeichnis XTRAS/editing files in der Datei WoP mapping files.zip bei und sollte beim Einrichten des Radiant bereits automatisch in das richtige Verzeichnis entpackt worden sein.

Falls du den Q3A Shader Editor (Q3ASE) zum Erstellen von Shader-Skripten benutzt, solltest du folgendes unbedingt wissen. Q3ASE kann mit den Schrittsound-Einträgen leider nichts anfangen. Wird ein Shader mit einem neuen Surfaceparm geladen und aus Q3ASE heraus wieder abgespeichert, werden alle unbekannten Parameter einfach aus dem Shader-Skript automatisch gelöscht und nicht wieder abgespeichert. Daher sollten Änderungen am Shader immer unter neuem Namen abspeichern werden. Die gewollten, veränderten Bestandteile des Shaders kannst du dann manuell in den alten Shader rein kopieren. Das ist vom Aufwand her oft einfacher.