[GELÖST] Mal wieder die gute alte Tilemap...
Übersicht

![]() |
NeoxitBetreff: [GELÖST] Mal wieder die gute alte Tilemap... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich habe die Suche genutzt (Um es im Vorfeld zu erwähnen ^^ )
Folgendes: Vllt sagt einigen noch was sich Grabber nannte ein kleines Projekt von mir (wer es nicht mehr genau weiß Neoxit.tublr.com müsste noch der alte Blog dazu stehen ![]() Dann kamen krasse Performanceverluste je nach dem wie Groß die Map wurde. Da dadurch auch die Anzahl der Types größer wurde. Dann sollte ich einen Array für die Darstellung nehmen, was ich getan habe. Nun kommt BlitzMax ins Spiel und ich habe vor, dieses Spiel nun auch endlich realität werden zu lassen (siehe Blog). Nur kommen in BMax so viele neue Möglichkeiten auf einen zu, auch performancetechnisch. Nun habe ich über viele Dinge gegrübelt und meine Beste möglichkeit die ich mir dabei vorgestellt habe war folgende: Die Koordinaten der Blöcke (Auch himmelsblöcke und versch. Layer (somit weitere "Layer Arrays")) wird per Array bestimmt. Die Eigenschaften der Blöcke habe ich mir (mal ganz GROB) folgendermaßen vorgestellt: Type Block.... [ Allgemeine Block Informationen (Festigkeit oder ähnliches, Bild , zu gebendes Item beim Abbau) Type HolzBlock extends Block (Zusatzinformationen für Blöcke des Holz-Typs) Type EichenHolzBlock extends HolzBlock (Zusatzinformationen für Blöcke des Typs holz, welche sich nur auf die Eiche beziehen) Frage 1: Was sagt ihr zu der art und weise wie ich es vorhabe. Frage 2: Ich war bzgl Arrays (Fragt mich bitte nich warum weil es eig. Recht Simple ist nur fehlt mir die Vorstellung ab wann ich wie genau auf einen Entsprechenden Array Zugreife und gleichzeitig den Array mit den Type definiere. (Quasi: Woher weiß mein Programm nachher das auf Arrayplatz[32,14] die Block ID 18 nutzt und somit die Informationen vom TypeBlock abruft). Denn auf dem Array selber, wird nur die Position gespeichert, in dem Type die Eigenschaften wie z.b. die gesuchte ID) Frage 3 / Bitte: Bitte möglichst genau versuchen zu erklären, denn (an dieser Stelle nochmal danke Xeres bzgl. meines Vorrigen Beitrags ^^) ich weiß ehrlich genau oft nicht worans bei mir beim Programmieren scheitert ![]() Mit freundlichen Grüßen Maik "Neoxit" P. |
||
- Zuletzt bearbeitet von Neoxit am So, Jul 08, 2012 20:08, insgesamt 2-mal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Frage 2: Ich war bzgl Arrays (Fragt mich bitte nich warum weil es eig. Recht Simple ist nur fehlt mir die Vorstellung ab wann ich wie genau auf einen Entsprechenden Array Zugreife und gleichzeitig den Array mit den Type definiere. (Quasi: Woher weiß mein Programm nachher das auf Arrayplatz[32,14] die Block ID 18 nutzt und somit die Informationen vom TypeBlock abruft). Denn auf dem Array selber, wird nur die Position gespeichert, in dem Type die Eigenschaften wie z.b. die gesuchte ID) Hier kann ich die Frage nicht finden. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann dir nur in den Richtungen weiterhelfen, in denen du deine Probleme gut skizziert hast.
Wenn du irgendwo Vergleichsmaterial hast: Linke selbst dahin, dazu ist das Internet da, lasse die Leute nicht noch extra was suchen. Types mit Extends erweitern: Ist sinnvoll, sofern du neue Blöcke nicht laden willst - erschwert z.B. Modding. Bei dem Rest muss ich dich auch bitten, weiter aus zu holen, da mir die Problemstellung nicht klar ist. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich gebe zu, ich und meine Fragestellung ist oftmals etwas ehm, durcheinander ^^*
Ganz simple, ich möchte eine Tilemap in BMax machen, eine wo die Koordinten der Tiles in einem Mehrdimensionalen Array gespeichert werden (x,y) und wo die eigenschaften der Tiles / Der Blöcke in Types gespeichert wird. Dies soll BEIDES wunderbar miteinader agieren können nur weiß ich nicht, wie ich das in BMax wirklich gut angehe. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Minibeispiel:
BlitzMax: [AUSKLAPPEN]
|
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super damit lässt sich arbeiten, aber ist der Array nun nicht getrennt vom Type? Sicher bin ich mir da gerade nicht aber ich meine doch das sich Arrays auch als eine art Field im Type selbst Definieren lassen? Oder wäre das Sinnlos? Aber auf jedenfall schonmal ein großes Dankeschön damit komme ich einen großen Schritt vorwärts!
EDIT: Stopp wat laber ich. alles bestens! |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn Du das Array kapseln willst dann in einem eigenen Kartentyp, denn die Karteninformation hqat in der Info über ein einzelnes Tile nichts verloren.
Also Type TGameMap Field _map[,] 'etc.pp ... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
So habe mir das jetzt wie folgt gemacht:
BlitzMax: [AUSKLAPPEN] Type TTile Das problem was ich habe (es sind 16x16 Tiles) das nur 1 Tile angezeigt wird. Der erste ^^ Warum? [EDIT] Gut anscheinend ist ein VARIABLE =+ VARIABLE nur einmalig berechnet und ersetzt den alten ersten Variablenwert nicht. Mit dem Klassiker Variable = Variable + Variable2 klappts. ^^ |
||
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
So ich habe nun vor die TileMap so aufzubauen, das gewisse Layer überprüft werden. Dabei habe ich mir gedacht das ich bei der Method New() werte übergeben werden. Nämlich die derzeitig x und y des TileCreate durchlaufs. Sollte X und Y bereits größer als ein gewisser wert sein, dann soll angefangen werden der boden gemacht werden / BodenTiles statt himmel tiles gesetzt werden.
Das Problem ist nur wie realisiere ich das am besten? BlitzMax: [AUSKLAPPEN]
Hier wird die Map Createt / Zugewiesen durch einem im neuen TTile Rand wert in der New() Method methode. Also wie kann ich das nun bewerkstelligen P.s.: Es scheint hier manchmal so auszusehen, als wenn ich euch hier alles aus der Nase ziehen will. Dem ist aber nicht so mir fehlen nur manchmal gewisse "Schlüsselschritte" / Übungen um das auch weiterhin umzusetzen aber bisher gehts eig. ganz gut. ![]() ![]() |
||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst auch den richtigen Operator dafür verwenden:
BlitzMax: [AUSKLAPPEN] yourVar:+ anotherVar ' gleich yourVar = yourVar + anotherVar
Das was du da machst, ist deiner Variable einfach nur denselben Wert den sie schon hat zuzuweisen ![]() Edit: Das bezieht sich auf deinen Post davor. Wieso musstest du jetzt Doppelposten? Ein Edit hätte es doch auch getan, das Andere ist doch auch von heute. Edit2: Fullquote für meinen Post davor...wow...^^ Ich habe auch schon gesehen, dass du den Klassiker anwendest, wollte dir aber trotzdem zeigen wie der richtige Operator dafür ist was du versucht hast, denn es geht ja. |
||
Blessed is the mind too small for doubt |
- Zuletzt bearbeitet von DaysShadow am Do, Jun 28, 2012 20:35, insgesamt 2-mal bearbeitet
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
DaysShadow hat Folgendes geschrieben: Du musst auch den richtigen Operator dafür verwenden:
BlitzMax: [AUSKLAPPEN] yourVar:+ anotherVar ' gleich yourVar = yourVar + anotherVar
Das was du da machst, ist deiner Variable einfach nur denselben Wert den sie schon hat zuzuweisen ![]() Edit: Das bezieht sich auf deinen Post davor. Wieso musstest du jetzt Doppelposten? Ein Edit hätte es doch auch getan, das Andere ist doch auch von heute. Siehe mein Edit etwas höher ![]() ![]() |
||
![]() |
Nova |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ich dazu aber auch noch erwähnen will: Selbst in den meisten andere Programmiersprachen wie C oder PHP gibt es kein "=+", da heißt es "+=" ![]() |
||
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hehe ![]() So also bis jetzt sieht es so aus und nun würde ich gern von den BMax Gurus unter euch kurz wissen ob es so okay ist wie ich es mache und darauf aufbauen kann oder vorher nochmal ein HAAAAAAAAAALT STOOOOOPP kommt weil man es noch ein bisschen flexibler machen könnte ![]() Also hier einmal mein Code und auch ein kleiner Screen dazu. BlitzMax: [AUSKLAPPEN]
![]() |
||
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab gerad gemerkt das das irgendwie mist ist was ich da mache, und ich denke ich sollte wie du das eben schon kurz angesprochen hast BladeRunner mit unterschiedlichen Types lösen.
Ich denke da an einen Type (oder mehrere) für die Tiles. Dann einen weiteren Type für die TileMap. Da ich nachher mehrere Layer haben möchte (hintergrundTiles etc) sollte ich da mehrer TileMap Types machen ? Die Frage ist nur wie ich das nun wirklich effizient angehe. Wie mein bisheriger gedankengang war habt ihr ja bereits gesehen, und ich glaube ich weiß langsam woran es bei meinem Verständnis harpert. Nämlich das Zusammenspiel der Informationsübermittlung zwischen Types und Arrays, wie z.b. ARRAY:TYPE oder so. Dann bin ich schon gedanklich weitergegangen zum thema scrolling, bei BlitzBasic wars alles so einfach weil man auf alle gleichzeitig drauf zugreifen konnte und alle tiles um 1 pixel verschieben konnte etc um somit einen Scroll effekt zu bekommen. Ich wüsste auch jetzt nicht wie ich sowas hinbekomme da ja jede Art von Typeeintrag (z.b. jeder Tile in der TMap) vorher definiert werden muss. Und genau da harperts. ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch für dich gilt immer noch der Grundsatz: Editieren statt Doppelpost. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
An dieser Stelle dann nochmal Tut mir leid hab nicht darauf geachtet das es Doppelpost ist :/
Dennoch steht meine Frage nach wie vor im Raum (siehe über Xeres antwort) |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Neoxit hat Folgendes geschrieben: alle tiles um 1 pixel verschieben Sowas macht man schon immer über Scroll-Variablen. Deine Tiles haben doch keine eigenen Koordinaten?
Als erstes packe die Karte in einen passenden Type, mit einer Methode/Funktion zum Zeichnen und nicht so lose mit Local map:TTile. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Neoxit,
Ich habe folgenden Code auf meiner Platte gefunden und noch ein bisschen kommentiert. Normal bin ich auch nicht dafür, sozusagen einfach eine Lösung zu präsentieren. Aber da immer wieder in Zusammenhang mit OOP gefragt wird wie man dieses und jenes sauber lösen könnte und Tilemaps ja generell häufig verwendet werden, dachte ich was soll's... ![]() Vielleicht hilft dir auch diese OOP-Einführung noch weiter: http://zehr.de/downloads/BlitzMax-OOP.pdf BlitzMax: [AUSKLAPPEN] SuperStrict |
||
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dankeschön!
Daraus wurde ich schon ein ganzes Stück schlauer. Habe mir nun aber doch vorgenommen lieber erstmal die Grundlagen mehr und mehr zu vertiefen und Trainieren bis ich die Type Sache wirklich vollkommen drauf habe. Übrigens sorry das ich jetzt erst antworte, neue Wohnung, gerad umzug und das Internet ist ja oft auch nicht von jetzt auf gleich da ![]() Schöne grüße Neoxit P.s.: [ERLEDIGT] |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group