Kipperlenny
Erfahrenes Mitglied
Moin Moin
Ich arbeite gerade an der neuen Version meines Browsergames.
Bevor ich unprofessionelle Entscheidungen treffe, dachte ich mir, dass ich doch mal nachfrage
Problemstellung:
- Truppen o.ä. soll von A nach B kommen
- wenn andere Truppen den Weg kreuzen muss bekannt sein wann und wo
- wenn ein Spieler auf ein gebiet "schaut" muss man wissen ob da gerade Truppen sind
- wenn ein Haus gebaut wird o.a. Hindernisse entstehen muss der Weg geändert werden
Anforderungen:
- speicherschonend
- schnell
- MySQL als Datenbank (wenn es besser ist kann natürlich auch in Dateien gespeichert werden)
- Cronjob alle 5min (kann geändert werden)
Schon vorhanden:
- A* Algorithmus zur Wegfindung
- Umlaufen von Hindernissen (zum Zeitpunkt der Berechnung)
- zu sehen hier: Beispiel (Beim neu Laden wird automatisch neu berechnet)
Ansätze:
Ich könnte jetzt natürlich bei jedem Seitenaufruf alle Wege neu berechnen - Kollisionen zu diesem Zeitpunkt bemerken und abarbeiten - müsste somit nur Start, Ziel, Startzeit, Geschwindigkeit speichern.
Das ist natürlich rein von der Leistung her nicht zu machen.
Anderer Ansatz wäre den gesamten Weg jeder Einheit in der DB (oder einer Datei) zu speichern - und bei jedem Wegpunkt die Zeit dazu - neu berechnet werden müsste dann beim Bau eines Hauses (sofern die Koordinaten des Hausbaus sich auf dem Weg befinden) oder beim Losschicken anderer Einheiten (sofern die Wege sich kreuzen).
Auch wäre es vllt möglich zur die Wegpunkte der nächsten 5min zu speichern und dann immer vom letzten Wegpunkt aus neu zu berechnen (Cronjob).
Also, was denkt ihr? Es gibt ja schon unzählige (auch andere Anwendungen als Spiele) wo Wege gespeichert werden müssen - wie wird das da gemacht?
Dankö für eine anregende Diskussion
lenny
ps: Programmiersprache ist PHP - aber das ist ja nebensächlich, daher in diesem Forum.
Ich arbeite gerade an der neuen Version meines Browsergames.
Bevor ich unprofessionelle Entscheidungen treffe, dachte ich mir, dass ich doch mal nachfrage

Problemstellung:
- Truppen o.ä. soll von A nach B kommen
- wenn andere Truppen den Weg kreuzen muss bekannt sein wann und wo
- wenn ein Spieler auf ein gebiet "schaut" muss man wissen ob da gerade Truppen sind
- wenn ein Haus gebaut wird o.a. Hindernisse entstehen muss der Weg geändert werden
Anforderungen:
- speicherschonend
- schnell
- MySQL als Datenbank (wenn es besser ist kann natürlich auch in Dateien gespeichert werden)
- Cronjob alle 5min (kann geändert werden)
Schon vorhanden:
- A* Algorithmus zur Wegfindung
- Umlaufen von Hindernissen (zum Zeitpunkt der Berechnung)
- zu sehen hier: Beispiel (Beim neu Laden wird automatisch neu berechnet)
Ansätze:
Ich könnte jetzt natürlich bei jedem Seitenaufruf alle Wege neu berechnen - Kollisionen zu diesem Zeitpunkt bemerken und abarbeiten - müsste somit nur Start, Ziel, Startzeit, Geschwindigkeit speichern.
Das ist natürlich rein von der Leistung her nicht zu machen.
Anderer Ansatz wäre den gesamten Weg jeder Einheit in der DB (oder einer Datei) zu speichern - und bei jedem Wegpunkt die Zeit dazu - neu berechnet werden müsste dann beim Bau eines Hauses (sofern die Koordinaten des Hausbaus sich auf dem Weg befinden) oder beim Losschicken anderer Einheiten (sofern die Wege sich kreuzen).
Auch wäre es vllt möglich zur die Wegpunkte der nächsten 5min zu speichern und dann immer vom letzten Wegpunkt aus neu zu berechnen (Cronjob).
Also, was denkt ihr? Es gibt ja schon unzählige (auch andere Anwendungen als Spiele) wo Wege gespeichert werden müssen - wie wird das da gemacht?
Dankö für eine anregende Diskussion

lenny
ps: Programmiersprache ist PHP - aber das ist ja nebensächlich, daher in diesem Forum.