In meinem Spiel gibt es Grundstücke mit Gebäuden (Häuser, Ressourcenzentren). Gebäude wie Häuser haben Mieter, Räume, Add-Ons usw., und es gibt mehrere Werte, die basierend auf all diesen Variablen simuliert werden müssen.
Jetzt möchte ich AndEngine für das Front-End-Material verwenden und einen weiteren Thread erstellen, um die Simulationsberechnungen durchzuführen (möglicherweise auch später AI in diesen Thread aufnehmen). Dies ist so, dass ein ganzer Thread nicht die ganze Arbeit erledigt und Probleme wie das Blockieren verursacht. Dies führt das Problem der Parallelität und Abhängigkeit ein .
Das Währungsproblem ist mein Haupt-UI-Thread, und der Berechnungsthread müsste beide auf alle Simulationsobjekte zugreifen. Ich muss sie threadsicher machen, weiß aber nicht, wie ich die Simulationsobjekte speichern und strukturieren soll, um dies zu ermöglichen.
Das Abhängigkeitsproblem besteht darin, dass meine Berechnungen zur Berechnung von Werten von den Werten anderer Objekte abhängen.
Was wäre der beste Weg, um mein Mieterobjekt im Gebäude mit meinen Berechnungen zu verknüpfen? Hardcode in die Mieterklasse? Was ist ein guter Weg, um Algorithmen zu "speichern", damit sie leicht optimiert werden können?
Ein einfacher fauler Weg wäre, alles in eine Klasse zu packen, die das gesamte Objekt enthält, wie z. B. Grundstücke (die wiederum die Gebäude usw. halten). Diese Klasse würde auch den Spielstatus wie die dem Benutzer zur Verfügung stehende Technologie und Objektpools für Dinge wie Sprites enthalten. Aber das ist ein fauler und gefährlicher Weg, richtig?
Bearbeiten: Ich habe mir Dependency Injection angesehen, aber wie gut kommt das mit einer Klasse zurecht, die andere Objekte enthält? dh mein Grundstück mit einem Gebäude, das einen Mieter und eine Vielzahl anderer Werte hat. DI sieht auch bei AndEngine wie ein Schmerz im Hintern aus.