[MMORPG VIA WWW] Perspective, Ultima VI, VII, Tibia


#1

Cześć!

od pewnego czasu ambitnie pracuję nad własnym projektem. Początkowe założenia to:

  • gra via www, mmorpg,
  • 2d, pespektywa Ultima VI, VII, Ultima Online,
  • język programowania JavaScript,
  • unikalny charakter rozgrywki, zdobywania doświadczenia, odkrywania mapy, PvP.

Gra będzie posiadać perspektywę Ultimy Online ew. Ultimy VI, VII, ponieważ charakterystyka gry i to co chcę osiągnąć wymaga takiego wyglądu.

Charakterystykę gry, system walki, zdobywania doświadczenia i tego jak gra będzie wyglądać, i co będzie ją wyróżniać spośród innych gier mam opisane słownie.

Im więcej pracuję nad grą, tym więcej wychodzi przeszkód. Zastanawiam się czy to co chcę osiągnąć jest możliwe za pomocą www i JavaScriptu. Zastanawiam się czy wybrałem odpowiedni język programowania do napisania gry o tak złożonej rozgrywce systemie PvP, sposobie eksplorowania mapy, wielopoziomowa perspektywa Ultima Online, Tibia. Problem również pojawia się wobec mapy.

Temple

Zastanawiam się jak zrobić, aby mapa była “wielopoziomowa”, czyli jeśli wchodzę do opuszczonej świątyni necromancer’ów, żeby obraz wczytywał się/renderował bez górnych warstw, tak aby było widać środek świątyni, dokładnie tak jak w grze Tibia, dodatkowo żeby ściany budynku na najniższym poziomie wraz z wejściem gracza stawały się pół przezroczyste.

Chciałbym aby mapa była jedna, lub z podziałem na wyspy, na które trzeba dopłynąć. Dodatkowo dochodzi kwestia podziemi i “lurowania” przedmiotów na różne poziomy mapy. Czy ktoś z większym ode mnie doświadczeniem i podpowie mi czy to jest wykonalne za pomocą www i JavaScriptu?


#2

Jest wykonalne ale nie jest opłacalne. Lepiej skorzystać z gotowego silnika, który potrafi Ci zrobić build dla web’a np. Unity czy jakiś inny silnik na webgl.

Daruj sobie mmorpg, problemy z którymi teraz się mierzysz są niczym w porównaniu z problemami, z którymi dopiero będziesz się mierzył.


#3

Nie daruję sobie, ponieważ trudności zawsze będą nie ważne z czym będę się mierzył i czym zajmował. Czy takim gotowym silnikiem może być np. RunUO? Tworząc tą grę, jednocześnie chcę się uczyć programowania, więc im więcej trudności tym lepiej dla mnie. Z drugiej strony mam fajny pomysł na nietypowego mmorpg, który w znacznym stopniu odświeży rynek. Zdaję sobie sprawę, że im dalej w las, tym będę potrzebował więcej ludzi. Tanku, powiedz mi jeszcze czy na silniku Unity, można wykonać takie renderowanie mapy jak w Tibii i perspektywę, z “wielopoziomowością” mapy - budynki, podziemia, góry itp. jak w Ultima Online? Mam fajny pomysł do którego konkretnie pasuje taka optyka gry.


#4

To zrób prostą grę, najprostszą jaką potrafisz zrobić np. w 3 miesiące. Nie nauczysz się programować robiąc mmorpg.

Reality check. Jeśli byłbyś gościem, który przepracował w branży z 10 lat to może bym uwierzył, że nawet uda Ci się zrobić fajny prototyp. Jeśli to jest Twoja pierwsza gra to zapomnij o niej na co najmniej 10 lat.

Podstawą nauki programowania jest czytanie np. tutoriali i wyciągania z nich wniosków samemu: https://unity3d.com/learn/tutorials


#5

Mam już za sobą proste gry w JavaScript, uczę się na wielu poziomach, a jednym z nim jest stworzenie gry mmorpg. W 3 miesiące nie nauczę się programować robiąc mmorpg, ale myślę, że lepiej zacząć uczyć się już teraz. Na chwilę obecną miesza mi się zbyt dużo informacji, jeśli mógłbyś mi wytłumaczyć różnicę w renderowaniu mapy pomiędzy taką grą jak Tibia, Ultima Online, a grami tworzonymi w RPG Makerze. Zastanawiam się również, czy nauka programowania w Unity, będzie równie rozwijająca jako programista, w porównaniu do robienia gry w JavaScript, C# lub C++, bez dodatkowego oprogramowania.


#6

Może nie w sedno ale może da Ci to do myślenia. Z tego co zauważyłem wiel mmo a nawet zwykłych multi indyków ma problemy z synchronizacją i wg działaniem na lini klient serwer. Wiec zrób prostą grę, dodaj multi czy też massive i przekonaj się że MMO to nie tylko pomysł ale i wykonanie całej architektury sieciowej co czasem jest problem dla osób już znających temat z całym zapleczem ludzi


#7

Nie przejmuję się samym celem jakim jest gra mmorpg i przeszkodami stojącymi mi na drodze, cieszę się samym procesem tworzenia takiej gry. Temat ma na celu pomóc mi w szybszym odnalezieniu informacji, bo może znajdę kogoś kto już spotkał się z problemem, który ja mam i nakieruje mnie na właściwe rozwiązanie. Znalazłem taką grę http://senacia.com/ prawdopodobnie jest napisana w Unity. Autor jeszcze rok temu nie wiedział czym jest C# i Unity, a dzisiaj prezentuje wspaniały projekt.


#8

javascript -> poczytaj na necie czy jest to odpowiedni jezyk do robienia mmorpg… i dlaczego nie :smiley:

Ja robie sam nowego wowa->tylko ze lepszego bo mam lepsze pomysly niz sztab 500ludzi w blizzardzie, no i ich 100 specjalistow nie zna c++'a tak jak ja… chcieli mnie zatrudnic ale olalem bo moj nowy wow wniesie duzo swiezosci na rynek… chcieli sie poporstu zalapac na latwa kase :smiley:
Aha zapomnialem dodac. pisze go w visual basic 6.0 bo c++ jest przereklamowany.


#9

Unity leży jeśli chodzi o optymalizację. Każda gra która jest na unity i albo tryska grafiką albo złożonością systemu kuleje i ma nieziemskie dropy.
Jeżeli chcesz się uczyć to buduj od podstaw c++ i do przodu.


#10

RoboCat w internecie nie znalazłem złych opinii odnośnie tworzenia mmorpg w JavaScript, wręcz odwrotnie. Reszta domyślam się, że to sarkazm.


#11

Pokaż je, nagraj film z rozgrywki.

Równie dobrze możesz zacząć robić np. program do księgowości online. Program do księgowości online jest prostszy do zrobienia niż mmorpg a nauczysz się więcej o samym programowaniu.

Serio, jak nie tutoriale do Unity to jakiekolwiek inne tutoriale z gatunku 2d game na jakimkolwiek silniku, który znajdzie Ci google. Jak jesteś bardziej ambitny to książka w temacie.

PS. Osobiście polecam godot jako silnik z niskim progiem wejścia do 2d.


#12

Czy użyjesz gotowego silnika, jakieś bibliotek,czy sam wszytko napiszesz od podstaw, to nauczysz się danego języka.
Rożnica będzie w czasie, jakości i tym czym się będziesz zajmował ,ale składnie danego języka będziesz wykorzystywał.
Nie wyobrażam sobie korzystania z unity bez znajomości C#, wykorzystuje się go tam w pełni. Gotowe bibliotek tylko przyśpieszają prace i pomagają w nauce. Można przeanalizować sobie kod, potem coś napisać na tej podstawie.
Taka analiza dobrze napisanej bibliotek wznosi bardzo wiele, człowiek uczy się wykorzystywać całą składnie we właściwy sposób. Jeśli myślisz o napisaniu wszystkiego samemu np. silnika, to polecam najpierw zapoznać się z jakimś gotowym :wink:


#13

Nie, nie odświeży rynku, bo najprawdopodobniej nie zostanie nawet zauważony. Żeby mmorpg zaczęło żyć potrzeba kasy na promocję. Kasy albo wydawcy. Potrzebna jest tez jakość i bezbłędne wykonanie a tego ze swoim poziomem wiedzy nie jesteś w stanie zapewnić. Ty jeszcze nie wiesz jak mało umiesz.

To zawsze jest mniej więcej tak, że ludzie, których zdobywasz są na podobnym poziomie co ty. Albo niższym. Marne szanse, że dołączy ktoś doświadczony.

Twoja wiedza jest więc nie usystematyzowana. Zajmij się prostymi ćwiczeniami.

A to dlatego, ze to jest po prostu wyższa szkoła jazdy. Tu trzeba na prawdę siedzieć głęboko w zagadnieniach backendowych, sieciowych. W grę wchodzi tez wybór odpowiednich narzędzi i technologii. Jak ktoś postawi serwer na Unity to pozostaje mi tylko życzyć mu powodzenia i żeby na raz nie wlazło za dużo graczy :slight_smile:

Przygotuj się więc na to, że będziesz się cieszył być może w nieskończoność. Czeka cię niezliczona ilość przeróbek, poprawek lub pisanie pewnych rzeczy kompletnie od zera, bo w pewnym momencie zaczniesz sobie zdawać sprawę, że to, co napisałeś wcześniej jest po prostu złe. Owszem, można nauczyć się wszystkiego w trakcie realizacji projektu, ale niestety, zagadnienie jest na tyle grube i skomplikowane, że w czasie, jaki ci zajmie ogarnięcie, zrozumienie wszystkiego i nabycie odpowiedniej wprawy zwyczajnie znienawidzisz ten swój projekt.
Dużo więcej byś się nauczył tworząc małe projekty.

Odłóż to mmo na później, mówi ci to zawodowy programista, który od 15 lat zarabia programowaniem na chleb i piwko. Kiedy w takim razie zacząć? A no wtedy, gdy już na starcie projektu będziesz dokładnie wiedział w jaki sposób trzeba go wykonać.


#14

Myślę, że szybciej nauczę się programować robiąc, coś co mnie wciąga, czyli mmorpg, niż program do księgowości online. Przed zarejestrowaniem się na gamedev zrobiłem cały kurs od Raining Chain. Tutaj można zobaczyć jak wygląda gra https://www.youtube.com/watch?v=BDnIRtuAyTE. Jest to mmorpg via browser. Przed tą grą zrobiłem ponga, asteroids i bombermana. Kilka lat wstecz robiłem skrypty do swojego serwera OTS. Wolałbym pójść w kierunku C# lub C++, gdzie jest dostępnych dużo poradników, lub kontynuować tworzenie w JavaScript, tylko wciąż nie wiem, czy dam radę stworzyć taką mechanikę renderowania mapy jak w Tibia, i wielopoziomowość budynków i mapy jak w Ultima Online, czy również Tibia. Jakie silniki polecanie w języku JavaScript? W języku C# i C++ co jest wartego uwagi oprócz Unity? Co sądzicie o Unreal Engine?


#15

JavaScriptem można zrobić wszystko co potrzebujesz na frontendzie. Pytanie, czy będziesz umiał. Myślałeś w ogóle o backendzie i technologiach, które tam użyjesz?
Co do UE i innych silników - na frontendzie nie ma to na prawdę żadnego znaczenia. Każdy z tych silników jest w stanie obsłużyć dużo bardziej skomplikowane pod względem wyglądu gry. Do tego celu najlepszy będzie silnik który znasz najlepiej. I jeśli w tym momencie myślisz, że któryś z silników będzie miał jakiegoś ‘gotowca’ na to co potrzebujesz to w ogóle zapomnij o tym projekcie.

Główną część backendu robisz w jednym z trzech następujących technologii/języków: C++, C# .NET, Java


#16

frozenshade jaki w takim razie polecasz język programowania do nauki, powiedzmy, że dam sobie 6 do 12 miesięcy na naukę samego programowania. Zacznę od JavaScriptu, żeby nauczyć się frontendu, następnie przejdę na C++, C# i zajmę się nauką backendu. Jak wiele zależy od frontendu, czy np. wielkość mapy gry, renderowanie, wygląd gry, zależy od frontendu? Dobrze rozumiem, że jeśli JavaScriptem mogę zrobić wszystko, co potrzebuję na frontendzie, to równie dobrze Ultima Online, która jest napisana w .NET mogłaby chodzić tak samo dobrze na www jak na swoim cliencie?


#17

Do backendu podałem ci trzy.

Frontend to wyświetlanie + podstawowe przetwarzanie + komunikacja z backendem. frontend jest niezwykle istotny :wink:

Na pewno jest to do zrealizowania. I na pewno rozwiązanie oparte o JS będzie dużo bardziej zasobożerne niż np w wersji z dedykowanym klientem. Słyszałeś o Unreal Tournament w przeglądarce? https://icculus.org/ut99-emscripten/

Wspominałeś, że napisałeś ponga. No to może zamiast porywać się z motyką na słońce i robić mmo przy twoim poziomie wiedzy, zacznij od czegoś prostszego ale zmierzającego w tym kierunku.
Napisz ponga w wersji sieciowej. Potem napisz serwer ponga tak, żeby gracze za pomocą klientów mogli rozgrywać sobie meczyki. Dodaj możliwość oglądania meczyków przez osoby nie grające. Napisz bota do ponga który będzie rozgrywał meczyki z inną instancją siebie samego. Odpal 10 instancji, obserwuj co się dzieje. odpal 100 instancji. Odpal 1000 instancji.
A, no i najważniejsze :slight_smile: Testuj to poza localhostem ^^


#18

W takim razie na chwilę obecną skupiam swoją uwagę na JavaScript i frontendzie. A powiedz mi jeszcze, dlaczego JavaScript nie jest wykorzystywany do pisania backendu?


#19

bo jest poprostu wolny… i zasobozerny


#20

A kto powiedział, że nie jest? Jest takie coś jak NodeJS. I doskonale spełnia się po stronie backendu w wielu małych projektach.
Chodzi o to, że do gry mmo potrzebna ci wydajność oraz pełna kontrola nad zasobami, których Node ci nie zapewni. Pełną kontrole uzyskasz w C++, trochę mniej, ale na na prawdę wystarczającym poziomie będziesz miał w C# .NET i w Javie.

Moje osobiste zdanie na temat platformy Node jest takie, ze powstało to dla tych wszystkich nieogarów, dla których opanowanie drugiego języka programowania to zbyt duży wyczyn. A w rzeczywistości powstało to dlatego, żeby biznes mógł do prostych backendów angażować ludzi od frontendu. Backendowcy z natury są drożsi.