Crystal Space

Open Source 3D Engine für Spieleentwickler

01.09.2000
Hatten Sie auch schon mal eine richtig gute Idee für ein Computerspiel? Aber wie setzt man so eine Spielidee am besten um? Zunächst könnten Sie einen detaillierten Spielentwurf machen, in dem Sie das Ziel des Spiels, den ungefährn Spielablauf, die zu realisierenden Mechanismen usw. festlegen. Je nach Genre des Spiels kann dies bereits eine Menge Arbeit bedeuten.
Blocks" heißt eines der ersten Spiele, die mit Crystal Space geschrieben wurden. Es ist eine 3D-Variante von Tetris

Irgendwann werden Sie aber mit der eigentlichen Entwicklung anfangen wollen. Aber womit fängt man am besten an? Bevor Sie sich auf die Implementierung des eigentlichen Spiels konzentrieren können, müssen Sie sich nämlich normalerweise erst einmal intensiv mit der Frage beschäftigen, wie man die Spiele-Hardware (Grafik-, Sound- und Netzwerkkarte) dazu bringt, das zu tun, was man im Spiel realisieren möchte. Eine Grafik-Engine zu programmieren, ist eine nicht zu unterschätzende Aufgabe. Wenn Sie das alles alleine bewerkstelligen wollen, dann brauchen Sie entweder ein großes Entwicklerteam an Ihrer Seite oder aber jede Menge Zeit.

Schon mal daran gedacht, für so etwas ein bereits exisitierendes Paket zu verwenden? In diesem kurzen Artikel werde ich Ihnen Crystal Space als eine mögliche Lösung für dieses Problem vorstellen. Crystal Space (von nun an mit "CS" abgekürzt) ist ein Satz von Bibliotheken und Modulen, die sich vor allem für das Erstellen von 3D-Spielen eignen. Wenn Sie also vorhaben, ein ausschließlich zweidimensionales Spiel zu erstellen, dann dürfte CS für Ihre Zwecke unpassend sein. In einem solchen Fall würde ich vorschlagen, dass Sie sich andere gute Bibliotheken wie SDL oder ClanLib einmal näher anschauen.

Frei und unabhängig

Zunächst einmal einige allgemeine Informationen. CS ist Open Source, d. h. Sie können es kostenlos herunterladen und in Ihren eigenen Programmen verwenden. Da CS der LGPL (Lesser GNU General Public License) unterliegt, können Sie dieses Paket sogar für die Erstellung kommerzieller Spiele einsetzen. Sie erhalten die jeweils neueste Version des Entwicklungspakets unter [1].

Eine wichtige Eigenschaft von CS ist seine Portabilität. Momentan läuft das Paket unter Linux (alle Arten), Windows (Win95, Win98, WinNT, Win2000), Macintosh, OS/2, BeOS, DOS, FreeBSD, SGI, Solaris, NextStep, OpenStep, MacOS/X, … Das 3D-Rendering lässt sich in Kooperation mit OpenGL, Glide, Direct3D oder aber per Software-Rendering realisieren. Diese hohe Portabilität gibt potentiellen Spieleentwicklern jede Menge Freiraum hinsichtlich der angestrebten Zielplattform(en).

Doch eine Warnung vorweg: CS befindet sich derzeit noch im Entwicklungsstadium. Ein großer Teil von CS lässt sich zwar bereits vernünftig einsetzen (etwa die 3D-Grafik-Engine), es gibt jedoch einige Bereiche, die noch wesentlich verbessert werden müssen, bevor sie wirklich sinnvoll einsetzbar sind, wie z. B. die 3D-Sound-Engine.

Flexible Komponenten

Was bietet CS bisher für (potentielle) Spieleentwickler? Die drei Hauptbestandteile von CS sind eine 3D-Grafik-Engine, eine 3D-Sound-Engine und ein Paket für die Netzwerk-Unterstützung. Ich werde diese drei Komponenten in den folgenden Abschnitten kurz erklären. Vorweg ist es jedoch wichtig zu wissen, dass alle drei Komponenten optional einsetzbar sind, d. h. Sie müssen die in CS integrierte Sound-Engine nicht verwenden, wenn sich Ihrer Meinung nach ein anderes Sound-Paket besser dafür eignet.

3D-Grafik-Engine

Diese Komponente ist eindeutig der wichtigste Teil von CS und eigentlich der Hauptgrund dafür, warum CS überhaupt exisitiert. Die Software-Zusammenstellung ist nämlich für die Vorinszenierung und für die anschließende Darstellung einer "Welt" in drei Dimensionen auf dem Bildschirm verantwortlich. Sie beinhaltet Features wie

  • visibility checking (Sichtbarkeitsprüfung: sind Objekte überhaupt sichtbar oder außerhalb der gerade gezeigten Ansicht; damit der Hardware nicht allzu viel Arbeit aufgebürdet wird),
  • particle systems (zur Simulation von Regen, Schnee und Wasserquellen)
  • collision detection
  • physics simulationund vieles mehr. Kurz: Die 3D-Grafik-Engine von CS entlastet den Spieleentwickler von den Arbeiten eines Spieleprojekts, die sich häufig als besonders mühsam herausstellen: 3D-Management und Rendering.

3D Sound-Engine

Die Sound-Engine befindet sich momentan in enormer Entwicklung. Am Ende dieser Entwicklungsphase wird es möglich sein, für die eigenen Spiele echten in die 3D-Grafik-Engine integrierten 3D-Sound (selbstverständlich auch normalen Sound) zu verwenden. Man kann sich das Zusammenspiel von Sound und Grafik dann z. B. folgendermaßen vorstellen: Wenn sich im Spiel eine (mit der Grafik-Engine erzeugte) Wand zwischen der Klangquelle und der Kamera befindet, dann wird der (von der Sound-Engine erzeugte) Klang leiser sein, als wenn sich kein Hindernis zwischen Klangquelle und Kamera befindet. Außerdem wird der Spieler erkennen können, dass der Klang z. B. von rechts auf ihn zukommt.

Netzwerk-Unterstützung

Nicht alle Spiele benötigen Netzwerk-Unterstützung, aber inzwischen gibt es doch viele Spiele mit (optionaler) Anbindung an ein Netzwerk – vor allem dann, wenn es sich dabei um RPGs (Rollenspiele) oder MUDs (Multi-User Dungeons) handelt. Crystal Space bringt eine elementare "Low-Level"-Netzwerk-Unterstützung sowie Unterstützung für Client-Server-basierte Netzwerkoperationen mit.

Weitere Komponenten

CS besteht aus mehr als nur den drei oben erwähnten Paketen. Da gibt es z. B. noch das Crystal-Clear-Paket, welches eine Stufe über den restlichen Komponenten von Crystal Space angesiedelt ist und für das Kontrollieren und Interagieren der Spielkomponenten zuständig ist. Darüber hinaus entwickeln wir eine Scripting-Funktionalität für CS, damit man in Zukunft auch von diversen Programmiersprachen aus per Skript auf CS zugreifen kann. Momentan arbeiten wir an einer solchen für die Programmiersprache Python, aber natürlich wird es in Zukunft auch andere Optionen geben.

Neugierig geworden?

Das war also meine Kurzvorstellung von Crystal Space. Wenn Sie ein 3D-Spiel schreiben möchten, dann, so denke ich, sollten Sie Crystal Space zumindest als eine mögliche Alternative in Betracht ziehen. Sie könnten sich damit möglicherweise eine Menge Arbeit sparen.

Infos

[1] Crystal Space Homepage: http://crystal.linuxgames.com/

[2] Englischsprachiges Online-Manual: http://crystal.sourceforge.net/docs/online/manual/

[3] Liste mit aktuellen Spieleprojekten, die Crystal Space einsetzen: http://crystal.linuxgames.com/projects.html

Der Autor

Jorrit Tyberghein ist einer der beiden Projektadministratoren des Crystal-Space-Projekts. Bei Fragen können Sie ihn (in englischer Sprache!) unter mailto:Jorrit.Tyberghein@uz.kuleuven.ac.be erreichen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare