Giter Site home page Giter Site logo

Comments (10)

Scrittl avatar Scrittl commented on August 11, 2024

Wir können zwar die Ladezeit noch reduzieren aber natürlich nicht auf Null.
Ich schlage deswegen zusätzlich vor eine Art Lade-Overlay anzuzeigen. Irgendetwas simples wie den drehenden Kreis bei Youtube.

from haw-se2-projecthorse.

Scrittl avatar Scrittl commented on August 11, 2024

Idee zum Beschleunigen:

  • Durch den Packer eine Datei erzeugen, die die Ordnerstruktur & Dateinamen enthält. Diese Datei kann dann einmalig beim ersten initialisieren des Assetmanagers gelesen und zwischengespeichert werden.
    Zukünftig muss nichtmehr bei jedem Ladevorgang die VerzeichnisStruktur gelesen werden.

from haw-se2-projecthorse.

PhilippGrulich avatar PhilippGrulich commented on August 11, 2024

Als Alternative zur datei könnte auch der AssetManager beim Starten des Spiels eine Hashmap mit <LevelID/OdernerName, Verzeichnich Pfad > anlegt. So könnte man auch bei weiteren Load aufrufen O(1) erreichen. Und nur beim start des Spiels muss über alle Ordner Iteriert werden.

from haw-se2-projecthorse.

FrancisAO avatar FrancisAO commented on August 11, 2024

Der rekursive Abstieg bei jedem Level-Switch muss auf jeden Fall beseitigt werden. Für die Bilder wäre es am sinnvollsten die .atlas Dateien gleich in den Speicher zu laden und in einer HashMap zu verwalten - da diese Dateien nur einige Kilobyte groß sind kämen da wahrscheinlich nur wenige MB zusammen. Zugriffe auf einzelne Textures könnten dann auch an den AssetManager delegiert werden, sodass dann außerhalb des AssetManagers nicht mehr mit TextureAtlas Objekten gearbeitet werden müsste.
Pfade zu Sounds und Musik könnte man sich aber am einfachsten in einer HashMap merken in der Form M(LevelID/Filename, Path).
Dabei stellt sich die Frage ob man diese Pfade schneller aus einer Datei liest, sodass die Pfade in einer HashMap sind in der Form M(LevelID/Filename, Path) oder schneller über den rekursiven Abstieg in die Verzeichnisstrukur ermittelt, was ja auch nur das Lesen einer speziellen Datei bedeuten würde. Da man bei der ersten Variante zur Laufzeit mehr Fallunterscheidungen und Stringkonkatenationen hätte, wäre die letztere Variante (lesen der Datei) wahrscheinlich schneller.

from haw-se2-projecthorse.

PhilippGrulich avatar PhilippGrulich commented on August 11, 2024

Ja finde den Ansatz sehr gut 👍
Meinst du mit den beiden Alternativen das initiale Laden?
Wenn ja finde ich auch die Idee mit dem rekursiven Abstieg besser , da das ja sowieso nur beim ersten Starten der Anwendung gemacht wird ist es auch nicht ganz so Zeitkritisch.
Denke ich 🎱 :)

from haw-se2-projecthorse.

Scrittl avatar Scrittl commented on August 11, 2024

Grundsätzlich nicht verkehrt. Allerdings muss irgendwie gemanaged werden welche Objekte im Speicher gehalten werden muss, und wann welche wieder freigegeben werden können.

Vermutlich einfacher zu implementieren wäre es dann wohl einfach bei einem Levelwechsel ein try.dispose() auf LevelID-Atlas zu machen.

from haw-se2-projecthorse.

FrancisAO avatar FrancisAO commented on August 11, 2024

@PhilippGrulich Ja, mit den beiden Alternativen war das initiale Laden gemeint.
Der GameManager oder NavigationManager kann ja beim Levelwechsel dem AssetManager die ID des Levels übergeben, dass gerade verlassen wird und da dieser die Atlas-Objekte des Levels kennt, kann er gleich das try.dispose machen. Der Methodenaufruf vom AssetManager müsste dann im NavigationManager erfolgen.

from haw-se2-projecthorse.

PhilippGrulich avatar PhilippGrulich commented on August 11, 2024

So ich hab mal etwas rumexperimentiert... Das durch den Verzeichniss Baum laufen ist auf meinem Samsung galaxy s2 schon extrem teuer(großer 40s). Wenn wir aber nicht jedes Element überprüfen und einfach sagen das es nur eine schachtelungstiefe gibt (so haben wir ja jetzt auch die Assets angelegt) , dann könnten wir die Ladezeiten unter Android extrem verkürzen.

Ich würde das sonst später einfach mal pushen. Zurück können wir ja immer:)

from haw-se2-projecthorse.

Scrittl avatar Scrittl commented on August 11, 2024

Ansonsten vielleicht wirklich den tree nur einmal erstellen und in eine Datei schreiben. Könnte man einfach zu der atlas Erstellung dazu packen und wir haben nur einen Bruchteil des aufwands

from haw-se2-projecthorse.

PhilippGrulich avatar PhilippGrulich commented on August 11, 2024

Genau das wäre auf jeden Fall auch noch ne gute Idee.
Ich hab den AssetManager und des Spielstart jetzt etwas angepasst.
So dauerte es vorher auf dem Galaxsy S2 38s um die App zu starten.
Jetzt nur noch 10 Sekunden.

Die Grafiken werden jetzt aber gerade immer erst geladen wenn man Sie auch gerade brauch.
Zwischen den Leveln tauchen bei mir jetzt aber trotzdem keine sehr langen Ladezeiten auf. Wie ist das bei euch?

Sonst könnte man auch alle Grafiken im Hintergrund laden als extra Thread.

008b6d8

from haw-se2-projecthorse.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.