Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

1

06.02.2011, 16:14

Indoor Engine

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.

Noodle

unregistriert

2

07.02.2011, 19:45

Die Website ist schonmal sehr hübsch anzusehen ^^ und die Idee mit der Indoor Engine ist meiner Meinung nach auch ok, aber kann man die Frameworks nicht irgendwie integrieren? Ich habe keine Lust danach zu suchen xD

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

3

07.02.2011, 20:01

Ja stimmt da gebe ich dir recht ^^.
Also das TAO-Framework findest du unter hier
und das .Netframework für 32Bit findest du hier und für 64Bit hier .

Ich werde mich morgen mal schlau machen ob ich die Links einach so auf meine Website setzen darf.
Wenn ja werd ich das natürlich nachholen. Ich werde warscheinlich morgen eine neue Version hochladen.
Da sind dann ein paar Sachen ausgemerzt. Unter anderem der Fehler mit der Maus, ausserdem läuft das Programm dann im Fullscreen. Ich werd dann hier bescheid geben wenn es soweit ist.

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

4

07.02.2011, 20:07

hmm wenn ich die die Indoor Engine loaden will dann komme ich auf ne fehlerhafte Seite oder die Seite existiert nicht
New Project: Operation CityRacer

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

5

07.02.2011, 20:13

So Linkfehler behoben ich hatte gestern nachträglich den ordner namen geändert gehabt und habe nicht dran gedacht den Link abzuändern.

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

6

08.02.2011, 20:02

Ab jetzt gibt es die neue Version 0.1.1 meiner Indoor Engine.
Die Anwendung läuft nun im Fullscreenmodus und die Mauskalibrierung konnte entfernt werden.
Ausserdem kommt man mit Escape nun in den Pausenmodus.

Ihr findet nun auch das TAO-Framework auf meiner Seite und ausserdem habe ich euch auf der Downloadseite die beiden Links für das .Net-Framework für 32- sowie 64Bit platziert.
Viel Spass damit

7

08.02.2011, 20:33

Hast Du eigentlich auch vor ein Spiel zu schreiben bzw. entwickelst damit ein kleines Spiel? Du schreibst zwar, dass Du die Engine entwickelst, damit Du all deine Kenntnisse unter einen Hut bringst, aber wer weiß... ;)

Ansonsten sieht das ganze schon mal ziemlich gut aus (und hört sich auch gut an). Mit Bump-Mapping und 'ner schönen Lichtszene dürfte das einiges hermachen. Das einzige was mich "gestört" hat war, dass man mit der Kamera einfach aus dem Rausgehen kann, aber gut, ist ja auch kein großes "Problem". Lief auf meinem Rechner übrigens auch einwandfrei.

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

8

08.02.2011, 20:57

Hm naja so ein paar Ideen habe ich schon die da in meinem Hirn rumgeistern aber spruchreif ist das noch nicht. Klar wer träumt denn nicht davon irgendwann mal ein schönes selbst entwickeltes Spiel in den Händen zu halten. Auch ich träume ab und zu davon. Aber momentan habe ich einfach noch kein ausgereiftes Konzept. Es gibt zwar schon erste Ideen zu einer Story und wie sich das Spiel spielen könnte,
aber das muss noch reifen. Und solange ich noch kein Konzept habe Spiele ich ein bisschen so rum.
Schau was geht und was ich umsetzen könnte. Auch ich war mal in der Fase der Großen Projekte ^^.
Aber ich "versuche" das ganze realistischer anzugehen.

Ich hatte letztens ne Idee für ein einfaches Spiel.
Es sollte 99 Buttons heissen.
Der Spieler rennt durch eine Welt und muss die 10 richtigen Buttons von insgesamt 99 drücken.
Dabei kann er nur raten welche die richtigen sind. drückt er einen falschen gehts von vorn los^^.
Die Buttons werden dann wieder gemischt.
Für die Aufgabe hat er ein Zeitlimit von 10 Minuten.

Halt nur was für solche Freaks die CS auch mit Lenkrad spielen würden XD

Immerhin fehlt mir da nur noch eine Interaktion mit Objekten und sowas hate ich testweise schon mal gemacht.

Zur Kamera: Das die Kamera aus der Welt schwenken kann find ich auch nicht gut und muss noch geändert werden. Aber erstmal gibt es andere Sachen zu tun. So haben sich bei diesem ersten Versuch noch einige Anforderungen für den Indoor Algoryhtmus aufgetan die ich jetz überarbeiten will.

Insgesamt ist da noch viel zu tun. Da wäre zum Beispiel ein eingenes Binär-Dateiformat für Modelle.
Ist schneller als aus zu OBJ parsen. Oder das Dynamische nachladen von Modellen und Texturen ist auch noch ein wichtiger Punkt besonders bei größeren Leveln.
Ausserdem ist die ganze Engine noch recht schwerfällig zu bedienen.
Da würde sich zum beispiel ein Editor für die Welt gut machen. In diesem Fall habe ich die benötigten Daten noch von Hand eingegeben. Ich sag lieber nicht wie lange das gedauert hat mit ner Stunde bisste nicht dabei.

Aber ma gucken wenn es weiter gut voran geht muss ich mal schauen ob sich ein 1, 2 Interressenten finden die an dem Ding mitarbeiten möchten.

Mal gucken wie es weiter geht...

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

9

08.06.2011, 11:18

Hallo Leute,
ich wollte mich mal wieder melden und erzählen was ich so seit meinem letzen Post gemacht habe...

Seit meinem letzten Post war ich nich ganz untätig und habe fleissig weiterentwickelt...
Leider hat sich gezeigt das das alte Programm doch sehr schlecht gestrickt war und so nur schwer zu erweitern gewesen wäre...
Insgesamt war der Code doch ein riesen Durcheinander. So war zum Beispiel die Spielsteuerung irgendwo mit in der Zeichenroutine untergebracht und vom Übergeben der Daten an die Engine rede ich gar nicht erst.

Kurz nach der Veröffentlichung habe ich mir Gedanken zur Bedienung der Engine gemacht. Ich wollte erreichen das man den Gamekontent einfacher einflegen kann und dabei möglichst wenig den Sourcecode der Engine anfassen muss. Also kam ich auf die Idee eine Scriptsprache zu implementieren. Dabei stellte sich jedoch heraus das die alte Struktur für solche Zwecke zum großteil nicht zu gebrauchen war.
Also habe ich begonnen Ordnung zu schaffen.

Dabei habe ich nun das Zeichnen , das Laden von Daten, das Handling von Mouse und Tastatur, und den Gamekontent seperat gehalten.
Der Stand ist nun das eine grobe Struktur steht.
Die Renderengine ist nun so gestrickt dass sie wirklcih nur noch das Zeichnen übernimmt.
Sie bekommt von aussen GraphicObjects zugeschmissen guckt um was für einen Typ es sich handelt, ob es ein Punkt eine Linie oder ein komplexes Modell ist und zeichnet es.
Der Stand ist nun soweit das Ich Punkte, Punktwolken, Linien, Sprites , Modelle und Modellgruppen zeichnen kann. Alle diese sind vom Typ GraphicObject abgeleitet welches eine ID, die Position die Rotation, die Skallierung, ein MaterialObject sowie ein ShaderObject besitzt.
Der Renderer guckt nur nach was genau es ist und handelt dem entsprechend.
Momentan Arbeite ich intensiv an der Implementierung von GLSL und habe gestern Abend meinen ersten Shader fertiggestellt. In dem Habe ich die Beleuchtung ein wenig aufgebohrt und er kann nun Per Pixel Lighting sowie Bumpmapping.

Die Arbeit am Renderer geht jetzt vorerst aufs Ende zu. Die wichtigsten Sachen sind Implementiert danach will ich mich um die Einbindung von Lua script kümmern.
Ausserdem tüfftel ich Momentan an einem Spielkonzept welches aber noch nicht Spruchreif ist.
Im bereich der Animation hat sich auch schon was getan aber auch da ist noch viel zu Arbeit zu investieren.

Als kleines Bonbon hier ein, zwei Screenshots von einem halben aufgeschnittenen Würfel der mit Riffelblechbumpmapping versehn ist und von einem Spotlight beleuchtet wird. Der Rote Punkt ist übrigens die Lichtquelle.
»botlin« hat folgende Bilder angehängt:
  • Screen1.jpg
  • Screen2.jpg

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

10

08.06.2011, 22:47

Wie kommt es dass du das Tao-Framework benutzt und nicht OpenTK? Immerhin wird Tao nicht mehr weiter entwickelt.

Werbeanzeige