Entwickler-Ecke

Multimedia / Grafik - 2D Programmierung mit DelphiX mit 3d Elementen?


umpani - Mi 11.06.03 17:45
Titel: 2D Programmierung mit DelphiX mit 3d Elementen?
Hallo,

vielleicht kann mit einer der alten Hasen weoterhelfen.

Ich programmiere ein Spiel, welches eigentlich schon recht weit gediehen ist. Es ist ein 2D Spiel - Lands of Lore - like.

Ich möchte nun, da ich finde, das es etwas besser aussieht, das Zaubersprüche 3D Animationen sind.

Ich habe mir also 2 verschiedene Möglichkeiten ausgesucht.

1. Ich rendere die Zaubersprüche vorher mit einem 3D Programm und speichere Sie in einer ImageList als Animation.

2. ich binde ein paar kleiner 3D Animationen über die 3D Schittstelle von DirectX ein.


Zur ersten Möglichkeit habe ich keine Frage. Das ist recht einfach.

Aber kann mir jemand sagen, wie die zweite Möglichkeit zu realisieren ist?. Kann ich, obwohl mein Spiel auf DelphiX aufsetzt trotzdem noch eine 3D Schnittstelle (innerhalb oder ausserhalb von DelphiX) nutzen. Wenn ja, wie.

Gruß Umpani


mimi - Mi 11.06.03 18:17

mit delphiX schafst du kein gutes 3D. ich würde an deiner stelle GLXTreem nehemen(kann auch 3D formate anzeigen:))


umpani - Mi 11.06.03 18:52

kann ich das denn auch gleichzeitig mit Delphix verwenden?

Quasi ein 3D Objekt aufgesetzt auf der DXDraw oberfläche?


mimi - Do 12.06.03 18:38

du kannst nur eins von beiden verwenden und es läuft auch nur unter d6 - d7 und hörer :(


umpani - Do 12.06.03 21:30

Habs ausprobiert. Man kann sogar beides verwenden, jedoch hat die OpenGL Fläche dann einen hässlichen Rand und eine Hässliche Füllung. Sie lässt sich auf jedenfall nicht transparent machen :(


mimi - Do 12.06.03 21:52

doch das geht auch, frage mich aber nicht wie man das macht:)
und was hälst du von glxt ?


umpani - Do 12.06.03 22:21

Schaut ganz gut aus.
Falls ich irgendwann ein neues Projekt erstelle, sei es 2D oder 3D kann ich mir vorstellen, es zu benutzen. Ist halt ähnlich einfach zu bedienen wie DelphiX (im 2D Bereich).

Und ich bin halt ein 2D Fanatiker :twisted:

Nur leider ist mein derzeitiges Projekt schon so weit gediehen, dass ich bei einer kompletten Umstellung auf OpenGL wahnsinnig werden würde.
:shock:


mimi - Fr 13.06.03 19:18

glxt ist halt auch nur für den 2D bereich gemacht, aber wie gesagt es kann auch 3D ist ist viel schneller als DelphiX was auf dx7 basiert.
an was für ein projekt arbeits du denn ?
kannst du mir schon eine version senden davon ?


umpani - Fr 13.06.03 19:25

An einem "Eye of the Beholder", "Lands of Lore1", "Wizadry 7" artigen Rollenspiel.

Hier eine erste Testversion der Grafik (noch fast ohne jede Grafik, man man nur ein wenig herumlaufen)

http://www.cbs-shop.de/webser/gras1.zip


mimi - Fr 13.06.03 20:41

und das machst du mit dx ?


umpani - Fr 13.06.03 21:16

Ja, alles.

Und wenn ich mal fertig bin noch viel mehr... :lol:


mimi - Fr 13.06.03 22:50

hast du eigentlich deine frage beantwortet bekommen ?


Tweafis - Fr 13.06.03 22:53

Du kannst partikeleffecte mit pseudo 3d, d.h. du musst halt selber berechnen wir groß die sind basierend auf dem abstand und die position ganz einfach 2d und den radius runterschrauben wenn du z.B. ne Spirale machst.


umpani - Sa 14.06.03 08:26

Ich habe mich für meine erste Variante entschieden.

Ich werde die Effekte vorberechnen. Die sehen dann wahrscheinlich sogar besser aus.

Aber trotzdem danke.


mimi - Sa 14.06.03 17:05

könnte mir mal jemmand ein einfaches beispiel geben wie ich so eine ansicht hinbekomme ?


umpani - Sa 14.06.03 17:07

Welche Ansicht meinst Du denn?


mimi - Sa 14.06.03 17:14

pseudo 3d meine ich:)


umpani - Sa 14.06.03 17:36

Nun das ist ganz einfach, bedeutet nur ein Wenig Arbeit.

1. Ein zweidimensionales Array, in dem die Wandkoordinaten gespeichert werden.

2. Ein Wand Bitmap

3. Diese Wandbitmap muss entweder mit einem Extraprogramm, oder vor der eigentliche Programmlaufzeit so verformt werden, dass solche bilder entstehen (Beispiele):

user defined image


4. Wenn man nun ein Pseudo 3D Bild zeichnen möchte schut man sich an, wo die Figur im Array steht. Dann schaut man ob und wo sich Wände vor der Figur befinden. Diese Wände holt man sich dann aus der Imagelist, in der man die zuvor umgeformten Wänden gespeichert hat:


Zeichnung
O = Position der Figur
X = Wand
_ = Keine Wand


_______
_X___X_
_X___X_
_XX____
XXXOXX

Nur die Xe vor und direkt neben der Figur müssen gezeichnet werden.


mimi - Sa 14.06.03 18:14

könntes du mal ein kleines beispiel geben, wie ich das in delphi umsetzen kann ?


umpani - Sa 14.06.03 18:31

Was möchtest Du denn wissen?

Wie man das Wandbitmap umformt zu den einzelnen, schrägen Wänden?
Oder wie man die Wände dann zu einer Bewegung in diesem Labyrint einsetzt?

Es sit auf jedenfall zu sagen, das man diese Methode nur benutzen sollte, wenn an so ein Retro-Rollenspiel programmiert, wie ich es tun will.
Ansonsten ist diese Programmiertechnik veraltet. Denn heute brauch man kein Pseudo-3D mehr, sondern kann richtiges benutzen.


mimi - Sa 14.06.03 21:05

naja wie man es halt nutzt für so eine ansicht z.b:
für ein einfaches rollen oder abenteuer spiel.


umpani - So 15.06.03 10:15

Ich werde Dir anfang der Woche den Quelltext, so wie er bis jetzt ist zur Verfügung stellen.

Ich habe in allerdings noch nicht optimiert und auch noch nicht kommentiert.

Das werde ich so schnell wie möglich machen.

Ich poste ihn dann hier. :)


mimi - So 15.06.03 14:09

Danke:)