Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML2] Tworzenie gry sieciowej

Ostatnio zmodyfikowano 2016-03-07 19:53
Autor Wiadomość
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.
P-145677
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?
P-145679
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; ?
P-145680
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
P-145682
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)
P-145683
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ć?
P-145684
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.
P-145685
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.
P-145686
« 1 »
  Strona 1 z 1