www.WebTips.pl: Który język do gry - www.WebTips.pl

Skocz do zawartości

Strona 1 z 1

Który język do gry

#1 Użytkownik nie jest zalogowany   exother 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 190
  • Rejestracja 26 cze 08
  • MiejscowośćTrzebinia

Napisano 28 luty 2009 - 03:27

Witam,

pragnę stworzyć grę browser-based, w której potrzebne by mi były dość zaawansowane techniki :)
Nie wiem, w jakim języku najlepiej najłatwiej byłoby stworzyć grę. Co do niej samej to wiadomo - surowce, mapka, budowanie, angażowanie armii, walka, sojusze itp.


PHP - dość popularne w tego typu projektach
Python - tutaj nie znam podłoża, bo ie widziałem gier przeglądarkowych w pythonie, ale jest dodatkowy atut - można zrobić wersję programową
Flex/AIR - A może połączenie flex'a i php, wersja w AIR pobieralna, sam nie wiem
OpenLaszlo - słyszałem, że służy do dość zaawansowancyh celów, ale czy poradzi sobie z grą?

Już sam nie wiem - help!
0


Strona 1 z 1

Odpowiedzi do tego tematu

#2 Użytkownik nie jest zalogowany   pbnan 

  • Weteran
  • PipPipPipPipPipPip
  • Grupa Użytkownik
  • Postów 1465
  • Rejestracja 25 lis 06
  • MiejscowośćOsiek almost City :)

Napisano 28 luty 2009 - 10:25

Gra ma frontend (HTML, JS, może Flash) i backend (np. Python). Fronendu nie zmienisz, no chyba że bierzesz się za Flex.
Backend robisz w tym, w czym Ci się będzie najlepiej pisać, najszybciej i najładniej. Mnie by tak się pisało w Pythonie + django na przykład. Takiemu muskowi to pewnie w RoR.
Decyzja jest Twoja. Możesz chcieć poznać nowy język/technologię, wtedy tę opcję wybierz. Możesz się zdecydować na coś, co już znasz, i wiesz, że będzie Ci się w tym pisać dobrze.

PS Z wygodnych języków i szybkich do pisania frameworków: Python+django, Ruby+merb (lub rails, ale mówią, że merb jest lepszy). PHP nie jest wygodne, ma bardzo słabe frameworki.
GCS/GM d++(-) s+++:+>++ a--- C++++ UL+++ P! L+++ E---@ W+++ N o? K- w>+ O? M->+ V? PS+ PE+(-) Y? PGP+ t 5? X+ R+ tv--(+) b++ Dl+ D G e-- h! r !y+
0

#3 Użytkownik nie jest zalogowany   asiajek 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 183
  • Rejestracja 13 kwi 06
  • MiejscowośćWarszawa

Napisano 28 luty 2009 - 12:47

Ja tam olałem frameworki i piszę od 0 grę w PHP i muszę przyznać że bardzo wygodnie mi się pisze :D
0

#4 Użytkownik nie jest zalogowany   Thid 

  • Saint Inquisition
  • PipPipPipPipPipPipPip
  • Grupa Administrator
  • Postów 2059
  • Rejestracja 22 maj 06

Napisano 28 luty 2009 - 13:06

hmm...sam swego czasu mialem projekty gry
flex/air - wybierajac ta wersje mozesz jednoczesnie zrobic dostep przez strone jak i przez air (bardzo szybko przenosi sie aplikacje webowe we flex na air)
python - odpusc sobie django, do gier to on sie srednio nadaje (no chyba ze chcesz, to nie moge cie zmusic) bardziej zainteresuje sie framewrokiem web2py o wiele bardziej nadaje sie do takich projektow, ewentualnie pylons :)
Dołączona grafika
Twórcy php ciagna wzorce z szerokiej gamy języków od pascala, przez jave i brainfucka, po tradycyjny chinski.
django the web framework for ponies with magical powers
watashi no teki , watashi wa osoreru hitsuyō wa nai ...shikashi , Kami wa watashi no yūjin tachi kara watashi wo mamoru
1

#5 Użytkownik nie jest zalogowany   riklaunim 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 158
  • Rejestracja 25 wrz 09

Napisano 25 wrzesień 2009 - 23:38

Wyświetl postUżytkownik thid dnia 2009-02-28, 14:06 napisał

python - odpusc sobie django, do gier to on sie srednio nadaje (no chyba ze chcesz, to nie moge cie zmusic) bardziej zainteresuje sie framewrokiem web2py o wiele bardziej nadaje sie do takich projektow, ewentualnie pylons :)


Dlaczego web2py, czy Pylons mają być tutaj lepsze od Django. Swego czasu była fala "Pylons jest fajne, wydajne i cudne... bo używa go paru ekspertów i jest fajnie elitarny". Tworząc grę typowo przeglądarkową bez Flasha, czy Javy nie ma tutaj większego znaczenia jaki to będzie framework - poprawnie napisane aplikacje w dowolnym frameworku będą działały z praktycznie identyczną wydajnością. Plus i tak znacznie szybciej od problemów ze skalowaniem serwerów aplikacyjnych pojawią się problemy ze skalowaniem baz danych ;)
0

#6 Użytkownik nie jest zalogowany   troyAN 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 12
  • Rejestracja 20 cze 08

Napisano 05 styczeń 2010 - 17:57

Ja bym ci polecił php, ma obszerny manual, oraz więcej osób go zna niż pythona. W razie czego zawsze możesz kogoś się zapytać na forum. Polskich for nt. pythona jest mało(z tego co wiem). Wybór należy do ciebie, ale moim zdaniem, lepiej jest wybrać php+framework. Dałbym ci link do forum na którym jest sporo gotowych silników i pomoc w tworzeniu gier. Ale nie wiem czy to jest zgodne z regulaminem.
PS: jeśli nic nie umiesz, to jeszcze masz długą droga do stworzenia gry :D
//pszepraszam za odkopywanie starych tematów. Po prostu nie zauważyłem daty :|
Dołączona grafika

Cytat

Co my wiemy, to tylko kropelka. Czego nie wiemy, to cały ocean.
-Isaac Newton

Dołączona grafika Na gg pomagam odpłatnie.
0

#7 Użytkownik nie jest zalogowany   exother 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 190
  • Rejestracja 26 cze 08
  • MiejscowośćTrzebinia

Napisano 05 styczeń 2010 - 20:48

Wyświetl postUżytkownik troyAN dnia 05 styczeń 2010 - 17:57 napisał

Ja bym ci polecił php, ma obszerny manual, oraz więcej osób go zna niż pythona. W razie czego zawsze możesz kogoś się zapytać na forum. Polskich for nt. pythona jest mało(z tego co wiem). Wybór należy do ciebie, ale moim zdaniem, lepiej jest wybrać php+framework. Dałbym ci link do forum na którym jest sporo gotowych silników i pomoc w tworzeniu gier. Ale nie wiem czy to jest zgodne z regulaminem.
PS: jeśli nic nie umiesz, to jeszcze masz długą droga do stworzenia gry :D


Odkopałeś kokosa ^^

Po 1: nie jestem bęcwałem, żeby brać się za grę z brakiem umiejętności.
Po 2: PHP? w ostateczności napisałbym w nim, ale to już byłby akt desperacji. Miałem do czynienia z kilkoma językami i stwierdziłem, że PHP jednak posysa jeśli chodzi o wydajność.
Po 3: Gotowce? Tak, ostatnio zabrakło papieru.
0

#8 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 06 styczeń 2010 - 21:10

So.

Python ma comp.lang.python, gdzie odpowiedź przychodzi w ciągu najwyżej godziny (z doświadczenia :P). PHP nie jest beznadziejnie zamulastym językiem, ale silnika gry nie warto w nim pisać, co najwyżej interfejs webowy. Ale python...

Python jest około 60-100 razy wolniejszy niż C++ (wg paru wypowiedzi na comp.lang.python) - też "posysa jeśli chodzi o wydajność" :P. Wniosek? Najlepiej napisz w C++ silnik gry, który będzie zajmował się większością spraw, przesyłaj do niego polecenia przesłane z przeglądarki, niech php/python będzie jakby bramką między przeglądarką a serwerem. Oczywiście jeżeli masz możliwość uruchomienia C++ na serwerze xD

Dodam, że sam planuję skromną grę napisać i będzie się ona opierała na takiej architekturze (+ jeszcze do pobrania osobny klient napisany w C++, rozszerzalny w Pythonie jako języku skryptowym).
0

#9 Użytkownik nie jest zalogowany   Thid 

  • Saint Inquisition
  • PipPipPipPipPipPipPip
  • Grupa Administrator
  • Postów 2059
  • Rejestracja 22 maj 06

Napisano 07 styczeń 2010 - 00:16

Cytat

Python jest około 60-100 razy wolniejszy niż C++ (wg paru wypowiedzi na comp.lang.python) - też "posysa jeśli chodzi o wydajność"

spora przesada, choc jezeli odpalaja po mod_python to niestety ale php po fcgi dziala szybciej niz python pod mod_python <.<
Dołączona grafika
Twórcy php ciagna wzorce z szerokiej gamy języków od pascala, przez jave i brainfucka, po tradycyjny chinski.
django the web framework for ponies with magical powers
watashi no teki , watashi wa osoreru hitsuyō wa nai ...shikashi , Kami wa watashi no yūjin tachi kara watashi wo mamoru
1

#10 Użytkownik nie jest zalogowany   riklaunim 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 158
  • Rejestracja 25 wrz 09

Napisano 07 styczeń 2010 - 02:20

A co, będziesz silnik 3D przez weba udostępniał że musisz to w C++ napisać? Wycieki pamięci i inne nieprzyjemności gwarantowane. Także typowy błąd, czyli przedwczesna optymalizacja polegająca na np. pisaniu prostych funkcjonalności w C/C++ i tak pójdzie na marne gdy teoretycznie odnosząca sukces gra będzie i tak będzie musiała przejść na architekturę wieloserwerową, a wąskim gardłem będzie wydajność sieci a nie bezpośrednio czas wykonywania kodu. Nie licząc że pisanie czegoś w C++ zabierze znacznie więcej czasu niż napisanie tego w Pythonie (a gdy pojawi się realna potrzebna nie problem optymalizować kod Pythona przenosząc część funkcjonalności na inne języki, np. poprzez Thrift, czy biblioteki Pythona napisane w C lub C++)

A co do mityczności C++ czy C to kiedyś się bawiłem. Stosując prostą bibliotekę do miniaturyzacji JPEG napisaną w C zmierzyłem czasy generowania miniatur:
# EPEG - 4,15s
# PyEPEG C - 4,54s
# PyEPEG BOOST - 4,58s

Gdzie PyEPEG to API biblioteki EPEG wystawione w Pythonie odpowiednio - jego natywnym interfejsem w C i za pomocą C++ poprzez BOOST Python. Jak widać obecność Pythona daje pomijalny narzut, a rzadko kiedy nisko/zerobudżetowa gierka, czy stronka będzie potrzebowała aż takiej "optymalizacji".
1

#11 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 07 styczeń 2010 - 15:48

Erm.

Wycieki pamięci i wiszące wskaźniki da się bez większych problemów eliminować, choćby poprzez użycie inteligentnych wskaźników. Wydajność sieci jest niewątpliwie wąskim gardłem wszystkich aplikacji sieciowych, ale nie jedynym, czas wykonania kodu też się liczy, zwłaszcza w tak zasobożernych aplikacjach jakimi są serwery gier obsługujące naraz wielu graczy i muszące podać wszystkim dokładnie taki sam obraz świata gry (tak, wiem, że nie przesyła się wszystkich możliwych informacji).

Więcej czasu? Niby tak, ale w C++ widzę dokładnie co mój kod robi, a nie muszę się domyślać, co tam na niższych poziomach się dzieje ;) (nie, nie namawiam nikogo do pisania w asm).

Popraw mnie, ale czy PyEPEG nie są napisane w C/C++ (tak wnioskuję z tego, co napisałeś dalej)? Jeśli tak, to w ostateczności i tak użyłeś C++...


A, i jeszcze jedno.

Cytat

przedwczesna optymalizacja polegająca na np. pisaniu prostych funkcjonalności
No nie wiem, czy serwer gry używa samych prostych funkcjonalności xD Jeżeli chodziło ci o to, że wąskie gardła można oprogramować w C++, a resztę w Pythonie... Cóż, wtedy najpewniej byłyby to moduły użyte później w skryptach, a więc trzeba by było się przestawić na myślenie "pythonowe" pisząc w C++, tj. załapać API Pythona i umieć myśleć o zmiennej jako żadnym konkretnym typie danej, tylko o czymś, co zmienia typ w zależności od potrzeby, jakie to przestawianie może sprawiać kłopoty ;) Tudzież można sam algorytm oprogramować w czystym C++, a tylko zwracać co trzeba w typach pythonowych - tutaj ma to rzeczywiście większy sens, no ale dalej masz ten narzut czasu wykonania modułu przez Python na głowie, a jeżeli coś piszesz w szybszym języku, to raczej narzutu nie chcesz :P


Jeszcze takie małe pytanie do ciebie, riklaunimie: czy to tylko wrażenie, czy rzeczywiście uznajesz C++ za język przestarzały, mimo że nadal jest jednym z najlepszych, jak nie najlepszym z dostępnych?
1

#12 Użytkownik nie jest zalogowany   riklaunim 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 158
  • Rejestracja 25 wrz 09

Napisano 07 styczeń 2010 - 16:33

Uważam że stosowanie C/C++ do aplikacji sieciowych na samym starcie jest błędnym założeniem. Po co sobie utrudniać i wydłużać zadanie skoro szybciej zrealizujesz je w języku skryptowym? Gdyby każdy amator w pojedynkę mógł machnąć w niskopoziomowym języku gierkę to na każdej ulicy byłoby po 10 firm robiących takie gierki.

Możesz np. napisać moduł wyliczający np. wynik starcia na podstawie parametrów przeciwników w języku skryptowym (np. Python) i jeżeli po np. roku gra tak się spopularyzuje że pojawią się problemy np. z wydajnością tych wyliczeń to przepisujesz moduł na C i wystawiasz jego API w Pythonie - kod skryptowy gry nie ulega zmianie, a jedynie "wnętrze" modułu wykonującego daną czynność.
Jeżeli będziesz na starcie przedwcześnie "optymalizował" to po znacznie dłuższym czasie tworzenia może okazać się że twoja gierka jest przestarzała i mało kogo to interesuje, bo zamiast np. szybko wydawać kolejne dema, wersje demonstracyjne i szybko ewoluującą wersję stabilną zbierając opinie graczy - siedziałeś i dłubałeś coś tylko według własnego uznania, a konkurencja szalała.

Jak chcesz pisać desktopową grę multiplayer poprzez sieć to i tak trzeba odwołać się do bibliotek C/C++ wystawiających API do danego języka skryptowego (PyOgre, PyIrr, PyGame itd.). Możesz pisać bezpośrednio w C czy C++, lecz równie dobrze można w zależności od wymagań użyć API takiego silnika w języku skryptowym. (Baldurs Gate skryptowany w LUA, Świątynia pierwotnego zła skryptowana w Pythonie...). Wydajność zapewnia maszynowy kod modułu, a język skryptowy szybkość i prostotę przy pisaniu kodu.

Jak chcesz zrobić grę webową przez przeglądarkę to na frontend dajesz flasha, a na backend wysokowydajny wielowątkowy serwer (od np. Twisted na starcie, aż po usługi w Erlangu + Thrift gdyby projekt odniósł duży sukces). Patrz gry Zyngi na Facebooku, w które dziennie gra kilkanaście milionów graczy (Mafia Wars, FarmVille, CafeWorld itd.).

Facebook jest napisany w powiedzmy PHP, ale wraz z rozwojem serwisu wdrażano coraz to nowe formy optymalizacji jego działania (tak narodził się Thrift m.in. umożliwiający integrację usług pomiędzy praktycznie dowolnymi językami na rozproszonej strukturze serwerów).
0

#13 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 07 styczeń 2010 - 17:41

Cytat

przestarzała
WTF? Na jakiej podstawie uważasz, że nie ma możliwości szybkiego kodzenia w c++? I nawet jeśli, to czemu gra ma się z tego powodu zrobić "przestarzała"?
1

#14 Użytkownik nie jest zalogowany   riklaunim 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 158
  • Rejestracja 25 wrz 09

Napisano 07 styczeń 2010 - 21:39

Bo w dłuższym okresie czasu istnieje większe prawdopodobieństwo że pojawi się inna gra o zbliżonym pomyśle do twojego (i wtedy twój produkt będzie miał mizerne szanse jako "drugi"), lub trendy stanie się inny typ gier, a gry na pomyśle jak twoim stracą na popularności. Wydawane gry są tworzone w coraz krótszych okresach czasu po to by maksymalizować zyski. Wymagają łatania po wydaniu, ale gra już zarabia i przy planach sequelu, czy rozbudowie istniejącej wersji - wiadomo w jakim kierunku iść.

Co do szybkości pisania kodu uwzględnij rozbudowę, przypisywanie parę razy elementów gry itd. (opinie graczy, nowe możliwości itd.). Efektywnie i szybko "skryptować" gry w C czy C++ po prostu się nie da - po to szanujące się silniki gier obsługują skryptowanie w prostszych językach.
0

#15 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 08 styczeń 2010 - 14:40

Oskryptowywane tak - ale baza jest napisana w C++ najczęściej ;)
0

#16 Użytkownik nie jest zalogowany   riklaunim 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 158
  • Rejestracja 25 wrz 09

Napisano 08 styczeń 2010 - 15:19

A niby co ja wcześniej pisałem ? Silniki deskopowych gier są napisane niskopoziomowo z wystawionym API.
0

#17 Użytkownik nie jest zalogowany   griwes 

  • Netherilski Arkanista
  • PipPipPipPipPipPip
  • Grupa Moderator
  • Postów 1717
  • Rejestracja 11 lip 06
  • MiejscowośćRacibórz/Wrocław

Napisano 08 styczeń 2010 - 15:25

Wydawało mi się, że rozmawiamy o wydajności jeśli chodzi o serwery :P
0

Strona 1 z 1


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych