qest43 Temat założony przez niniejszego użytkownika |
[SFML2] Tworzenie gry sieciowej » 2016-03-07 19:24:36 Witam, mam kilka pytań odnośnie tworzenia gier sieciowych. Załóżmy że mamy grę typu TIBIA.
Czy logika gry powinna być po stronie klienta czy serwera? Czy np. kolizję wykrywa się po stronie serwera czy klienta? Czy jak mamy klasę Player, to do serwera wysyła się potem cały ten obiekt i zmienia dane (pozycja,HP,mana) po stronie serwera? Czy można łączyć TCP i UDP w jednym programie? (np. gra przesyła pakiety przez UDP, a sam czat w grze jest na TCP)
Jeżeli jest pętla gry, i serwer wykonuje czynności typu odbieranie i wysyłanie danych, jak za pomocą połączenia UDP sprawdzić że nowy gracz połączył się z serwerem?
Prosiłbym też o różne poradniki o projektowaniu takich programów, lub jakieś kody źródłowe, bo na internecie są same poradniki dotyczące podstaw, a nie obrazują całego schematu. |
|
pekfos |
» 2016-03-07 19:32:39 Czy logika gry powinna być po stronie klienta czy serwera? |
A chcesz, by gracze wykonywali czynności niezgodne z logiką gry? Czy np. kolizję wykrywa się po stronie serwera czy klienta? |
A chcesz, by gracze przechodzili przez ściany? Czy można łączyć TCP i UDP w jednym programie? |
Można. Jeżeli jest pętla gry, i serwer wykonuje czynności typu odbieranie i wysyłanie danych, jak za pomocą połączenia UDP sprawdzić że nowy gracz połączył się z serwerem? |
Po prostu dostaniesz od tego gracza pakiet. Prosiłbym też o różne poradniki o projektowaniu takich programów [..] na internecie są same poradniki dotyczące podstaw, a nie obrazują całego schematu. |
Czyli o co w końcu prosisz? |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2016-03-07 19:39:16 Proszę o kody źródłowe, lub jakieś grubsze poradniki obrazujące cały proces tworzenia takiej sieciówki w SFML.
Jeżeli mamy
class Player { int HP; int MP; sf::vector2f pos;
void update(); }
To w jaki sposób wysyła się dane o graczu na serwer? Wysyła się cały obiekt, czy tylko umieszcza dane do pakietu packet << HP << MP << pos; ? |
|
Gibas11 |
» 2016-03-07 19:41:08 Wgl nie trzymasz tych danych na kliencie a już na pewno nie wysyłasz ich na serwer. Chyba, że lubisz cheaterów. :p |
|
pekfos |
» 2016-03-07 19:42:35 jakieś grubsze poradniki obrazujące cały proces tworzenia takiej sieciówki |
Nie bądź niepoważny. (To w sumie pasuje na odpowiedź na cały twój post) |
|
qest43 Temat założony przez niniejszego użytkownika |
» 2016-03-07 19:45:54 @Gibas11
Powiedzmy że mam po stronie klienta te klasę, i wykonuję ruch, sprawdza się kolizja, a potem wysyłane są dane o pozycji na serwer, a z serwera do reszty graczy. Jeżeli piszesz że takich danych nie trzyma się po stronie klienta, to jak to wszystko sprawdzać? |
|
pekfos |
» 2016-03-07 19:50:13 Wszystko trzymaj po stronie serwera, wszystko sprawdzaj po stronie serwera. Od klientów tylko przyjmuj akcje, jakie chcą wykonać. Wszystko, co dasz do zrobienia klientom, może zostać wykorzystane przeciwko tobie. |
|
Gibas11 |
» 2016-03-07 19:53:41 Tylko się nie zapędź. Klient może obliczać sporo, ale tylko rzeczy nie wpływające na rozgrywkę innych graczy. Długości wszelkich pasków HP, animacje itd. itp. |
|
« 1 » |