.tankCommander

September 2005
zurück
Es handelt sich um meine erste einfache 3D Engine überhaupt und basiert auf auf OpenGL ab Version 1.2.
Entwiklungsumgebung ist die Borland IDE, Compiler Delphi (Enterprise 5.62)

Kern der Anwendung ist eine 32 bit Windows Executable mit Event und Message Dispatcher.
Da ich natürlich kein Profi bzw. Assembler-Code-Tuner bin, wird das Spiel wohl mindestens einen 1.5 Ghz Prozessor und eine solide Grafikkarte benötigen :) dennoch bin ich mit den aktuellen Ergebnissen sehr zufrieden, da der Core schon stabil läuft und ich endlich mal eine Menge Themengebiete aus dem Studium aktiv angewandt habe.

Anderen Programmierern kann ich bis jetzt nur positives berichten. Man lernt relativ gut sich in neue Konzepte wie die "State Machine" OpenGL einzuarbeiten, trainiert verschiedene Grafik-und Sound Techniken, Buffer-Programmierung und Sorting Probleme.
Als Basis meiner Sound Engine verwende ich die FMOD.DLL, die ich im übrigen wohl ab jetzt immer verwenden werde. FMOD ist sehr sauber gegliedert und gut strukturiert.

Die Kernprobleme als Anfänger waren im wesentlichen die Grafikdcodierung, die Texturaufbereitung im Speicher (Einrechnen des Alphakanals), die Konstruktion einer halbwegs verständlichen Gameloop, die Collisiondetection (habe mich im Übrigen für einfache Bounding Spheres entschieden, da eine gut platzierte Halbkugel auch oft einen akzeptablen Verschnitt erzeugt) sowie der eigentliche Grafik-Renderer mit Tiefensortierung.

Erste Ergebnisse sind wie gesagt schon greifbar, dennoch möchte ich trotz des "Programmieren-Übens" auch den spannenden Teil der "Spiele-Entwicklung" etwas ausloten... immerhin sind Semesterferien und ich habe ein wenig Freizeit.

Ich möchte noch einige Textursets hinzufügen und auch eine kleine Missionskette implementieren, evtl. ein paar "Engine-Movies" scripten...
Wie gesagt ist das ganze begrenzt durch die Semesterferien, spätestens dann werde ich irgendetwas "releasen".

Nachtrag: Heute ist der 8. September und ich habe die nächste Zeit verschiedene andere Dinge zu erledigen. Aus diesem Grund veröffentliche ich die aktuelle Version hier:

Die Spielengine ist bis auf ein paar Kleinigkeiten soweit fetig. Lediglich die Missionen müssten noch implementiert werden. Ich denke ich werde - sobald ich Zeit habe - anfangen eine größer angelegte, saubere OpenGL-3D Engine programmieren. Die Ergebnisse gefallen mir bis hierher für eine erste Engine ganz gut. Was sich langsam als störend herausstellt ist die zu kurz gedachte schnelle Entwicklung ohne Quad- oder Octtrees, sowie eine etwas unausgereifte Vererbungshierarchie - Asche auf mein Haupt, aber ich hätte mir da doch etwas mehr Zeit nehmen sollen. Andererseits bin ich nicht davon ausgegangen, daß aus meinen ersten Versuchen doch ein Spielchen wird...
Egal wie, etwas Resonanz und ein paar Zeilen zu dem Thema wären nett :) viel Spass beim experimentieren bzw. "anspielen".

 
 
Selbstentpackende EXE, Virengeprüft (ca. 10 MB)
 
 

History: Start: 22 August 2005

Montag:
OpenGL Engine meines alten Partikel Projekts ausgegraben und auf das wesentliche reduziert. Die Fragmente geordnet nach OpenGL "Overhead", den FMOD Routinen und der eigentlichen Mainloop bzw. dem Rendering.

Dienstag:
Partikel an ein Explosionsobjekt gekoppelt und Optik auf geringe Partikelanzahlen optimiert um schnellere Rendering Ergebnisse in einem Spiel erreichen zu können. Skybox implementiert. Skybox überarbeitet. Groundlevel mit einer flachen Ebene implementiert. Einfache Pflanzen.

Mittwoch:
Kamerasteuerung und Koordinatenkorrekturen. Explosionen an Kanonenkugeln gekoppelt. "Schwerkraftgesetze" und so etwas Physik implementiert. Einfachen "Panzer" implementiert. Steuerung für Unterteil und Kanzel des Panzers sowie die Kanone selbst getrennt steuerbar.

Donnerstag:
Algorithmus zur Tiefensortierung beim Rendern der Objekte. Soundeffekte implementiert, Entfernungberechnungen und Lautstärkeanpassung. Statusflags für Leben und Ladezeiten implementiet. Einfache AI entwickelt und an die Panzer Objekte gekoppelt.

Freitag:
Panzer "dupliziert", Waypoint, Protect, Follow und Attack Modes in die verbesserte AI eingebracht. Weltkonstanten geeicht und Schussbahnen interpoliert. Keyhandler überarbeitet in Realtime-Synchrone und asynchrone Events. Neustrukturierung des Codes/Klassendefinitionen überarbeitet.

Samstag:
Distanzberechnungsroutinen überarbeitet. HUD gestaltet und implementiert. Wiedergabe der Backgroundmusik (MP3's) Debugged. Farbcodes für Teams. KI Verbesserungen, Angriffsmodi und Befehlsausführungen. Einfache Kollisionserkennung über Bounding Spheres implementiert. Target-Mode zum Markieren von gegnerischen Objekten. ThirdPerson Following Camera mit geglätteter Flugbahn. Proportionen der Modelle überarbeitet.

Sonntag:
Menü + Menüführung, Initialisierungsprozeduren überarbeitet und modularisiert, verschiedene "Skins" bzw Textursets entworfen und gerendert (Midearth, Mountain, Desert, Ice, Canyon)

Montag:
Menü fertig gebaut, Screenmodi Unterstützung aller gängigen Auflösungen von von 640x480 16 bit bis 1600x1200 32 bit. Datenhaltung über Konfigurationsfile. Kartenvergrößerung: "Pseudo-"Unendliche Karten

Dienstag:
Intro, Intro-Script, Sounds und Grafiken überarbeitet, Menüarbeiten, Specialeffects-Engine Erweitert. Mündungsfeuer implementiert. Neue Skybox-Skins (Brownie, Darkworld, Darkdesert, Island)

Mittwoch:
Kleinere Änderungen an der Partikelengine, Einige Umstrukturierungen der Objektatribute. Framework des Einsatzmenüs für Briefing (Hintergrundinformationen, Missionsziele, Aufklärung, Panzereinstellungen, Bewaffnung) Missions und Menüsystem verknüpft, Optimierung der Verkettung von Menü und Game/Render Modus. InGame Level/Triggersystem

Donnerstag:
-

Freitag:
-

Samstag:
Game Menü optimiert, Videomodi im laufenden Spiel ändern, Soundsettings im laufenden Spiel ändern, Vorbesprechung und Nachbesprechung (allgemeine Funktionen) + Trainingslevel 1 gebaut. Setings in Conf. Datei speichern

Sonntag:
TargetMarker Weitsicht und HUD sowie WaypointerSystem in Weitsicht und HUD Version implementiert. ThirdPerson Cam Debugged. Bereit für die ersten Level. Trainingslevel 2 gebaut.

Montag:
ObjektFadeIn auf große Distanzen, Vegetation wiederholt sich ebenfalls in großen Welten, TargetMarker zeigt weitere Informationen an. AI FloatingPoint Ungenauigkeiten behoben. Trainingslevel 3 gebaut. Scripting der Camera erweitert. Explosionssystem der Projektile erweitert. MG implementiert. Nebel + Nachteinsatz implementiert. Nachtsichtgerät. Trainingslevel 3 + 4.

Dienstag:
Dienstag: "Physikalische" Konstanten austariert, Panzerung vs. Geschwindigkeit einstellbar Trainingslevel 5 angefangen

Mittwoch:
AI verbessert, AI Schussweite auf 250 Längeneinheiten ausgeweitet, AI-MG eingbaut Trainingslevel 5+6 fertiggebaut, neue Variablen und Konstanten um AI Schwierigkeit zu beeinflussen. ArcadeMode in die LevelEvent Routine integriert. Diverse Verhaltensbugs der AI behoben. ScoringSystem eingeführt. Zuordnung von Schuss zu Urheber. "Logging-Modul" (Textdatei)

Donnerstag:
Fertigstellung der Demo, Diverse Kleinigkeiten.

Neue Screen Shots mit den Nebel/Nachteffekten:


zurück