Probleme mit Darstellung bei RPG

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

-]Holoman[-

Betreff: Probleme mit Darstellung bei RPG

BeitragFr, Jun 24, 2005 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,

ein etwas koplexeres Problem.
Also ich hab mir die Tuts über RPG Spiele durchgelesen.
Hab sie so modifiziert, dass ich meine Map die im DIM-Feld gespeichert ist als externe datei vorhanden ist und von dort aus ausgelesen wird.
Nun weiss ich einfach nicht wie ich das mache soll, dass meine Welt aus mehreren DIM-Felderdateien zusammen gesetzt wird.
Sprich, wie ich sie darstelle.
Etwas komplitiert zu erklären.....
Ich habe eine welt, bestehend aus 4 Dimfeldern (im Quadrat angeordnet).
Wenn ich von links oben nach rechts oben gehen will, muss er ja die Welt aus einem Teil links und einem teil rechts darstellen.
Genausso als ob ich von oben nach unten gehen würde.
Wie könnte ich diese funktion machen, die mir nur teile aus den Dim-Feldern zeigt ?
Hoffe ihr versteht was ich meine ?
Ich hoffe das nachstehende Bild verdeutlicht das.

user posted image[/url]

Zur Zeit wird das einzige Dim-Feld so dargestellt:

Code: [AUSKLAPPEN]

For x = 0 To 20
For y = 0 To 20
DrawBlock tileset,x*32-scrollx,y*32-scrolly,map(x,y)
Next
Next

Jack

BeitragFr, Jun 24, 2005 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, herzlich willkommen im Forum Exclamation Dazu habe ich eine Frage, die jetzt vielleicht ein bisschen peinlich ist:
Was sind RPG-Spiele Question Ich habe es schon oft gehört, nur leider nie verstanden. Kann es mir jemand erklären Question Danke

P.S: Solange ich nicht weiß, was RPG-Spiele sind, kann ich deine Frage leider nicht beantworten Exclamation
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
 

-]Holoman[-

BeitragFr, Jun 24, 2005 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Roll Playing Games (RPG)
Sind Spiele wie Diablo, Pokemon, Sacred, DSA (falls du kennst)
 

hitokiri

BeitragFr, Jun 24, 2005 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Also gerade die älteren RPG's haben in dem falle abgegrenzte maps und dann transitions von einem dim feld ins nächste, wenn du wirklich grosse maps hast.
was du tun könntest wäre das dim jedesmal zu redimensionieren, also eine durchgehende grosse map als externe datei aus der dann immer das in dein DIM schreibst was du gerade brauchst.
aber, wie gesagt, auch alle modernen konsolenrollenspiele benutzen ein DIM für einen Bereich und dann eine Transition in eine neue "map" mit kurzem laden zwischendrinnen.
 

-]Holoman[-

BeitragFr, Jun 24, 2005 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube du hast nicht ganz verstanden wie ich das meine (ist auch schwer).
Um eine Map durchgehend darzustellen muss ich immer aus min. 2 Dimfelder dateien etwas darstellen.
Und das ist mein Problem, da ich nicht weiß wie ich das lösen kann.
Da meine Map aber zum größten Teil oberirdisch sein wird, geht das mit dem Laden der neuen Map nicht so ganz (sprich lade aussenmap wenn du aus dem doungen kommst)

Ich versuch es mal anders.


Am Anfang lade ich das Dim-Feld "Center" , sobald ich einen schritt nach link gehe muss ich ja die erste Spalte aus dem Dim-Feld "Links" laden.
Dannach muss ich das auch noch ausgeben.

Alfadur

BeitragFr, Jun 24, 2005 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
warum lädst du nicht alles in ein großes dim feld? wie groß soll deine map denn sein? 10000x10000?
A Cray is the only computer that runs an endless loop in less than four hours.
 

ke^kx

BeitragFr, Jun 24, 2005 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Du liest entweder alle Maps aus und speicherst sie in einem großem dim Feld (ist aber nicht so schnell), oder du liest immer nur die umgebenden Maps mit aus.

1 bis 16 sind deine verschiedenen Maps.

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

der Spieler steht auf Map 6, also willst du nur das anzeigen:
1 2 3
5 6 7
9 10 11

wenn der spieler von der Map 6 auf die Map 7 geht (also nach rechts) schiebst du alle eine reihe nach links und schiebst vorne (neu auslesen) die maps 4, 8 und 12 ein. Danach sieht dein Dim so aus:
2 3 4
6 7 8
10 11 12

Da musst du dann eine Select ... Case Abfrage einbauen, je nachdem in welche Richtung gewechselt wird.

Und die Tiles aus dem Dim (es enthält alle Tiles der neun Karten), das durch diese Methode erstellt wird, zeichnest du immer, wenn sie im Bildschirmausschnitt sind (abfragen kannst du dies, indem du von der Spielerposition in Tiles aus die hälfte der tiles, die auf den Bildschirm in der Breite passen würden nach rechts und nach links zeichnest. Das selbe machst du bei der Höhe.

Ich weiß, dass das so etwas unverständlich ist, aber vielleicht hast du es ja trotzdem verstanden. Wenn nicht, frag einfach mal nach, ich versuche gern nocheinmal es dir anders zu erklären.

Jiriki

[Edit]
Ach ja, deine Maps können auch größer sein als ein Bildschirmausschnitt. Ich denke damit erübrigt sich dein Problem.
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

-]Holoman[-

BeitragFr, Jun 24, 2005 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Dank habs zu 70% verstanden.
Für mich ist immer nurnoch das problem mit dem übergang, wie verklickere ich das dem Programm Sad hab versucht den maps nr. als namen zu geben aber das hat au ne geklappt...
Mit den Tiles ist das geringste übel ... ich muss nur schaffen dem Rendern zu sagen wenn du die 21. spalte ausgeben sollst nimm die 1. aus dem neuem Dim-Feld.

Auchja das mit den Größeren Maps ist immer das Problem, dass sie erst komplett gezeichnet werden und das ist zu langwierig (finde ich)[/code]

Alfadur

BeitragFr, Jun 24, 2005 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist garkein problem.

was du versuchst ist viel zu aufwendig. mach einfach ne größere map, sagen wir 1000x1000 und zeichne eben nur den ausschnitt den man sieht ... das sind so 25x20 tiles. schau mal hier in die beginner oder allgemein ecke....

achja, hier https://www.blitzforum.de/viewtopic.php?t=12340

dort is code gepostet wie man nur nen auschnitt zeigt ...
A Cray is the only computer that runs an endless loop in less than four hours.

Ctuchik

BeitragFr, Jun 24, 2005 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich würd das so machen, dass jeder Array zusätzlich informationen über die breite und die höhe der darin gespeicherten Map enthält, sowie die verschiebung zum "Nullpunkt" der Welt.
Dann kannst du anhand dieser Werte und der Position des Spielers leicht für jeden Array überprüfen ob Teile von ihm gerade auf dem Bildschirm zu sehen sind und dementsprechend die sichtbaren Tiles zeichnen!
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Ebola33

BeitragFr, Jun 24, 2005 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich habe das mal vor einiger Zeit folgendermaßen gelöst. Meine einzelnen Maps waren immer 100x100 tiles gross. Das waren ca. 5x bildschirmbreite und höhe also 25 bildschirme. Diese sind klein genug daß du 4 davon in den Speicher laden kannst(im ungünstigsten Fall stehst du ja genau auf 4 Maps nämlich auf dem Kreuz). Und je nachdem welche karten als nächstes kommen müssen lädst du einfach immer 2 davon nach daß also quasi immer 4 maps geladen sind.
Das ganze läuft schnell und ohne Probleme.
Habe jetzt gerade keine Zeit. Hoffe ich habe mich einigermaßen verständlich ausgedrückt.
Ich schau später nochmal vorbei um es evtl. etwas präziser zu erklären.

Mfg Ebola
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/
 

-]Holoman[-

BeitragSa, Jun 25, 2005 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das brauche ich ^^ so meinte ich das, nur das ich an stelle von 4 Maps X Maps verwenden wollte

TheShadow

Moderator

BeitragSa, Jun 25, 2005 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
bei meinem Mapeditor kann man solche Layer "nebeneinander" anordnen. Alle werden verarbeitet - jedoch werden nur sichtbare Tiles dargestellt. Und da alle anderen Layer außerhalb liegen, werden die einfach nicht dargestellt...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

-jc-

BeitragSa, Jun 25, 2005 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft Dir Krylars Artikel
"Blitz2D Intermediates: Handling Sprites on Scrolling Tiled Backgrounds with Collisions":

http://www.blitzcoder.com/cgi-...02127.html

Ich hoffe, daß die Links zu den Sourcecodes noch aktuell sind.
 

-]Holoman[-

BeitragSo, Jun 26, 2005 9:53
Antworten mit Zitat
Benutzer-Profile anzeigen
TheShadow hat Folgendes geschrieben:
... solche Layer "nebeneinander" anordnen. Alle werden verarbeitet - jedoch werden nur sichtbare Tiles dargestellt...


Und wie genau machst du das ?
Wenn ich das richtig verstehe hast du z.b. 9 Dim-Felder die nebeneinander und untereinander angeordnet sind.
Wie ließt du die Bild informationen aus einem benachbartem Dim-Feld wenn du einen schritt zu seite gehst ?
Denn in einem solchem Fall musst du ja die Darstellungsinformationen zu 95% aus dem bestehenden und zu 5% aus dem anderen Feld lesen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group