Autor Wątek: W czym sie teraz tworzy niewielkie gry przegladarkowe (multiplayer).  (Przeczytany 5404 razy)

Offline 10log

  • Użytkownik

# Kwiecień 15, 2015, 14:17:15
Xion napisał tylko, że
Cytuj
PHP to po prostu jeszcze bardziej kiepski język niz JavaScript
co za dużo do tematu "dlaczego nie PHP" nie wnosi.

Dużym "za" dla PHP na pewno jest szeroko dostępny, tani jak barszcz z uszkami hosting co imho na początek jest dużą zaletą.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline albireo

  • Użytkownik

  • +1
# Kwiecień 15, 2015, 14:26:02
Dużym "za" dla PHP na pewno jest szeroko dostępny, tani jak barszcz z uszkami hosting co imho na początek jest dużą zaletą.
Jak dla mnie, to jest to jedyna zaleta PHP.

Offline Wiesiu

  • Użytkownik

  • +4
# Kwiecień 15, 2015, 15:19:54
Ciężko jest tu polemizować z bardziej doświadczonymi programistami, ale dorzucę swoje 3 grosze dla odmiennego punktu widzenia:)

Myślę, że w dużej mierze musisz odpowiedzieć sam przed sobą co masz zamiar zyskać tym projektem.

Jeżeli twoim nadrzędnym celem jest ukończenie i posiadanie funkcjonalnej gry, no to wybór PHP + MYSQL + JS (jak najmniej) wydaje się odpowiedni.

Wykorzystując jakiś framework PHP - MVC (np. CodeIgniter), to przygodę z PHP ograniczysz do pisania logiki w plikach modelu i wywołań funkcji frameworka np. ($this->db->get("XYZ");)

Jest to stary FW (w wersji stabilnej 2+), ale łatwo się go uczy i ma podstawowe funkcjonalności jakie potrzebujesz, abstrakcję nad budowaniem zapytań do DB, obsługę ciastek/sesji (logowanie) itd.

JavaScript osobiście nie trawię, chociaż wciąż daję mu szansę. W tym konkretnym projekcie, jeśli czas na ruch jest ograniczony, to wykorzystanie JS można ograniczyć do absolutnego minimum czyli obsługi timera odświeżającego okno przeglądarki.

Pozostałe elementy gry jak HTML + CSS wystarczą podstawy - a jeżeli chcesz sprawić by gra była grywalna na urządzeniach mobilnych, to właśnie tu będziesz musiał doczytać nt. responsive design.

Wyżej wymienione rozwiązanie jest dziadowskie, "tak się nie robi", a duża gra zadławiłaby Ci się nawet na wydajnym serwerze.
Ale.. Ale, w tydzień będziesz miał zbudowaną grę na hostingu za 30zł/rok i w kameralnym gronie e-kolegów będziesz mógł ciupać w swoje dzieło.

Jeśli natomiast budowa tej gry, to furtka do poznania meandrów technologii internetowych, no to pozostaje wczytać się w post Xion'a i wybrać jakieś rozwiązanie. Jednak będzie to długa droga a produkt końcowy z uwagi na np. niskie doświadczenie w danej technologii wcale nie musi być wydajniejszy niż rozwiązanie opisane powyżej.

Warto obiektywnie ocenić swoje zaangażowanie, aktualną znajomość technologii no i jak wspomniałem cel.

Offline Karol

  • Użytkownik

# Kwiecień 15, 2015, 15:46:54
Tyle hejtu na PHP, nie bo nie, bo jest fe, bo nie lubimy, bo nikt nie przetłumaczy, że czarne jest czarne, a białe jest białe, lecz mimo to jak Krzysiek K. pytał o alternatywę to... nikt nic nie potrafił zasugerować i padały tylko same nazwy frameworków PHP, gdzieś tam przebił się python, a potem tylko offtop na temat ORM :P

Offline Kos

  • Użytkownik
    • kos.gd

  • +1
# Kwiecień 15, 2015, 18:20:57
@up Padło dużo alternatyw, myślałem że się zgodziliśmy że Python gra, tylko Krzysiek go osobiście nie lubi przez whitespace, więc dyskusja leciała dalej :-)
Hostingu trzeba poszukać, polecam wybrać coś z normalnym shellem (hostuję się na https://mydevil.net, plan minimum 150/rok, odpalam tam co chcę, trzymałem prywatne repozytoria przed darmową assemblą; bawiłem się kiedyś node.js - napisałem na ircu i zainstalowali w parę dni :)). Od razu się czuje, że to hosting dla programistów.
Można też iść na całego i zarejestrować się na AWS, mają od jakiegoś czasu darmowy plan. Nie mogę polecić, bo za bardzo nie używałem.

PHP nie jest jakoś inheretnie zepsuty (widzimy - działa), tylko trzeba go naprawdę dobrze znać, żeby w nim pisać (sam język + duże różnice w wersjach + ogromne różnice w zachowaniu w zależności od php.ini - miłego debugowania "u mnie działa", jeśli hosting nie daje możliwości podłożenia swojej konfiguracji).

Wydaje się super łatwy na początek, ale nadal jest bardzo niespójny najeżony pułapkami. a == b równoznaczne z b == a? chciałbyś! Google 'why php sucks', można o tym czytać cały dzień, mało który język zbiera tyle negatywnych emocji.

Jak się to wszystko już zna, to razem z dojrzałym i udokumentowanym frameworkiem typu Symphony czy Zend można pisać efektywnie, ale Python przyszedł mi dużo łatwiej i odbieram go jako dużo przyjemniejszy i praktyczniejszy język.

e-> Parę moich highlightów z YourLanguageSucks, żebyście nie musieli się przebijać przez 30 ekranów żółci i nieistotnych bzdurek:

Cytuj
The documentation is not versioned. There is a single version of the docs that you are supposed to use for php4.x, php5, php5.1...
fatal errors do not include a traceback or stack trace
there's no module / package concept: only include files, "ala C"
PHP is just about the only programming language out there with a configuration file. Things like short_open_tags, which would only make sense to be set per-application, are set by the administrator, for all the apps he installs!

« Ostatnia zmiana: Kwiecień 15, 2015, 18:35:36 wysłana przez Kos »

Offline Karol

  • Użytkownik

# Kwiecień 15, 2015, 19:05:20
Cytuj
The documentation is not versioned.
Aż tak dużo się nie zmienia, ale jeżeli funkcja ma inne działanie w innych wersjach to jest to wymienione na stronie z funkcją.

Cytuj
fatal errors do not include a traceback or stack trace
Każdy szanujący się programista ma włączony xdebug, który takie rzeczy pokazuje (i nawet pozwala wykonywać kod step-by-step w IDE w00t!)

Cytuj
there's no module / package concept: only include files, "ala C"
Są namespace i autoloadery, da radę żyć ;)

Cytuj
PHP is just about the only programming language out there with a configuration file...
To takie naciągane trochę, to nie jest konfiguracja języka jako takiego tylko środowiska, które wykonuje skrypty.

Ale dobra, dość offtopu :)

// Dopisek: poczytałem trochę https://wiki.theory.org/YourLanguageSucks i się śmiać mi chce, nie tylko z wpisów pod PHP, ale i innymi językami, np. czepanie się małpy przed stringiem w Obj-C :D Dobry ubaw po pracy nie jest zły ;)

@Xion poniżej:
skoro wciąż nie ma menedżera paczek
https://getcomposer.org/
« Ostatnia zmiana: Kwiecień 15, 2015, 20:52:14 wysłana przez Karol »

Offline Xion

  • Redaktor
    • xion.log

  • +3
# Kwiecień 15, 2015, 19:26:38
Rozwinę więc kwestię "czemu PHP jest be", bo widzę że wszyscy pominęli najważniejsze zdanie mojego krótkiego uzasadnienia:
Cytuj
Większość innych języków będzie też bardziej podatna na stosowanie dobrych praktyk (web)devowych, jak np. oddzielania widoków od reszty kodu i testowania.
Tak, można używać PHP dobrze. Są do niego frameworki tak jak do każdego innego języka; są ORM-y; jest prawdopodobnie mnóstwo innych bibliotek (których aczkolwiek nie wiem jak się instaluje, skoro wciąż nie ma menedżera paczek). Wszystko to jest okej i w porządku. Rzecz w tym, że alternatywy (Python, Ruby, nawet Node.js) są lepsze, bo też mają to wszystko, a do tego "brakuje" im wszystkich tych kwiatków, o których wspominał i do których linkował Kos.
Innymi słowy, można włożyć trochę wysiłku i pisać w PHP dobrze. Można też włożyć tyle samo wysiłku w inny język, który w zamian będzie strzelał ci w stopę trochę rzadziej.

Cytuj
Ale.. Ale, w tydzień będziesz miał zbudowaną grę na hostingu za 30zł/rok i w kameralnym gronie e-kolegów będziesz mógł ciupać w swoje dzieło.
Ah tak, mityczne "hostingi" PHP :) Na szczęście lata 90-te są już dawno za nami i nie jest to dzisiaj "jedyna" opcja. 30zł/rok na początek? How about free? Darmowe serwery w cloudzie spokojnie obsłużą jakichś kilkuset testerów (o ile apka nie robi czegoś bardzo głupiego). AWS, Heroku, Azure, Google Compute Engine, wspomniany OpenShift, i pewnie jeszcze kilka o których nie mam nawet pojęcia.

Że łatwość pisania i deploymentu na "hosting" jest na pewno większa niż cloudów? Nie mogę wypowiadać się o wszystkich, ale dłubałem trochę w Heroku i o ile pamiętam "Hello world" wygląda mniej więcej tak:
cat >hello.py <<EOF
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()
EOF
$ echo "server: python hello.py" >Procfile
$ echo "Flask" >requirements.txt
$ git init && git commit -am "First!"
$ heroku create supercoolgame4realz
$ git push heroku
$ curl http://supercoolgame4realz.herokuapp.com
Hello World!
Dla innej technologii niż Python/Flask trzeba by oczywiście zmienić początek, ale nie sądzę, żeby był on jakoś bardziej skomplikowany.