Stand: 11.06.02 ============================================================================== Sound-Unterstützung ============================================================================== Der Server schickt dem Client eine Liste von primären und sekundären Tags für bestimmte Ereignise. Die "primären" werden vom aktuellen Modpack bevorzugt; die zugehörigen Sounds brauchen im Client nicht notwendigerweise vorhanden zu sein. Die "sekundären" Tags sollten sich auf auf Standardsounds beziehen, die in jeder Installation von Freeciv gleich sein sollten. Tags werden benutzt, um das Wechseln der Sounds zu erleichtern. Dabei wird ein sog. specfile benutzt, in dem festgelegt wird, welcher Sound zu welchem Tag gehört. Ändert man das specfile, z.B. als Parameter beim Start des Clients, so ändern sich auch die Sounds. Der Aufruf civclient --Sound mysounds.spec führt dazu, das der Client die Sounddateien aus der datei "mysounds.spec" liest. Die Sounds müssen dazu in das in der Datei zuerst genannte Verzeichnis kopiert werden, oder die specdatei muss angepasst werden. Alle Pfade sind dabei relativ zum Verzeichnis data/. Soundpakete können von der Freeciv-Webseite im tar-Format heruntergeladen werden. Diese müssen dann entweder mit z.B. "tar -xzvf stdsoundsX.tar.gz" (Unix) oder mit WinZip (Windows) in das Verzeichnis data/ entpackt werden. In CVS-Versionen sind weder Sounds noch ein specfile enthalten. Soundsets (Sounds und ein specfile) können von herunter geladen werden. Hier gibt es auch weitere Soundateien, um existierende Soundsets zu verändern oder neue zu erstellen. ================================ Plugins ================================ Die Sound-Ausgabe wird vom Client mit Plugins erledigt. Welche Plugins vorhandene sind, hängt davon ab, welche Libraries auf dem Rechner installiert sind. Das Plugin, das der Client zur Soundausgabe benutzen soll, kann via Kommandozeile gewählt werden: civclient --Plugin sdl Mit "none" wird die Soundausgabe abgeschaltet. Freeciv unterstützt zur Zeit die folgenden Plugins: - keine Ausgabe (--Plugin none) - Esound (--Plugin esd) - SDL mit der SDL_mixer-Library (--Plugin sdl) Um Unterstützung für ein neues Plugin zu Freeciv hinzuzufügen, müssen folgende Dateien verändert werden ("plugin" bezeichnet dabei den Namen des des neuen Plugins): confgiure.in /* Hinzufügen eines neuen Tests */ acconfig.h /* Hinzufügen einer neuen config metavariablen */ client/audio.c /* das neue Plugin einfügen */ client/Makefile.am /* die folgenden Dateien einfügen */ client/audio_plugin.c /* das neue Plugin */ client/audio_plugin.h /* die Headerdatei des neuen Plugins */ ================================ Tags ================================ Es gibt zwei Arten von Soundtags: - Tags, die im ruleset definiert sind - Tags, die im Programm definiert sind Während die ersten frei gewählt werden können, können die letzteren nicht verändert werden. Die Soundtags, die zu Erweiterungen (Weltwundern und normale Gebäuden), Bewegungen von Einheiten und Kämpfen zwischen Einheiten gehören, müssen im Ruleset festgelegt werden. Freeciv gibt diese Tags weiter an den Client, der sie mit Hilfe der soundspec Datei in Dateinamen übersetzt. Jede soundspec-datei sollte allgemeine Soundtags für Weltwunder ("w_generic"), normale Gebäude ("b_generic"), Bewegung von Einheiten ("m_generic") und Kämpfe zwischen Einheiten ("f_generic") definieren. Zu bestimmten Ereignissen gibt es Soundtags, die im Code von Freeciv verankert sind und nicht von außen konfiguriert werden können. In der soundspec Datei müssen belegungen für diese Tags vorhanden sein. Eine komplette Liste dieser Tags findet sich in data/stdsounds.spec. Der Name des Tags ist der Name des enums (siehe common/events.h) in Kleinbuchstaben. Z.B. wird aus E_POLLUTION das Tag "e_pollution". Es gibt kein allgemeines Tag und es wird kein alternatives tag benutzt. Im Spiel gibt es im Moment nur eine Hintergrundmelodie: das Intro. Das Intro läuft bis das Spiel beginnt. Das Tag für diese Musik ist "music_start". ================================ TODO ================================ Es gibt ein paar Dinge, die noch getun werden müssen, um die Soundunterstützung in Freeciv noch zu verbessen: * Hinzufügen von weitere Plugins (gstreamer, arts, windows, usw.) * Hinzufügen von tags für jedes Forschungsergebnis, wie für Gebäude/Einheiten * Unterstützung von Sounddateien im .ogg-Format * mehr Ereignistags * neue/bessere Sound-Samples und bessere spec-Datei ================================ Sonstiges ================================ Ersteller von Sounds: Die Dateien sollten bitte klar benamst sein. Außerdem sollte eine README vorhanden sein, in der die verwendete Lizenz für die Sounds aufgeführt wird (falls Publich Domain, bitte erwähnen) Ersteller von Modpacks: Die sekundären Tags sollten sich auf Standardtags beziehen, sodaß die, die nicht das neueste und beste Soundpacket haben, das Spiel immer noch genießen können.