Christoph Atteneder, Matthias Bauer, Peter Hutterer, …


bitLife

If you want to understand life - build it. (Stewart Dean Jan)


bitLife [link 01]

bitLife

Kurzdarstellung

Kurzbeschreibung

Bitlife ist eine Software, die künstliches Leben simuliert. In einer generierten Welt mit verschiedenen Klimazonen wachsen Pflanzen, die der Benutzer aussetzen kann. Weiters, und das ist das Kernstück der Software, gibt es Kreaturen (insgesamt sind mehr als 500.000 verschiedene Arten möglich), die alle unterschiedliche Eigenschaften haben (Größe, Geschwindigkeit, Lebenserwartung, Sichtweite, Lebensraum, ...). Die Kreaturen "leben", wenn sie erst einmal ausgesetzt sind, von selbst, d.h. sie suchen sich Fressen und Sexualpartner und vermehren sich. Dabei kann es zu Mutationen kommen und neue Kreaturen entstehen.

KünstlerInnen / AutorInnen

  • Christoph Atteneder, Creature-Lab
  • Matthias Bauer, Grafik-Programmierung
  • Peter Hutterer, Life-Engine
  • Paul Lanzerstorfer, Life-Engine
  • Daniel Kuales, Grafik und Design
  • Martin Wachtler, Sound und Soundprogrammierung

Entstehung

Oesterreich, 2002-2003

Eingabe des Beitrags

Paul Lanzerstorfer, 13.05.2003

Kategorie

  • Forschungsprojekt

Schlagworte

  • Themen:
    • Genetische Algorithmen |
    • Spiele |
    • Software Engeneering |
    • Künstliche Intelligenz |
    • Interaktivität |
    • Open Source |
    • Künstliches Leben
  • Formate:
    • Software |
    • CD-ROM |
    • interaktiv

Inhalt

Inhaltliche Beschreibung

1 Die Life-Engine
1.1 Überblick
Die Life-Engine stellt das Herz des Projektes dar. Sie kümmert sich um die Verwaltung der Welt, stellt die notwendigen Klassen und Algorithmen zur Verfügung, um Kreaturen und Pflanzen zu erzeugen und diese (über)leben zu lassen. Ziel der Life-Engine war es, eine möglichst realitätsnahe Evolution zu ermöglichen, die nach Darwin das Überleben des Stärkeren fördert, indem sie die individuellen Eigenschaften der Lebewesen hervorhebt. Je nach Aussehen der Welt soll sich ein natürliches Gleichgewicht bilden, in dem sich Kreaturen und Pflanzen gegenseitig die Waage halten, um das Überleben des Lebens an sich zu
garantieren.
Die Life-Engine besteht aus folgenden Bestandteilen:
World
Diese Klasse stellt die Welt, den Ansatzpunkt für ein Spiel, zur Verfügung.
Cell
Eine Zelle ist ein Bestandteil der Welt und spezifiziert die Klimazonen sowie die Landschaften.
Plant
Eine Pflanze ist das Grundelement des Lebens, da sie das Grundnahrungsmittel für die Kreaturen darstellt. Pflanzen sind zellengebunden, sie gehören immer einer Zelle an.
Creature
Kreaturen sind der Hauptbestandteil des Spieles. Sie greifen auf die notwendige DNA zurück, um die Evolution zu ermöglichen.
DNA
Die DNA definiert die Eigenschaften einer Kreatur. Sie enthält die notwendigen Algorithmen für die Evolution.
Target
Eine Kreatur hat im Optimalfall ständig ein Ziel, entweder Fressen oder Paarung. Target stellt die Verwaltung dieses Zieles zur Verfügung.
1.2 Der Nährstoffkreislauf
Einer der Hauptaufgaben bei der Entwicklung war das Aufrechterhalten eines Nährstoffkreislaufes. Nährstoffe werden zu Beginn über der Welt verstreut, die Pflanzen wandeln die auf den Zellen befindlichen Nährstoffe in Energie um. Diese Energie wird von den Pflanzenfressern aufgenommen und kann durch sie von den Fleischfressern aufgenommen werden. Bei ihrem Tod geben Kreaturen die Energie in Form von Nährstoffen wieder an die Zelle zurück. Dadurch können anfangs nährstoffarme Gebiete attraktiv für Pflanzen
werden und umgekehrt.
Weiters gibt jede Kreatur pro Runde ihren Energieverbrauch an die Zelle ab, auf der sie sich gerade befindet.
1.3 Die Zelle
Grundlegender Bestandteil der Welt ist die Zelle. Sie ermöglicht die Aufteilung in Klimazonen und Landschaften und erlaubt das Wachsen der Pflanzen. Die Welt selbst ist nur ein abstraktes Gebilde und stellt lediglich die Verwaltungsfunktionen zur Verfügung. Die eigentliche, sichtbare Welt ist eine quadratische Ansammlung von Zellen, wobei die Größe variabel ist.
Aufbau
Die Zelle besitzt die Eigenschaften Temperatur sowie Wasserstand. Aus der Mischung der beiden ergeben sich (grafisch) sieben Klimazonen:
Wüste ... sehr heiß, sehr wenig Wasser
Eiswüste ... sehr kalt, sehr wenig Wasser
Tundra ... kalt, wenig Wasser oder sehr kalt, durchschnittlich viel Wasser
Prairie ... heiß, wenig Wasser
Wiese ... gemäßigt
Sumpf ... viel Wasser
Wasser ... sehr viel Wasser
Die Klimazonen sind intern feiner abgestuft, so gibt es für die Temperatur 100 verschiedene Werte (die etwa mit dem irdischen -40°C bis 60°C verglichen werden könnten), entsprechendes für die Wasserwerte (0% bis 100% Wasseranteil).
Zusätzlich hat eine Zelle noch die Eigenschaft "Nährstoffe". Diese werden zu Beginn auf der Welt verteilt, jede Zelle bekommt ihren Anteil. Die Nährstoffe sind das unterste Glied der Nahrungskette. Die Aufteilung der Nährstoffe geht nach Klimazone, so hat etwa eine Wüste weniger Nährstoffe als ein Sumpf, wobei dieser wieder weniger als eine Wiese hat.
1.4 Die Entstehung einer Welt
Die Entstehung einer Welt ist in folgende Schritte unterteilbar:
1. Anlegen der Zellen
2. Erstellung der Landschaftszonen
3. Auffüllen der restlichen Felder
4. Blur zum Abrunden von Übergängen
5. Erstellung des großen Flusses
6. Leichter Blur
7. Erstellung der mittleren und kleineren Flüsse
8. Nährstoffverteilung
Die einzelnen Parameter können mittels des bitTools, ein Konfigurations-Programm, geändert werden. So ist etwa die Anzahl der Zellen und damit die Größe der Welt einstellbar. Dies gilt ebenso für die Anzahl der einzelnen Klimazonen, wobei die Größe der einzelnen Zonen abhängig von der Weltgröße ist.
Da nach der Erstellung der Landschaften Zellen frei bleiben können, werden diese mit Zufallswerten gefüllt. Der erste Blur dient dazu, die Übergänge zwischen den Landschaftszonen etwas abzuschwächen. So gibt es etwa im Umfeld von Seen eine Sumpfzone, im Umfeld von Wüsten Steppenzonen usw. Danach wird der große Fluss erstellt, wenn der User dies gewünscht hat (im Setup einstellbar). Dieser beginnt stets an einer Kante der Welt und geht, je nach Mäanderbildung, bis zum gegenüberliegenden Ende der Welt oder versickert in ihr. Um auch hier die Übergänge abzurunden, wird ein weiterer Blur-Filter, diesmal allerdings mit kleinerem Radius, über die Welt gelegt. Danach wird die vom User gewünschte Anzahl an kleinen und mittleren Flüssen erstellt. Diese entspringen inmitten der Welt, münden jedoch immer in einen Fluss oder See ein. Die Nährstoffverteilung geschieht zum Schluss nach oben erwähntem Schema. Danach ist die Welt fertig und das Leben nimmt seinen Lauf.
1.5 Der Ablauf einer Runde
Eine Runde besteht aus zwei Bestandteilen: Aktualisieren der Pflanzen und nachfolgendes Aktualisieren der Kreaturen. In beiden Fällen werden alle in der Welt befindlichen Pflanzen und Kreaturen durchgegangen und ihre jeweilige Update-Methode ausgeführt. Der genaue Ablauf der einzelnen Funktionen wird weiter unten beschrieben.
1.5.1 Lebewesen
Es gibt zwei Arten von Lebewesen: Tiere und Pflanzen. Der wesentliche Unterschied liegt in der Verwendung der DNA. Während die Pflanzen intern fix definiert sind und daher keinen Mutationen unterliegen, greifen die Kreaturen intern auf eine komplexe DNA zurück. Ein weiterer Unterschied besteht darin, dass Pflanzen zellengebunden sind, d.h. eine Pflanze kann sich stets nur auf einer Zelle befinden, während sich Kreaturen auch innerhalb der Zelle und über Zellen hinweg bewegen können.
1.5.1.1 Die Pflanzen
Die Pflanzen stellen das zweite Glied der Nahrungskette dar. Sie nehmen die Nährstoffe aus dem Boden (d.h. aus den Zellen) auf und wandeln sie in Energie um. Die Pflanzen haben die Eigenschaften Wassertoleranz, Temperaturtoleranz, Nährstoffverbrauch sowie Besamungsradius und Reifezeit. Wasser- und Temperaturtoleranz spezifizieren die Bereiche, in denen die Pflanzen überlebensfähig sind, der Nährstoffverbrauch, wie viele Nährstoffe pro Pflanze verbraucht werden. Die Reifezeit gibt an, nach wie vielen Runden die Pflanze eine Besamung einer Nachbarzelle durchführen kann. Der Besamungsradius bestimmt, wie weit diese Zelle entfernt sein kann. Der Prozess der Besamung ist zufällig. Es wird eine Zelle innerhalb des Radius gewählt und der Samen auf dieser Zelle abgelegt. Ist der Samen überlebensfähig, entsteht dort eine neue Pflanze. Wächst dort bereits eine Pflanze, so wird die Anzahl der Pflanzen um den Nährstoffwert erhöht. Ist der Samen nicht überlebensfähig, so geht er verloren. Es dauert je nach Pflanze eine gewisse Zeit, bevor sie wieder fähig ist, sich auszubreiten.
Da die Parameter der Pflanzen beliebig verstellbar sind, gibt es intern eine hohe Zahl an möglichen verschiedenen Arten. Die grafische Ausgabe beschränkt sich auf sieben, den Zonen entsprechende Pflanzen, deswegen werden auch intern nur sieben Pflanzentypen angelegt.
1.5.1.2 Die Kreaturen
Sie stellen den Hauptbestandteil des Spieles dar und sind dementsprechend komplex aufgebaut. Jede einzelne Kreatur greift auf ihre eigene, spezifische DNA zurück, die die Eigenschaften der Kreatur bestimmt. Dazu zählen Grundeigenschaften wie Größe, Sichtweite und Geschwindigkeit, aber auch komplexere wie die Paarungsintervalle und die Anzahl an Nachkommen, die pro Paarung entstehen können.
Im Folgenden eine Liste der Eigenschaften einer Kreatur:
-Position auf der Zellen
-aktuelle Energie
-Alter
-Zeit bis zur nächsten Paarung
-Lebenserwartung
-Maximale Anzahl an Nachkommen bei der Paarung
-Geschwindigkeit
-Sichtweite
-Temperaturtoleranz
-Wassertoleranz
-Art der Nahrung (Pflanzen- oder Fleischfresser)
-Energieverbrauch pro Runde
-Paarungsintervall
-Zeit bis zur Geschlechtsreife
-Maximale Energie
-Menge an Nahrung, die pro Runde aufgenommen werden kann
-Startenergie (Energie, die die Kreatur zur Geburt benötigt)
-Name der Rasse
-Größe
All diese Eigenschaften werden durch die DNA spezifiziert und berechnet.
1.5.2 Die DNA
Da das Hauptziel des Spieles eine möglichst realitätsnahe Evolution war, wurde eine eigene DNA entwickelt, die der DNA der realen Welt in Grundzügen entspricht, jedoch den extremen Komplexitätsgrad auf ein überschau- und vor allem programmierbares Spektrum reduziert.
Jede DNA besteht aus einem Genom, das 19 Chromosomen besitzt. Diese spezifizieren in Kombination die verschiedenen Körperteile (so etwa sind die ersten vier Chromosomen für den Körper verantwortlich). Jedes dieser Chromosome besteht aus sieben Genen (Bits), die für den Gesamtwert des Genes verantwortlich sind. Eine bestimmte Kombination aus den Genen ergibt einen bestimmten Wert (0 oder 1) für das Chromosom. Die Reihenfolge der Chromosom-Werte spezifiziert nun, was ausschlaggebend für die Rasse der Kreatur ist. Diese Kombination ermöglicht es, dass es eine große Anzahl an Kreaturen einer Rasse gibt, die dennoch eine unterschiedliche interne Struktur haben. Ähnlich wie in der realen Welt, wo es eine große Zahl an verschiedenen Menschen gibt, die dennoch alle zur Rasse Mensch gehören.
Mutationen treten bei jeder Paarung auf, sind jedoch auf die Gene beschränkt. Erst wenn die Gene derart mutieren, dass sich das entsprechende Chromosom ebenfalls ändert, wird die Mutation tatsächlich sichtbar. Dadurch besteht die Möglichkeit, dass sich zwei Kreaturen derselben Rasse paaren und keine Mutationen auftreten. Umgekehrt besteht die Möglichkeit, dass sich dieselben Kreaturen mit anderen paaren und Mutationen auftreten, obwohl auch die anderen Kreaturen derselben Rasse angehören.
Bei der Paarung werden nun die Gene miteinander kombiniert und ergeben dadurch eine andere Genstruktur für den Bastard. Abhängig von dieser Genstruktur errechnet sich der Wert des Chromosoms. Im Laufe der Entwicklung wurden mehrere Merging-Verfahren für die Chromosomensätze entwickelt. Die aktuelle, vierte Version wirkt sich im Laborversuch mit einer Genstabilität von über 99% aus, was - auf das Genom bezogen - eine Mutationsrate von etwas mehr als 10% bewirkt, die für ein Spiel dieser Art optimal ist.
1.5.3 Die Intelligenz
Gleich vorweg: Eine Art künstlicher Intelligenz ist nur sehr bedingt vorhanden; die verwendeten Algorithmen sind sehr einfach und lassen sich nicht mit der KI vergleichen, die in professionellen Projekten verwendet wird.
Die Kreaturen verfolgen zwei Ziele: Fressen und Fortpflanzen. Als Zwischenziel gilt die Fortbewegung, um eines der Hauptziele zu erreichen.
Eine Kreatur sucht jede Runde innerhalb ihres Sichtradius ein Ziel. Ist die Zeit bis zur nächsten Paarung noch nicht verstrichen oder ist die Kreatur am Verhungern, wird nach Fressen gesucht, ansonsten nach einem paarungsbereiten Partner. Wurde ein Ziel gefunden, bewegt sich die Kreatur in Richtung des Zieles. Wurde kein Ziel gefunden, bewegt sich die Kreatur in eine beliebige Richtung vom aktuellen Ort weg.
Hat die Kreatur bereits in der letzten Runde ein Ziel gefunden, so wird die Gültigkeit desselben überprüft (existiert das Ziel noch, ist es außerhalb der Sichtweite, ...) und die Kreatur bewegt sich weiter auf das Ziel zu. Ist es erreicht, wird es entweder gefressen oder die Paarung findet statt. Befindet sich das Ziel in einem Bereich, der von der Kreatur nicht betreten werden kann (siehe Wassertoleranz und Temperaturtoleranz), so muss ein anderes Ziel gesucht werden. Dies bewirkt auch, dass Kreaturen, die auf Zellen, auf denen sie nicht überlebensfähig sind, ausgesetzt oder geboren werden, bewegungsunfähig sind. Ähnlich einem Fisch, der sich in der Wüste nur schwer fortbewegen kann.
1.5.4 Die Paarung
Die Paarung erfolgt nach dem bereits im Abschnitt DNA besprochenen Merging-Verfahren. Zwei Kreaturen, die beide paarungsbereit sein müssen, mergen ihre DNA, wodurch die Bastarde entstehen. Um diese überlebensfähig zu machen, wird ein Teil der Energie von den beiden Eltern auf die Kinder übertragen, damit diese den Weg zur ersten Futterstelle überleben können. Die Menge an Energie, die eine Kreatur zu Beginn braucht, definiert sich durch die DNA. Da diese bei Mutationen stark differieren kann, ist es möglich, dass ein Elternteil die Geburt des Kindes nicht überlebt, da die komplette Energie auf das Kind übergeht. Nach der Paarung sind beide Elternteile stark geschwächt. Die Energieaufnahme ist für das Überleben notwendig, wird allerdings dadurch erschwert, dass jetzt in unmittelbarer Umgebung mehr Kreaturen vorhanden sind, die sich gegenseitig das Futter wegfressen.
1.5.5 Futter
Es gibt zwei Arten von Futter: Pflanzen und andere Kreaturen. Ob eine Kreatur Fleisch- oder Pflanzenfresser ist, definiert sich aus der DNA. Pflanzenfresser funktionieren nach einem einfachen Prinzip:
1. Pflanzen suchen
2. zum Ziel bewegen
3. fressen.
Der einzige Risikofaktor ist, dass die Pflanze in der Zwischenzeit (während der Bewegung) von einer anderen Kreatur gefressen werden kann.
Bei Fleischfressern muss überprüft werden, ob das Ziel überhaupt essbar ist. Hierbei wird eine einfache Methode angewendet, die die DNA des Zieles mit der des Fleischfressers vergleicht. Eine Variable definiert den minimalen Unterschied, der hierbei auftreten muss, um zu gewährleisten, dass eine Kreatur nicht zum Kannibalen wird.
Da sich die Pflanzenfresser fortbewegen, muss bei den Fleischfressern öfter der Pfad angepasst werden, auf dem sie zum Ziel kommen können. Sollte die Kreatur bemerken, dass das ausgewählte Ziel schneller ist als die Kreatur selber, wird ein anderes Ziel gesucht. Beim Fressvorgang selbst stirbt die andere Kreatur, die Energie geht zum Teil auf den Fleischfresser über (abhängig von der Nahrungsaufnahmemenge), der Rest wird an die Zelle in Form von Nährstoffen zurückgegeben.
2 Das "Spiel"
2.1 Überblick
Was wäre ein Spiel ohne grafische Ausgabe? Gerade deshalb war es besonders wichtig, diese Darstellung so performant wie möglich und dem Spielgenre passend zu wählen. Hierbei wurden sowohl der DirectDraw API als auch GDI verwendet. Als Ausgangspunkt unserer Programmierung diente uns die isometrische Gameengine von Ernest Pazera (http://www.isohex.net), welche adaptiert und erweitert wurde. Die Game-Engine kümmert sich wie schon erwähnt um die grafische Ausgabe der Vorgänge in der Life-Engine. Sie stellt die notwendigen Klassen und Algorithmen zur Verfügung, um die Oberfläche der Welt, die einzelnen Pflanzen, Kreaturen und deren Bewegung zu visualisieren. Weiters beinhaltet sie auch Funktionen zur Benutzerinteraktion.
2.2 Game
Hier wird das Vollbild-Fenster, das DirectDraw Objekt und alle notwendigen DirectDraw Surfaces erstellt und die Soundengine gestartet. Weiters beinhaltet diese Klasse den Gameloop, um alle Benutzerinteraktionen und Animationen kontrollieren und die grafische Darstellung erneuern zu können. Weiters beinhaltet sie Funktionen und Methoden zur dynamischen grafischen Generierung von Kreaturen und deren Abspeichern, aber auch für die Ausgabe von Statusmessages, um eine ein- und ausblendbare Textausgabe zur Überprüfung von Parametern zu ermöglichen.
2.3 MainMenu
Beinhaltet alle notwendigen Spieloptionen wie Minimieren, Soundeinstellungen und Beenden des Spieles.
2.4 CreatureLab
Dient zur dynamischen Erstellung einzelner Kreaturen und deren Aussetzung.
Der linke Bereich des Interfaces beinhaltet die aktuelle Darstellung der erstellten Kreatur, dessen Namen, Eigenschaften und Lebensraum. Ein Austauschen einzelner Körperteile bewirkt eine Änderung der Eigenschaften der Kreatur.
Folgende Körperteile stehen zur Verfügung:
-Augen
-Kopf
-Körper
-Beine
-Farbe
Durch diese Vielfalt von Möglichkeiten kann der Benutzer 520.000 unterschiedliche Kreaturen erschaffen. Mittels Zauberstab können diese schlussendlich in der Welt ausgesetzt werden.
2.5 WorldLab
Mit Hilfe des WorldLabs können Informationen zu selektierten Zellen ausgegeben sowie neue Pflanzen erstellt und in der Welt ausgesetzt werden. Auch im WorldLab hat jede Pflanze unterschiedliche Eigenschaften, welche sie für bestimmten Untergrund prädestiniert.
3 Grafik
Die grafische Darstellung spielt bei bitLife eine sehr wichtige Rolle, soll doch die Evolution und die somit auftretenden Mutationen anschaulich visualisiert werden. Wir einigten uns sehr bald auf die klassische isometrische Ansicht, wie sie von Strategiespielen bekannt ist. Die Grundgestaltung orientiert sich am Comicstil, dafür kennzeichnend sind die schwarzen Outlines und die flächigen Farben. Hauptfarbe ist Gras-gelbgrün, um den Aspekt des "Lebens" noch hervorzuheben.
3.1 Der Boden
Die sieben verschiedenen Klimazonen (Wüste, Steppe, Graslandschaft, Sumpf, Wasser, Tundra, Eiswüste) sind farblich entsprechend gestaltet. Die einzelnen isometrischen Tiles sind 100 x 50 px groß und werden zu einer Landschaft zusammengefügt. Damit die Übergänge zweier Tiles weniger scharf sind, besitzen die Tiles keine gerade Kante, sondern fransen pixelig aus, fügen sich aber genau in nebenliegende Tiles. Sie besitzen wenig Struktur und sind kontrastarm. Dadurch können Muster, die durch große Flächen gleicher zusammengesetzter Tiles entstehen würden, möglichst vermieden werden.
3.2 Die Pflanzen
Für die einzelnen Klimazonen gibt es dazugehörige Pflanzen. Sie sind allesamt so gestaltet, dass sie flach am Boden wachsen. Somit kann man auf die Überprüfung, ob ein Tier vor oder hinter einer Pflanze steht, verzichten.
3.3 Die Kreaturen
Wir mussten einen Weg finden, um Mutation und somit die Unterschiede der Tiere bestmöglich zu veranschaulichen und gleichzeitig durch eine DNA zu beschreiben. Die Tiere werden in die Körperteile Augen, Kopf, Körper und Beine aufgeteilt. Zusätzlich erhalten sie noch eine Farbe. Die Anzahl der einzelnen Teile wurde fix definiert.
Alle diese Einzelteile wurden als separate Grafiken erzeugt, damit später Tiere aus den Einzelteilen zusammensetzt werden können.
Alle Grafiken entstanden in Freehand und wurden in Photoshop in Pixelgrafiken umgewandelt und nachbearbeitet.
4 SoundEngine
Im Wesentlichen besteht die SoundEngine von bitLife aus drei Teilen, die im Nachfolgenden näher beschrieben werden. Für die Wiedergabe der Geräusche wurden Funktionen der DirectSound-Bibliothek verwendet. Die Wiedergabe der Musik wurde mit DirectShow realisiert.
4.1 Tiergeräusche
Da in Bitlife über 500.000 Kreaturen vorkommen können, ist es etwas schwierig, für jede einzelne Tierart ein eigenes Geräusch zu kreieren. Wir beschränkten uns daher auf derzeit 16 verschiedene Kategorien, wobei auf jede Kategorie zwei verschiedene Laute kommen. Einen, der beim Auswählen abgespielt wird, einen weiteren, den die Kreatur während des Spiels selbständig wiedergibt. Welche Kategorie einer Kreatur zugewiesen wird, hängt im wesentlichen vom Kopf des Tieres ab, aber zu einem kleinen Teil auch vom Körper, da dies auch in der Natur die wesentlichen Einflussfaktoren auf die Stimmen sind.
4.2 Effektgeräusche
Verschiedenen Funktionen im Spiel sind Geräusche zugewiesen, wie zum Beispiel einem Mausklick auf einen Button, oder das Aufrufen eines Menüs.
4.3 Hintergrundmusik
Die Hintergrundmusik im Spiel ist im wesentlichen ein einfacher Mp3-Player. Es wird zu Beginn des Programms das Unterverzeichnis mp3\ nach Mp3-Dateien gescannt. Alle gefundenen Dateien werden dann in zufälliger Reihenfolge wiedergegeben. Werden keine Dateien gefunden, wird natürlich auch keine Musik wiedergegeben.

Technik

Technische Beschreibung

Wir haben uns dazu entschlossen, bitLife komplett Open Source zu machen. Jeder kann sich den Source-Code runterladen und modifizieren. Der Code ist in
C++ geschrieben und durchgehend (auf Englisch) dokumentiert. Wir verwendeten die ISO-HEX Engine von Ernest Pazera (http://www.isohex.net). Sie ist ebenfalls OpenSource und wurde von uns adaptiert und erweitert.

Hardware / Software

Mindestvoraussetzungen:
Pentium III
500 MHz
256 MB RAM
30 MB freier HD Speicher
DirectX 7.0
Empfohlen:
Pentium IV
1.5 GHz
512 MB RAM
100 MB freier HD Speicher

  • › digital sparks 2003 [link 02]

» http://bitlife.pl-visions.com [link 03]

  • › Handbuch [PDF | 535 KB ] [link 04]
  • › Screenshot [JPEG | 136 KB ] [link 05]
  • › Ein kleiner Ausschnitt aus den Kreaturmöglichkeiten [1 MB ] [link 06]
  • › Projektdokumentation [PDF | 318 KB ] [link 07]