Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Planowanie bazy danych
Forum PHP.pl > Forum > Przedszkole
GreenGo
Witam,
piszę grę RPG w php i mam takie pytanko. Jak najlepiej zrobić ze zmieniającymi się statystykami takimi jak np. punkty życia ? Jest to wartość, która jest dość płynna. Jest wartość maksymalna ale obecne posiadane punkty zmieniają się z każdą walką. Czy najlepiej jest w tej samej tabeli stworzyć nowe pole zapamiętujące aktualną wartość punktów życia czy może to rozwiązać inaczej ?
emtiej
tabela user z polami: nick, pass, mail, life..... i co tam jeszcze chcesz, po każdej walce uaktualniasz pole life dla poszczególnego usera, możesz to zrobić też w osobnej tabeli, ale moim zdaniem wtedy zapytań będzie więcej, bo np. podczas wyświetlania profilu użytkownika musiałbyś pobierać info z 2 tabel, a tak odczytujesz całość i wyświetlasz. Takie jest moje zdanie.
GreenGo
To znaczy już teraz mam 2 tabele. Jedną z danymi do konta u jego ustawieniami a drugą z całą postacią ale myślę, że pobieranie danych z tych 2 tabel za pomocą jednego zapytania nie będzie trudne. Chodzi mi raczej czy tworzyć może jeszcze jedną tabele czasową do obsługi takich właśnie zmieniających się wartości czy rozwiązać to za pomocą dodatkowych pól w tabeli z statystykami postaci ?

Mam też drugie pytanie.
Jako, że naturalnie będzie można walczyć z potworami, to czy te potwory oraz ich statystyki trzymać w bazie czy raczej tworzyć/generować je w php ? One będą miały stałe parametry (życie, siła, szybkość itp.) więc chyba lepszym wyjściem będzie robienie tego na poziomie php niż zwiększanie ilości zapytań do bazy. No i jeśli zrobić to pomijając bazę, to jaki wzorzec będzie najlepszy do prostego tworzenia różnych potworów ? Simply Facotry, Factory Method, nadadzą się?
thek
Zauważ jednak, że potwory to także pewna wartość dynamicznie się zmieniająca. Raz trafisz na potwora A innym razem na C. Tak więc musisz mieć jakąś ich bazę/bibliotekę. Rozwiązania masz sumie różne do wyboru. Chyba jednym z sensowniejszych będzie zapis tego do bazy i później w razie potrzeb przesyłanie do cache serwera. Możesz też zrealizować to jako bazę plikową. Obydwa rozwiązania mają swoje wady i zalety związane z czasem dostępu, łatwością edycji czy dodawania nowych danych. Tu musisz sam się zastanowić więc co będzie lepsze w Twoim przypadku, bo nie ma jednoznacznie prawidłowej odpowiedzi. Wiele zależy od częstotliwości użycia, ilości danych przy każdym z potworów czy choćby nawet ilości tych potworów.
GreenGo
No tak, potworów będzie ok 20-30. Gracze będą z nimi walczyli kiedy chcą, wystarczy, że udadzą się w jakiś określone miejsce na mapie wiec przy 1000 graczach, jeśli wszyscy naraz będą chcieli walczyć to będzie 1000 zapytań choć walka z potworami to będzie raczej tylko taki dodatek do reszty, więc na pewno zapytań bedzie mniej. Chciałbym również aby każdy wywołany potwór różnił by się np. siłą +-5% ale to chyba nie ma znaczenia czy bazowe wartości będę pobierał z bazy czy z plików. Jak uważasz, lepiej cachować zapytań i trzymać w bazie czy może dane każdego potwora trzymać w oddzielnym pliczku .txt i przetwarzać je jakimś skryptem ?
emtiej
Cytat
trzymać w bazie czy może dane każdego potwora trzymać w oddzielnym pliczku .txt i przetwarzać je jakimś skryptem ?


Ja mam pytanie, czy jednocześnie z potworem może walczyć kilka osób? Jeżeli tak to zapis do pliku będzie mało efektywny, jeżeli nie no to możesz wszystko zapisywać w pliku, jak Ci wygodniej.

Cytat
Jako, że naturalnie będzie można walczyć z potworami, to czy te potwory oraz ich statystyki trzymać w bazie czy raczej tworzyć/generować je w php


Jak mają być widoczne tylko dla gracza walczącego z potworem to nie warto męczyć bazy
GreenGo
No walka odbywa się w trybie indywidualnym. Gracz idzie na jakieś miejsce gdzie ma ileś tam % szansy aby spotkać potwora i jeśli uda mu się, to rozgrywa się walka 1v1.
No to jak na razie rozumiem, że najlepiej oprzeć to na plikach. Zastosować do tego jakis wzorzec czy sposób wykonania samemu wymyślić ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.