Discussion:
Prosta gra sieciowa
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
agnik28
2005-03-21 21:17:21 UTC
Permalink
Witam grupowiczow i z gory prosze o wyrozumialosc.

Domyslam sie iz rzucam sie na gleboka wode.
Chcialbym na swojej stronce www miec prosta gre sieciowa.
Czy ktos moglby mi pomoc i jak krowie na roli wyjasnic sprawe serverow ? :(
Kupilem kasiazke ale widac kiepska bo tam nie ma nic o konfiguracji, co
gdzie
jakie pliki umiescic.
Mam tez kody zrodlowe prostszych czy tez bardziej skomplikowanych przykladow
server-client ale nie bardzo wiem jak sie do tego zabrac.
Czy ja musze jakis server postawic u siebie ...
czy te pliki musze wyslac na server gdzie mam stronke ?

Z gory dziekuje za pomoc (jesli takową ktos sie zlituje i udzieli)
Jakub Głuszecki
2005-03-22 08:12:08 UTC
Permalink
Post by agnik28
Witam grupowiczow i z gory prosze o wyrozumialosc.
Domyslam sie iz rzucam sie na gleboka wode.
Chcialbym na swojej stronce www miec prosta gre sieciowa.
Czy ktos moglby mi pomoc i jak krowie na roli wyjasnic sprawe serverow ? :(
Kupilem kasiazke ale widac kiepska bo tam nie ma nic o konfiguracji, co
gdzie
jakie pliki umiescic.
Myślę, że równie dobrze mógłbys na grupie o medycynie napisać, że
chciałbyś przeprowadzić prostą operację przeszczepu wątroby i czy ktoś
mógłby Ci wyjaśnić sprawę skalpela.
--
Pozdrawiam
Jakub Głuszecki
***@wrota.net
Smutny30
2005-03-23 14:22:20 UTC
Permalink
Post by agnik28
Witam grupowiczow i z gory prosze o wyrozumialosc.
Domyslam sie iz rzucam sie na gleboka wode.
Chcialbym na swojej stronce www miec prosta gre sieciowa.
Czy ktos moglby mi pomoc i jak krowie na roli wyjasnic sprawe serverow ? :(
Jeśli dobrze zrozumiałem o co Ci chodzi to z grubsza tak (rozwiązanie oparte
na javie):

1. Na serwerze stawiasz engine gry, nasłuchujący za pomocą RMI (może być też
zwykły HTTP oparty o Servlety lub WebService) na połączenia z apletów.

2. Każdy uczestnik gry ładuje stronkę z apletem, który łączy się z serwerem
i wywołuje różne metody, które z grubsza można podzielić na dwie grupy:

a) metody wysyłające do serwera informacje o podejmownych przez danego
uczestnika gry akcjach
b) metody pobierające z serwera inforację o całym "świecie" gry czyli
przetworzony stan uwzględniający obecność innych uczestników gry

Do tego jakaś szata grfivczna w applteach.

Biorąc pod uwagę jezyk jakim zadałeś pytanie masz przed sobą jakies 3-4 lata
nauki, zanim coś takiego będziesz mógł sam napisać.

pozdrawiam Olek
agnik28
2005-03-23 19:49:41 UTC
Permalink
Post by Smutny30
Post by agnik28
Domyslam sie iz rzucam sie na gleboka wode.
Chcialbym na swojej stronce www miec prosta gre sieciowa.
Czy ktos moglby mi pomoc i jak krowie na roli wyjasnic sprawe serverow ?
Jeśli dobrze zrozumiałem o co Ci chodzi to z grubsza tak (rozwiązanie oparte
Dziekuje za odpowiedz. :) A jednak można :P
Odnosnie metod i komunikowania sie z serverem to sie
domyslilem
a takze przeczytałem w ksiązce. Tylko tam nie ma nic
serverach - co gdzie jak.
Gdbys mógł jeszcze słówko na temat serverów.
Napisałes : "Na serwerze stawiasz engine gry, nasłuchujący
za pomocą RMI
(może być też zwykły HTTP oparty o
Servlety lub WebService)"
Czy dobrze rozumiem, ze engine gry wysylam na server ten
gdzie jest moja strona WWW,
czy tez serverem bedzie jakis program (plik) który wysle na
server stronki. ? ?

I kolejne juz napewno proste pytanie ... czy w innym jezyku
np. C, C++ lub Delphi
wykonanie takiej prostej gry sieciowej dostepnej z poziomu
WWW
(jednoczesnie gralyby tylko dwie osoby)
mogłoby byc prostsze ? ? (mogłoby byc pomocne to ze 8 lat
temu napisalem kilka bardzo prostych
programow w Pascalu i C lecz niestety nic sieciowego)

Jescze raz dziekuje i pozdrawiam
pjaworek
2005-03-23 20:09:07 UTC
Permalink
Post by Smutny30
Post by Smutny30
Post by agnik28
Domyslam sie iz rzucam sie na gleboka wode.
Chcialbym na swojej stronce www miec prosta gre sieciowa.
Czy ktos moglby mi pomoc i jak krowie na roli wyjasnic sprawe serverow ?
Jeśli dobrze zrozumiałem o co Ci chodzi to z grubsza tak (rozwiązanie
oparte
Dziekuje za odpowiedz. :) A jednak można :P
Odnosnie metod i komunikowania sie z serverem to sie
domyslilem
a takze przeczytałem w ksiązce. Tylko tam nie ma nic
serverach - co gdzie jak.
Gdbys mógł jeszcze słówko na temat serverów.
Napisałes : "Na serwerze stawiasz engine gry, nasłuchujący
za pomocą RMI
(może być też zwykły HTTP oparty o
Servlety lub WebService)"
Czy dobrze rozumiem, ze engine gry wysylam na server ten
gdzie jest moja strona WWW,
czy tez serverem bedzie jakis program (plik) który wysle na
server stronki. ? ?
I kolejne juz napewno proste pytanie ... czy w innym jezyku
np. C, C++ lub Delphi
wykonanie takiej prostej gry sieciowej dostepnej z poziomu
WWW
(jednoczesnie gralyby tylko dwie osoby)
mogłoby byc prostsze ? ? (mogłoby byc pomocne to ze 8 lat
temu napisalem kilka bardzo prostych
programow w Pascalu i C lecz niestety nic sieciowego)
Jescze raz dziekuje i pozdrawiam
przepraszam że się wtrącam ale tak sobie myśle że lepiej nie porywać się
z motyką na słońce :( i to weź to sobie do serca stary, ja programuje w
javie od 3 lat w tym certyfikat SCJP, a sieciowe sprawy i tak sprawiają
mi zawsze problem to nie jest takie proste nawet gdy programowałeś
kiedyś tam to jak to powiadają rzeczy zmieniają się w przeciągu
miesięcy...... daj sobie spokój bo nie dasz rady no chyba że masz w
przeciągu powiedzmy pół roku za dużo wolnych wieczorów.... a jak Ci się
uda opanować to w pół roku to stawiam piwko....
pozdro
pjaworek
clyde
2005-03-23 21:44:00 UTC
Permalink
Post by pjaworek
przepraszam że się wtrącam ale tak sobie myśle że lepiej nie porywać się
z motyką na słońce :( i to weź to sobie do serca stary, ja programuje w
javie od 3 lat w tym certyfikat SCJP, a sieciowe sprawy i tak sprawiają
mi zawsze problem to nie jest takie proste nawet gdy programowałeś
kiedyś tam to jak to powiadają rzeczy zmieniają się w przeciągu
miesięcy...... daj sobie spokój bo nie dasz rady no chyba że masz w
przeciągu powiedzmy pół roku za dużo wolnych wieczorów.... a jak Ci się
uda opanować to w pół roku to stawiam piwko....
Nie no spox.. Faktycznie ma kolega racje ze sie Pan aknik28 porwal troche za
wysoko, ale w zadnym razie nie powinien "dawac" sobie spokoju

Tylko moze faktycznie niech zacznie od poczatku. Jakas banalna komunikacja z
serwerkiem. Zaczal bym od gier singleplayer (no chyba ze pytajacy ma Java2D
w malym paluszku ;))
Malymi kroczkami. I na grupe poprosimy konkretne problemy , a nie ze cos by
szanowny kolega chcial a w ogole nie zaczal.
agnik28
2005-03-23 23:11:13 UTC
Permalink
Post by clyde
Nie no spox.. Faktycznie ma kolega racje ze sie Pan aknik28 porwal troche za
wysoko, ale w zadnym razie nie powinien "dawac" sobie spokoju
Tylko moze faktycznie niech zacznie od poczatku. Jakas banalna komunikacja z
serwerkiem. Zaczal bym od gier singleplayer (no chyba ze pytajacy ma Java2D
w malym paluszku ;))
Malymi kroczkami. I na grupe poprosimy konkretne problemy , a nie ze cos by
szanowny kolega chcial a w ogole nie zaczal.
To przy okazji zapytam ... (dosc naiwnie)
Jesli napisalbym ta swoja "gierke" to potem którys z Was "guru"
w ramach wolnego czasu lub za drobna opłatą mógłby przerobic
to na potrzeby jak w głownym temacie ?
Czy moze takie "przerobienie" to wiecej zachodu niz to warto ?
A.R.
2005-03-24 09:41:26 UTC
Permalink
agnik28
Post by agnik28
To przy okazji zapytam ... (dosc naiwnie)
Jesli napisalbym ta swoja "gierke" to potem którys z Was "guru"
w ramach wolnego czasu lub za drobna opłatą mógłby przerobic
to na potrzeby jak w głownym temacie ?
Czy moze takie "przerobienie" to wiecej zachodu niz to warto ?
Po pierwsze nie sluchaj glupot o RMI i servletach.
Jak rozumiem na razie masz stronke na jakim serverze z
dostepem wylacznie ftp?
Na poczatek proponuje zapoznac sie z servletami:
http://java.sun.com/docs/books/tutorial/applet/index.html
napisac prosty przyklad i umiescic na stronce (banal)

W drugim kroku potrzebujesz opanowac technologii klient-server.
http://java.sun.com/docs/books/tutorial/networking/index.html
Jesli masz ze 2 kompy polaczone kabelkiem to na jednym
uruchamiasz program wystawiajacy port (klasa ServerSocket) a
na drugim uruchamiasz klienta laczacego sie na ten port. Niestety
wymagane jest minimum wiedzy o numerach IP, portach (wybieraj takie
powyzej 1024) i ewentualnej konfiguracji firewalla, tak aby ten
port byl widoczny z innych maszyn. Jesli nie masz 2 kompow -
mozesz to robic na jednym (ospalasz klienta i servera z osobnych
konsoli/okin linii polecen)

Ostatnim najtrudniejszym krokiem jest po pierwsze umieszczenie
kodu klienta w aplecie a po drugie umieszczenie programu
servera na tym samym hoscie na ktorym masz stronke z apletem.
Co prawda mozna umiecic je na roznych hostach, ale trzeba sie
wtedy bawic z security managerem
http://java.sun.com/docs/books/tutorial/security1.2/index.html
czego nie polecam.
Dlatego musisz sie dogadac z adminem hosta na ktorym masz
stronke zeby udostepnil Ci normalne konto i skonfigurowal
firewalla, albo wystawic obie rzeczy (program-server + stronka
na apaczu np.) na wlasnym kompie ze stalym dostepem do
internetu i stalym IP i skonfugurowac firewalla (albo poprosic
kogos o pomoc).

Pomijajac w.w. wzgledy organizacyjne napisanie prostej gry
dla 2 osob nie powinno zajac Ci wiecej niz kilka tygodni.
Aby pisac bardziej skomplikowane gry musisz dobrze
opanowac multitasking:
http://java.sun.com/docs/books/tutorial/essential/threads/index.html
oraz inne niezbedne rzeczy.
http://java.sun.com/docs/books/tutorial/index.html
Dla chcacego nic trudnego.

Pozdrawiam
A.R. BEZ certyfikatu :-P
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
A.R.
2005-03-24 10:25:20 UTC
Permalink
Post by A.R.
http://java.sun.com/docs/books/tutorial/applet/index.html
napisac prosty przyklad i umiescic na stronce (banal)
Oczywiscie ze nie servletami tylko *APLETAMI*. Sorry.

Pozdrawiam
A.R.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Piotr Lipson
2005-03-24 16:32:17 UTC
Permalink
Post by A.R.
Post by A.R.
http://java.sun.com/docs/books/tutorial/applet/index.html
napisac prosty przyklad i umiescic na stronce (banal)
Oczywiscie ze nie servletami tylko *APLETAMI*. Sorry.
Pozdrawiam
A.R.
Uff, to naprawde nie jest nic latwego taka gra.

Polecalbym najpierw zajac sie jakos sensownie komunikacja, i jesli
naprwade miala by byc dosyc dynamczna to niestety baaardzo wskazane jest
takie paskudztwo jak... UDP, ciarki mnie przechodza na mysl o
obkodowaniu tego ale jesli "stan" u klienta (w applecie) mialby byc
synchronizowany dajmy na to hmm, ponad 5 razy na sekunde to to jest
konieczne. Jesli nie to uzyj strumienia TCP (i wszystkich zwiazanych z
tym blogoslawienst). Natomiast jesli moze byc co jakies 2 sekundy to
(albo gra turowa, czy prosty chat) to wtedy moze to byc Servlet (czyli
HTTP przez TCP).

Proponowalbym Ci poczytac o tym o co musisz sie martwic od strony
oprogramowania UDP:

"Multiple packets sent from one machine to another might be routed
differently, and might arrive in any order. Packet delivery is not
guaranteed."

jesli to Cie nie zniecheca to dalej taka drobna sprawa, do nasluchy na
kazdym polaczeniu z kleintem (appletem) musisz uzyc osobnego watku, co
implikuje ze musisz byc obcykany w wątkach i to nieźle. Albo obckany w
pakiecie java.nio.*, prawde mowiac nie wiem co latwiejsze :).

Ale dla pocieszenia to nie jest nierealny projekt, proponowalbym
rozmowic sie z jakimis kolegami zebyscie sie jakos praca podzielili.

Ale takie przedwsieziecie zaliczylbym do nastepujacej kategorii:
http://www.chebucto.ns.ca/Science/AIMET/death_march/

Serwer musialby pracowac w ciasnej petli:

--
update stanu swiata/gry po stronie serwera
rozeslanie stanu do wszystkich graczy
odebranie "dzialań" od graczy
--

a klient:

--
update stanu po stronie klienta (synchronizacja z serwerem)
sczytywanie "dzialan" uzytkowanika
wyslanie "dzialan" do serwera
--

I jesli nie dostrzegasz problemow ktore tu sa to juz wyjasniam:

-rozsylanie/odbieranie/przeliczanie stanu przez serwer musialoby byc
robione wspolbierznie, zeby gracze z duzym "pingiem" nie spowalniali innych.
-synchronizowanie stanu przez klienta powinno byc robione "niewidocznie"
dla gracza, gracz cos robi a moze nie wiedziec ze "facet do ktorego
strzela" juz umarł na "serwerze" i tego typu problemy, albo dwoch
strzela do siebie w tym samym momencie i tak naprawde przezyje ten
ktorego pakiet dotrze do serwera pierwszy (takich rzeczy nie jest w
stanie klient przewidziec).
-w przypadku UDP musisz poswiecic niezawodnosc transmisji, pakiet moze
niedotrzec do serwera/klienta albo moze przyjsc przed pakietem wyslanym
pozniej. a jednoczesnie nie mozesz pozwolic na takie sytuacje: jesli
uzytkownik "strzeli" to ten strzal nienastapi, musisz w przypadku
niektorych waznych akcji "próbowac do skutku" az informacja dojdzie do
serwera. To jest baaaardzo upeirdliwe, wiec moze lepiej wrzucac wszystko
w strumien TCP i nie zapominac o tym zeby w odpowiednich momentach go
flush()'owac, dodatkowo skonfigurowac gniazdo tcp zeby informacje nie
byly za dlugo buforowane.
-musisz miec dostep do maszyny na ktorej posadzisz program "serwera"
przy pomocy zwyklej javy, a nie tylko "WWW Hosting" gdzie łaskawie dali
ci tomcata - musisz miec mozliwosc postawienia nasluchu od graczy na
jakims porcie na maszynie z zewnetrznym IP i dodatkowo miec tam JRE (no
chyba ze znajdziesz taki hosting ze z posiomu servletu bedziesz mogl
otworzyc sobie gniazdko na innym porcie, ale to ma ogromna wade bo
przestoje tomcata powodowalyby przestoje serwera gry - mocno wskazany
jest oddzielny proces dla serwera gry. Zeby applet mogl sie komunikowac
z tym sererem gry to musi on stac na tej samej maszynie z ktorej zostal
pobrany applet (to ograniczenie da sie troche zlagodzic). wiec radzilbym
uzyc nie appletu tylko WebStarta - wygodniejsze niz applet jest nawet,
poczytaj sobie.

Chyba ze zrobisz gre turowa wtedy nie masz problemu z watkami i w petli
klienta i serwera wszytko odbywa sie po kolei a nie równoczesie. Jesli
zrobisz internetowe warcaby to nie bedzie prawie wszystkich problemów
ktore tu wymienilem, i bedziesz mogl wykorzystac nawet servlety

Jesli Cie nie zniechecilem to szczerze życze powodzienia
agnik28
2005-03-25 21:02:19 UTC
Permalink
(...)> Chyba ze zrobisz gre turowa wtedy nie masz problemu z watkami i w
petli
Post by Piotr Lipson
klienta i serwera wszytko odbywa sie po kolei a nie równoczesie. Jesli
zrobisz internetowe warcaby to nie bedzie prawie wszystkich problemów
ktore tu wymienilem, i bedziesz mogl wykorzystac nawet servlety
Jesli Cie nie zniechecilem to szczerze życze powodzienia
Warcabami tego bym nie nazwał, lecz dynamiczna to ona tez nie
bedzie.
"Nasłuch" co 2 sekundy byłby wystarczający.

Dziekuję za porady !
(jak widac operację przeszczepu wątroby i sprawę skalpela da sie
opisac
nawet laikowi nie bedacemu w medynie biegłym)

agnik28
2005-03-24 22:24:17 UTC
Permalink
Post by A.R.
Post by A.R.
http://java.sun.com/docs/books/tutorial/applet/index.html
napisac prosty przyklad i umiescic na stronce (banal)
Oczywiscie ze nie servletami tylko *APLETAMI*. Sorry.
Nic się nie stało :))
Dziekuję, jestem w trakcie "studiowania" tutoriali :))
Jak do czegos dojde i bede miał konkretne problemy, zgłszę się :)

Dzieki bardzo, pozdrawiam
pjaworek
2005-03-24 14:48:26 UTC
Permalink
Post by agnik28
To przy okazji zapytam ... (dosc naiwnie)
Jesli napisalbym ta swoja "gierke" to potem którys z Was "guru"
w ramach wolnego czasu lub za drobna opłatą mógłby przerobic
to na potrzeby jak w głownym temacie ?
Czy moze takie "przerobienie" to wiecej zachodu niz to warto ?
szanowny kolego nie uważam się za żadnego "guru" bo jeszcze powiedzmy
brakuje mi jakieś 5 lat doświadczenia z j2ee i jeżeli uraziłem to
przepraszam nie było to moim celem, co jawnie dał mi do zrozumienia pan
A.K. no cóż myśle że nie będę już zabierał w tej kwestii zdania..... z
pewnością artykuł pana A.K. wszystko ci wyjaśnił i jest ok życzę powodzenia
pjaworek
pjaworek
2005-03-24 14:49:03 UTC
Permalink
Post by pjaworek
Post by agnik28
To przy okazji zapytam ... (dosc naiwnie)
Jesli napisalbym ta swoja "gierke" to potem którys z Was "guru"
w ramach wolnego czasu lub za drobna opłatą mógłby przerobic
to na potrzeby jak w głownym temacie ?
Czy moze takie "przerobienie" to wiecej zachodu niz to warto ?
szanowny kolego nie uważam się za żadnego "guru" bo jeszcze powiedzmy
brakuje mi jakieś 5 lat doświadczenia z j2ee i jeżeli uraziłem to
przepraszam nie było to moim celem, co jawnie dał mi do zrozumienia pan
A.K. no cóż myśle że nie będę już zabierał w tej kwestii zdania..... z
pewnością artykuł pana A.K. wszystko ci wyjaśnił i jest ok życzę powodzenia
pjaworek
jeszcze raz przepraszam chodziło mi o pana A.R. z wyrazami szacunku
Loading...