Huhu!
Mal eine Frage an die Experten: Mal angenommen ich würde ein Spiel schreiben, bei dem auf einem Canvas geschrieben würd. Nun hätte ich ja mehrere Möglichkeiten, die Informationen für die Spiel-Objekte anzulegen.
Zum einen könnte ich die Informationen in Resourcen-Dateien anlegen, z.B. SVG oder ein speziell auf meine Zwecke ausgelegtes XML:
[XML]
<svg>
<rect x="100" y="100" width="500" height="200" fill="white" stroke="black" stroke-width="20px"/>
</svg>
[/XML]
Zum einen könnte ich eine Painter-Klasse haben, sagen wir so:
Die ich nun wiederrum als Singleton in einer Registry speichern könnte oder wahlweise als Klassen-Referenzen (
) und bei Bedarf instanziieren.
Alles hat Vor und Nachteile, ist klar. Meine Frage betrifft jetzt speziell Android: Welcher Ansatz eignet sich am besten für eine große Menge an Spiel-Objekten, von denen sehr wenige auf dem Bildschirm zu sehen sind?
Meine Annahme: Geladene Resourcen-Dateien können bei Nicht-Gebrauch vom Garbage-Collector eingesammelt werden, brauchen aber sicherlich verhältnismässig lange zu laden, haben aber bei Nicht-Gebrauch nur wenig Speicherverbrauch (es werden ja nur
oder möglicherweise Dateinamen gespeichert).
Singletons würden sich für die Darstellung von so gut wie aller Spiele-Objekten aus einer kleinen Gesamt-Menge eignen, da der Garbage-Collector aber auch sie nicht aufräumt, eignen sie sich nur bedingt für diesen Anwendungsfall.
Reine Objekte müssten über
instanziiert werden und ihre Referenzen müssen so oder so geladen werden, wobei ich annehme, dass einmal geladene Klassen auch nicht mehr aufgeräumt werden. Zusätzlich gibt es eine verhältnismässig starke Kopplung.
Zusatzfrage: Kennt einer eine Möglichkeit, das schon mal vorab exemplarisch zu testen? Gibt es vielleicht noch eine Möglichkeit, an die ich nicht gedacht habe?
Wenn du diesen Block gelesen hast, danke ich schon mal und freue mich auf hilfreiche Antworten.
Mal eine Frage an die Experten: Mal angenommen ich würde ein Spiel schreiben, bei dem auf einem Canvas geschrieben würd. Nun hätte ich ja mehrere Möglichkeiten, die Informationen für die Spiel-Objekte anzulegen.
Zum einen könnte ich die Informationen in Resourcen-Dateien anlegen, z.B. SVG oder ein speziell auf meine Zwecke ausgelegtes XML:
[XML]
<svg>
<rect x="100" y="100" width="500" height="200" fill="white" stroke="black" stroke-width="20px"/>
</svg>
[/XML]
Zum einen könnte ich eine Painter-Klasse haben, sagen wir so:
Java:
public class GameObjectPainter implements Painter {
public void paint(Canvas canvas) {
canvas.drawRect(100, 100, 600, 300, whiteFillPaint);
canvas.drawRect(100, 100, 600, 300, blackStrokePaint);
}
}
Die ich nun wiederrum als Singleton in einer Registry speichern könnte oder wahlweise als Klassen-Referenzen (
Code:
Class<?>
Alles hat Vor und Nachteile, ist klar. Meine Frage betrifft jetzt speziell Android: Welcher Ansatz eignet sich am besten für eine große Menge an Spiel-Objekten, von denen sehr wenige auf dem Bildschirm zu sehen sind?
Meine Annahme: Geladene Resourcen-Dateien können bei Nicht-Gebrauch vom Garbage-Collector eingesammelt werden, brauchen aber sicherlich verhältnismässig lange zu laden, haben aber bei Nicht-Gebrauch nur wenig Speicherverbrauch (es werden ja nur
Code:
ints
Singletons würden sich für die Darstellung von so gut wie aller Spiele-Objekten aus einer kleinen Gesamt-Menge eignen, da der Garbage-Collector aber auch sie nicht aufräumt, eignen sie sich nur bedingt für diesen Anwendungsfall.
Reine Objekte müssten über
Code:
newInstance()
Zusatzfrage: Kennt einer eine Möglichkeit, das schon mal vorab exemplarisch zu testen? Gibt es vielleicht noch eine Möglichkeit, an die ich nicht gedacht habe?
Wenn du diesen Block gelesen hast, danke ich schon mal und freue mich auf hilfreiche Antworten.