Hi Leute,
heute möchte ich meine Premiere in diesem Bereich des Forums feiern und euch daran teilhaben lassen.
Ich möchte euch heute ein kleines Projekt vorstellen an dem ich in letzter Zeit etwas gewerkelt habe. Es handelt sich um eine Indoor-Engine. Es gibt zwar noch sehr viel zu tun, was ich gar nicht bestreite, aber ich konnte einfach nicht länger abwarten und wollte nun mal ein paar erste Ergebnisse zeigen bevor ich mit der nächstgrößeren Erweiterung beginne.
Ziel meines Projektes ist eigentlich alle meine Erkenntnisse mal unter einem Hut zu bringen.
Ich habe bereits viel probiert. Habe mich mit dem Rendern großer Außenlandschaften befasst,
mit Animation von Modellen und diversen Spezialeffekten.
Das Programm ist in C# geschrieben und verwendet als grafische Schnittstele OpenGL, welches ich mit dem Tao-Framework bereitstelle.
Für die Modelle habe ich das OBJ-Format verwendet und alle Modelle mit Blender erstellt.
Die 2 Texturen sind im PNG-Format.
Wundert euch bitte nicht warum ich nur 2 Texturen verwende. Ich habe mich zum Großteil auf die Programmierung gestürzt und die Modelle sind daher recht einfach gehalten.
Was kann meine kleines Programm?
Steuerung:
- man kann die Spielfigur (kleiner bunter Klotz) mit W,A,S,D durch die Welt bewegen.
- mit Y legt sich der Klotz flach auf den Boden und steht auch wieder auf
- mit „Ende“ lässt sich das Programm beenden
- mit dem Mausrad kann man die Kamera dichter an die Figur bewegen bis diese in die Egoperspektive umspringt
Details zu Szenerie:
- die Szene ist in einzelne Sektoren und Modellsegmente aufgeteilt
- es wird zur Laufzeit über Frustum-Culling und Oclusion-Culling geprüft, ob ein Sektor gezeichnet werden muss oder nicht
- alle Modelle werden mit Hilfe von glDrawElements gezeichnet
- es ist ein Textur-Manager enthalten, welcher sich um das Laden und das Löschen von Texturen kümmert
- es erfolgt über vereinfachte Kollisionsmodelle eine Kollisionsprüfung zwischen der Umgebung und der Figur
- die Figur erkennt das Höhenniveau des Bodens und der Decke. So lassen sich auch Bereiche erstellen in denen man sich nur liegend fortbewegen kann
Sonstiges:
[list]
- alle Schriftzüge wurden mit einer selbstgeschriebenen Fontklasse und Sprites umgesetzt
- der Font kommt aus einer Grafik, die einen Zeichensatz beinhaltet
- je nach Zeichen wird der passende Grafikbereich als Textur auf ein Sprite gemapt
[/list] Das Ganze soll in Zukunft noch erweitert werden. Ich denke da etwa an eine Möglichkeit mit diversen Objekten zu interagieren. Eine andere mögliche Erweiterung ist auch Bumpmapping, was ich in klein bereits erfolgreich probiert habe.
Eine etwas größere Erweiterung wäre dann skeletal animierte Modelle, was ich ebenfalls bereits erfolgreich ausprobiert habe. Allerdings ist dort noch deutlicher Besserungsbedarf was die Performance betrifft.
Für alle, die die Software gern selbst mal ausprobieren möchten, empfehle ich meine Website.
www.gamecodedeveloping.de
Dort findet ihr im Downloadbereich den Link "Download Indoor Engine".
Ihr benötigt 2 Sachen:
- Tao-Framwork 2.1
- .Net Framework 2.0
Ich habe vor kurzem erst festgestellt, dass es bei verschiedenen Monitorgrößen Probleme mit der Maus geben kann. Dies äußert sich darin, dass sich die Kamera nicht richtig rotieren lässt bzw. von allein rotiert.
Deshalb führe ich zu Beginn eine Kalibrierung durch. Die Maus sollte dabei nicht bewegt werden bis der Schriftzug im Bild verschwindet. Dauert ca 2-5 Sekunden.
Ach übrigens: Die Website ist noch nicht lange online und ich bin noch recht neu auf dem Bereich PHP. Sollten euch irgendwelche Fehler unterkommen, schreibt mir doch bitte damit ich sie beheben kann.
Das Gleiche gilt natürlich auch für die Software.