Tutorialserie, was würde euch interessieren ?

Previous topic - Next topic

Schranz0r

Hi Leute,

da ich aktuell grad Abends immerwieder ein wenig Luft habe, um zu programmieren, würde ich gerne mal ein paar Tutorials in verschiedenen Richtungen machen. Gibts irgendwelche Vorschläge?

Mein erster Vorschlag:

Tilemaps:
- Parallaxscrolling, was ist das, wie setzt man es in GLB um
- Wie zeichne ich nur das, was ich auf dem Bildschirm sehe ( Performanceboost ^10 bei großen Maps)
- Kollision Spieler - Map
- Speichern/Laden von Tilemaps
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

S.O.P.M.

Sehr interessantes Thema, welches mich selbst gerade beschäftigt. Eigentlich würde mich alles davon interessieren.
Gerne hätte ich mal eine Einschätzung von dir, ob meine Technik, eine Map zu zeichnen und zu laden schon gut ist oder ob man da noch vieles besser
machen könnte. Dazu habe ich mal eine Demo angefügt, wo man mit Link über ein Stückchen einer Zelda-Map laufen kann.
Die Tiles sind vom SNES Zelda genommen und der Link von der Gameboy Version ; )
Vielleicht mögest du dir das mal genauer anschauen.

[attachment deleted by admin]
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

WPShadow

#2
Also für mich ist interessant:

2D: Bewegung im 2D --> z.B. hereinfliegende Objekte, Beschleunigung, Verzögerung, Flugbahnen

3D: "LOD" mit verschiedenen Modellen selbst gebaut
       der richtige Einsatz von Nebel und Hintergrund
       Collision richtig eingesetzt
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

@S.O.P.M.:

Hi, also ich muss sagen das sieht schon alles recht ordentlich aus. Wenn du allerdings größere Maps hast und diese dann mit deinen 5 Layern zeichen willst sagen die FPS gutenacht :)
Da darfst du wirklich nur das zeichnen, was auch sichtbar ist.
Das mit dem Dimdata ist eigentlich ne coole Sache, so hast du deine Map im Hardcode. Allerdings habe ich das so noch nicht gemacht, so das ich nicht sagen kann wie sich das auf dein Game auswirkt...

@WP:

War klar das du wieder in die Vollen gehst :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

Erwartest du etwas anderes von mir? *lol*
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Antidote

schön, dass Du so eine Frage stellst ;)

- Kollision Spieler - Map
- Speichern/Laden von Tilemaps

Eigentlich sind alle Themen interessant, aber für mich als Anänger wären diese Themen sehr wichtig.

regards
Antidote
PC Core2Duo e4300, 2GBRam, Geforce 8800GT-1gb, XPsp3
GP2x, Wii, XBox360, Wiz, psp, ps3 usw.

S.O.P.M.

Quote from: Schranz0rHi, also ich muss sagen das sieht schon alles recht ordentlich aus. Wenn du allerdings größere Maps hast und diese dann mit deinen 5 Layern zeichen willst sagen die FPS gutenacht
Da darfst du wirklich nur das zeichnen, was auch sichtbar ist.
Das mit dem Dimdata ist eigentlich ne coole Sache, so hast du deine Map im Hardcode. Allerdings habe ich das so noch nicht gemacht, so das ich nicht sagen kann wie sich das auf dein Game auswirkt...
Danke für deine Rückmeldung. Also in meiner Demo zeichne ich tatsächlich nur das, was auch sichtbar ist, jedoch genau 1 Reihe Tiles horizontal und vertikal mehr, als auf den Screen passt. Das mache ich deshalb, damit, wenn die erste Reihe Tiles vorne bzw. oben nicht vollständig im Screen ist, man hinten bzw. unten keinen Leerraum bekommt. Trotzdem habe ich eine CPU Auslastung zwischen 30-40% bei dieser Demo. Allerdings kann mein Grafikadapter OpenGL nicht vollständig, was auch ein Grund dafür sein könnte. Joa das mit den Map Daten direkt im Quellcode war nur für die Demo, in einem richtigen Spiel würde ich das auch lieber mit einer seperaten Datei beigeben.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Schranz0r

@ S.O.P.M. :

Du machst aber einen großen Fehler bei deinem "Zeichnen was man sieht" !
Du zeichnest von 0 bis rechtes/unteres Tiles + ein Tile extra + Scrollfortschritt, so ist das falsch.
Du zeichnes irgendwann so viel, das die FPS in den Keller rutschen.

Wow, drei Sätze die mit "Du" anfangen :D, ist das ein inoffizieller Rekord?! xD

@ Antidote:

So ein Anfänger bist du nun wohl auch nimmer, bist doch auch schon ne Zeit lang dabei :)
Aber OK, ich mache als nächstes Speichern und Laden der Maps.
Dafür irgendwelche Wünsche?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

S.O.P.M.

Quote from: Schranz0rDu machst aber einen großen Fehler bei deinem "Zeichnen was man sieht" !
Du zeichnest von 0 bis rechtes/unteres Tiles + ein Tile extra + Scrollfortschritt, so ist das falsch.
Du zeichnes irgendwann so viel, das die FPS in den Keller rutschen.
Wenn du meinen Code richtig verstanden hast, dürftest du nicht zu dem Schluss kommen, ich würde immer bei 0 anfangen zu zeichnen. Ich zeichne immer so viele Kacheln, wie in den Bildschirm passen + eine Kachel extra. Nicht mehr und nicht weniger. Dabei spielt es keine Rolle, wie groß die Map ist. Auf dem Bildschirm fange ich natürlich bei 0 bzw. bei einem Minusbetrag, maximal der Größe einer Kachel - 1, an zu zeichnen. Schließlich möchte ich ja den aktuellen Kartenausschnitt im gesamten Fenster darstellen. Oder zeichnest du etwa nur die Kacheln, die neu in den Bildschirm hinein kommen und verschiebst den Rest nur? Wenn ja, denn hätte ich deinen Code nicht verstanden.

Naja seien wir ehrlich: die beste Variante wäre, gar nichts zu zeichnen, denn dann hätten wir die maximale Performance, wenn auch wir nichts dabei sehen xD
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Schranz0r

OK schau mir nochmal deinen Code an, auch wenn ich es jetzt so nicht ganz verstehe aber naja ;D
(du hast immer FOR 0 TO teile_die_man_sieht, läufst du jetzt aber weiter rechts zeichnest du immernoch von Teil 0 bis bildschirmende....)


Ja ich schiebe alles und zeichne auch nur das was auch wirklich sichtbar ist und wenns nur ein pixel sichtbar ist wird der Block schon gezeichnet :)

Man kann es wohl auch noch anders/eleganter lösen, aber ich bin selber kein Mathegenie, weshalb ich jetzt die einfache Methode gewält habe.
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

S.O.P.M.

Nur nochmal zum Verständnis: Unter "Schieben" verstehe ich, nicht alle einzelnen Tiles zu zeichnen, sondern die zu verschiebenden Tiles in einen Buffer zu kopieren und 1 Pixel versetzt wieder auszugeben. Aber lass uns das besser alles vergessen, denn das lässt sich schon wie ich befürchte, schriftlich nicht entgültig klären. Deinen Code verstehe ich jedenfalls nicht, nachdem, was du über dein Prinzip sagst. Verbuchen wir das also unter "Egal".
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Schranz0r

Achsoooooo machst du das!

Du bescheisst das Array immer um die Scrollposition/tilesize + Teile pro Screen
Auch ne möglichkeit, wie machst du aber den schluss damit es kein Array out of bounds gibt? :/
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

S.O.P.M.

Freut mich, dass du mein Prinzip verstanden hast :) Um nicht über die Array-Grenzen zu kommen, frage ich vor dem Zeichnen jedes Tiles einfach ab, ob ich noch innerhalb des Arrays bin. In einem richtigen Spiel dann wäre es natürlich sinnvoll, diese überflüssige Abfrage wegzulassen und wie bei dir dafür zu sorgen, dass das Ende der Map gar nicht erst ins Bild kommen kann.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

felix330

Ich fände ein Kollision Spieler - map tutorial sehr interessant, über sowas würde ich mich wirklich freuen. :)