Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Sekundowe wyliczanie surowców
Terrorizer
post 23.09.2017, 15:11:35
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pyton_000
post 23.09.2017, 18:34:35
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
Go to the top of the page
+Quote Post
Neutral
post 23.09.2017, 18:41:07
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
Go to the top of the page
+Quote Post
Pyton_000
post 23.09.2017, 18:50:29
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ł.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:55