eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingRe: how 2 code 2 player pong over a network › Re: how 2 code 2 player pong over a network
  • X-Received: by 10.31.174.75 with SMTP id x72mr726978vke.13.1512596721471; Wed, 06 Dec
    2017 13:45:21 -0800 (PST)
    X-Received: by 10.31.174.75 with SMTP id x72mr726978vke.13.1512596721471; Wed, 06 Dec
    2017 13:45:21 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!peer01.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-medi
    a.com!news.highwinds-media.com!m31no516121qtf.0!news-out.google.com!t48ni1204qt
    c.1!nntp.google.com!g35no515734qtk.1!postnews.google.com!glegroupsg2000goo.goog
    legroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 6 Dec 2017 13:45:21 -0800 (PST)
    In-Reply-To: <8...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.79.211;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 46.186.79.211
    References: <b...@g...com>
    <b...@g...com>
    <8...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <a...@g...com>
    Subject: Re: how 2 code 2 player pong over a network
    From: g...@g...com
    Injection-Date: Wed, 06 Dec 2017 21:45:21 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Body-CRC: 4224319127
    X-Received-Bytes: 6033
    Xref: news-archive.icm.edu.pl pl.comp.programming:211856
    [ ukryj nagłówki ]

    W dniu środa, 6 grudnia 2017 21:22:32 UTC+1 użytkownik fir napisał:
    > W dniu środa, 6 grudnia 2017 20:49:34 UTC+1 użytkownik g...@g...com napisał:
    > > Kiedyś z kolegą tak zrobiliśmy, że sobie napisaliśmy któregoś wieczora
    > > ponga na dwa komputery, podłączyliśmy jeden komputer do telewizora
    > > i graliśmy jak za "starych dobrych".
    > >
    > > Opóźnienia w sterowaniu były zasadniczo niezauważalne. Zdaje się, że
    > > rzecz była rozwiązana w taki sposób, że mieliśmy dwie aplikacje - klienta
    > > i serwera, i dwa klienty były podłączone do jednego serwera. Architektonicznie
    > > takie rozwiązanie jest prostsze, i można też łatwo postawić serwer na osobnym
    > > kompie, zmniejszając nieuczciwość wynikłą z inercji.
    > >
    > > Jednak przy słabo obciążonej sieci lokalnej nie było żadnej dostrzegalnej
    > > inercji, dlatego sugerowałbym najpierw napisać aplikację, a później przejmować
    > > się ewentualnymi problemami, niż najpierw się przejmować problemami, a później
    > > tak "przedobrzyć" z projektem, że w końcu aplikacja nigdy nie powstanie.
    > >
    > > Stąd też najpierw po prostu napisz, zmierz, i może się okaże, że będzie dobrze.
    > > A jak opóźnienia będą zbyt dokuczliwe, możesz to przerobić na strategię turową.
    >
    > wiem ze na lokalnej sieci opoznienia beda raczej minimalne i mozna je
    najprawdopodobniej olac
    > ale ja mowie o przypadku z laczeniem sie miedzy miastami (jak napisalem
    testowalismy to z moją koleżanką-asystentką i dzialalo ale
    > opznienie raczej są i trzeba pomyslec jak do tego podejsc
    >
    > - najprawdopodobniej sporo ludzi juz ten problem rozwiazalo i sa jakies dobre
    metody ale jak mowi ja sie tym poki nie zajmowalme i teraz czeka mnie rozkminienie
    tego probblemu
    >
    > ps prosty prototym samego polaczenia jest napisane mozesz sobie odpalic i nawet
    poeksperymentowac z kodem
    >
    > minddetonator.htw.pl/ppt.zip

    Możesz zamiast TCP spróbować zrobić po UDP. Wprawdzie wtedy trzeba
    będzie wprowadzić jakąś strategię synchronizacji (żeby pakiety które przychodzą
    z bardzo dużym opóźnieniem nie wpływały na rozgrywkę), ale może będzie
    szybciej.

    Co do przekonania, że ktoś ten problem rozwiązał, to raczej bym na to
    nie liczył. Opóźnienie to opóźnienie i nie da się go usunąć (ewentualnie
    można się zastanowić nad szybszym internetem, albo nad postawieniem
    serwera w mieście pomiędzy waszymi miastami). Można się bawić w jakieś
    modele, predykcje itp. ale to tylko częściowo skompensuje problem.

    Oczywiście w przypadku tej partykularnej gry, jaką jest pong, można sobie
    poradzić z tym problemem bardzo łatwo - ważna jest tylko pozycja i prędkość
    piłki w momencie odbicia od paletki - po upłynięciu owego czasu można
    deterministycznie określić, w której klatce piłka znajdzie się u przeciwnika.
    Jeżeli gracze ufają sobie nawzajem, to wystarczy w momencie obronienia
    albo zdobycia punktu wysłać informację o tym, czy się to udało.
    Wówczas serwer może zaktualizować położenie piłki do drugiego gracza
    dopiero wówczas, gdy dostanie odpowiedź.

    Taka strategia będzie działała o tyle, o ile czas transmisji pomiędzy klientami
    będzie dużo mniejszy niż czas, w jakim piłka przeleci z jednego końca
    do drugiego. W przeciwnym razie warto się zastanowić z krótkotrwałym
    wstrzymaniem gry do czasu, aż drugi gracz nie dostanie informacji od
    pierwszego.

    Można też zrobić synchronizację z klientami - serwer zaktualizuje klatkę
    rozgrywki dopiero wtedy, kiedy dostanie odpowiednią informację od obu
    klientów (na przykład z numerem klatki), zaś klient wyśle informację dopiero
    po przesłaniu potwierdzenia od serwera.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: