Level lieber komplett aus Tiles oder gemischt -> Performa
Übersicht

nubiBetreff: Level lieber komplett aus Tiles oder gemischt -> Performa |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist es sinnvoller ein 2D Level komplett aus Tiles zu gestalten, oder auch z.b. für Hintergrund (der sich vielleicht auch bewegen könnte) ein größeres .jpg, .png. whatever zu nehmen? | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Größere Bilder für den Hintergrund sind kein Problem - solange du keine Gigabytes an Speicher dafür verwenden willst. | ||
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) |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie so oft wird die Sinnhaftigkeit durch den expliziten Zweck bestimmt. Manchmal ist das eine sinniger, manchmal das andre ![]() |
||
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 |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da es um performance geht, sieht es so aus:
1) Das Zeichnen optimieren: - Sorge dafür, das nur teile gezeichnet werden, welche "im bild" sind - dies ist recht eifnach durch die aktuelle position, der breite der teile und der auflösung rausfindbar. Alles andere ist nicht sichtbar und somit des zeichnens nicht würdig. - Eventuell eine liste oder sonstwas mit den gezeichneten daten füllen um iterationen zu vermeiden. Hat sich die ansicht um mehr als 1 tile verschoben, liste aktualisieren, sonst einfach nur die liste zeichnen. (es ist ja typischerweise immer das selbe, was sichtbar ist, wenn man sich kaum bewegt. Die gefundenen blöcke also zwischenspeichern) 2) Speicher überdenken: - Verwende nicht zuviele blöcke und nicht zuviele daten die für diese gespeichert werden. Beispiel: 2048x2048 tiles, welche in einem Type angelegt sind und je 4 int speichern: 2048*2048*4*4 = 67108864 byte aka 64mb. Verdoppelst du die kantenlängen, braucht das ganze schon 256mb speicher. Also: VORSICHT! Wenn du hier etwas optimierst, kannst du eigentlich alles machen. Theoretisch kannst du auch diverse einzelbilder laden und dazu zeichnen. Ein hintergrundbild sollte auch kein akt sein (zb für Paralax scrolling zeugs) - solange du diverse hardwarebeschränkungen beachtest: Zb nicht jede grafikkarte unterstützt 4096x4096 bilder. Ist deine zielgruppe auch von älteren PC geplagt, guck, ob du hier zb 2x2 einzelbilder für den hintergrund verwendest (2x2 bilder mit je 2048x2048 px auflösung) Anmerkung: Viele einzeltiles brauchen wesentlich mehr leistung als größere bilder. Allerdings sind das werte, die nicht statisch festgelegt werden können. Bau erstmal deine Tiles und die zeichnung dafür und optimiere dann - wenn das fertig ist - soviel wie möglich (wie gesagt, zu zeichnendes buffern, zeichnen auf sichtbares beschränken, oder vielleicht auch ganze sektoren - also zb felder die 16x16 blöcke verwalten - einmalig in eine textur rendern und diese fortan zeichnen) Damit kann eigentlich nichts schiefgehen (ne normale tilemap kriegst so in 1-2 ms gerendert, je nach komplexität) PS: Achte auch auf die größe deiner Tiles. Hast du zb 2x2 pixel große tiles, wäre es fast schon schneller den bildschirm zu zu plotten ![]() wenn dein level aus 4096x4096 tiles besteht, kanns zu ram problemen kommen. |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Noch zu dem Hintergrund:
Wenn du ein riesiges Bild hast, das über mehrere Bildschirme geht, dann heißt das, dass du beim Zeichnen immer extrem viel zeichnest, was unsichtbar ist. Besser ist es, das Hintergrundbild in Tiles zu zerlegen, die nicht größer sind, als der Bildschirm (eventuell auch nur in jede Richtung halb so groß wie der Bildschirm). Dann zeichnest du nur die Hintergrund-Tiles, die sichtbar sind. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
DAK hat Folgendes geschrieben: Noch zu dem Hintergrund:
Wenn du ein riesiges Bild hast, das über mehrere Bildschirme geht, dann heißt das, dass du beim Zeichnen immer extrem viel zeichnest, was unsichtbar ist. Besser ist es, das Hintergrundbild in Tiles zu zerlegen, die nicht größer sind, als der Bildschirm (eventuell auch nur in jede Richtung halb so groß wie der Bildschirm). Dann zeichnest du nur die Hintergrund-Tiles, die sichtbar sind. genau. immer nur soviel rendern wie notwendig. zu dem hintergrundbild: einfach mit drawblockrect den gewuenschten teilbereich der kompletten hintergrundgrafik zeichnen... PSY (EDIT): in welche richtung geht das game? dann koennen wir ein bischen spezifischer werden... |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
@PSY: Stimmt, geht noch einfacher, als Hintergrund-Tiles. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
nubi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
eigentlich nur ein kleines jump and run
ala super mario.... bin nur noch am überlegen wegen scrolling, oder eben starrem wechsel. |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einem JnR bietet sich eigentlich ein Tileset geradezu an. | ||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group