ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4441827
Jetzt (Chat):
24 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"Tower Of Babel (Remake)" von Mario Latzig (Mayo)


Seit Ende Februar 2004 bastele ich an meinem ersten grossen Spieleprojekt (in C++) seit einigen Jahren. Davor habe ich überwiegend nur Spiele auf dem Amiga und dem C64/C128 programmiert (bis auf paar kleine Snake/Tron/BreakOut-Klone auf dem PC, meist dort nur Tools und Anwenderprogramme).

Worum geht es in diesem Spiel?
------------------------------

Ein Remake des 3D-Denk/Strategiespiels TOWER OF BABEL auf dem Amiga/Atari ST von Pete Cooke (Jahr 1989). Der Spieler muss drei spinnenähnliche Roboter in 3D durch *schachbrettähnlichen* Türmen (Level) mit mehreren Ebenen steuern, um knifflige Aufgaben zu lösen. Jeder Roboter hat bestimmte Fähigkeiten: Der ZAPPER kann andere Objekte mit seinem Laser zu Staub pulverisieren. Der GRABBER kann die sogenannten Klondikes aufsammeln. Der PUSHER kann, wie sein Name schon andeutet, andere Objekte verschieben. Das Ziel ist entweder eine bestimmte Anzahl von Klondikes einzusammeln und/oder eine bestimmte Anzahl an gegnerischen Objekten zu zerstören.

Auf Geschick und Action verzichtet TOWER OF BABEL überwiegend, es kommt mehr auf logisches Denkvermögen an. Gesteuert werden die Roboter mit Hilfe von Icons und der Maus (bzw. im Remake ist zusätzlich eine Ego-Shooter-ähnliche Tastatursteuerung eingeführt). Die Roboter können mit ihren vier Beinen nach vorne und hinten laufen und sich nach links und rechts drehen. Um Höhenunterschiede zu überwinden, kann man die vorhandenen Lifte nutzen. Mit dem *Feuerbefehl* wird die Spezialfähigkeit des jeweiligen Roboters angewendet.

Die Level in TOWER OF BABEL erstrecken sich auf bis zu acht Ebenen hohen Türmen (im Original waren es nur 4). Dort begegnet man zahllosen künstlichen Kreaturen. Lasergeschütze (gegnerische Zapper) vernichten alles, was in ihre Schussfelder gerät. Massive Blöcke versperren Wege. Echsenähnliche Roboter (Lizards) zerstören fleißig die Bodenplatten. Außerdem muß man verschiedene Schalter betätigen, um Lifte in Betrieb zu nehmen und ihre jeweilige Fahrtrichtung zu bestimmen. Diese vielen Spielelemente in TOWER OF BABEL ermöglichen sehr komplexe Aufgaben, die man nur mit viel Köpfchen lösen kann. Meistens liegt die Lösung in gelungenem Teamwork der drei Roboter. Dabei wird immer nur die Sicht des ausgewählten Roboters angezeigt. Mit einem Maus- oder Tastaturklick wechselt man seine Roboter durch. Von verschiedenen Kamerapositionen aus kann man sich den Turm und alle Objekte von aussen anzeigen lassen.

TOWER OF BABEL soll viele Level bieten, an denen man ordentlich zu beissen haben soll. Ein integrierter Editor (wie im Original) ist ebenfalls geplant, um eigene Türme zu kreiern.

Zur Entwicklung:
----------------

Das Projekt befindet sich noch in der Pre-Alpha-Phase, ist aber seit einigen Tagen schon spielbar, da die grundsätzliche Spiellogik implementiert ist. Die Engine ist seit etwa Juni fertig und läuft mit DirectX(9.0b):

- Speziell nur für das Spiel geschrieben
- Hardware T&L, Support für PS1.1/1.4 und VS1.1 (besser geht nicht der Radeon Mobility 9000)
- Fallback für ältere Grafikkarten per FFP, aber ohne Effekte
- Bumpmapping, Multitexturing (teilweise), Alphablending, "Spekulares Bumpmapping"
- Billboards und Partikel
- und SCHATTEN (per ZFAIL Shadow Volumes)
- Enumeration
- Einstellungen werden in einer ini-Datei gespeichert
- Animation der Meshes mittels Keyframes-Technik (Vertexbasiert, eigenes Mesh-Format)
- Verwende kein DXUtil

Den meisten Kummer haben mir die Shadow Volumes bereitet, denn neben den statischen Turmbauten, sollen ja auch die dynamischen Objekte Schatten werfen. Vorher habe ich erst mit Shadowmaps gearbeitet, diese waren aber zu ungenau. Shadow Volumes fordern dagegen ja hohe Füllraten und auch CPU-Zeit für die Berechnung der Schatten bei den dynamischen Meshes, auch wenn nun einige Optimierungen in der Engine eingebaut sind. Pi-mal-Daumen werden aber für die Volumes etwa 2 mal mehr Polygone gebraucht.

Für die Meshes und für die Texturen wird ein eigenes Format verwendet, daher war die Entwicklung eines eigenen Mesh-Editors die Folge, ebenso ein Tool, um die Texturen und Meshes in Bibliotheken zusammenzufassen. Diese Tools sind aber in .NET C# geschrieben (ging für mich schneller). Es folgten noch weitere Tools für die Verwalung der Sounddateien (auch eigenes Format) und für die Erstellung der Türme (Level-Editor), da ja bis jetzt noch keiner im Spiel integriert ist. Für das Designen der vielen Meshes hilft ein TowerOfBabel-Fan: Marcus Pantel.

Die Engine sollte von Anfang an nicht zu aufwendig werden, weil ich mich nicht monatelang damit aufhalten wollte, um dann frustriert aufzugeben ;-) Denn wie sich herausstellte, ist die grössere Arbeit die Spiellogik. Das Spiel besitzt in etwa 40 Spielelemente (Objekte), die sich zum Teil gegenseitig beinflussen. Der unsichtbare Zerstör-Strahl von einem ZAPPER kann durch einen CONVERTER-Element in einem Schiebe-Strahl eines PUSHERs umgewandelt werden, welcher wiederum ein REFLECTOR-Block verschiebt, welcher wiederum aber von einem FREEZER in seiner Position eingefroren werden kann und somit evtl. zwei Spielfelder belegt, und somit einem GRABBER im Weg ist etc. Ebenso musste das Verhalten der verschiedenen Elemente im Original-Spiel beobachtet werden, um Rückschlüsse auf deren Eigenarten zu schliessen.

Um nicht alle 117 original Tower des Originals manuell übertragen zu müssen, wurde das Image-File (ADF) der Original-Amiga-Diskette mit einem Hex-Editor analysiert und durch Try-And-Error das dort verwendete Format geknackt. Aus rechtlichen Gründen werde ich diese aber später bei Final-Version wahrscheinlich nicht verwenden.

ToDo:
-----

- Sound
- Tower-Editor
- Options (Einstellungen wie Auflösung, etc.)
- mehrere "Theme-Packs" für verschiedene Texturen
- viele neue Spielemente (Ideen gibt es schon einige)


Test-Version:
-------------

Eine Test-Version kann unter

http://www.tower-of-babel.info/temp/TestVersionen/Tob20041109-2219.rar

heruntergeladen werden (10MB). Eine LiesMich.txt mit der Beschreibung der ini-Datei und der Tastaturbelegung ist dabei.

ACHTUNG!! Bis jetzt wird noch kein Device/Focus-Lost behandelt, daher kein ALT+TAB-Test machen ;-)






Von SPech am 12.11.2004, 00:08:40 Uhr
Wo isn das Bild?

Auf deiner Webseite sieht das schonmal gut aus und die Beschreibung war auch mal schön ausführlich.

Von Seraph am 12.11.2004, 00:13:16 Uhr
Argh, ich glaub ich brauch mal Unterstützung. Hier ist es nun.

Von Patrick am 12.11.2004, 08:14:51 Uhr
Sieht gut aus, das muss man ganz klar sagen!

Keine DXUtils? Meinst Du damit das kein D3DX und co benutzt wird? Wie hast Du dann Shader realisiert?

- Patrick

Von Mayo am 12.11.2004, 08:29:37 Uhr
@Patrick: Jup, hab mich etwas unglücklich ausgedrückt. Also ich benutze keine D3DX und Co. Von den DXUtils benutze ich natürlich den VSA. Zum Laden der Meshes/Texturen/Shader benutze ich eigene Routinen (bis auf den Großteil der Texturen ist auch alles als Resource mit in die EXE eingebunden). Daher ist die EXE auch 14MB gross, aber evtl. werde ich die Meshes (etwa 2-3MB) und die 4MB GUI-Textur noch auslagern. Die eigentliche Textur-Bibliothek liegt als Datei vor und ist etwa 30MB groß.

Von Mayo am 12.11.2004, 08:55:34 Uhr
Ein Hinweis: Eine gute Beschreibung des Original-Spiels auf dem Amiga (in Englisch) findet sich unter

http://www.cornutopia.charitydays.co.uk/bytten/art008a.html

Daher sind alle Meshes auch Low-Poly (20-80 Polys), um die Ähnlichkeit zum Original zu bewahren.

Von Jürgen am 13.11.2004, 13:55:52 Uhr
Hab etwas mit der Test-Version rumgespielt und es sieht alles ganz gut aus.
Falls man das Programm mit einem Klick auf das kleine X beenden kann, dann geht das bei mir nicht, da bleibt das ganze Programm hängen. Mit ESC kann ich es normal beenden.

Von Mayo am 13.11.2004, 14:43:03 Uhr
@Jürgen: Danke für den Test. Das X hat auch noch keine Funktion, wird es aber noch. Sehe gerade, das X zeigt auf NULL!