Ich arbeite mehr oder weniger gerade an einem Browsergame und habe ein großes Problem: Wie mache ich ein Countdownscript, dass
1) ein Gebäude nach Ablauf der Zeit um 1 erhöht
2) Entsprechend mehr Resis produziert (Also angenommen ich fange mit dem Bau an, der dauert 30 Minuten, aber ich greife erst wieder am nächsten Tag auf den Account zu, dann müsste das Script ja in den ersten 30 Minuten nach der alten Baustufe Resis produzieren, aber danach nach der neuen Baustufe. Allerdings aktualisiert sich das ganze ja erst mit einem erneuten Zugriff auf das Script, d.h. es würde den ganzen Tag nach der alten Baustufe produziert (Hoffe, das ist verständlich erklärt)
3) Wie bestimme ich, dass eine bestimmte Zeit gebraucht wird für den Bau? Bei Browsergames ist es so, dass man ja nicht auf eine bestimmte Zeit hinzählen kann, sondern, dass man von jetzt an eine gewisse Zeit braucht.
Wäre super, wenn mir da jemand hilft.
Countdownscript
gepostet vor 19 Jahre, 7 Monate von None
gepostet vor 19 Jahre, 7 Monate von Gambler
Oh Mann^^
Naja also wenn du was baust schreibst du einfach in die DB dazu wann es gestartet wurde und wanns fertig ist(oder wie lange es dauert). Wenn du die aktuelle Zeit nimmst kannst du ausrechnen wann es fertig ist. Genauso umgehst du das Problem dass das Gebäude zu wenig produziert hast. Du weisst genau wann es fertig war und wie lange das her ist und so rechnest du aus was man für Rohstoffe produziert hat.
Naja also wenn du was baust schreibst du einfach in die DB dazu wann es gestartet wurde und wanns fertig ist(oder wie lange es dauert). Wenn du die aktuelle Zeit nimmst kannst du ausrechnen wann es fertig ist. Genauso umgehst du das Problem dass das Gebäude zu wenig produziert hast. Du weisst genau wann es fertig war und wie lange das her ist und so rechnest du aus was man für Rohstoffe produziert hat.
gepostet vor 19 Jahre, 7 Monate von None
...oder du bastelst dir wie ich einen EventHandler der die Datenbank immer und immer wieder im Hintergrund durchforstet.
Dann hast du alles in Echtzeit.
Dann hast du alles in Echtzeit.
gepostet vor 19 Jahre, 7 Monate von Bierchen
Oder:
Gebäude 1 um 2:00 fertig
Spieler wird angegriffen 2:25
Forschung xyz wird fertig 3:40
6:00 spieler loggt sich ein
Dann kannst du das"update" in 4 teile splitten.
Dann sparste dir den rechenkram.
Zwar nicht effizient funktioniert aber
Gebäude 1 um 2:00 fertig
Spieler wird angegriffen 2:25
Forschung xyz wird fertig 3:40
6:00 spieler loggt sich ein
Dann kannst du das"update" in 4 teile splitten.
Dann sparste dir den rechenkram.
Zwar nicht effizient funktioniert aber
gepostet vor 19 Jahre, 7 Monate von rgb
Original von Samson
...oder du bastelst dir wie ich einen EventHandler der die Datenbank immer und immer wieder im Hintergrund durchforstet.
Dann hast du alles in Echtzeit.
Aber verbraucht das nicht ganz schön viel Traffic?
gepostet vor 19 Jahre, 7 Monate von BLUESCREEN
Original von rgb
Original von Samson
...oder du bastelst dir wie ich einen EventHandler der die Datenbank immer und immer wieder im Hintergrund durchforstet.
Dann hast du alles in Echtzeit.
Aber verbraucht das nicht ganz schön viel Traffic?
Der verbraucht überhaupt keinen Traffic, weil er auf dem Server läuft.
Irgendwas hast du da verdreht.
gepostet vor 19 Jahre, 7 Monate von rgb
Oh, achso .
Ich bringe da manchmal noch etwas mehr durcheinander.
Naja ich fange jetzt auch so langsam an, ein browsergame zu proggen
Ich bringe da manchmal noch etwas mehr durcheinander.
Naja ich fange jetzt auch so langsam an, ein browsergame zu proggen
gepostet vor 19 Jahre, 7 Monate von da_weedkilla
Wie ich. :wink:
Nutze übrigens auch die von mir sogenannte "end_timestamp"-Methode (d.h. Eintrag, wann die Aktion beendet ist und verbleibende Zeit berechnen). Eine "Javascript-Uhr" dient dann als Anzeige.
Zu dem Eventhandle/Cronjob-Zeug kann ich nur sagen: Das ist ein Luxus, den sich nicht jeder leisten kann...
Nutze übrigens auch die von mir sogenannte "end_timestamp"-Methode (d.h. Eintrag, wann die Aktion beendet ist und verbleibende Zeit berechnen). Eine "Javascript-Uhr" dient dann als Anzeige.
Zu dem Eventhandle/Cronjob-Zeug kann ich nur sagen: Das ist ein Luxus, den sich nicht jeder leisten kann...
gepostet vor 19 Jahre, 7 Monate von alco
und auch nicht wirklich erforderlich ist ... ich verwende auch die bereits genannte Methode mit timestamp-Ende ect.
gepostet vor 19 Jahre, 7 Monate von Cays
Hi!
Also ich bin auch eigentlich erst in den Kinderschuhen.
Ich stand auch vor exakt dem Problem! Jetzt weiß ich auch, dass ich das mit Timestamp und so hätte machen können. Ich habe das jetzt aber so gemacht, dass jeder auf "runde beenden" klicken muss, damit die Runde halt beendet wird. Natürlich sollen da keine 1000 Spieler klicken, man kann Spiele erstellen und sie dann Spielen. Dann gibs halt noch ne große Statistik.
Was ich aber sagen wollte ist, dass es so auch recht gut geht.
Jedoch wird mein nächstes Spiel auf jeden Fall in Echtzeit sein.
MfG.Cays
Also ich bin auch eigentlich erst in den Kinderschuhen.
Ich stand auch vor exakt dem Problem! Jetzt weiß ich auch, dass ich das mit Timestamp und so hätte machen können. Ich habe das jetzt aber so gemacht, dass jeder auf "runde beenden" klicken muss, damit die Runde halt beendet wird. Natürlich sollen da keine 1000 Spieler klicken, man kann Spiele erstellen und sie dann Spielen. Dann gibs halt noch ne große Statistik.
Was ich aber sagen wollte ist, dass es so auch recht gut geht.
Jedoch wird mein nächstes Spiel auf jeden Fall in Echtzeit sein.
MfG.Cays