Jaki język programowania do strategicznej gry przeglądarkowej?

1

Witam

Załóżmy, że chciałbym stworzyć grę przeglądarkową z gatunku strategii, ale nowoczesną i w miare zaawansowaną od strony graficzno-technicznej. Coś z tego samego gatunku jak Travian Legends albo Xhodon 2 tylko być może bardziej zaawansowane graficznie.

W jakim języku programowania powinna powstać taka gra? Kiedyś takie gry powstawawały w php ale to było w dawnych czasach i domyślam się, że php jest już pewnie bardzo przestrzałe. Więc co? Jakiś python? Java? A może html5? Czy html5 nadaje sie do tworzenia gier?

2

Podstawowe pytanie: Czy ta gra będzie działać tylko w przeglądarce, czy będzie też jakaś logika biznesowa w serwerze HTTP?

Po stronie przeglądarki, HTML5+JavaScript moim zdaniem jak najbardziej nadaje się do stworzenia gry, plansza gry może być na canvas lub svg. Można wykorzystać WebGL.

A jeżeli jest to gra wymagająca wydajnościowo, to WebAssembly, któy pozwala programować w różnych językach, ale najprościej jest w C, C++ i Rust.

Natomiast po stronie serwera HTTP, to współcześnie wykorzystuje się między innymi Java, JavaScript z Node.js, Ruby.

0
Marcin Gierszczak napisał(a):

Załóżmy, że chciałbym stworzyć grę przeglądarkową z gatunku strategii, ale nowoczesną i w miare zaawansowaną od strony graficzno-technicznej. Coś z tego samego gatunku jak Travian Legends albo Xhodon 2 tylko być może bardziej zaawansowane graficznie.

Zdefiniuj co to znaczy "zaawansowane graficznie". Bo czasem "zaawansowanie graficzne" to nie kwestia programowania, tylko załadowania ładnych plików graficznych.

Jednak owszem, często zaawansowanie graficzne wymagać będzie odpowiednich technik po stronie programowania, żeby osiągnąć dany efekt i zrobić to wydajnie. To grafika 2D ma być? 3D?

A może html5? Czy html5 nadaje sie do tworzenia gier?

Po pierwsze HTML5 to skrót myślowy https://developer.mozilla.org/en-US/docs/Glossary/HTML5

Po drugie w przeglądarce jest WebGL (a wchodzi też powoli WebGPU), który zapewnia przyśpieszenie sprzętowe, więc można nawet grafikę 3D zrobić czy animacje z dużą ilością obiektów naraz. Czyli się da (chociaż wydajność i możliwości graficzne będą często mniejsze niż te dostępne w grach desktopowych).

2

Być może odpowiedni dla ciebie będzie silnik Godot (tutaj trochę dokumentacji do exportowania do web: https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html), używa GDScript (podobny do pythona i łatwy do ogarnięcia), ale możesz ogólnie pisać w czym chcesz w Godocie. Na YT jest trochę poradników z tworzeniem gier przeglądarkowych w tym silniku, dobrze byłoby spróbować z jakimś mniejszym projektem i sprawdzić, czy będzie spełniał twoje oczekiwania. Silnik jest w pełni darmowy, możesz go spokojnie używać komercyjnie

3

@Marcin Gierszczak: Twój post brzmi jakbyś miał niewielkie pojęcie o temacie.

Żeby zrobić sensowną grę przeglądarkową, musisz ogarnąć nie jedną, a cały zestaw technologii.
Jeśli to jest Twój pierwszy projekt, to poczekaj z nim, zanim nauczysz się przynajmniej podstaw na mniejszych, mniej zaawansowanych projektach.

W grze przeglądarkowej musisz gdzieś zapisywać postępy użytkowników. Muszą się oni jakoś rejestrować i logować.
Czyli bazy danych i reszta backendu.

Potem dopiero dane muszą być jakoś prezentowane i tutaj wkracza HTML5, CSS i ewentualnie WebGL itp.

Najpierw zrób sobie jakąś małą gierkę offline, jakiś Tetris, czy Snake.
Potem napiszą prostą aplikację webową, np. Księgę Gości.

Gra online będzie wielokrotnie bardziej złożonym projektem...

0

@andrzejlisek: Dzięki za wartościowy i sensowny post :)

@LukeJL: Pisząc, że bardziej zaawansowana graficznie od tycy gier które podałem jako przykłady miałem na myśli to, że w tamtych grach grafiki są statyczne, bez animacji (a zastanawiam sie jak byłoby z dodaniem animacji typu na przykład animacja padającego deszczu na ekanie przedstawiającym zamek czy miasto) a bitwy tam są przedstawione wyłącznie w formie tekstowego raportu do czytania. Są też wypasione od strony graficzno-technicznej gry mobilne (większość najlepszych z nich ma też wersje na Windows) z tego gatunku w których bitwy są w pełni animowane i ja mam pomysł na coś pośredniego, więcej niż sam tekstowy raport ale mniej niż zaawansowane animacje i sie zastanawiam w jakim jezyku programowania to powinno powstać bo miałoby to być jako gra przeglądarkowa w którą gracze mogliby grać na każdym urządzeniu bez potrzeby instalowania aplikacji.

@Spine: O jeny, takie rzeczy jak bazy danych zapisujące rejestracje, konta, postepy, dane i wszystkie informacje to są potrzebne przecież wszędzie. Nawet prostego forum internetowego bez tego nie postawisz. Myślałem, że każdy programista ogarnia to bez najmniejszych problemów jako podstawową rzecz dlatego o tym nie wspomniałem.

Jednak ja nie jestem programistą, nie znam sie na kodzie i i tak nie stworzyłbym tej gry sam, wiem jam wielkich umiejętności by to wymagało, a programowanie to nie moja dziedzina. Jestem troche specjalistą od tego konkretnego gatunku gier w którym grę chciałbym stworzyć i mam pomysł na gre tego typu która miałaby szanse odnieśč nawet fenomenalny sukces bo wniosła by powiew świeżości do gatunku oraz nie miałaby dwóch największych wad jakie mają inne gry z tego gatunku. Są dostępne dziesiątki a może nawet setki gier z tego rodzaju i każda ma przynajmniej jedną z tych dwóch wad, a większość ma obie. Nikt jeszcze czegoś takiego nie zrobił jak to na co mam pomysł. A to mega popularny gatunek gier, od około dwudziestu lat jest to jeden z najpopularniejszych rodzajów gier sieciowych, MMO, multiplayer.

Ten temat założyłem po to aby zrobić rozeznanie w jakiej technologii programistycznej ta gra miałaby powstać i ewentualnie ludzi z jakimi umiejętnościami powininem do tego szukać.

3
Marcin Gierszczak napisał(a):

Jestem troche specjalistą od tego konkretnego gatunku gier w którym grę chciałbym stworzyć i mam pomysł na gre tego typu która miałaby szanse odnieśč nawet fenomenalny sukces bo wniosła by powiew świeżości do gatunku oraz nie miałaby dwóch największych wad jakie mają inne gry z tego gatunku. Są dostępne dziesiątki a może nawet setki gier z tego rodzaju i każda ma przynajmniej jedną z tych dwóch wad, a większość ma obie. Nikt jeszcze czegoś takiego nie zrobił jak to na co mam pomysł. A to mega popularny gatunek gier, od około dwudziestu lat jest to jeden z najpopularniejszych rodzajów gier sieciowych, MMO, multiplayer.

Pomysł i wykonanie to mało.
Za mało, żeby chociaż marzyć o "fenomenalnym sukcesie", czy "powiewie świeżości", bo bez dobrego marketingu nikt tego nawet nie poczuje.

Ludzie, którzy od około dwudziestu lat siedzą w tych swoich wybranych gierkach online, tak łatwo nie przerzucą się na coś nowego.
A żeby trafić do świeżych graczy, konkurujesz z całą resztą przemysłu rozrywkowego.

Na Twoim miejscu bym się na to zbytnio nie napalał, zwłaszcza kiedy jesteś Ideas Guy, a inni mają robić...
Już lepiej, jak skonfrontujesz swoje super pomysły z twórcami istniejących gier tego typu, to może je wprowadzą.

1
Marcin Gierszczak napisał(a):

W jakim języku programowania powinna powstać taka gra? Kiedyś takie gry powstawawały w php ale to było w dawnych czasach i domyślam się, że php jest już pewnie bardzo przestrzałe. Więc co? Jakiś python? Java? A może html5? Czy html5 nadaje sie do tworzenia gier?

Nie rozdzielaj włosa na cztery. Jeden język ogólnego zastosowania powinien wystarczyć. Musisz wziąć pod uwagę że powinien być skalowalny, nowoczesny i portowalny na różne architektury.

Ja osobiście polecam ci Swift, łatwo napiszesz w nim skalowalny backend (np. za pomocą tego lub tego, część przeglądarkową ogarniesz tym z małą pomocą tego a w gratisie do tego wszystkich zalet możesz bezproblemowo przeportować logikę na iOS co zagwarantuje stabilny model monetyzacji.

0
Spine napisał(a):
Marcin Gierszczak napisał(a):

Za mało, żeby chociaż marzyć o "fenomenalnym sukcesie", czy "powiewie świeżości", bo bez dobrego marketingu nikt tego nawet nie poczuje.

Ludzie, którzy od około dwudziestu lat siedzą w tych swoich wybranych gierkach online, tak łatwo nie przerzucą się na coś nowego.
A żeby trafić do świeżych graczy, konkurujesz z całą resztą przemysłu rozrywkowego.

Na Twoim miejscu bym się na to zbytnio nie napalał, zwłaszcza kiedy jesteś Ideas Guy, a inni mają robić...

Z mojego doświadczenia jako gracz wynika, że nie masz racji. Co roku powstają nowe gry z tego gatunku i najlepsze z nich mają miliony graczy z całego świata. Nie wszystkie z nich mają potężne reklamy bo w przypadku niektórych praktycznie nie widziałem reklam danej gry (a bardzo sie interesuje tym jakie gry są reklamowane i zwracam na to uwagę) a mimo to populacja graczy w grze była bardzo duża jak grałem (pewnie dalej jest).

Twój post pokazał, że osoby takie jak ja, jak to nazwałeś ,,Ideas Guy'' są niesamowicie ważne. Aby stworzyć dobrą grę która osiągnie sukces nie wystarczy być programistą + mieč grafików do pomocy. Potrzeba jeszcze bardzo dobrze znać sie na gatunku gier w którym sie działa i na grach ogólnie. Widziałem mnóstwo gier sieciowych które upadły i część z nich dlatego, że zabrakło w zespole osób takich jak ja przez co popełniono mase błędów których można było uniknąć gdyby za sterami siedział ktoś kto bardzo dobrze zna sie na danym gatunku gier.

poza tym moja rola to nie tylko pomysł, ktoś musiałby stworzyć cały projekt gry i mechanike do niej a to o wiele więcej pracy i znacznie trudniejszej niż Ci sie wydaje bo nie mówimy o grze singleplayer tylko o multiplayer a w grze multiplayer mechanika gry to jeden z najważniejszych czynników decydujących o tym czy gra przetrwa. Bez dobrej mechaniki i mądrego pomysłu na gre może skonczyć sie błyskawicznym upadkiem gry i zamknieciem serwerów, przekonały sie już o tym dziesiątki firm z całego świata za których sterami siedzieli pewnie ludzie myslący podobnie jak Ty, że wystarczy programowanie, super grafika + wielka kasa na reklame i bedzie git. Potem okazywało sie, że to nie wystarczy.

1
Marcin Gierszczak napisał(a):

Bez dobrej mechaniki i mądrego pomysłu na gre może skonczyć sie błyskawicznym upadkiem gry i zamknieciem serwerów, przekonały sie już o tym dziesiątki firm z całego świata za których sterami siedzieli pewnie ludzie myslący podobnie jak Ty, że wystarczy programowanie, super grafika + wielka kasa na reklame i bedzie git. Potem okazywało sie, że to nie wystarczy.

Ale ja przecież napisałem:

Spine napisał(a):

Pomysł i wykonanie to mało.
Za mało, żeby chociaż marzyć o "fenomenalnym sukcesie", czy "powiewie świeżości", bo bez dobrego marketingu nikt tego nawet nie poczuje.

Przez co rozumiem, że pomysł, wykonanie i marketing musi być na poziomie.
Jeśli chociaż jeden czynnik zawiedzie, to reszta nie ma sensu i los gry jest nieprzewidywalny.

Więc dobrze, żeby potencjalni współpracownicy wiedzieli na co się piszą.
Chyba, że bierzesz na siebie całą odpowiedzialność za sukces i zyski projektu, a twórcy będą normalnie zatrudnieni z wynagrodzeniem za wykonaną pracę, to wtedy nie musi ich specjalnie obchodzić, co zrobisz z tym projektem i czy będzie miał dobry marketing.

Marcin Gierszczak napisał(a):

Nie wszystkie z nich mają potężne reklamy bo w przypadku niektórych praktycznie nie widziałem reklam danej gry (a bardzo sie interesuje tym jakie gry są reklamowane i zwracam na to uwagę) a mimo to populacja graczy w grze była bardzo duża jak grałem (pewnie dalej jest).

To, że nie widziałeś reklam, nie znaczy, że ich nie było. Może były na początku, a może nawet były w innych krajach i to wystarczyło, żeby zdobyć bazę użytkowników, którzy będą sami namawiać innych, żeby mieć z kim zagrać.
Czasem są "reklamy", które trafiają tylko do subskrybentów wybranych YouTuber'ów, którzy mają duże zasięgi i zostali opłaceni, aby zareklamować grę.

0

@Spine: Marketing jest bardzo ważny i w zasadzie konieczny, nigdzie tego nie zanegowałem, ale chodzi mi o to, że gra ze świetnym pomysłem na rozgrywkę może odnieść sukces nawet przy stosunkowo niedużym marketingu, podczas gdy inne mniej ciekawe gry wykonane przez wielkie firmy i podobne do bardzo wielu gier tego typu muszą mieć władowawane gigantyczne pieniadze na reklamy aby ludzie chcieli w nie grać bo inaczej zagubiłyby sie w goszczu podobnych gier.

W kwestii nieprzewidywalności to tak naprawde los każdej gry jest nieprzewydywalny. Często wielkie firmy tworzą gre opartą o indentyczną mechanike co inne gry z tego gatunku, bliźniaczo wrecz podobną od strony mechaniki tylko grafika inna i robią to po to aby uniknąć tej nieprzewidywalności ale nawet ich taktyka czasem zawodzi i zdarza sie, że gra okazuje się niewypałem bo zabrakło innpwancyjności i gracze nie chcieli znowu grać w to samo tylko w innej oprawie.

2

Wydaje mi się, że przydałaby ci się jakaś metoda prototypowania, bo na razie to masz pomysł i hurra optymizm (mam pomysł na gre tego typu która miałaby szanse odnieśč nawet fenomenalny sukces bo wniosła by powiew świeżości do gatunku). To trzeba zweryfikować.

Jednak piszesz, że Jednak ja nie jestem programistą, nie znam sie na kodzie i i tak nie stworzyłbym tej gry sam, wiem jam wielkich umiejętności by to wymagało, a programowanie to nie moja dziedzina.

Czy w takim razie czy twoją grę dałoby się zaprototypować jako planszówkę? Mógłbyś z papieru coś powycinać, zagrać z kimś i zobaczyć, na ile by to się dobrze grało, czy logika gry ma sens.

Albo użyć jakiegoś komputerowego narzędzia/edytora. Np. popularne jest Unity, ale to wymaga już jakichś skilli chyba i tam też piszesz kod. No i eksport do wersji przeglądarkowej jest zdaje się bardzo ciężki w megabajtach. Trochę armata na muchę.

Ja swoją drogą zamierzam zrobić edytor gier strategicznych (zopiniowany edytor, w którym będzie się dało robić tylko gry strategiczne/ekonomiczne/tycoon/rpg, więc będzie to prostsze w obsłudze niż edytory do wszystkiego), ale to trochę potrwa jeszcze, zanim zrobię (jestem w trakcie, ale na razie bardziej to zaczątek gry niż edytora gier).

1
LukeJL napisał(a):

No i eksport do wersji przeglądarkowej jest zdaje się bardzo ciężki w megabajtach. Trochę armata na muchę.

To prawda. Jeśli chodzi o Unity:

  • aktualizacje gry i transfer - build jest stosunkowo duży, w tego typu projektach trzeba zastosować umiejętnie kilka rzeczy, jak np. cache i pobieranie builda tylko wtedy gdy trzeba
  • ograniczenie tych 'gdy trzeba' do minimum, czyli napisanie gry w taki sposób, żeby korzystała z zewnętrznych danych, wszystkie budynki i jednostki w jsonach itd.
  • do dodatkowego contentu (graficzne, animacje, dźwięki) można zrobić to samo, używając rozwiązań unity jak assetBundles i/lub addressableAssets; Warto też mniej więcej określić, co MUSI być w grze bez dodatkowego pobierania (gracz odpala i ma dostępne pewne zasoby, budynki, jednostki, ale powiedzmy, że gra max godzinę i nigdy więcej nie wejdzie - co zdążył odblokować?)

i wtedy już "nie ma dramy"

0

Skoro to początk to tym bardziej warto zdecydować się na jakiś silnik. Inaczej będziesz wszystko będziesz robił od podstaw, co z resztą jest wartością, ale najbardziej na tym straci sama gra.

Gdybym miał zajawkę na robienie gier to wybrałbym Defold na początek. Ten silnik jest lżejszy pod web / mobilne niż Godot. Ponadto opiera się na message passing co powinno lepiej pasować do tworzenia strategii.

0

@LukeJL: Nie da się tego przerobić na gre planszową. Z różnych powodów, miedzy innymi dlatego, że rozrywka we wszystkich grach z tego gatunku opiera sie na tym, że budujesz powiedzmy własne królestwo albo coś podobnego i každa sesja gry to ciąg dalszy progresu. Ten progres trwa przez wiele tygodni lub miesięcy. A w planszówkach każda sesja,to nowa rozrygwka i nie da sie inaczej bo nawet jak ktoś by zrobił odpowiednią mechanike to raczej nie ma szans aby grupa tych samych kilku ludzi spotykała sie regularnie przez wiele tygodni czy miesiecy aby kontynuować te samą sesje gry planszowej. A nawet jakby gdzies sie taka grupka znalazła to byłoby ich za mało i gra by sie strasznie słabo ,,sprzedawała'' bo prawie nikomu nie paspwałby ten typ rozgrywki. To jest gatunek gier którego nie da sie skutecznie przerobic na planszówki.

Kolejny powód: Cały fenomem mojego pomysłu opiera sie na tym, że obmyśliłem jak stworzyć gre z tego gatunku która nie miałaby dwóch najwiekszych wad które mają pozostałe gry tego typu. W planszówkach takich wad nie ma bo obie z nich to wady które znają tylko fani elektronicznej rozrywki w grach planszowych nie ma żadnej z tych dwóch wad. Wiec jako gra komputerowa z gatunku MMO strategi, czy mmortsów to może być mega dobre, ale już jako gra planszowa nie miałoby za bardzo sensu.

@Boski: Jakbym był deweloperem gier to trzymałbym sie z dala od Unity. Jako gracz z wielkim doświadczeniem w grach wiele razy grałem w gry stworzone w Unity i z tego co pamiętam ich wspólną cechą która czesto sie pojawiała była kiepska optymalizacja (porównując do gier działających na innych silnikach). W skrócie gra na Unity z grafiką danej jakości działa znacznie gorzej niź gra z taką samą jakością gafiki ale stworzona na innym silniku. Tak przynajmniej wynika z moich doświadczen. Grałem czesto na sprzetach o powiedzmy niskich parametrach i z tego co zapamietalem gry na Unity zawsze działały bardzo kiepsko, a gry na innych silnikach z takiej samej lub lepszej jakosci grafiką działały dużo lepiej.

2
Marcin Gierszczak napisał(a):

@Boski: Jakbym był deweloperem gier to trzymałbym sie z dala od Unity. Jako gracz z wielkim doświadczeniem w grach wiele razy grałem w gry stworzone w Unity i z tego co pamiętam ich wspólną cechą która czesto sie pojawiała była kiepska optymalizacja (porównując do gier działających na innych silnikach). W skrócie gra na Unity z grafiką danej jakości działa znacznie gorzej niź gra z taką samą jakością gafiki ale stworzona na innym silniku. Tak przynajmniej wynika z moich doświadczen. Grałem czesto na sprzetach o powiedzmy niskich parametrach i z tego co zapamietalem gry na Unity zawsze działały bardzo kiepsko, a gry na innych silnikach z takiej samej lub lepszej jakosci grafiką działały dużo lepiej.

Grałeś w SUPERHOT?
Zrobione w Unity i całkiem spoko zoptymalizowane - bez problemu działa na moim starym laptopie.

Sam edytor Unity też jest znacznie lżejszy niż edytor UE. Kiedyś chciałem odpalić UE na Macbooku z 8 GB pamięci RAM.
Przymulał tak, że nie dało się pracować, a Unity na tym sprzęcie działało bez zająknięcia.

Niezoptymalizowana gra w Unity to często zasługa twórców.
Grafik Ci zrobi tekstury 4k, developer nie zaznaczy w edytorze (importerze), żeby ta tekstura była skalowana.
Pomnóż sobie to przez ilość obiektów na ekranie i już masz potencjalne wąskie gardło, którego można się pozbyć "kilkoma kliknięciami myszy".
Przecież długopis na biurku, który nie zajmuje nawet 1% ekranu, nie musi trzymać w pamięci tekstury 4k i jej mipmap :]

Mortal Kombat 1 zrobiono w UE. Jego początkowa wydajność na PC to była jakaś masakra - po jakimś czasie developerzy trochę opcji dostosowali i się trochę poprawiło.
I tak skandal, żeby gra wyświetlająca jednocześnie arenę i maksymalnie 4 postaci (po jednym wojowniku i po jednym kameo) miała takie wymagania. To jest nic w porównaniu do gier przedstawiających rozległe tereny i wiele postaci.

Moim zdaniem Ty i tak musiałbyś się mocno postarać, żeby zajechać któryś z tych silników.
Bo domyślam się, że skala projektu, potrzeby renderera będą mniejsze niż dla gier AAA.

0

@Spine:

Moim zdaniem Ty i tak musiałbyś się mocno postarać, żeby zajechać któryś z tych silników.
Bo domyślam się, że skala projektu, potrzeby renderera będą mniejsze niż dla gier AAA.

Ja do takiej gry jak ta o której pisałem w tym temacie nie potrzebuje żadnego z tych dwóch silników. One są do gier dużo bardziej zaawansowanych od strony graficzno-technicznej. Pod tym względem to by nawet nie była gra AA, a co dopiero AAA. Nie byłaby to też gra ze środowiskiem 3D, tylko 2D, ewentualnie gdzieniegdzie 2,5D. Myśle, że taką grę bez problemu mogłoby wykonać od strony technicznej 2-3 programistów w ciągu około roku.

0

Ja robię swoją grę grand strategy z wykorzystaniem czystego weba na view: react, daisyui, flexbox, leaflet i opakowuje to w electrona a na backendzie mam dotneta bo przeniosłem mechanikę z unity właśnie. Jak będę chciał ulepszyć mapę to pewnie napisze render mapy w Godot na HTMLu. Bo z silnikami do gier jest taki minus że mają słabe narzędzia do robienia skomplikowanego UI.

0

@Radomiej: Pokażesz jak wygłada ta gra? (Może być na PW) To bedzie gra singleplayer czy multiplayer?

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