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

1

25.04.2006, 22:02

Grafikmassen in Diablo 2

Also, Diablo 2 benutzt doch im Prinzip animeirte Sprites zur Darstellung der Charactere, oder?
Nun mal eine Frage, wo kriegen die alle Grafiken unter? Wenn das Sprites sind muss jede Animation doch aus mehreren einzel bilder bestehen. Die Animationen wiederrum müssen aus mehreren richtungen gerendert werden, da man die ja nicht einfach drehen kann. Wenn eine laufAnimation eine Sekunde dauert, und ein Bild unkomprimiert (so sind sie ja in der Grafikkarte) vielleicht 100 kb beansprucht, aus 8 richtungen macht das doch schon kanpp 16 mb?
Man hat ja nicht nur eine Lauf Animation sondern auch noch eine Steh Animation eine Zauberanimation usw. Jedesmal kanpp 16 mb?
Man hat ja nicht nur einen Character sondern im Multiplayerspiel vielelicht 5 verschiedene auf einmal. Dann kommen da noch sämtliche Monster hinzu.

Ganz zu schweigen das man für die verschiedene Ausrüstung ja wieder neue Animationen braucht (einfach die Waffe drauflegen dürfte schwer sein, weil sie sich ja mit der Hand mitbewegen muss. Außerdem wird sie mal vom Char verdekct und mal verdekc tsie ihn selber, müsste shcon ein sehr kompelxes System sein, welches das hinbekommt).

Also, wie um alles in der Welt schafft man so etwas und dabei läuft das Spiel auch auf älteren Rechnern die vielleihct keinne 128 mb Grafikkartespeicher haben.
Lieber dumm fragen, als dumm bleiben!

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

25.04.2006, 22:15

Also.

Erstens können Graphiken nicht nur in den Videospeicher untergebracht werden, sondern auch in dem Hauptspeicher, wenn dort auch kein Platz ist gehts ab auf die Festplatte (bei Windows in Auslagerungsdatei, bei Unix auf das Swap). Videospeicher ist natürlich der schnellste speicher, dann Hauptspeicher und dann Festplatte, deswegen probiert man ja alles in Video reinzupumpen.

Tile based games haben Tiles, *gg*, richtig, aber ich hab bis jetzt kaum eines gesehen das 100kb groß ist. Meine sind max. 25kb groß, und das sind BMP's.
Ne karte kannst du auch aus verschiedenen Teiles zusammensetzen.

Man kann im übrigen auch Surfaces drehen, das ist aber eher mühsam. Deswegen gehen die meisten heute über D3D und benutzen Sprites. Sprites gehen wiederrum sehr einfach zu drehen (siehe Davods Buch).

Spiele wir Dialbo sind eine mischung aus 2 und 3D. Für die meisten Figuren wird da 3D angewandt, für Landschaft etc. meist 2D. Da man solche Spiele nicht drehen kann (jedenfalls nicht stufenlos) ist es auch einfach mit Sprites irgendwelche Dinge darzustellen.

Anonymous

unregistriert

4

25.04.2006, 22:15

Die Auflösung ist für die Grafikausgabe von Sprites im Fall von Diablo 2 absolut trivial. Das einzigste was sich beim ändern der Auflösung verändert ist nicht die Qualität der Grafiken sondern "nur" das man ein größeres Spielfeld hat. Daher fällt hier das Thema "Extra neue Sprites für unterschiedliche Auflösungen" weg.

Blizzard war eigentlich schon immer recht raffiniert wenn es um Sprites in ihren 2D Spielen ging. Als Datei werden sie nicht als Bitmap abgespeichert sondern als Koordinatenpaare. Dazu werden dort noch einzelne Farben für Regionen definiert, die später benutzt Werden um "dort" eine andere Farbe zu setzen.

Egal ob es nun eine rote Rüstung ist oder eine Blaue, solange sie von der selben Darstellung ist, ist dies Furz wie Deckel, da einfach zur Laufzeit die Regionenfarbe geändert wird. In DirectDraw kann man so z. B. bevor geblittet wird, eine BlitFX einstellen wo man sagt "Die und die Farbe hat diesen ausgeprägteren Farbkanal", daher kannst Du nur 1 Bitmap im VRAM deponieren, aber in sovielen Farbvarianten ablegen wie Farben da sind. Unter 3D APIs kann man dies mit Material-Objects ebenfalls erreichen, zwar nicht so "elegant" wie in DirectDraw, aber es geht.

Und was die Rotation betrifft: Viele Dinge kann man einfach ein bisschen zur Laufzeit verändern z.B. Zerren ohne dafür eine neue Bitmap anzulegen und ohne das es einem auffällt.

Dazu werden wie so oft Grafiken zur Laufzeit geladen die benötigt werden und je nach Zeitverstreich wieder entladen. Bei Diablo 1 hatte ich damals in einer Binärdatei mit dem Hexeditor eine Variable geändert, das gab Ruckelpower :D

Also soooooo große Tricks sind das auch nicht, nur raffiniert, das ist alles ;)


koschka
Diablo 2 hat nur 2D Objekte und nirgendwo gibt es 3D Objekte, das ist in Sacred!

Stefan

Alter Hase

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

5

25.04.2006, 22:16

Also bei einer Textur von 1024x1024 bekommst du eigentlich schon sehr viele Tiles unter. Soweit ich weiß wird der Charakter aus vielen Tiles zusammengesetzt, es gibt für jedes Rüstungsteil ein anderes Tile und die sind alle so gezeichnet, dass man sie alle schön zusammen setzen kann.
Wenn du jetzt zum Beispiel dein Schwert wechselst, wird einfach deine aktuelle Waffe entladen und die neue Textur mit dem Schwert geladen, dann brauchst du eigentlich auch nicht extrem viel Speicher.
Aber eines stimmt sicher, das System ist sehr komplex und gut durchdacht, außerdem ist es sehr schwer die ganzen Grafiken zu zeichnen! Sacred hat sich das gespart und verwendet einfach 3d Modells...

Da war ich wohl zu langsam :D

cya,
Stefan

Anonymous

unregistriert

6

25.04.2006, 22:19

Stefan
Eine sehr analoge Denkweise die sich auch nicht durchsetzten wird ;)

Stefan

Alter Hase

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

7

25.04.2006, 22:24

nix da
hm, stimmt das nicht wie ich mir das gedacht habe mit den Chars? :)
dachte eigentlich schon, dass die einfach zusammen gesetzt werden aus verschiedene tiles...
Ich kann ja nicht für jeden Charakter alle Möglichkeiten durchgehen, weil nur die Farbe/Material ändern geht auch nicht immer..

Anonymous

unregistriert

8

25.04.2006, 22:30

Stefan
Gehen tut alles - das ist nicht das Problem.

Klar geht das, aber es ist nicht sehr redundant.

9

25.04.2006, 22:33

Ok, die meisten Effekte wie drehen oder zerren bringen bei Iso games ja nciht, der Character soll ja nicht auf dem Kopf stehen sondern von einer anderen Seite her gezeigt werden.
Das mit den Farben ist ja noch ein einfahc zu duchschauender Trick, das die Monster halt immer in anderen Farben auftreten. Aber das geht ja nur recht Begrenzt, da man ja nicht nur einen Monstertyp hat.
Das man mit der gleichen Technik aus einem normalen Schwert ein brennendes Schwert zaubern kann, ist ja noch klar, aber ne Axt kriegst du da bestimmt nicht raus.
Aber wie soll man aus Rüstungsteilen den Spieler zusammen setzen? Ich meine die Rüstung muss ja der Bewegung folgen. daher müsste man nun die Rüstung ohne den Character rendenr und dann über dne Character legen. Da sie aber der Bewegung folgen muss, muss man doch die komplette Animation mit der Rüstung abrendern, oder nicht? Dann kommt noch das Clippin Problem dazu, das ja die Waffe manchmal den Char verdekct und manchmal vom Char verdeckt wird, je nachdem in welche Richtung er gerade guckt.

Bliebe im großen und ganzen also noch das deponieren im Hauptspeicher und das frühzeitige entladen nicht benötigter Grafiken.

3D modelle als Char habne schon nette Vroteile, Stufenlose Animationen und Drehungen um die eigenen Achse, jedes Rüstungsteil sehr leicht am Char darstellbar usw.
Lieber dumm fragen, als dumm bleiben!

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

25.04.2006, 22:37

Hmmnn, da hab ich wohl was verwechselt, auch egal die neueren benutzen meist 3D Modelle ;)

Werbeanzeige