Hi,
ich bin gerade ein neues Konzept am schreiben...
Jetzt ist mir während dem schreiben die Frage gekommen, wie mache ich die Rohstoffe entwicklung am besten?
Wie würdet ihr das machen?
Mir kam die idee vielleicht per cronjob, wobei da die rohstoff entwicklung nicht gleichmäßig wer...
Oder sollte ich lieber die letzte aktion speichern, und pro klick dann rechnen wieviel sekunden vorrüber sind, und dann die ressis ausrechnen wo er zu kriegen hat?
Irgendwelche ideen vielleicht?!
Wie mach ichs am besten? (Ressis)
gepostet vor 19 Jahre, 6 Monate von comFX
gepostet vor 19 Jahre, 6 Monate von Chojin
Ich denke dass mit einem Ressourcen-Tick ist recht weit verbreitet.
Wobei du das naturlich auch effizienter weise "Faken" solltest.
Sprich: Es ist unsinnig alle 20-30-60 minuten deine ganze Userdatenbank hoch und runter zu gehen, deren "Minen" abzufragen und dann die ganze Datenbank mit den Ressourcen zu aktualisieren.
Das kostet, meiner bescheidenen Meinung nach, zuviel Datenbankzeit...
Deshalb vergiss den Cronjob, es sei den du machst dann minutenweise immer nur eine 100er gruppe von spielern denen du die ressourcen updatest.
Mir fallen jetzt mal 3 grundlegende Rohstoffkonzepte ein:
- Rohstoffe pro Tick.
- Rohstoffe kontinuierlich.
- Rohstoffe nach Useraktion.
& Kombinationen daraus.
reg4rds
chojin
Wobei du das naturlich auch effizienter weise "Faken" solltest.
Sprich: Es ist unsinnig alle 20-30-60 minuten deine ganze Userdatenbank hoch und runter zu gehen, deren "Minen" abzufragen und dann die ganze Datenbank mit den Ressourcen zu aktualisieren.
Das kostet, meiner bescheidenen Meinung nach, zuviel Datenbankzeit...
Deshalb vergiss den Cronjob, es sei den du machst dann minutenweise immer nur eine 100er gruppe von spielern denen du die ressourcen updatest.
Mir fallen jetzt mal 3 grundlegende Rohstoffkonzepte ein:
- Rohstoffe pro Tick.
- Rohstoffe kontinuierlich.
- Rohstoffe nach Useraktion.
& Kombinationen daraus.
reg4rds
chojin
gepostet vor 19 Jahre, 6 Monate von BLUESCREEN
Wer so eine Frage stellt sollte auch dazu schreiben, ob das Spiel rundenbasiert oder in Echtzeit ist...
gepostet vor 19 Jahre, 6 Monate von Freshman
hallo,
um mal zu zeigen wie es andere machen.
Ich Update die Ressourcen eines USers nur dann, wenn er auch da ist.
Wenn er einen klick macht, dann frage ich aus der Datenbank seine Produktion ab.
Außerdem hgabe ich noch ein Feld, in dem Steht ein Timestamp, der gesetzt wird, wenn es ein Ressourcenupdate gibt. Wenn der spieler neu klickt, prüfe ich, ob das letzte update mindestens 60 sekunden her ist ( damit ich keine Rundungsfehler habe) , und wenn es das ist, dann gibt es neue Ressourcen.
Das gut so ist: Wenn das zu prozessorlastig werden sollte, dann kann ich auch schnell auf 300 Sekunden stellen, und alles funktioniert dennoch gut.
mfg
Freshman
um mal zu zeigen wie es andere machen.
Ich Update die Ressourcen eines USers nur dann, wenn er auch da ist.
Wenn er einen klick macht, dann frage ich aus der Datenbank seine Produktion ab.
Außerdem hgabe ich noch ein Feld, in dem Steht ein Timestamp, der gesetzt wird, wenn es ein Ressourcenupdate gibt. Wenn der spieler neu klickt, prüfe ich, ob das letzte update mindestens 60 sekunden her ist ( damit ich keine Rundungsfehler habe) , und wenn es das ist, dann gibt es neue Ressourcen.
Das gut so ist: Wenn das zu prozessorlastig werden sollte, dann kann ich auch schnell auf 300 Sekunden stellen, und alles funktioniert dennoch gut.
mfg
Freshman
gepostet vor 19 Jahre, 5 Monate von hagish
Wir verwenden einen Cronjob (1Tick/Minute) der dann anhand der Userproduktion die Rohstoffe aller User verändert (update user set res=res*produktion). Die Produktion wird aber nur bei bestimmen Benutzeraktionen neuberechnet (zB. Arbeiterumverteilung) und in regelmäßigen größeren Abständen (zB. 4h) bei allen Usern.
gepostet vor 19 Jahre, 5 Monate von Sogil
bei mir gibt es alle 20 Minuten einen Tick, bei der das ganze einkommen berechnet wird. Allerdings geschieht das alles im RAM, verbraucht also recht wenig Zeit mit der Datenbank. (Auf der Festplatte wird nur noch aus Backupgründen alles abgespeichert.)
gepostet vor 19 Jahre, 5 Monate von tc_coder
Naja ich aktualisiere die Res nur wenn ein Gebäude etc. gebaut wird.
Da man ja eh rechnen muss wieviel Res seit dem Letzten Update dazugekommen sind.
Finde das persönlich am resourcensparenden lasse mich aber auch gern vom Gegenteil überzeugen.
Da man ja eh rechnen muss wieviel Res seit dem Letzten Update dazugekommen sind.
Finde das persönlich am resourcensparenden lasse mich aber auch gern vom Gegenteil überzeugen.
gepostet vor 19 Jahre, 5 Monate von HaSkEeR
bin zu faul den thread durchzulesen, deshalb nur n tipp von mir:
du musst dir überlegen, was du amchst, wenn der user sich einloggt, n rohstoffgebäude in auftrag gibt udn sich erst wieder einloggt, wenn dieses gebäude fertig ist. dann musst du berücksichtigen, dass eine bstimtme zeit lang soundso viel res pro stunde dazu gekommen sind udn sobald das gebäude fertig ist die rate pro stunde auch höher war...
du musst dir überlegen, was du amchst, wenn der user sich einloggt, n rohstoffgebäude in auftrag gibt udn sich erst wieder einloggt, wenn dieses gebäude fertig ist. dann musst du berücksichtigen, dass eine bstimtme zeit lang soundso viel res pro stunde dazu gekommen sind udn sobald das gebäude fertig ist die rate pro stunde auch höher war...
gepostet vor 19 Jahre, 5 Monate von Kallisti
Das ärgerliche ist eben, dass man den veränderten Ressstand bei allen möglichen Aktionen berücksichtigen muss. Angriffe, Spionage, Klicks des Users, etc.etc...
Ich finde ein Mysql Query alle 15 Minuten tut nun wirklich nicht weh.
Auch wenn es ein Update ist und 1000+ Rows betrifft. ;-)
Ich finde ein Mysql Query alle 15 Minuten tut nun wirklich nicht weh.
Auch wenn es ein Update ist und 1000+ Rows betrifft. ;-)
gepostet vor 19 Jahre, 5 Monate von Dead
hab mir mal das durchgelesen und ein paar möglichkeiten finde ich sind hier schon sehr einfach gehalten
denn was bringt es mir z.b wenn die ress immer nur aktualisiert werden wenn der benutzer was klickt
was passiert denn wenn der nun angegriffen wird. kann man dann nur das klauen was er seit seinem letzten besuch da hatte.
denke das alle 15 minuten oder jede stunde zu aktualisieren sollte schon das minimum sein und ist jetzt auch net so der aufwand
denn was bringt es mir z.b wenn die ress immer nur aktualisiert werden wenn der benutzer was klickt
was passiert denn wenn der nun angegriffen wird. kann man dann nur das klauen was er seit seinem letzten besuch da hatte.
denke das alle 15 minuten oder jede stunde zu aktualisieren sollte schon das minimum sein und ist jetzt auch net so der aufwand
gepostet vor 19 Jahre, 5 Monate von HaSkEeR
ich denke man kann auch den res stand des angegriffen aktualisieren...
gepostet vor 19 Jahre, 5 Monate von hagish
Wenn man bei jeder Aktion die Ressis aller beteiligten Spieler aktualisiert, dann müsste es ja genauso gehen. Es könnte aber durchaus sein, daß das auf ein "Alles ständig berechnen" hinausläuft, wenn jeder immer von irgendwelchen Aktionen betroffen ist.
gepostet vor 19 Jahre, 5 Monate von Kallisti
Original von hagish
Wenn man bei jeder Aktion die Ressis aller beteiligten Spieler aktualisiert, dann müsste es ja genauso gehen. Es könnte aber durchaus sein, daß das auf ein "Alles ständig berechnen" hinausläuft, wenn jeder immer von irgendwelchen Aktionen betroffen ist.
Eben, dann doch lieber das Ganze regelmäßig in einem SQL Query.. ist wahrscheinlich performanter.