Skocz do zawartości
MaxGaming

[PHP] Gra przeglądarkowa - sprawdzanie statystyk gracza

Rekomendowane odpowiedzi

Witam was,

z nudów i do poćwiczenia skillsów robię małą gierkę tekstową w PHP. Coś ala Plemiona.

Póki co radzę sobie tylko na drodze stanął mi pewien problem, jak sprawnie odświeżać statystyki graczy?

No bo żeby sprawdzić nasze mogę po prostu pobrać z bazy SQL i sprawdzić kiedy były aktualizowane, ile mineło i np. pomnożyć surowce. Tylko podczas sprawdzania innych graczy muszę mieć dostępne aktualne statystki wszystkich graczy. Co więcej nie mogą one się odświeżać dopiero na żądanie bo np skąd będę wiedział kto jest w pobliżu gdy np. ich pozycje nie będą odświeżały się, albo jak wyszukam graczy do pojedynku z podobnym levelem skoro będę miał podane nie aktualne levele innych graczy.

Mam dwa pomysły pewnie oba złe, ale

1. Aktualizowanie wszystkich danych w razie potrzeby - np. wyszukuje przeciwnika to aktualizuje dane wszystkich graczy na raz. Pewnie będzie to zasobożerne ale jak cała gra.

2. Jeszcze bardziej zasobożerny sposób ale trudniejszy - plik php który sam aktualizuje się np. co minutę aktulizując tym samym dane wszystkich nie aktualnych przeciwników.

Czy któryś sposób jest dobry czy robi się to jakoś inaczej? I jeżeli drugi sposób chciałbym wykorzystać to jak sprawidź aby serwer sam wykonywał plik php np. co minutę?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeżeli chcesz jak najlepiej odwzorować statystyki czasu rzeczywistego, możesz zastosować tech. WebSocket z NodeJS

https://github.com/websockets/ws

https://socket.io/

 

Dodatkowo możesz posilić się jakimś systemem cache tj. redis, memcached - żeby pominąć mnożenie każdorazowo surowców do czasu, kiedy jest to potrzebne (licząc score jednorazowo).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Są gotowe silniki gier w PHP w sieci, przyjrzyj się jak tam to robią :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A jeżeli chodzi o aktualizację bazy danych o nie potrzebujesz znać aktualnej wartości bo możesz modyfikować ją w locie. Coś typu: "pomnóż x2", "dodaj 12"

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Jeżeli chcesz jak najlepiej odwzorować statystyki czasu rzeczywistego, możesz zastosować tech. WebSocket z NodeJS

https://github.com/websockets/ws

https://socket.io/

 

Dodatkowo możesz posilić się jakimś systemem cache tj. redis, memcached - żeby pominąć mnożenie każdorazowo surowców do czasu, kiedy jest to potrzebne (licząc score jednorazowo).

 

Chodzi mi o dane w bazie danych ;)

 

Są gotowe silniki gier w PHP w sieci, przyjrzyj się jak tam to robią :)

No szukałem ale średnio to pomaga, bo rozbebeszenie całego silniku to ciężka rzecz a czytałem jakieś tutoriale to tam ludzie to jakby pomijali zupełnie. Nic o tym nie wspominali ale to były bardzo podstawowe tutoriale więc dlatego pewnie... Dlatego pytam tutaj ;)

 

A jeżeli chodzi o aktualizację bazy danych o nie potrzebujesz znać aktualnej wartości bo możesz modyfikować ją w locie. Coś typu: "pomnóż x2", "dodaj 12"

Tak ale mam na myśli grę typu np. plemiona. I jak mam przewidzieć w locie kto jest blisko mnie, jaki ma poziom itp? To jak już mam obliczać w php to to lepiej w bazie danych od razu, ale pytanie jak to zrobić? Aktualizować dane wszystkich graczy regualrnie, czy jak ktoś coś zrobi? Nie wiem zupełnie jak to ugryźć :/

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Raczej aktualizuje się takie dane regularnie, ale to duża liczba operacji i niestety bez odpowiedniego zaplecza gra szybko przestanie wyrabiać - to jest powód dla którego Almora:Online została zawieszona lata temu - skalowalność i koszta serwerów.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×