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

Anonymous

unregistriert

1

27.04.2004, 01:21

2D Grafik für Level-Editor

Hallo,

ich bin an einem Punkt angekommen, wo ich mir Gedanken um ein eigenes Map-Format für Level machen muss. Bevor ich jedoch beginne, einen Level-Editor zu schreiben, möchte ich folgende Frage klären:

Wie wird im allgemeinen die 2D Grafik in Level Editoren (z.B. der Quake Editor, Unreal Editor etc...), bzw. die simplen Linien für die schematische Ansicht (z.B. von oben) gezeichnet?

Wird dazu auch z.B. DirectX benutzt, oder eine andere, speziell für 2D Grafik gedachte API wie z.B. GDI? Hat da jemand Erfahrung?


Vielen Dank für Eure Antworten

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

27.04.2004, 14:04

einfach ganz normal rendern mit entsprechender projektionsmatrix halt.

Samuel G.

Treue Seele

Beiträge: 110

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

3

27.04.2004, 14:20

Ähh...

Zitat

Wie wird im allgemeinen die 2D Grafik in Level Editoren (z.B. der Quake Editor, Unreal Editor etc...), bzw. die simplen Linien für die schematische Ansicht (z.B. von oben) gezeichnet?


Dieser Satz ist so sinnlos, er könnte auch von [Edit:Linux]Bitte keine Anmache ;D [edit] sein... ;D ;D ;D (vielleicht liegt das daran, das Wichtige Dinge in Klammer stehen? Ich schlage eine Syntax vor, die auch ohne die Klammern Sinn ergibt).

Zu deiner 2. Frage: Mit welcher API du den Leveleditor machst , ist selbstverständlich wurscht, wenn er funtioniert, allerdings bedenke folgendes:
a) welche Zielgruppe verfolge ich? Soll der Leveleditor für Entwickler
sein, oder mit dem Spiel veröffentlicht werden? Gilt letzteres, so lohnt
es sich sicherlich das ganze aufwändige zu machen (3D-Ansicht,
DirectX, ...).

b)Sei dir bewusst, dass die GDI langsam ist. Sie ist weniger für
schnelles Rendering gedacht, sondern mehr zum darstellen nicht
bewegter Graphiken (z. B. in nem Bildbearbeitungsprogramm). Für
einen eher statischen Leveleditor reicht GDI vielleicht noch aus,
allerdings würde ich es mir 3x überlegen noch mal ne neue Anzeige zu
coden, statt einfach die Engine zu verwenden, die ich auch für das
Spiel verwende.

Ein Leveleditor muss aber nicht 3D sein, wenn das Spiel ein 3D-Spiel ist, es kann auch ein 2D-Editor ausreichend sein(siehe hierzu: a)) (du kannst auch dann die selbe Anzeige wie für das Spiel verwenden, du musst bloss die Kamera entsprechend positionieren).

Ich hoffe ich hab dir Ansätze für deine Entscheidung geliefert (denken sollte man immer selbst).


Samuel G. (the progging devil) }>
Quak

Anonymous

unregistriert

4

27.04.2004, 14:47

Hallo,

ich finde den Satz, welchen Du angesprochen hast, nicht sehr sinnlos :) Genauer betrachtet, stellen die beiden Fragen eine Sinneinheit her, letztere Frage gibt Hinweise, in welcher Richtung ich eine Antwort erwarte ;D Ich werde mich bemühen, Klammern sparsam einzusetzen...

Nichts desto trotz, danke für Deine Antwort, sie hat mir schon geholfen.

Man sieht ja oft, dass Level Editoren verschiedene Ansichten gleichzeitig bieten, z.B. Viewports aus 4 verschiedenen Richtungen sowie eine zusätzliche 3D Ansicht.

Nun stellt sich das Problem, dass man ja in 4 verschiedene Fenster rendern muss. Ist dies denn möglich, bzw. wie kann man eine Engine anweisen, in 4 oder mehr Bereiche "quasi" gleichzeitig zu rendern. Das Ziel müsste dann ja pro Frame 4 mal geändert werden, ist dies so richtig angedacht?

Ich erwarte jetzt keine detaillierte Lösung, nur eine ganz allgemeine Antwort, wie man so etwas handhabt.


Vielen Dank!

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

5

27.04.2004, 15:08

Du musst einfach vier Viewports setzen und dann kannst du vor jedem Rendern mit sowas wie SetViewport() oder so, den jeweiligen Viewport setzen.
guck mal hier:
http://msdn.microsoft.com/library/defaul…SetViewport.asp

Musst halt auch noch diesen speziellen Viewport bei Clear angeben.

Wenn ich mich nicht irre, dann müsste alles aber vier fach so langsam sein
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

6

27.04.2004, 17:40

Zitat von »"unsigned int"«


Musst halt auch noch diesen speziellen Viewport bei Clear angeben.


Nein, es wird beim Clear immer auf den aktuell gesetzten Viewport zugrückgegriffen.
Mozilla Firefox
The Browser - reloaded

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

7

27.04.2004, 18:00

ok, kann sein
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Anonymous

unregistriert

8

27.04.2004, 18:35

Es ist ja nun so, dass der Viewport nur einen Bereich zum rendern angibt. Wenn man sich mal gängige Level Editoren anschaut, dann kann man oft eben 4 Viewports sehen - diese sind getrennt durch Splitter Controls, sodass man die Sichtfenster beliebig anpassen kann. Ich dachte, dass ich Direct3D einfach irgendwie das Handle des Fensters (z.B. eines Panel Controls auf der Form) übergeben kann, und dann wird eben in dieses Panel gerendert.

SetViewport klingt eher danach, dass nur auf einen Teil des Bildschirms gerendert wird - aber ist das dann nicht mit einem Control verknüft, d.h. render ich einfach irgendwo über die Controls ins Fenster?
Oder ist es so banal, dass ich als Viewport Koordinaten und Größe einfach die Koord. und Größe des (beispielsweise) Panel Controls auf der Form/im Fenster angebe?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

27.04.2004, 20:46

afaik kannst du sowas in d3d über eine swap chain realisieren.
ich glaub allerdings man kann der present methode auch ein hWnd übergeben.

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

10

27.04.2004, 23:03

Schau mal in den Samples vom DXSDK! Die rendern glaub ich öfters in Teile eines Fensters.. *such*

Oh :) Noch besser:
Schau in Davids Beispielen: Kapitel 02\06 - Nebel:

aus der Nebel.rc:

Zitat

CONTROL "",IDC_OUTPUT,"Static",SS_BLACKRECT,12,18,200,150


Hm... ich seh, das alles zu kopieren wäre jetzt zu viel. Aber du hast ja sicher das Buch ;)
Mozilla Firefox
The Browser - reloaded

Werbeanzeige