Grafikstiel von Might & Magic Dungeon Master und Co.



  • Hallo zusammen
    Es gibt da etwas, das mich schon immer interessierte: Wie sind eigentlich die Grafikengines der alten Might & Magic, Dungeon Master, Eye of the beholder usw. aufgebaut? Wird da effektiv die Scene in 3D gerechnet, oder wird da getrickst und falls, wie?

    Mfg Ishlidur


  • Mod

    wenn du hier mal ein paar screens verlinkt und genauer sagst was du meinst, koennte ich es dir vielleicht beantworten 😉



  • Diese Engines sind definitiv keine 3D, sondern reine 2D-Engines. Durch geschicktes Verwendung vorgezeichneter Bilder wird aber der Effekt von 3 Dimensionen erzielt, d.h. man kann vorwärts, rückwärts, links und rechts gehen und sieht immer perspektivisch richtige Bilder.

    @rapso:
    http://www.gamasutra.com/features/20070223b/Eye of the Beholder (DOS).jpg
    Da, das Bild sollte selbsterklärend sein 🙂
    Achtung, die Forensoftware schneidet den Link vor der Klammer ab.



  • @mad_martin
    Genau sowas habe ich gemeint! Gibt es einen Namen für diese Art der visuellen Umsetzung oder vielleicht sogar bekannte Tutorials dafür? Ich interessiere mich dafür in Bezug auf die Entwicklung eine Handyspiels!

    Ein ganz herzliches Dankeschön bereits!


  • Mod

    raycasting is unter anderem der name des verfahrens dass du suchst

    http://de.wikipedia.org/wiki/Raycasting



  • @rapso
    Ich glaube, dass was ich meine, ist nicht raycasting...
    Bei den von mir erwähnten Spielen kann man sich nur in jeweils 90° Schritten drehen und sich immer nur um ein Ganzen Feld nach Norder, Süden, Osten oder Westen drehen! Andere Dreharten waren nicht möglich!

    Das Raycasting konnte dann eigentlich bereits viel mehr!



  • Puh, einen Namen dafür hab ich noch nie gesehen und auch Tutorials kenne ich keine. Das einzige, was dir weiterhelfen könnte, wäre folgende Seite:
    http://www.eob2remake.com

    Das ist ein Projekt, um eine neue Engine für Eye of the Beholder 2 zu schreiben, basierend auf SDL, wegen der Platformunabhängigkeit. Da gibts zum einen den Source zum Download - den könntest du dir für Inspiration ansehen - und zum anderen im Forum einige interessante Beiträge. Insbesondere im Teil "General" gibts den Thread "I am also create my own Eye of the Beholder remake...", der interessant sein könnte.

    Viel Erfolg! Und lass mal was von den Ergebnissen hören 🙂

    gruß
    Martin



  • Ist die Bewegung zwischen 2 Feldern flüssig oder kommt das neue Bild auf einen Schlag?



  • Das neue Bild kommt jeweils auf einen Schlag. Man bewegt sich schrittweise und in festen Bewegungseinheiten.


  • Mod

    Ishildur schrieb:

    @rapso
    Bei den von mir erwähnten Spielen kann man sich nur in jeweils 90° Schritten drehen und sich immer nur um ein Ganzen Feld nach Norder, Süden, Osten oder Westen drehen! Andere Dreharten waren nicht möglich!

    konnte ich aus dem screen so nicht entnehmen 😞

    st die Bewegung zwischen 2 Feldern flüssig oder kommt das neue Bild auf einen Schlag?

    ich glaube 'schlag'.

    hab sowas mal auf dem NES gemacht gehabt.

    das ganze ist sehr sehr simpel. du hast einfach nur ein set aus vorgerenderten bildern. dabei kannst du sie fuer rechts/links spiegeln.
    das set besteht aus jeweils 2bildern pro entfernung (es ist schwer das anders zu sagen). ein bild zeigt eine solide wand, ein bild zeigt einen gang.

    nun gehst du einfach geradeaus (vom spieler gesehen) das 2d array durch und zeichnest, falls es keinen weg nach links gibt, das bild mit der wand, falls es einen gibt, dann das mit dem weg (genau so dann auf der rechten seite).

    ich glaube mehr gibt es beim verfahren nicht zu sagen.

    switch(Direction)
    {
    case NORTH:
    for(int z=PlayerZ-1;z>=0;z--)
    if(Feld(playerX,z)==wand)
    {
      Bild[abs(z-PlayerZ)].draw();
      break;
    }
    else
    {
      if(Feld(playerX-1,z)==wand)
       BildRechtsWand[abs(z-Playerz)].draw();
      else
       BildRechtsDurchgang[abs(z-Playerz)].draw();
    
      if(Feld(playerX+1,z)==wand)
       BildLinksWand[abs(z-Playerz)].draw();
      else
       BildLinksDurchgang[abs(z-Playerz)].draw();
    }
    break;
    case east, west, south...
    }
    

    ich hoffe man kann da irgendwas daraus erkennen 😉



  • Hmm, das hatte ich mir zuerst auch überlegt, aber ganz so einfach scheint das IMHO leider nicht zu sein, denn in Might & Magic werden komplette Aussendlandschaften auf diese Weise dargestellt. Da müsste man ja praktisch für jedes Feld 4 vorgerenderte Bilder haben? Ich meine in den Aussenwelten hat es Bäume, Wälder, Seen, Flüsse, Berge uvm. Naja, möglicherweise werden diese auch erst in einem zweiten Renderschritt gezeichnet! In einem der vielen Dungeons ist mir allerdings aufgefallen, dass es einen Treppenartigen Gang hat, welcher dann ebenfalls korrekt dargestellt wurde!



  • Ich würde mal vermuten, da gibt's für jedes darstellbare Objekt einen Satz vorgefertigte Grafiken (je nach Blickrichtung und Lage zur Spielerposition) und die werden dann vom Horizont her kommend übereinander gemalt.

    (so tief ist die Sichtweite ja nicht, da dürfte sich der Speicherbedarf in Grenzen halten)


  • Mod

    Ishildur schrieb:

    Hmm, das hatte ich mir zuerst auch überlegt, aber ganz so einfach scheint das IMHO leider nicht zu sein, denn in Might & Magic werden komplette Aussendlandschaften auf diese Weise dargestellt.

    aussenlandschaften heisst wohl man sieht mehr boden nach links und rechts, aber am ende wird es auf genau die selbe art und weise gemacht.
    an sich ist die sache dann ne kombination aus raycasting und dem was ich hier vorher beschrieb. du iterierst dann nicht nur nach vorne, sondern 'links' und 'rechts' noch nach vorne, sofern da mal keine wand war, das auch noch rekursiv und zeichnest die entsprechenden teile.

    Da müsste man ja praktisch für jedes Feld 4 vorgerenderte Bilder haben?

    wenn man nicht alles vorrendern will (wegen dem speicher), kann man auch ein seitenteil rumskalieren bis es passt. ist sehr trivial, du interpolierst nur entlang der x achse vom bildschirm und der textur, spaltenweise. beim zeichnen der spalte skalierst du die auch entsprechend runter, das kann dir Java abnehmen. (sowohl x als auch y skalierung)
    vorgerendert sollte das aber auch nicht unmengen an speicher kosten.

    Ich meine in den Aussenwelten hat es Bäume, Wälder, Seen, Flüsse, Berge uvm. Naja, möglicherweise werden diese auch erst in einem zweiten Renderschritt gezeichnet!

    ich weiss nicht genau wie das aussah, du muesstest mir schon irgendwie beispielscreens geben. ich hab nur dungeonmaster gehabt fuer NES. das ist begrenzter 🙂
    ich denke mir die boeden sind nur anders eingefaerbte kacheln, oder vielleicht texturen. wie berge aussahen, da fehlt mir komplett die phantasie... *hehe*

    In einem der vielen Dungeons ist mir allerdings aufgefallen, dass es einen Treppenartigen Gang hat, welcher dann ebenfalls korrekt dargestellt wurde!

    war das nicht nur vielleicht ein bild? so wie ne wand auf die ein gemaelde gezeichnet ist, kann man auch auf ne wand eine treppe nach unten zeichnen. sobald du eins vor drueckst bist du sicher nicht erst auf der treppe, sondern schon ne etage tiefer, oder?


Log in to reply