Performance bei Mobilen Endgeräten (Smartphones und Tablets ect.)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Performance bei Mobilen Endgeräten (Smartphones und Tablets ect.)

    Bei Plattformern sieht häufig PixelArt Grafik im Retro Look.

    Mein Ziel ist jedoch ein Plattformer in High-Resolution.
    1920x1080 entwickelt sich inzwischen auch auf Mobilgeräten zum Standard.
    Eine Statistik der meistgenutzten Displayauflösungen 2018: deviceatlas.com/blog/most-used-smartphone-screen-resolutions

    Eine Stufe niedriger ginge sicher auch.

    Wikipedia schreibt zu Sprites:
    "Heute ist die echte Sprite-Technik überholt, vor allem, da Computer inzwischen schnell genug sind, ohne Probleme tausende spriteartige Objekte auf dem Bildschirm darzustellen und zugleich den Hintergrund in ursprünglicher Form wiederherzustellen. Auch der dafür nötige Speicherplatz ist weniger wichtig geworden."
    de.wikipedia.org/wiki/Sprite_(Computergrafik)

    Speicherbedarf = Pixelanzahl * Farbtiefe * Farbkanäle * Anzahl_der_Bilder
    Speicherbedarf = Bei 128x128 Pixel und 256 Farben (sind 8Bit=1Byte) und 8 Bildern
    sind es 16.384 Pixel * 1 Byte * 8 Frames = 131.072 Byte /1024 = 128 KiloByte / 1024 = 0,125 MegaByte
    freies-gymnasium-borsdorf.de/f…14_Material-Farbtiefe.pdf

    ich habe noch keine Erfahrung wie viele Bilder ich im Schnitt pro Sprite brauchen werde.
    Auch weiß ich nicht ob ich nicht doch 256x256 Pixel oder mehr bei manchen Sprites brauche. Oder die 256 Farbe doch nicht reichen.

    Rechne ich mit 8 verschiedenen Animationen (8 Frames) pro Charakter macht das je Charakter 1 MB.
    Kann ich das so rechnen?

    Bei einem ordentlichen Plattformer haben die zu begehenden Blöcke manchmal interactive Animationen.
    Oder größere animierte Bestandteile wie eine bewegte Pflanze, ect.
    Mehrere Gegner pro Raum und Multiplayer rechne ich jetzt mal mit ein.

    Beim Endgerät gehe ich mal nicht von mehr als 1GB aus. Das System braucht dann eigenen Speicher.
    Und andere Apps verbrauchen auch Speicher.
    Freier Speicher von nicht mehr als 300 MB sind sicher häufig anzutreffen.
    Dann auch noch das eigene Spiel.

    Es stellen sich mir diesbezüglich ein paar Fragen:

    1) Welche Erfahrungen habt Ihr mit Sprites und Mobil-Endgeräten?

    2) Ist es besser komplette Hintergrundgrafiken zu nutzen und diese mit durchsichtigen Objekten zur Platform zu gestalten oder besser aus einem Tileset zusammenzusetzen?

    3) Halt Game Maker 2 vielleicht grundsätzlich Probleme mit großen animierten Sprites von 512x512, oder 1000x400 oder ähnliches Performance Probleme auf mobilen Endgeräten? Oder bin ich in der Gestaltung frei und es können sogar animierte Vollbild-Sprites sein?

    3) Für Explosions Effekte habe ich mal gelesen wäre nicht die Ideale Lösung Sprites zu erstellen. Ist es wirklich performanter die Sprites für den Effekt zu importieren und diese z.B. mit dem Partikelsystem oder per Paths zu animieren?
  • Hi und auch von mir Willkommen im Forum :)

    1) Es ist schwierig, dass scaling auf allen Geräten sauber hinzubekommen, je nach display (Retina!). Sonst gibts verschwommene Grafiken und Subpixelmovement.

    2) Das kommt ganz auf dich an und wie du lieber arbeitest, für starre plattformen würde das gehen, für dynamische besser nicht. Generell solltest du soviel wie möglich als Tileset gestalten und nutzen.

    3) Das weiß ich nicht, aber manche mobile Geräte haben Probleme damit wenn deine Texturepage größer als 2048x2048 ist. Alle deine Grafiken werden auf (möglichst) einer Texturepage gespeichert, ab gewissen Größen auf mehreren. Jedes Mal wenn dein Spiel die Texturepage im draw loop tauschen muss um an die richtigen Sprites zu kommen, kostet das Performance und kann dein Spiel schnell äußerst langsam machen.
    Ich würde dir keine animiertten FullHD Vollbild Sprites empfehlen. Das bedeutet mögliche Performance Probleme, große Dateigröße und lange Ladezeiten. Alles Dinge die niemand gerne auf seinem mobile Gerät hat.

    3) Alle kurzlebigen Objecte solltest du besser als Partikel einbauen, oder nur drawen lassen. Im Gamemaker hat jedes Object von Haus aus gewisse Variablen und Methoden die Standard sind, das kostet alles Speicherplatz. Wenn etwas nur für ein paar frames am Bildschirm ist, zahlt es sich nicht aus extra ein Object dafür zu erstellen.
    Im GM sind alle Objects im Grunde gleich, können ein Sprite haben/sein und im draw Event auch andere Sprites drawen. Auch dabei muss man aber zusehen, es nciht zu übertreiben weil das ein typisches bottleneck fpr den GM ist :)

    Ich würde dir empfehlen sowas wie ein 960x540 auflösung zu benutzen und soviele Sprites wie möglich wiederzuverwenden. Eine Animation kann schon mit 4 oder 8 Einzelbildern flüssig wirken und um den Speicher gering zu halten, solltest du darauf achten, nicht zuviel ungenützten "whitespace" um die Bilder zu haben und wo es geht mit Tiles zu arbeiten.

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Nur kurzer Einwurf: Wenn möglich geht auch Vektorgrafik. Das nimmt viel weniger Speicherplatz.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Super Infos - Danke :)
    Texturepage scheint ein wichtiges Stichwort zu sein.

    Kann ich denn die Texturepage an bestimmten Stellen im Spiel tauschen?
    Aber,

    Aku-Ryou schrieb:

    Alle deine Grafiken werden auf (möglichst) einer Texturepage gespeichert, ab gewissen Größen auf mehreren.
    Jedes Mal wenn dein Spiel die Texturepage im draw loop tauschen muss um an die richtigen Sprites zu kommen, kostet das Performance und kann dein Spiel schnell äußerst langsam machen.
    1) Du meinst im flüssigen Spiel sollte ich mich auf eine Texturepage beschränken, oder?
    2) Wenn ich zum Beispiel den Raum wechsle müsste es doch wechselbar sein, oder?
    3) Kann ich überhaupt beeinflussen wie die Texturepage verwendet wird? Oder läuft das alles intern ab?
    4) Ganz schön wenig 2048x2048 wenn ich einen parallaxen Hintergrund scrollen möchte :-o



    Husi012 schrieb:

    Nur kurzer Einwurf: Wenn möglich geht auch Vektorgrafik. Das nimmt viel weniger Speicherplatz.
    Meinst Du damit reine Vectorgrafik, oder auch Charaktere deren Extremitäten aus Rastergrafik-Elementen zusammengesetzt und mit .json animiert wird? (z.B. aus Spriter, Spine)
  • Zweiteres ist natürlich der Speichereffizienteste ^^
    Musst du wissen, ob das für dich möglich ist.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Du kannst ( ich hoffe das geht auch noch im GM2 ) sprites gewissen texturepages zuweisen (groupen), dadurch kannst du zusehen, dass alle Menü sprites auf einer page sind und im Level nicht mehr gebraucht werden.
    Im Idealfall wechselt die Texturepage also nur zwischen Räumen (am Angang des Raums), ganz genau.
    Bei einem parallaxten Hintergrund wird es sicher auch Dinge geben die ich wiederholen Bäume zB. Aber du kannst ja mal hier so ein Bild von dir hochladen, damit wir uns ein Bild machen können, von dem was du da vorhast :)

    Wenn das ganze nicht gezeichnet ist, sondern Richtung prerendered graphics geht ( Myst ) dann empfehle ich dir gleich eine Mischung aus echtem 3d und 2d zu machen.

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Aku_Ryou schrieb:

    Aber du kannst ja mal hier so ein Bild von dir hochladen, damit wir uns ein Bild machen können, von dem was du da vorhast

    Wenn das ganze nicht gezeichnet ist, sondern Richtung prerendered graphics geht ( Myst ) dann empfehle ich dir gleich eine Mischung aus echtem 3d und 2d zu machen.
    Ich kann noch nichts konkretes zeigen, weil ich noch in der Findungsphase bin.
    Habe GameMaker installiert und angefangen mich rein zu fummeln.
    Die ersten Dinge funktionieren wie ich sie möchte.

    Meine Idee steht im Grunde.
    Die Umsetzung ist noch recht frei.
    Am "optimalen" Weg orientiert werde ich versuchen eine Umsetzung zu entwerfen.
    Meine Werkzeuge sind Cinema 4D R15, ZBrush, 3D-Coat, Substance Painter+Designer, World-Creator 2, Character Creator 3 Pipeline, Photoshop CS6, Sketchbook
    und neuerdings auch Game Maker und Spriter

    Um nicht in Blaue zu diskutieren habe ich mal in meinem Vorstellungsthread meine bisherigen grafischen Versuche gepostet:
    gm-d.de/wbb/index.php/Thread/2…?postID=245686#post245684
  • Habe gerade noch einen tollen Link zum Thema gefunden.

    Ganz klar wird auf Sparsamkeit gedrängt.
    Mal in Ruhe zu Gemüte führen.
    Viel Stoff.
    Mit Beispiel von Rayman. Die haben es ja echt drauf mit der Größe und dem Environment-Design.

    construct.net/en/blogs/constru…-to-waste-your-memory-796


    Für den Anfang leistet der automatische Übersetzer ein ganz brauchbares Ergebnis:
    translate.googleusercontent.co…LlCwtxbQP1Ol4kZq_RQMEBDDw
  • Jop, die sehen ja schonmal wild und kreativ aus :) allerdings auch so als ob man die schwer abstrahieren und in kleinere wiederholbare Teile abgliedern könnte.

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Ein frohes und kreatives Jahr 2019 Euch allen 8o

    :/ Ja, sehr viel verschiedenes Zeug einfach mal gepostet.

    Ich merke, ich muss mich mit der Kunst Beschäftigen aus wiederholenden Teilen Eine bunte Welt zu gestalten.
    Das ist ja ärgerlich... Aber naja.
    So ist das halt.

    Aku_Ryou schrieb:

    Du kannst ( ich hoffe das geht auch noch im GM2 ) sprites gewissen texturepages zuweisen (groupen),
    Ja, geht glaube ich. Ich habe da so etwas gefunden das Texturegroups heisst :)
    Das müsste es sein.
    ist aber wohl Versionsabhängig:
    docs.yoyogames.com/index.html?…bout%20rooms%2Ftiles.html


    Mal noch ne Frage zu den Tiles. (docs.yoyogames.com/index.html?…bout%20rooms%2Ftiles.html)
    Also eine Landschaft aus Objekten, bestehend aus Sprites, zu gestalten ist die eine Variante.
    Ergänzen kann man das mit Tiles welche zur Kollisionsabfrage mit durchsichtigen Objekten überlagert werden?
    Also dann nur die interaktiven, animierten oder unquadratischen Bildbereiche mit eigenen Sprites und Objekten versehen !?

    Meine Frage hierzu ist:
    Wenn eine Texturepage 2048x2048 alle Grafiken für den derzeitigen Spielabschnitt beinhaltet, zählt auch die Tile-Quell-Bilddatei dazu?

    Oder wird aus der Tiles-Grafik ein Bild zusammen gemappt und in den Videospeicher als Hintergrund gemalt, und dann im Spielabschnitt die Sprites aus der (max. 2048x2048) Texturemap darüber animiert.


    Hab ich die Frage verständlich ausgedrückt? ?(
  • Nur die Quelldatei auf der deine Tilesets sind verbrauchen Speicher. Die rooms natürlich auch, aber der referenziert nur welchen Teil des Tilesets er wohinzeichnen soll.

    Schau dir mal das an:
    [video][/video]
    es ist zwar ein hardcore beispiel, aber trägt wasl zum verständnis bei :)

    Du kannst unsichtbare Objecte in deinem Room setzen oder direkt mit einem Tilelayer kollidieren, je nachdem was dir lieber ist. Eine bewegtes Object wird aber immer ein oder mehrere Sprites sein und braucht kein Tileset und kein unsichtbares Collisionobject oÄ :)

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Super, Danke für den Link :)
    :thumbup:
    Krass mit welchen Tricks die arbeiten mussten um das in den Speicher zu bekommen.
    Alle Achtung vor den Ideen!



    Aku_Ryou schrieb:

    Nur die Quelldatei auf der deine Tilesets sind verbrauchen Speicher. Die rooms natürlich auch, aber der referenziert nur welchen Teil des Tilesets er wohinzeichnen soll.
    Ich dachte ein Tileset im Gamemaker ist noch etwas anderes als die Texturepage im Endgerät.
    Da gibt es doch bei den Rooms den Tileset Layer.
    Wenn ich Tileset Layer eines Raums benutze, wird dann die Tilemap Bestandteil der Texturepage beim Spielablauf?
    Oder wird am Anfang des Spiels der Layer erstellt und dann die Tilemap aus dem Speicher gelöscht?

    Ich weiß nicht wie ich mich da richtig ausdrücken soll, oder Du hast es schon beantwortet und ich habe es nicht verstanden - Sorry!
    :whistling:

    Ich meine, da gibt es doch die Rescourcen-Art Tileset im Gamemaker.
    Da wird eine Grafik "automatisch" in Teilstücke geteilt.
    Und im Raum kann ich einen Tileset-Layer einfügen den ich dann mit den Teilen des Tileset gestalten kann.
    Das ist doch dann ein starrer "Hintergrund" oder "Vordergrund"-Layer später im Spiel, oder?

    Und da frage ich mich, ob der aus den Tiles erstellte Layer des Raumes Platz auf der Texturemap des Endgerätes beansprucht!
    Oder ob nach dem Erstellen des Tileset-layers die Tileset-map entladen wird und das Spiel mit den Elementen der Texturemap über dem Hintergrund (Tileset-Layer) gelegt wird.
  • Ich glaube ich habe die Antwort gefunden.
    Du hast ja es ja auch geschrieben.

    When you have a GameMaker project, your sprites are merged and put into what is called Texture Pages.
    developer.amazon.com/de/blogs/…ing-in-gamemaker-studio-2

    Es scheinen wirklich ALLE Grafiken in der Texture Page zu landen.


    What I mean is that it is in your best interest to get into the habit of grouping sprites you know will appear together (such as enemies and tilesets from a specific level or world) into their own texture group.
    Mein Englisch ist nicht das beste, aber steht da dass Sprites von Feinden und Level Tilesets in ihre eigenen Texturepage gespeichert werden sollen?

    Gemeint ist doch dann natürlich dass alles was zusammen gebraucht wird, zusammen in einer Texturemap (Group), landen soll!?


    Es scheint aber dann doch klar zu sein, dass alles grafische in der einen (max 2048x2048) Texturemap zu landen.

    Ich hatte die Hoffnung dass intern der Screenspeicher mit dem Hintergrund gefüllt werden kann und der Bufferspeicher aus der Texturepage zusammengestellt wird und dann in den Screenspeicher verrechnet werden kann.
    Aber ich glaube mich zu erinnern dass Screenspeicher und Bufferspeicher immer geflippt (irgendie erinnere ich mich an Pageflipping vom programmeren her) werden.
  • Vielen Dank auch für diesen :)

    In dem von Dir und in dem von Aku_Ryou verklinten Videos, in Beiden werden aus der kleinst-Möglichen Tile-Map META-Tilemaps erstellt.
    z.B. wenn die kleinsten Kacheln 8x8 Pixel bemessen, hat die META-Tilemap eine Kachelgröße von 16x16.

    Bietet Game Maker auch die Möglichkeit von META-Tilemaps?
    So dass der Tileset-Layer nicht direkt aus einem Tile ensteht, sondern aus einem META-Tileset, welches aus den kleinsten Tiles größere zusammengestellt wurden?

    Das ist ja selbst für etwas größere Grafikstücke interessant :)
  • So weit ich weiß, unterstützt Game Maker so etwas nicht, brauchst Du aber auch gar nicht,
    da man in GM2 Pinsel erstellen kannst, wenn Du mit Tile-Layern arbeitest.
    Es ist zwar noch nicht so komfortabel, wie es sein sollte(meiner Meinung nach), aber damit
    kannst Du Dein Tileset nach herzenslust zusammenstellen und auch drehen, rotieren und
    spiegeln.
    Dann hast Du Deine Meta-Tiles quasi als Pinsel und nein, man kann auf die Pinsel leider nicht
    per Code zugreifen, das habe ich im englischen Forum schon mal gefragt, also nur für den
    Fall das Dir so eine Art roguelike Game vorschwebt.


    Miradur
  • Miradur schrieb:

    So weit ich weiß, unterstützt Game Maker so etwas nicht, brauchst Du aber auch gar nicht,
    da man in GM2 Pinsel erstellen kannst, wenn Du mit Tile-Layern arbeitest.
    Es ist zwar noch nicht so komfortabel, wie es sein sollte(meiner Meinung nach), aber damit
    kannst Du Dein Tileset nach herzenslust zusammenstellen und auch drehen, rotieren und
    spiegeln.
    Dann hast Du Deine Meta-Tiles quasi als Pinsel und nein, man kann auf die Pinsel leider nicht
    per Code zugreifen, das habe ich im englischen Forum schon mal gefragt, also nur für den
    Fall das Dir so eine Art roguelike Game vorschwebt.


    Miradur
    Das ist doch eine adäquat gute Lösung - Danke :)

    Danke auch an Aku_Ryou für den Link. Werde ich mir später ansehen. Hab gerade nur kurz durchgezappt.

    Insgesamt sorgt der Thread für ein Gesamtbild der Möglichkeiten und Limitierungen.
    Es formt sich ein Bild für mein Layout :)
    Wahrscheinlich beschränkt auf Mobile-Devices. Wollte es so universell wie möglich gestalten. Aber das hält zu lange auf glaube ich...