[Projekt] Yet another Dungeon Crawler

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

[Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Yet another Dungeon Crawler

Spielidee
YAGC wird ein Dungeon Crawler im Sinne von Torchlight oder Diablo 1/2. Zufallsgenerierte Dungeons und Gegner-Grinden für casual Spielspaß.
Der Spieler selbst schlüpft in die Rolle eines gefallenen Magiers, der als Schatten seiner selbst in den Höhlen und Dungeons seiner Welt einen Sinn für seine Existenz sucht. Die primäre Art und Weise anzugreifen besteht hauptsächlich aus Zaubern.

Team und Motivation
Wir sind zwei Informatikstudenten, die sich dieses Projekt im Rahmen der Vorlesung "Game Programming" der RWTH Aachen als Praktikumsarbeit ausgesucht haben. Als Indie-Enthusiasten haben wir uns deswegen auch explizit dafür entschieden, den verlangten Rahmen des Projektes großzügig ausgeweitet zu interpretierien und dieses Spiel zu entwickeln.

Charakteristika
Da dieses Uni-Projekt hauptsächlich technischer Natur sein soll, konzentrieren wir uns auch zuerst auf technische Details und Aspekte und wenden uns erst danach den "soft-features" des Spiels (genügend Content, GUI etc.) zu, wenn noch Interesse besteht.
Ich arbeite deswegen momentan hauptsächlich an der Rendering-Engine, während mein Kommilitone sich der prozeduralen Dungeons angenommen hat.

Technische Details zur Rendering-Engine
(Ich beschreibe hier erstmal den aktuellen Stand der Rendering-Engine, mein Kommilitone wird später einen entsprechenden Abschnitt über den prozeduralen Teil hinzufügen)
Das Projekt muss unter Linux laufen und wird auf Windows entwickelt und unterstützt somit out-of-the-box diese beiden Betriebssysteme, aber ich bin relativ sicher, dass es sich dann mit relativ geringem Aufwand auch nach Mac portieren lässt. Wir benutzen OpenGL 3.3 Core, ohne deprecated functions. Sprache ist C++.
List of Features (fertige):
  • Deferred Shading für opaque Geometry
  • HDR mit Bloom
  • Parallax Mapping (ob sich Parallax Occlusion lohnt, weiß ich noch nicht)
  • verschiedene Beleuchtungsmodelle für Materialien
    • Standard Blinn-Phong für Kunststoffe
    • Cook-Torrance für Metalle
    • Oren-Nayar für Stein und andere rauhe Oberflächen
  • Partikelsysteme
    • Standard-Billboards per Geometry Shader
    • ...
Die Engine ist vom eigentlichen Spiel logisch entkoppelt, damit man diese wiederverwenden kann. (z. B. für CyberDive *g*)
balddenimhero
Beiträge: 7
Registriert: 03.11.2011, 19:33
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von balddenimhero »

Technische Details zu prozeduralem Inhalt
Da das ganze wie erwähnt ein Uni-Projekt ist, zielen wir darauf ab, möglichst viele Inhalte prozedural zu erstellen und dabei auch möglichst verschiedene Ansätze zu verwenden.
  • Welt-Generator (grid based)
    • Künstliche Dungeons (mit Ecken und harten Kanten) durch Verwendung vordefinierter Räume, aber zufälliger Lage und Verbindung
    • Natürliche Dungeons aka. Höhlen mittels zellulärer Automaten
    • Kombination beider Dungeontypen
    • Transformation der 2D-Gridbased Dungeons in 3D-Objekte
    • Erreichbarkeitsprüfung und generierte Ein-/Ausgänge zu nächster Ebene
  • Texturen
    • zelluläre
    • 'klassische' (Noise)
  • Doodads (z.B. Kristalle) lassen sich z.T. auch schön prozedural erstellen
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Hier einmal Gold mit den verschiedenen Beleuchtungsmodellen:
Plastik-Gold (aka Blinn-Phong):
Gold in Blinn-Phong (Plastik)
Gold in Blinn-Phong (Plastik)

Metall-Gold (aka Cook-Torrance):
Gold in Cook-Torrance (Metall)
Gold in Cook-Torrance (Metall)
Stein-Gold (aka Oren-Nayar):
Gold in Oren-Nayar (Stein)
Gold in Oren-Nayar (Stein)

Stört euch nicht an dem Leuchten in den Kanten, das sind Artefakte aus dem Parallax Mapping, die ich noch nicht beseitigt habe
Zuletzt geändert von Artificial Mind am 07.11.2011, 23:03, insgesamt 2-mal geändert.
Benutzeravatar
Jeason
Beiträge: 41
Registriert: 07.09.2010, 22:58

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Jeason »

Sieht cool aus :D Ich arbeite mich auch gerade in OpenGL 3.x 3D Rendering ein ohne deprecated functions. Wo hast du die Infos her wie z.b. Deferred Shading mit OpenGL funktioniert? Hattest du da irgendwelche Tutorials oder hast du einfach nur die Paper gelesen?
Ich verkaufe diese feinen Lederjacken.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Ich weiß wie Deferred Shading in der Theorie funktioniert und dann hab ich es einfach angewandt. Man braucht am besten Multiple Render Targets und einen eigenes Framebuffer Object und dann ist man schon nahezu fertig. MRT für OGL 3.3 war allerdings nicht ganz einfach zu finden. Guck dir einfach mal die Funktionen glBindFramebuffer, glActiveTexture, glDrawBuffers an, das sind so die wichtigsten, die man für DS in OGL braucht.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Hier einmal eine Steintextur mit kleinen Goldadern. Sobald die Cellular Textures vernünftig funktionieren, sollte ich auch bessere Steintexturen erzeugen können.
Stein mit Goldadern
Stein mit Goldadern
balddenimhero
Beiträge: 7
Registriert: 03.11.2011, 19:33
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von balddenimhero »

Ein künstlicher Dungeon wie er im Grundriss generiert wurde. Sobald der Dungeon Generator an sich fertig ist, gibts das ganze in 3D. Dann wohl auch gleich mit den oben erwähnten Steintexturen ;)

edit: Wird im showroom nicht angezeigt, da ich nicht Threadersteller bin ... :'(
Zuletzt geändert von balddenimhero am 04.11.2011, 14:59, insgesamt 1-mal geändert.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Und hier das Bild dazu:
Beispielhafter Grundriss eines Dungeons
Beispielhafter Grundriss eines Dungeons
kristof
Beiträge: 92
Registriert: 19.01.2009, 13:05

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von kristof »

Na das klingt ja mal nach einem spannenden Uni-Projekt. Wisst ihr ob es die Vorlesung auch für uns E-Techniker/Technische Informatiker gibt? ;)
Auf was zielt denn die Aufgabenstellung ab wenn du sagst, dass ihr das "großzügig ausweitet"?
Noch ein kleiner Hinweis: Falls ihr wirklich vor habt das auch mal für den Mac zu portieren solltet ihr beachten, dass Lion OpenGL momentan nur bis zur Version 3.2 unterstützt. Ich weiss aber grad auch nicht wie viel sich da geändert hat.
Viel Spass mit dem Projekt!
Benutzeravatar
joeydee
Establishment
Beiträge: 1085
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von joeydee »

Welcher Algorithmus steckt denn hinter dem Generieren des Dungeons?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

@kristof:
Also das ist die Seite vom Lehrstuhl: http://www.graphics.rwth-aachen.de/index.php?id=407
Wir haben mindestens einen Master Elektrotechnik (Richtung TI) Studenten in der Vorlesung, also scheint das zu funktionieren ;)
Die Aufgabenstellung sieht - soweit ich das verstanden habe - erstmal nur vor, dass man sich einen coolen Grafikeffekt seiner Wahl aussucht und diesen implementiert. Alles Weitergehende ist erlaubt und gern gesehen, aber nicht verlangt.
Zu Mac OS: Ich weiß nicht genau was 3.3 kann, 3.2 aber nicht und im Endeffekt hat Mac auch keine allzu hohe Priorität, es wäre halt nett, wenns klappt.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2258
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Zudomon »

Warum sind die Texturen alle so "verpixelt"?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Weil ich im Debug Modus nur 256x256 Texturen ohne multisampling erstelle ;)

Edit: oder meinst du die "Bumps"? Die sind absichtlich^^
Benutzeravatar
Zudomon
Establishment
Beiträge: 2258
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Zudomon »

Es sieht fast aus, wie Pointfiltering, allerdings weicher: Als ob man eine 64x64 auf 256x256 per Pointsampling hochskalliert und dann Linear anzeigt.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

So haben wir grad per ICQ geklärt: das sind Artefakte weil sich an den Grenzen das Beleuchtungsmodell ändert und ich momentan noch nicht eingebaut habe, dass zwei Beleuchtungsmodelle übergeblendet werden (aka halbe Performance). Mal gucken wie man das später vernünftig retuschieren kann ;)
Benutzeravatar
mnemonix
Establishment
Beiträge: 101
Registriert: 09.04.2010, 20:38

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von mnemonix »

Sieht schon ziemlich cool aus das Material. Bin mal gespannt, wie das Spiel am Ende aussieht.

Hier noch zwei kleine Fragen:
Erstellt und verwaltet ihr euren eigenen OpenGL Context (inkl. Fenster Verwaltung) für beide Plattformen (Windows, Linux) oder benutzt ihr dafür eine 3rd Party Bibliothek wie SDL, GLFW, Qt, etc.? Welche Art von zelluläre Automaten nutzt ihr für die Erstellung der Dungeons?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

wir benutzen GLFW fürs Fenster/Inputmanagement, GL3W für die extensions und GLM für Vektor/Matrixarithmetik.
Wenn mein Kommilitone Morgen Zeit findet, schreibt er sicher was über die Automaten ;)
balddenimhero
Beiträge: 7
Registriert: 03.11.2011, 19:33
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von balddenimhero »

joeydee hat geschrieben:Welcher Algorithmus steckt denn hinter dem Generieren des Dungeons?
Input für den Algo:
  • ein paar vordefinierte Räume
  • Dimensionen des Dungeons
  • maximale Korridorlänge
  • Min. Abstand um Räume für Korridore
Generierung läuft dann so:
  • Räume zeilenweise mit zufälliger Verschiebung in die Map einfügen (so viele wie passen)
  • Zugangspunke zufällig für Korridorverbindung auswählen
  • Per Floodfill kürzeste Wege zwischen Zugangspunkten finden
  • Zufällig kürzeste Wege auswählen und Korridore entsprechend legen
  • Auf Erreichbarkeit testen und wenns nicht anders geht neu generieren
mnemonix hat geschrieben:Welche Art von zelluläre Automaten nutzt ihr für die Erstellung der Dungeons?
Das ist noch nicht fix, da die natürlichen Dungeons noch nicht fertig sind ;) .. Die künstlichen werden wie oben beschrieben erzeugt.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Cellular Texture mit Gold-Weiß-Mischung:
Cellular Texture - Gold
Cellular Texture - Gold

Cellular Texture mit verschiedenen metallischen Edelsteinen:
Cellular Texture - Mixed Metal Gems
Cellular Texture - Mixed Metal Gems
Zuletzt geändert von Artificial Mind am 07.11.2011, 23:03, insgesamt 1-mal geändert.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Transparente Geometry und Distortion (echte Refraction kommt noch):
Transparent Distortion
Transparent Distortion
starvald
Beiträge: 31
Registriert: 16.04.2010, 17:20
Wohnort: Heppenheim

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von starvald »

Ich raff' das letzte Bild nicht. Irgendwie kommt da die Distortion (räumlich?) nicht rüber. Ansonsten sieht das sehr, sehr geil aus!

Wie willst du "echte" Refraction umsetzen? Ich frage, da ich mich selbst mal damit beschäftigt habe: http://www.youtube.com/user/starvald?fe ... K7byxz-40M

Der Effekt im Video ist übr. rein Shaderbasiert (SM 3.0)

Gruß,
Nick
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Ja ich weiß was du meinst, der Eindruck geht irgendwie bei einem stillen Bild verloren... Distortion sollte auch nicht für Glas, sondern eher für Hitzeflimmern benutzt werden. Refraction will ich auch einfach per Post-Effect faken, ungefähr so: http://www.youtube.com/watch?v=57zr1vfU ... re=related

Momentan versuche ich multiple Distortion vernünftig zu faken, ohne pro "Layer" ein Pass zu machen, dann kann ich mit meiner Partikelengine Hitzeflimmern simulieren.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

So jetzt funktioniert multiple Distortion vernünftig. Transparente Geometry wird noch etwas hacky zusammengeblendet, das muss ich noch ändern.
Dies ist jetzt ein Screen, der hoffentlich den räumlichen Eindruck erhält und Hitzeflimmern, sowie das grüne Glas zeigt:
Hitzeflimmern und billige Rauch-Sprites ;)
Hitzeflimmern und billige Rauch-Sprites ;)
Alexander Kornrumpf
Moderator
Beiträge: 2134
Registriert: 25.02.2009, 13:37

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Alexander Kornrumpf »

Also für meine Begriffe sieht das "metal mixed gems" viel mehr nach Kirchenfenster (aka Glas) aus als das grüne Bundeswehr Tarnmuster dass anscheinen Glas darstellen soll :P
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Ja das habe ich auf dieser Cellular Texture auch schon bemerkt. Das grüne "Glas" ist auch noch kein wirkliches Refraction sondern Distortion, also Blickwinkel- und Tiefenunabhängig.
Ich finde aber, die Goldadern auf der einen Steintextur sahen recht gut nach Metall aus. Von diesen "Adernbildern" habe ich noch zwei, die schon mehr nach Metall aussehen (obwohls eher Edelsteine sind):
Emerald Adern
Emerald Adern
Türkis Adern
Türkis Adern
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

So, Marching Cubes!
(Vielen Dank dabei an Cat, der einen exzellenten Artikel über Marching Cubes Optimierung geschrieben hat ;) )
Ich muss mir "nur" noch einen guten Plan ausdenken, wie ich die Normalen vernünftig berechne (momentan hat das noch einige Probleme), dann die Tangenten und dann einen guten Mechanismus zum Textur-Generieren.
Marching Cubes
Marching Cubes
Grid Resolution: 128³
Benutzeravatar
mnemonix
Establishment
Beiträge: 101
Registriert: 09.04.2010, 20:38

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von mnemonix »

Sieht lustig aus, aber für welche Zwecke wollt ihr den Marching Cubes Algorithmus später verwenden? Was soll das auf dem Bild darstellen und wie hast du es generiert?
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Artificial Mind »

Das auf dem Bild ist nur simples fraktales Perlin-Noise als Density für den Marching Cubes mit nem linearen Falloff auf der Y-Achse (oben), einfach um zu testen, ob der Algorithmus funktioniert.

Verwenden wollen wir ihn für die natürlichen Höhlen. Anstatt die Geometrie direkt zu modellieren - so stell ich mir das vor - wird "einfach" eine interessante, komplexe Dichte-Funktion erstellt, die hauptsächlich erstmal die Form, die wir gitterförmig bilden, nachbilden soll. Sekundär wird dann entsprechendes Noise draufaddiert, welches dann für Stalagmiten/titen, steinige Oberflächen, Säulen etc. sorgt/sorgen soll. Die genauen Details müssen noch ausgearbeitet werden, aber Marching Cubes ist als Engine-Feature auch ganz nett ;)
Benutzeravatar
Zudomon
Establishment
Beiträge: 2258
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Zudomon »

Ach, wie gern ich das auch so in SQ machen würde... aber ich befürchte, dass das alles zu langsam würde, wenn ich da Anfange, mehr als ein Voxel pro Meter zu nehmen.
Ich bin aber mal gespannt, wie das bei euch am Ende aussieht. Aber nicht, dass ihr mich zu Eifersüchtig macht und ich dann doch wirklich noch bei mir umbauen muss... ;)

Zu den glitzer Shadern hatte ich dich glaub ich nur im ICQ gelobt... also hier nochmal offiziell, das sieht echt geil aus! Nur musst du dir noch was wegen den Quadratpixeln einfallen lassen... zur Not dann wirklich beides berechnen und lerpen. Sollte doch eigentlich garnicht so viel ausmachen, oder wirst du pro Fläche mehr als zwei Materialien haben?
Oder du könntest auch das Objekt in 3 Submeshes unterteilen und dann nur die, wo beide Materialien gleichzeitig sind mit dem teuren Shader berechnen.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2516
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Yet another Dungeon Crawler

Beitrag von Jonathan »

Artificial Mind hat geschrieben:wir benutzen GLFW fürs Fenster/Inputmanagement, GL3W für die extensions und GLM für Vektor/Matrixarithmetik.
Wie zufrieden seit ihr mit GLM? Ich habe mir die Seite (http://glm.g-truc.net/ , stimmt doch, oder) mal angeschaut, es sieht ja ansich recht überzeugend aus.Jedenfalls besser als etwas selbstgeschriebenes und gute OpenGL Anbindung hat ja auch immer etwas für sich. Kann es das halten, was es verspricht?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten