Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Projekt gry gracz vs gracz
Forum PHP.pl > Forum > Przedszkole
PrzemekZ
Witajcie,

piszę do Was gdyż często odwiedzam to forum. Znajdują się tu ludzie znający rzemiosło.

Zainteresowałem się czymś czego od kilku dni nie mogę rozgryźć. Chcę zaplanować projekt gry działającej w czasie rzeczywistym - gracz kontra gracz. Fora, portale, a nawet gry turowe są o niebo łatwiejsze. Będzie przy tym sporo pracy, ale nie tego boje się najbardziej. Chciałbym zaprojektować zgrabny silnik gry. Z uwagi na to, ze jeden z kanałów w którym będzie możliwa rozgrywka to via www, więc postanowiłem od tego zacząć.

Podstawa to logika rozgrywki, którj nie potrafię rozwiązać. Jak mniej więcej zaprojektować relacje, akcje, schemat walki itd.
Założenia:
- gracze mogą zadać cios w każdej chwili
- można się obronić
- różne rodzaje broni
- różne rodzaje ataku
- to wszystko w czasie rzeczywistym
- modyfikatory, zbroje, jakieś punkty itd. itd.

Dodatkowo jakie do tego środowisko webowe wybrać? PHP mogłoby być trochę męczące, może jakiś serwlet?
CuteOne
Nie mam teraz za dużo czasu na wymyślanie rozwiązań, więc jedyne co teraz jestem w stanie wymyślić to
phyton/node.js + flash/websockets

Próbować, możesz z php ale szczerze odradzam, nawet napisanie głupiego chata w php to mordownia smile.gif
Crozin
Innymi słowy ma to być najzwyklejsza gra sieciowa, jednak odpalona z poziomu przeglądarki? Sporo nauki przed Tobą w takim razie. Technologie: PHP kompletnie się tutaj nie nadaje. Java/C#, ewentualnie C++ to standardowe narzędzia z jakich będziesz mógł skorzystać. Od strony klienta nie pozostaje Ci nic poza JavaScriptem. Komunikacja? WebSockets, żaden AJAX.

IIRC Google udostępniło kiedyś platformę, która pozwalała na w miarę łatwe pisanie kodu (Java), który mógł być później uruchamiany jako aplikacja desktopowa, mobilna oraz w przeglądarce. Google 4P, czy Play4 - coś takiego. Jest to o tyle istotne, że zarówno klient jak i serwer (na którym podejmowane są wszelkie decyzje dot. rozgrywki) bardzo często muszą dublować swoją pracę.

Inną alternatywą dla wszystkiego powyżej jest Flash i FlashMediaServer.
PrzemekZ
Plany obejmują większą różnorodność platform niż tylko z gra poziomu przeglądarki, a że programuje trochę w PHP jest to najbliższe memu doświadczeniu platforma na start. Chcę by dostęp do gry był możliwie jak największy, przez co w planach jest też stworzenie własnego klienta gry, mobile, no i via www.

Pomijając przez drobny moment sprawę zaprojektowania klas, zastanawiam się czy w takim razie nie udałoby się - mówiąc ogólnie - stworzyć czegoś na zasadzie:

Core gry i jego fundamentalna obsługa napisana w Java/C#/C++ odpalona na serwerze i obsługująca graczy z każdej platformy za pomocą "interfejsów" i przekładania informacji na potrzeby rozgrywki via przeglądarka, mobile czy tez klient własny? Dobrze rozumuje?

Nie wiem jak rozwiązuje się tego typu gry "sieciowe", ale myślę by każda rozgrywka była rozgrywana za pośrednictwem serwera głównego, tak by można było kontrolować i ewentualnie reagować na jakiś typ oszustwa. Wydaje mi się jednak, że właśnie w ten sposób projektuje się tego typu gry.

Założenie jest takie, że gracze logują się do systemu, powiedzmy kolejkują się do walki, lub po prostu wybierają osobę, z którą chcą walczyć. Po tym wszystkim ładuję się sama walka i stają gracze naprzeciw siebie mając do dyspozycji elementy z założeń napisanych w pierwszym poście.

Jak z grubsza zaprojektować obiekty, relacje, zależności? Klasa gracz, a w niej obsługa przychodzącego ataku, obliczanie mocy ciosu, redukcji (armor) itd. po czym odjęcie hp... czy dać tu jakiś obiekt pośredniczący? Podpowiecie jak to nie spieprzyć na samym początku?
peter13135
a zwykłe aplety javy to już nie dadzą rady ? tongue.gif
zegarek84
Cytat(PrzemekZ @ 30.05.2013, 15:02:59 ) *
Dodatkowo jakie do tego środowisko webowe wybrać? PHP mogłoby być trochę męczące, może jakiś serwlet?

poniższy tekst dotyczy się tematu o ile 1 osoba pisze cały projekt...

rozwinę temat inaczej i chyba nie potrzebnie choć powinieneś z tego skorzystać... jesteś programistą z pasji (no i jak szeroką masz wiedzę ogólną skoro pytasz się o porady - w sumie kto pyta nie błądzi, może ktoś coś sensownego podpowie nawet jak się wie co i jak i jak prawie jest się zdecydowanym)questionmark.gif bo jeśli tak to nie ma problemu kombinować z różnymi językami programowania...

jeśli po prostu język jest dla Ciebie narzędziem (musiałbyś mieć szeroką wiedzę i wcześniej pisać coś w różnych językach) pomijając biblioteki to też nie robi różnicy co będzie po stronie klienta a co serwera... jednak jeśli język jest bardziej sposobem myślenia to dobrze by było ograniczyć się do jednego...

do 1 to do wyboru dla web masz java (po stronie klienta mogą być aplety), oraz JavaScript (współczesne przeglądarki dosyć szybko wykonują kod) gdzie po stronie serwera co prawda w JS masz tylko 1 wątek ale dzięki silnikowi V8 np. node.js skrypt jest skompilowany, w sumie chodzi o obsługę połączenia optymalnie, a zawsze możesz uruchomić następny proces... z node.js prawie się nie bawiłem ale patrząc pod kontem jednego języka można by wspomnieć o bibliotece do komunikacji client side i serwer side Socket.IO

jeśli stosujesz co najmniej 2 języki to masz szeroki wachlarz ale i musisz posiadać większą wiedzę...

co do PHP i obsługi socketów optymalnie a co za tym idzie pisaniem serwera to musiałbyś na prawdę być pasjonatem (fakt są inne opcje ale przy grze czasu rzeczywistego jeśli projekt się powiedzie szybko zostanie zajechany serwer lub będą niezłe koszty)... można i w PHP socket w 1 wątku też optymalnie obsłużyć ale jak pisałem raczej to dla pasjonatów... Guru - Multiplexing - przedsmak do optymalizacji ;] ,ale i tak to raczej sztuka dla sztuki i w sumie pasuje mieć podobne podejście jak przy programowaniu C++

C++ - by łatwiej było to albo biblioteka Qt albo Asio lub Boost::Asio... no fakt jeśli zwracasz HTML to jeszcze coś w stylu POCO...

w sumie dalej i tak chyba nie ma sensu się rozpisywać ;] - wątpię bym pomógł ;]

Crozin
Mierz siły na zamiary... patrząc po Twoich pytaniach, widać, że nie masz jeszcze obeznania z tematem. Zacznij pomału, od jak najprostszej gry, z jednym klientem w formie aplikacji desktopowej. Klient w przeglądarce jest bardziej kłopotliwy w budowie.

Na http://gafferongames.com/ znajdziesz rewelacyjną serię artykułów/tutoriali n/t gier sieciowych. Dopiero po przeczytaniu tego będziesz miał wstępny podgląd na całą rzeszę problemów z jakimi przyjdzie Ci się zmierzyć, a o których istnieniu zapewne nie zdajesz sobie jeszcze sprawy. Gwarantuję Ci, że po tej lekturze wrócisz na forum z nieco innymi pytaniami. wink.gif

Następnie zapoznaj się z PlayN. Jest to framework, który umożliwia w miarę ludzkie pisanie gry (u Ciebie klienta gry) na wiele kompletnie odmiennych platform równocześnie. Tu przy okazji miałbyś rozwiązany problem "w czym pisać" - Java.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.