Terrorizer
23.09.2017, 15:11:35
Cześć,
Piszę grę opartą na php. W zależności od stopnia rozbudowania budynków i innych czynników użytkownik będzie otrzymywał surowce jak drewno, złoto itp.
W innych tego typu grach surowce rosną dynamicznie, cały czas - właśnie tak chcę to rozwiązać
Pytanie tylko jak to zrobić po stronie backendu? Ilość surowców znajduje się w bazie danych w tabeli na zasadzie [id, user_id, gold, wood, stone, metal] i jest to tylko updatowane przy każdym przyroście.
Jak to naliczać aby nie zajechać serwera, a użytkownik miał komfort z nieustannie przychodzących surowców? Przecież nie będę ich naliczał co kilka minut.
Frontendowo można to jakoś nawet osobno obliczać, ale jak rozwiązać kwestię realnej liczby surowców w bazie?
Wstępnie planowałem to wyliczać na podstawie godzinowego przychodu, obecnego czasu serwera i ostatniego naliczenia przy każdej operacji odświeżenia strony lub przy kupnie czegoś.
Pyton_000
23.09.2017, 18:34:35
Masz budynek: tartak.
Poziom tartaku: 5
Wydobycie drewna 25/h
Za każdym odświeżeniem czas ostatniej aktywności.
Bierzesz sobie różnicę czasu, wychodzi np.: 10 min.
Przeliczasz wydobycie wzorem na proporcję:
25lumber - 60 min
x lubmer - 10 min
Co daje nam:
x = 25lumber * 10 min / 60min = 25 / 6 = ~4.2
Zaokrąglasz wartość wg. zasady ogólnej tj do 5 w dół powyżej w górę.
Tyle. Za każdym razem robisz takie odświeżenie dla każdego budynku.
PS. Możesz też ustawić jakiś mnożnik wydobycia względem poziomu.
Neutral
23.09.2017, 18:41:07
Napisz event'a w bazie danych i automatycznie będzie ci się zmieniać ilość (wartości) surowców w bazie. Do tego np. jakiś AJAX i nie będziesz musiał odświeżać ręcznie, tylko będzie to działało asynchronicznie.
https://dev.mysql.com/doc/refman/5.7/en/create-event.html
Pyton_000
23.09.2017, 18:50:29
To nie jest dobry pomysł. Zajedziesz bazę tym. Aczkolwiek fajny pomysł.