• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

D2 Zeichentechnik

snowballtwo

Well-known member
Registriert
13 Juli 2006
Beiträge
1.370
Punkte Reaktionen
0
Hallo,

da ich gerne die D2 grafiken für ein kleines persönliches Projekt nutzen möchte stellen sich mir einige Probleme in den Weg:

die Grafiken liegen bereits alle Isometrisch vor, d.h. wahrscheinlich, dass alles auf eine Bildebene projeziert wird.
Da stellt sich mir allerdings die Frage: Wie?

GDI wäre viel zu langsam...
OpenGL? Texturen müssen 2^n*2^n Pixel groß sein, das trifft auf die Grafiken im Spiel nicht zu...glDrawPixels? ...ist ebenfalls viel zu langsam.

Wie ist das ganze performant am besten umzusetzen, bzw. wie ist es im Spiel umgesetzt?
 
Eigentlich dürfte ich hier wohl nicht Posten, getreu dem Motto, wer die Frage schon nicht versteht .... Aber um dem Mal einen kleinen Schubs zu geben. Lässt sich denn nicht einfacher erklären, was das Problem ist bzw. was willst du machen?

Spontan fällt mir dazu Browsergame ein, einige solcher sehen doch fast wie D2 aus, vielleicht nicht so schnell, aber evtl. ist das ein Anhaltspunkt für dich.

Ansonsten wüsste Seltamuel bestimmt eine Antwort oder du fragst im Phorzenkeep.
 
Hi,

das Thema ist viel zu umfangreich um das mal eben zwischen Tür und Angel zu besprechen. Ich empfehle für openGL die NEHE Tutorials NeHe Productions: Main Page

Diablo nutzt in der Tat sogar mehrere Layer und blittet die Sprites in einen Double Buffer.. dazu werden unterschiedliche Techniken verwendet je nachdem welcher Display aktiv ist DDraw D3D oder Glide. Eines ist jedenfalls sicher .. wenn man nach einer guten Lösung sucht .... schaut man keinesfalls in den D2 Code ^^

Gruß

Seltsamuel
 
Inzwischen hab ich mich mit Allegro angefreundet, und auch schon beinahe erfolgreich animationen aus dcc's extrahiert (das kopieren einzelner zellen scheint nicht 100% hinzuhauen, aber ansonsten siehts relativ gut aus)

Wer sich sowas wie das dcc format ausdenkt gehört doch erhängt...in zeiten in denen festplatten mehrere terabyte fassen aber die leistung einzelner prozessorcores stagniert wird sowas hoffentlich nicht mehr gemacht...elende bitschubser bei blizzard :D.
 
Zuletzt bearbeitet:
Danke, aber ich kenne A) dieses dokument schon, und benutze B) keine externen programme um an die animationen zu kommen.
Ich hoffe nämlich dass das was ich da programmiere als mod durchgeht wenn es die installierten d2 mpqs benutzt :p
 
Hi,

Allegro .. hmm es streiten sich ja einige ob nun Allegro oder SDL.. ich habe mal hier reingeschaut und es für gut befunden: SFML - Simple and Fast Multimedia Library

Allegro und SDL sind mittlerweile zu aufgeblasen und man blickt durch das wirrwarr nicht mehr so recht durch.

Was .dcc angeht .. ja ist ein übeles Format im endeffekt komprimierte .dc6 Frames. Für einen lauffähigen decoder schau mal in die Sourcen vom DS1 Editor.. was einen Encoder angeht der was taugt stehen alle auf dem schlauch.. einzig gutes Tool ist CV5 mit dem dcc plugin .. wo niemand die sourcen von hat und der Author verschollen ist oder das DCCTool von SVR wo ebenfalls niemand die sourcen hat. Ich bin selber auf der suche nach einem..

Bei mir gehe ich mittlerweile aber den weg besser eigene Formate in D2 einzubauen ..

Gruß

Seltsamuel
 
inzwischen funktioniert mein eigener dcc decoder sehr gut, und auch allegro spielt ganz gut mit, abgesehen davon dass das laden (muss man zum glück nur einmal machen) aller frames in allen richtungen von nem fallen z.b. fast ne halbe sekunde dauert.
aber das kann ich verkraften :D

Thema ds1 edit: wird sicher sehr hilfreich für mich sein, vor allem hab ich grad festgestellt dass auch dieses tool allegro verwendet. Allerdings ne uralte version, inzwischen hat sich da alles geändert
 
Zuletzt bearbeitet:
Sorry wegen dem Doppelpost, aber ich dachte das gehört eigentlich noch mit hier rein:

wie wird bei den d2 Grafiken der Alphakanal erzeugt? Die dcc Dateien enthalten nur einen Index auf eine RGB Palette. Wenn ich einfach alles schwarze wegschneide sieht das ganze so aus:

5zjykef6.png


Das ist bei vielen Monstern ganz ok, aber bei diesem...was auch immer das ist (kennt das jemand?) sollte das natürlich eher durchsichtig werden.
 
Das rechte Bild wird im Spiel bestimmt so verwendet, dass von den Farbwerten für Hintergrund und Vordergrund (das im rechten Bild) der jeweils hellere ausgesucht wird. Wenn noch eine extra Farbe als Transparenz angegeben ist, wird das wohl so sein, dass alles, was diese Farbe hat, komplett durchsichtig ist (man verwendet z.B. rgb(255,255,0), weil das sonst gar nicht vorkommt in den Bildern).
Wenn du Allegro verwendest, was scheinbar OpenGL verwendet, hast du 2 Möglichkeiten: entweder du spielst mit der glBlendFunc rum, oder du schreibst dir einen Shader, der sich um die Transparenz kümmert.

Ansonsten: was hast du insgesamt vor? Ein Minispiel mit D2-Grafik, ein D2-Klon, ...?
 
Das rechte Bild ist gleich dem linken, aber auf schwarzem Hintergrund. Leider machts auch DrTest scheinbar nich besser, alle exportierten Grafiken sehen aus wie der linke Teil des Bildes.

Ich nenne mein Vorhaben "Diablo 2 Tower Defense". (mal schaun obs jemals fertig wird)
Inzwischen hab ich herausgefunden, dass es noch weitere Paletten in einem anderen Format namens "pl2" gibt, deren Benutzung ich allerdings noch nicht durchschaut habe.
Wie genau damit dann ne Transparenz erzeugt wird weiß ich noch nicht.

Die normale Palette verwendet den Farbton (170,170,170) als Hintergrundton, den kann ich mit der Allegrofunktion "al_convert_mask_to_alpha" in einen Alphachannel konvertieren. Was dabei rauskommt sieht man auf dem linken Bild mit weißem hintergrund, ist also noch nicht das "transparente vom Ei", aber zumindest für Monster und Missiles ohne großartige transparenz erstmal ausreichend.

Wenn jemand Zeit und Muse hat kann er mich ja bei meinem Vorhaben unterstützen, c++ Kenntnisse vorausgesetzt :)

Btw: ich würde viel lieber vorgerenderte Bitmaps nutzen, am besten alle frames aller directions eines Monsters in einem einzelnen, bereits mit Alphachannel versehenen Bild...falls das jemand liefern kann spar ich mir den ärger mit dcc und co
 
Zuletzt bearbeitet:
Zurück
Oben