Warning: Can't synchronize with the repository (/var/www/vhosts/creepsmash.de/repos does not appear to be a Subversion repository.). Look in the Trac log for more information.

Ticket #1 (closed enhancement: fixed)

Opened 15 months ago

Last modified 15 months ago

asynchron spielverlauf - TowerStrategy

Reported by: contex Owned by: freakazoid
Priority: immediate Milestone: 0.6.0
Component: Client - In Game Version:
Severity: block Keywords:
Cc:

Description (last modified by contex) (diff)

Hi Contex, danke erstmal für die schnelle Antwort. Find es cool dass du unser Spiel so weiter entwickelt hast. Gute Arbeit. Schade ist dass es immer noch oft vorkommt dass Spiele assynchron laufen. Das Problem hatten wir auch schon und hams bis zum Schluss nicht komplett behoben bekommen. Ich denke dass auch deshalb viele leute über die Punkte vergabe schimpfen da sie überhaupt nichts von assynchronen Spielverlauf mitbekommen und somit jeder denkt er hätte gewonnen. Mir ist aufgefallen dass es zumindest bei mir in letzter Zeit häufiger vorgekommen ist als ich viel mit dem Wechsel der Strategien rumprobiert hab und hab mir deshalb gerade mal den code dazu angeschaut. Vll lieg ich komplett falsch hab jetzt nicht so extrem viel Zeit damit verbracht aber kann es sein dass ihe die Strategie eines Turmes bei jedem Client erst lokal setzt und danach ne message an den Server sendet? Das wäre nämlich ein Grund warum Spiele assynchron laufen können da bei einem lokal der Turm nun auf andere Creeps schiesst als bei allen anderen. Hier der Code aus GameContext? dazu:

public void setStrategy(FindCreepStrategy fcs) {
if ((getSelectedTower() != null) && (!this.isDead())
&& getSelectedTower().isActive()
|| getSelectedTower().isBuilding()) {
((AbstractTower) getSelectedTower()).setStrategy(fcs);

ChangeStrategyMessage btm = new ChangeStrategyMessage();

btm.setClientId(getPlayerId());
btm.setTowerId(getSelectedTower().getId());
btm.setStrategyType(((AbstractTower) getSelectedTower())
.getStrategy().getClass().getSimpleName());
btm.setLocked(((AbstractTower) getSelectedTower()).getStrategy()
.isCreepLock());
getNetwork().sendMessage(btm);

fireSelectedChangedEvent("strategy");
}
}

Meiner Meinung nach könnt ihr die Strategie auch lokal erst dann wechseln wenn eine Antwort vom Server kommt. Somit geschiet dies synchon auf allen clients. Vielleicht hab ich dir hier jetzt nur blödsin erzählt und du weißt dass alles so passt wie es ist dann ists auch ok. Dachte nur ich sags dir vll hilft es euch weiter.

wünsch euch noch weiterhin viel Erfolg!

Grüße mI7hr4nDIr Ehemaliger Entwickler

Change History

Changed 15 months ago by contex

  • status changed from new to closed
  • resolution set to fixed

Changed 15 months ago by contex

  • description modified (diff)

Test Comment

Note: See TracTickets for help on using tickets.