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

29.06.2006, 18:15

Etwas Hilfe beim Verständnis des Grafikaufbaus

Hallo Leute,

ich programmiere schon ein ganzes Weilchen in
verschiedenen Sprachen (Java, Shell, C#) und wollte
mich nachdem ich ein paar grafische Experimente
mit Hexfeldern, Isometrischer Sicht und 3D gemacht
habe (maps erstellt) mal an ein 2D Spielchen wie
die alten SSI Klassiker (EOB) und Wizardry bzw. Might & Magic.

Für alle die nicht in den Genuß gekommen sind diese feinen
Klassiker zu zocken, so ists gemeint:
http://www.korseby.net/spiele/wizardry/wizardry7_3.gif

Jetzt frag ich mich als Laie in der Grafikprogrammierung, wie genau
man den Screen mit Tiles aufgebaut hat. Wenn wir gerade mal das
Bildchen von oben als Beispiel betrachten, dann ist mir der Aufbau
des Interfaces klar, jedes Monster ist mit Sicherheit auch ein eigenes
Tile, aber wie genau schafft man es diese vielen Wände in verschiedenen
Richtungen sinnvoll darzustellen (siehe 2. Bild unten auch, hier sinds
grad Bäume als Wände) ?

Meine Idee wäre, jede Wand gibt es horizontal (-) und einmal vertikal (|)
dann das "Wände-Layer-Array" z.B. so aufbauen:
array = {
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0
1 2 2 2 2 2 2 0 0
1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
};

Wobei 1= vertikale Wand und 2 = horizontale Wand
Dazu dann halt immer weitere Layer für Boden, Himmel,
Monster, Npc, Items,...

Falls der Ansatz ok ist, frage ich mich aber dann wie
ich z.B. einen soclhen "Tiefeneffekt" hinbekomme:
http://tleaves.com/weblog/images/articles/eob.jpg

Weil es schaut ja schon irgendwie so aus, als ob
die Höhle noch weiter geht.

Also die Frage auch, ob ich z.B direkt das ganze lvl
Zeichne und diesen Tiefeneffekt irgendwie dadurch bekomme
(?) oder nur was der user gerade sieht?

Wenn jemand zu dieser Art der Spieleentwicklung ein paar
Links/Tips für mich hätte wäre ich ihm sehr verbunden.

Programmieren werde ich denke ich in C# & DirectX, aber
mir sind alle Sourcecodes recht ;)

Danke schonmal!

2

30.06.2006, 13:01

Ist die Frage zu trivial oder unverständlich gestellt oder hat
sich wirklich noch niemand mit sowas beschäftigt?

Falls a) zu trivial:
Bitte drauf hinweisen, ich kann flames einstecken ;)

Falls b) unverständlich:
Mir gehts darum, das ich gerade etwas ratlos bin, wie ich
am idealsten solche Dungeons wie in den oben genannten
Games grafisch darstellen kann. Derzeit denke ich daran,
den Bildschirm in 4 Tiles zu unterteilen (Boden, Wand links,
Wand rechts und Himmel) und dies dann in einer bestimmten
"Line-of-sight" darzustellen (über Arrays). Hier frage ich mich z.B.,
wie ich allerdings die Felder darstellen muss, die ein oder zwei Felder
weiter liegen, damit es einen "Tiefeneffekt" gibt als sei es eine
Höhle.

Zweite Sache dir mir Kopfschmerzen bereitet ist, welche
Technik für den Aufbau des Dungeons am sinnvollsten wäre,
derzeit lade ich Grafiken ungefähr so auf meinen Screen:


Quellcode

1
2
3
4
5
Bitmap MyBitmap = new Bitmap("test.bmp");
/* Hintergrundfarbe Transparent */
MyBitmap.MakeTransparent();
Rectangle(offsetX+400,offsetY,tileWidth,tileHeight);
g.DrawImage(MyBitmap, myRec);


Allerdings sieht man immer deutlich den Aufbau bei jedem
OnPaint, was irgendwie nicht so schön ist... denke da muss
es doch was besseres/schnelleres geben, möglicherweise
läd man die Tiles im Hintergrund oder so?

Danke fürs lesen.

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

3

30.06.2006, 14:05

Was willst du jetzt eigentlich programmieren? Ein 2D-Tile spiel oder so ein 2D/3D Spiel à la doom?
Machs doch einfach gleich 3D....oder nur 2D...

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

30.06.2006, 14:28

zu

a.) hier wird nicht geflamt
b.) Diese Spiele die du da nanntest sind mischungen aus 2D und 3D. Fang mit reinem 2D am besten an (Tetris etc.) dann hast du auch die Grundlagen dazu: www.germangamedev.de

Im übrigen kannst du nicht verlangen das sich alle innerhalb von einem Tag wie gierig auf deinen Thread stürzen, viele haben auch noch was anderes zu tun und sind meist keine Schüler mehr.

5

30.06.2006, 15:15

Zitat


Im übrigen kannst du nicht verlangen das sich alle innerhalb von einem Tag wie gierig auf deinen Thread stürzen, viele haben auch noch was anderes zu tun und sind meist keine Schüler mehr.


halt, stop!!! so war das nicht gemeint, ich ging eher davon aus
mal wieder zu wirr formuliert zu haben, falls das anders rüberkahm
bitte ich das zu entschuldigen. Ich bin selbst berufstätig und weiß
jede kostbare Minute zu schätzen die jemand in mein Problem
investiert.

Ok, zurück zum Thema.

@Firefly
mir wäre so ein reines 2D Tilespiel erstmal lieber, also wirklich
so wie die alten SSI Klassiker, mit 90° rotieren beim "Tileweise"
laufen (oder waren die schon eien Mischung aus 2D und 3D!?).
Wie man eine Gameloop macht, die GUI aufbaut etc.
ist mir alles soweit klar, nur die Einbindung einer solchen
Grafikdarstellung stellt mich vor Probleme, besonders, das
ich einen Tiefeneffekt habe (siehe Screenshot von EOB).
Vielleicht würde es helfen, wenn mir jemand mal ein Beispieltile
zeigen könnte, das in solchen Games verwendet wird und die
ungefähre anordnung eines Screens mit solchen Tiles.

Danke.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

30.06.2006, 15:41

Also, ich bitte dich nochmal den Link anzuschauen den ich dir da gegeben hab. Dort gibt es eine Einführung in DirectDraw.

Mit DirectDraw kannst du dann ein Bild auf dein windows Fenster blitten. Tile Based Games sind Spiele, die aus ziemlich vielen Einzelbildchen bestehen. Der eigentliche Bildinhalt steht dann oft in einem Array, dessen Inhalt wird auf das Bild abgebildet.

Also:
1 0 0 0 0
1 1 1 0 0
0 0 1 0 0
0 0 0 1 1
1 1 1 1 1

"1" ist ein block, also ein Bild wo ein Block zu sehen ist, "0" ist Weg. Man kann das natürlich auch auf weitere natürliche Zahlen ausdehnen, mit schleifen in etwa so:

Quellcode

1
2
3
for(int y=0; y < 32; y++)
  for(int x = 0; x < 32; x++)
    DrawTile(array[y*x+x]);


DrawTeile ist eine Funktion die einen Wert nimmt und z.B. mit Hilfe von sprintf oder einer Funktion/Methode aus iostream einen Pfad generiert, der dann z.b. so aussieht: "1.bmp". Desweiteren lädt diese Funktion das Tile und blittet es mit Hilfe von DirectDraw auf das Fenster.

Das Array oben könnte man dann gleich als eine Map auffassen und in eine Datei schreiben, so das man auch gleich ein Mapformat hat.

So baut man sich nach und nach alles auf....

7

01.07.2006, 21:00

ok, hab den Link durchgearbeitet und zum Teil hats mal geholfen,
danke dafür!


Nochmal als Beispiel:
http://tleaves.com/weblog/images/articles/eob.jpg

gehe ich recht in der Annahme, das ich die einzelnen Teile
des Screens, also hier z.B. mal die GUI (alles ausser dem
Rechteck mit dem Vieh drin) und den "playscreen" (eben
das Rechteck das die eigentliche "Sicht" darstellt) als
einzelne "Surfaces" anlege und über den BackBuffer zeichne?

Zudem bin ich mir mit meiner Aussage über 2D nicht mehr
ganz sicher, diese Spiele oben sind doch rein 2D oder?
Wenn ich aber jetzt ein paar Tiles erstelle, sind das halt
"von oben gesehene" Wände wie z.B. hier (nur kleiner):
http://www2.odn.ne.jp/metanoia-style/freetx/tile.jpg

Wie stelle ich die jetzt so dar, das sie aussehen wie in dem
Screenshot von Eob? Die Wände und der Boden sind da ja alle
so "schräg nach hinten"... oder sehen die Tiles für EOB nicht
so aus wie die die ich vorhabe zu zeichnen, sondern sind
direkt irgendwie "schräg"?

Also würde ich jetzt eine "von oben Ansicht" planen, wüsste ich
was zu tun ist, aber diese "pseudo-3D" Darstellung stellt mich
immer noch vor ein Rästel :(

Kann mir jemand mal vielleicht konkret an dem Screenshot oben zeigen,
wie die einzelnen Tiles aussehen und wie sie angeordnet sind? Wäre super!

Vielen Dank für eure Zeit.

Yoshi

Frischling

Beiträge: 61

Beruf: Schüler

  • Private Nachricht senden

8

01.07.2006, 22:29

Machs doch erstmal mit einer Ansicht von oben bevor du dich an das 2/3D pseudo ding wagst... Wird doch bestimmt auch von oben lustig zu spielen sein...

Macht spielerisch auch keinen unterschied da soweit ich weiß man bei solchen spielen nur horizontal seine position ändern kann und nicht springen oder nach oben /unten zielen kann.

Yoshi

9

01.07.2006, 22:43

hmm.. würde schon gerne genau diese Ansicht der alten SSI Spielchen
machen, da ich dafür auch einen Grafiker habe und es eh immer
mein traum war genau solche Games zu machen.

Zudem ist ja auch nur die Grafik mein Hauptproblem, mit KIs,
A*, etc. hab ich mich schon in der ASCII Welt rumgeplagt ;)

Hier sind noch ein paar Beispiele der Ansicht:
http://www.consoleclassix.com/gameinfo_eyeofthebeholder_smc.html

10

01.07.2006, 22:59

ich glaub ich hab eines ihrer tilesets gefunden, vielleicht
hilf jemanden das (mich verwirrt es nur noch viel mehr...)

[SSI Tileset]

Werbeanzeige