![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 345 Pomógł: 3 Dołączył: 31.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
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ś. Ten post edytował Terrorizer 23.09.2017, 15:13:14 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował Pyton_000 23.09.2017, 18:48:49 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 46 Dołączył: 10.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
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 Ten post edytował Neutral 23.09.2017, 18:43:18 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
To nie jest dobry pomysł. Zajedziesz bazę tym. Aczkolwiek fajny pomysł.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 03:55 |