Gra przeglądarkowa - możliwości PHP

0

Cześć, jest mi niezmiernie miło powitać wszystkich użytkowników 4programmers.net w moim pierwszym, lecz zapewne nie ostatnim temacie dotyczącym programowania PHP.

Nie dawno, a raczej przed kilkoma dniami w grupie kilku osób stworzyliśmy projekt, a raczej pomysł na utworzenie gry przeglądarkowej o militarnej galaktyce. Stworzyliśmy zarys projektu wraz z obszernym opisem danych funkcji gry w dokumentacji, którą każdy z Nas już teraz posiada na dysku. Rozpoczęły się prace graficzne nad wypunktowanymi zapotrzebowaniami, a także rysunki dotyczące poszczególnych obrazków w grze (np. postacie).

Idea gry jest w tym temacie nie tyle ważna, co raczej Wasza odpowiedź na temat wykonalności w stosunku do języka PHP. Gry takie jak plemiona, okariam, czy chociażby (mniej popularny, domowy projekt) footballteam są oparte na kalkulatorach PHPu, z nasadką drobnego javascriptu.

Uważacie, że PHP jest odpowiednim językiem, którego znajomość wystarczy Nam do napisania silnika gry opartego właśnie na funkcjach kalkulacyjnych?

Mimo, że posiadamy pewną wiedzę na temat tego języka, chcielibyśmy podszkolić się jeszcze bardziej. Interesują Nas poradniki od samego newbie, by przeanalizować zdobytą dotychczas wiedzę.

Darujcie sobie komentarze na temat promocji, budżetu, serwera gry, czy ogólnego zapotrzebowania środowiska na takowe projekty - mamy już wszystko zaplnanowane.

0

Tak, da się zrobić wydajne gry przeglądarkowe w PHP.

Kwestią dyskusyjną jest czy jest to najlepszy pomysł. IMO nie.

0

Biorąc pod uwagę ogólne możliwości operatorów php:

Operatory dzielą się na operatory arytmetyczne, które służą do operacji na liczbach, operatory przypisania służące do przypisywania zmiennym wartości, operatory operacji bitowych, operatory porównania niezbędne do instrukcji warunkowych, operator kontroli błędów, operator wykonania służący do uruchamiania zewnętrznych programów, operatory inkrementacji i dekrementacji, operatory logiczne i operatory ciągu.

Odnoszę wrażenie, że wystarczyło uważać na lekcjach matematyki, by wyrobić swoją logikę pozwalającą odpowiednio zastosować powyższe operacje.

1

Każdy język pozwoli Ci wykonywac operacje matematyczne.

W czym leży problem z PHP - PHP to nie jest język nastawiony na "czuwanie" w tle - każdy request od nowa ładuje kod, parsuje wszystkie pliki, łączy się z bazą, wykonuje parę operacji i kończy działanie. Utrudnia to operacje wymagające działania w czasie rzeczywistym (zostaje: nieskończona pętla, cron, obliczanie przy każdym wywołaniu - każda z opcji jest kiepska).

Sam język jest mocno krytykowany za milion innych powodów - po 6 latach z tym językiem wszystko mogę potwierdzić:
http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

Z języków, które dotknąłem mogę zasugerować:

  • Python
  • Node.JS (ale zalecana jest bardzo dobra znajomość javascriptu, inaczej appka się będzie sypać)
0

W skrócie, dlaczego miałbym wybrać Pythona, a nie PHP? Czy ten język jest trudny do nauczenia? Jak on sie ma do stron w HTMLu, tak samo jak PHP (czyli działa jako "niewidzialny silnik") ?

0

Możesz zrobić część kliencką niezależnie od serwerowej w związku z czym będziesz mógł tę drugą potem wymienić jeśli się nie sprawdzi. Rozwiązań jest kilka:

JSON-RPC: http://jsonrpcphp.org/
XML-RPC: http://tldp.org/HOWTO/XML-RPC-HOWTO/xmlrpc-howto-php.html
long-polling: http://elikirk.com/php-ajax-long-polling-comet-demonstration/
REST: http://code.tutsplus.com/tutorials/a-beginners-guide-to-http-and-rest--net-16340

Ważne żeby stosować standardowe protokoły i struktury danych przy przesyłaniu komunikatów m. klientem a serwerem.

dzek69 napisał(a):

W czym leży problem z PHP - PHP to nie jest język nastawiony na "czuwanie" w tle - każdy request od nowa ładuje kod, parsuje wszystkie pliki, łączy się z bazą, wykonuje parę operacji i kończy działanie. Utrudnia to operacje wymagające działania w czasie rzeczywistym (zostaje: nieskończona pętla, cron, obliczanie przy każdym wywołaniu - każda z opcji jest kiepska).

To oczywiście nie zawsze jest prawdą.
Do kodu mamy APC i inne: http://en.wikipedia.org/wiki/List_of_PHP_accelerators

Do danych mamy
a) memcached: http://php.net/manual/en/book.memcache.php
b) bazę danych (Drupal)
c) system plików (Cache_Lite): https://pear.php.net/package/Cache_Lite/

Najgorsze co się może zdarzyć to wycieki pamięci - wg mojej wiedzy może być trudno ich uniknąć w PHP - dlatego lepiej stosować RPC niż demony.

0

To jakich najnowszych technologi używa się teraz do pisania gier przeglądarkowych obrazkowych, poza HTML5, CSS3, JS zostaje tylko PHP i MySQl czy Python i Ruby, RoR? Chodzi mi o takie gry jak:
http://knights.pl/
http://www.krainawikingow.pl/
http://pl.gladiatus.gameforge.com/game/

0

Zainstaluj sobie do Chroma dodatek Appspector i sam popatrz. Pierwsza to php, reszta to flash - flash zdycha wiec się za niego nie bierzcie.
https://chrome.google.com/webstore/detail/appspector/homgcnaoacgigpkkljjjekpignblkeae

0

Do gier takich jak OGame, Travian, Plemiona, Gladiator (chyba jakos tak się nazywa) wystarczy php bo nie ma tam żadnych akcji działających w czasie rzeczywistym - wszystko przy klikaniu się dzieje/zmienia więc Python czy cos innego akurat do takich gierek nie bedzie potrzebny.

1

@adriano1995 piszesz jakby PHP był jakiś mega prostszy od Pythona, a Python to wyciąganie armaty na muchę. Dla mnie to alternatywne rozwiązania, z tym, że jeśli miałbym sam wybierać to oczywiście Python. Celery to świetna sprawa do tego typu rzeczy.

0

@Wizzie wcale to nie miało tak zabrzmieć. Autor tematu bardziej dopytuje czy może użyć do tego php, więc mu odpowiedziałem, że php wystarczy. Do pythona chyba nie użyje zwykłego hostingu.

1

A to jakiś problem użyć "niezwykłego" hostingu?

0

Przecież to ma być dosyć skomplikowany silnik gry. Co jeśli będzie chciał sobie zainstalować np. Memcached czy Redisa? Serio byś to stawiał na hostingu?

0

Autor nie napisał że to będzie skomplikowany silnik. Do gry takiej jak Ogame, bez zastanowienia brałbym php bo znam lepiej niż Pythona (którego w ogóle nie znam). OGame nie ma wielu jakichś obliczeń na każdej stronie, więc to zależy od poziomu skomplikowania gry, autor może chce zrobić coś takiego jak OGame, a może coś o wiele bardziej dynamicznego, tego nie napisał.

0
adriano1995 napisał(a):

OGame nie ma wielu jakichś obliczeń na każdej stronie

No tak, bo obliczenia nie robią się na stronie, tylko w tle, i cały proces utrzymania takiego świata jest bardziej skomplikowany, niż Ci się wydaje ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1