Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bardzo zawansowane API.
php'master
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.02.2011

Ostrzeżenie: (0%)
-----


Witam,

Jestem w trakcie pisania dużgo projektu,serwera do gry. Zakładam osiągnięcie więcej niż 550 graczy w jednej chwili. Jest problem dlatego, że niestety MUSZĘ mieć około 100 kolumn w bazie. Do tego powinno dojść około 700 postaci, bo nie każdy gra w jednej chwili ale tam są te 'Postacie graczy'.

Dlatego podczas uruchamiania serwera, zamykania, crashingu, wychodzenia gracza z serwera, wchodzenia gracza na serwer muszę jakoś umiejętnie pobrać te dane. Przy starcie i zamknięciu serwera dane wszystkich osób z serwera co są aktywne. Ale jak gracz wchodzi na serwer to mogę tylko jego.

Myślałem nad czymś takim:

?Wczytywanie wszystkich graczy

  1. local gracze = exports.sql:query_assoc_single( "SELECT * FROM postacie WHERE graczID = " .. tonumber( userID ) .. " AND postacID = " .. tonumber( charID ) )
  2.  
  3. p[ source ].money = gracze.Pieniadze
  4. p[ source ].characterName = gracze.NazwaPostaci
  5.  
  6. ...i tak około 100 kolumn.


Potem przypisuję postacID do stałej player by skrypty wiedziały o którego gracza chodzi. Jeżeli chodzi o inne skrypt to zamierzam się odwoływać w sposób p[ source ].Coś_co_chce. Działać na takiej tablicy i jak serwer zostanie zamknięy, gracz wyjdzie czy coś to całą zrzucić do bazy zapytaniem.

Jak ktoś wie jak to zoptymalizować albo coś zmienić to będę wdzięczny.

http://lua-users.org/wiki/TablesTutorial

smile.gif.

Ten post edytował php'master 26.02.2011, 16:11:00
Go to the top of the page
+Quote Post
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Przy starcie nie masz co pobierać danych graczy. Pobierz tylko przy logowaniu się gracza na serwer i dopisz do listy, a jak się wylogowuje uaktualniasz bazę danych i czyścisz go z listy. Do tego dla bezpieczeńśtwa co pare min. robisz zapis całego stanu gry.

Bardzo niekonsekwentnie nazywasz sobie zmienne.
Kod
p[ source ].characterName = gracze.NazwaPostaci

Tak po angielsku a w bazie po polsku. Łatwiej dla ciebie będzie przypisywać sobie tak jak masz w bazie.
Ogólnie dbać musisz o pamięć, 100 kolumn to w miarę dużo. Może powiesz czego gra będzie dotyczyć?


--------------------
Go to the top of the page
+Quote Post
php'master
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.02.2011

Ostrzeżenie: (0%)
-----


Odwzorcowywania realnego świata/roleplay w grze. Czyli normalnie, możesz mieć samochód, dom itd. ale nie odrazu, musisz na to zapracować.


Mam jeszcze pytanko małe, aby sprawdzić czy jakiś gracz jest Adminem... to trzeba iterować wszystkich ?
  1. function sluzbaAdmna()
  2. for i,player in ipairs(getElementsByType("player")) do
  3. if(getElementData(player, "gracze.JestAdminem") == "1") then


Sorry, że na forum PHP, ale ten język wogóle nie jest w Polsce rozwinięty no i zna go około 15 osób.

Ten post edytował php'master 27.02.2011, 10:21:12
Go to the top of the page
+Quote Post
Pawel_W
post
Post #4





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


sorry za offtop, ale zdziwiłbyś się ile osób zna lua, OTS'y do Tibii są na nim oparte wink.gif
Go to the top of the page
+Quote Post
php'master
post
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.02.2011

Ostrzeżenie: (0%)
-----


Aha, ale mało osób zna funkcje bardziej rozwinięte np. interpolacje.

A więc jak gracz wchodzi to pobieram jego dane i wrzucam do tablicy, a jak chce komuś zmienić życie to pobieram jego Nick po czym iteruję tablicę pętlą for by znaleść identyczny nick? ...czy jest jakieś lepsze rozwiązanie.

Ten post edytował php'master 27.02.2011, 10:52:56
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


15 osób? Fajnie, jestem dość wyjątkowy biggrin.gif. Język jak język, normalny skryptowy, ja tam widzę tylko niewielkie różnice. Używam w Homeworld 2.
Go to the top of the page
+Quote Post
bim2
post
Post #7





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Kolegów moich dwóch właśnie do OTSów robi skrypty w lua smile.gif Nie jest z tym językiem tak źle właśnie ze względu na Tibię. :]

Co do sprawdzania czy ktoś jest adminem. Ja przy wczytywaniu danych gracza sprawdziłbym czy jest adminem i wrzucił do osobnej tablicy adminów jego id np. I pamiętaj, jak wczytujesz graczy do tablicy to najlepszym wyjściem będzie jako klucz wrzucić id gracza.


--------------------
Go to the top of the page
+Quote Post
Speedy
post
Post #8





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


Cytat(php'master @ 26.02.2011, 16:25:35 ) *
[...]
Jest problem dlatego, że niestety MUSZĘ mieć około 100 kolumn w bazie.
[...]


Wiesz, co to jest normalizacja?


--------------------
Sygnatura niezgodna z regulaminem.
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 Aktualny czas: 19.08.2025 - 10:27