Comments (10)
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.
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.
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.
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.
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.
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.
@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.
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.
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.
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.
from haw-se2-projecthorse.
Related Issues (20)
- Loot Popup Standardgrafiken für UI Elemente
- Loot Gallery Textwrapping
- Raceloot in Parcour auf Standard Loot ändern
- Applerun Spiel Neustart
- Parcour Pferdescaling
- Fehlende Linzenzangaben / Überflüssige Lizenzangaben HOT 10
- Doppeltes Pferd in Pferdegalerie
- Parcour - keine Sprunganimation HOT 5
- AppleRun Tempo der Pferde wird von Neigungssensor übergangen HOT 1
- Parcours: Auswahldialog?
- texturenotfound exception in der lootgalery HOT 2
- Parcours: 20% Hannoveraner Chance HOT 2
- [worldmap] Test und Doku
- Technische Tests
- [applerun] Test und Doku
- [puzzle] Test und Doku HOT 1
- [Menüleiste+Hauptmenü] Test und Doku
- [Lootscreen + Pferdeauswahl] Test und Doku
- [Worldmap] Letzte Stadt wird nicht pro Spielstand gespeichert
- Vereinheitlichung der Score-Anzeige
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from haw-se2-projecthorse.