Wątek przeniesiony 2020-03-08 22:18 z Newbie przez furious programming.

Gra MMORPG – kilka pytań

2

Witam, na początku zaznaczę że chciałbym abyście potraktowali moje pytania poważnie, a nie jak chłopaka który myśli że w tydzień napiszę super MMORPG w 3D. po prostu temat mnie zaciekawił i mam kilka pytań do Was.

Każdy z nas a już na pewno zdecydowana większość grała kiedyś w MMO w której chodziło o dropienie itemków, zdobywanie lvli i rozwijanie umiejętności, dlatego myślę że ktoś mi tutaj pomoże.

Nie mówię że chcę napisać taką grę, jestem po prostu ciekaw jak inne studia piszą gry MMO w których pracuje sztab ludzi.

Programy których potrzeba do stworzenia prostej gry to:

  • Program w którym stworzymy model 3D postaci, mobów i terenu czyli mapy.
  • Program do pisania kodu do gry (W jakich językach pisze się taką grę? wykorzystuje się kilka języków?).
  • Program do tworzenia grafiki i tekstur w grze.
  • Program do stworzenia muzyki
  • Program do stworzenia animacji np. emocje postaci, animacja wykonywanej umiejętności
  • Zakładając że jest to gra online dla 10 graczy i można na serwerze ustawiać mnożnik dropu/expa potrzeba również jakiegoś programu/skryptu do kontroli właściwości serwera.

Kilka powyższych myślników to tylko moje domysły, poprawcie mnie jeśli się mylę, a poniżej moje pytania do Was.

  1. Co jest potrzebne żeby stworzyć prostą grę 3D online? Jakie programy?

Chodzi mi o grę w której mamy do zdobycia 15 lvli postaci, nową broń dropiącą z mobów i 4 podstawowe umiejętności.

  1. Jak przypisać do jakiejś umiejętności odpowiednią animację która aktywuje się przy wykonywaniu? Służą do tego jakieś odnośniki/skrypty?

  2. W jakim programie i jak stworzyć małą mapę terenu 3D?

  3. Jak zaprogramować całe sterowanie grą przez gracza, chodzi mi o to że np, gdy racz wciśnie klawisz R to otworzy się okno umiejętności? Jaki język do tego służy?

  4. Jakie książki po polsku polecacie kupić żeby poszerzyć swoją wiedzę na temat tworzenia gier 3D?

  5. Jakie strony internetowe mogą mi pomóc i naprowadzić mnie na ten temat? Może jakieś poradniki/tutoriale na YT?

  6. Czy na tym forum mogę liczyć na pomoc naprzykład tego typu :

  • Przypisanie umiejętności do postaci
  • przypisanie odpowiedniego dropu do odpowiednich mobów

Przepraszam jeśli powyższe pytani wydaję się głupie, ale kto pyta nie błądzi, mam nadzieję że ktoś mi pomoże.

Pozdrawiam serdecznie.

6

Twoje pytanie brzmi mniej więcej tak: "Nie chcę latać w kosmos, chciałbym tylko zbudować bolid formuły 1. Lepsze będą kombinerki czy młotek?"

5

Tom jestem zielony w temacie więc dlatego zadałem takie pytania które mnie nurtują. Twoja "odpowiedź" nic nie wnosi do tematu. Może inni będą chętni aby poświęcić odrobinę więcej czasu i odpowiedzieć chociaż na niektóre pytania.

5

Sądząc po tych pytaniach (aczkolwiek trzeba przyznać, że temat przemyślałeś i wiele z nich ma sens) to nie masz raczej zbyt wielkiej styczności z programowaniem - prawda?

Stworzenie takiej gry to jest praca sztabu osób, z różnych branż - tak, jak dobrze przypuszczasz, ktoś musi się zając grafiką, dźwiękiem oraz wieloma innymi rzeczami. A poza tym stworzyć grę to jedno, ale porównywalną ilość pracy i funduszy pochłonie jej porządna promocja.

Pytania o możliwość przypisania umiejętności do postaci, albo pisanie o ilości leveli czy rodzajów broni (a także np. rozkminianie, w jaki sposób literą R wywołać jakieś okienko) są na obecnym etapie totalnie bezsensowne - to trochę jakby (nawiązując do postu @TomRiddle) rozpoczynając dopiero projektowanie bolida, Ty byś się zastanawiał jakiego koloru dasz nakrętki mocujące koła ;)

Jeśli poważnie myślisz o zabawie w takie coś, to najpierw zastanów się, jakie widzisz w tym przedsięwzięciu swoje miejsce. Czy chcesz być programistą, a może kimś kto kieruje projektem? Podejrzewam, że sam wszystkich aspektów nie ogarniesz, więc będziesz potrzebował ludzi do pomocy. Ale zanim zaczniesz ich szukać, dojdź do jakichś efektów/wyników w tej "swojej" działce - przykładowo, jeśli chcesz programować, to zrób działającą jakąś wczesną alfę, naucz się podstaw, zrozum jak się działa w 3D. Ale to jest dłuższy proces - bo zanim pójdziesz poważnie w 3D, najpierw musisz ogarnąć "płaską" grafikę. A do tego potrzebujesz znajomości jakiegoś sensownego języka programowania. Więc tak, jak piszesz - nie jest to temat na tydzień.

Ale ogólnie to hasło, które rzuciłeś jest takie szerokie i obszerne, że raczej nikt nie da Ci tu sensownej odpowiedzi, zbyt wiele aspektów i tematów się przeplata, a wszystkie z nich są dość trudnymi zagadnieniami.

1

@wojtek1492: Chłopie, bierz się za programowanie po prostu, jak trochę liźniesz tego, to na wiele z Twoich pytań sobie sam odpowiesz. A bez tego dalej ani rusz... No chyba, że masz po prostu pomysł i chcesz zatrudnić programistów (i resztę) do jego realizacji... :)

1
koszalek-opalek napisał(a):

No chyba, że masz po prostu pomysł i chcesz zatrudnić programistów (i resztę) do jego realizacji... :)

Właśnie. @wojtek1492: tak sobie myślę, że w przyszłości, jak już ogarniesz te pytania (albo przynajmniej ich podstawy), to byłoby nawet sensowne poszukiwanie kogoś do projektu na tym forum (lub innym). Oczywiście jeśli nie masz nic przeciwko takiemu rozpoczęciu współpracy z nieznajomymi.

1

Dziękuję za odpowiedź, wszystkim bez wyjątków. Wieczorem poszperałem trochę w internecie i znalazłem dwa "silniki gry" niejakie Unity i Unreal Engine, na internecie są do tego poradniki od podstaw do jakiś bardziej zaawansowanych rzeczy, książki po polsku również znalazłem.

Teraz musiałbym wybrać jeden z dwóch powyższych. Miał ktoś styczność z tymi programami kiedyś, możecie coś polecić dla początkującego?

3

Pracuję trochę z Unity i nie wiem czy jest taki super dla początkującego, bo sporo rzeczy trzeba opisać kodem albo korzystać z (najczęściej płatnych) rozszerzeń. Unreal Engine z tego co kojarzę pozwala na większą "klikalność" (poprzez blueprinty), ale nigdy nie pracowałem z nim, to nie wiem.

Jak przypisać do jakiejś umiejętności odpowiednią animację która aktywuje się przy wykonywaniu? Służą do tego jakieś odnośniki/skrypty?

W Unity jest cały mechanizm odpowiedzialny za animacje, które mogą się uruchamiać przy pewnym warunku/wyzwalaczu. W skrypcie zmieniasz warunek i już, animacja się odpala.

W jakim programie i jak stworzyć małą mapę terenu 3D?

Unity ma swój edytor terenu na przykład.

Jak zaprogramować całe sterowanie grą przez gracza, chodzi mi o to że np, gdy racz wciśnie klawisz R to otworzy się okno umiejętności? Jaki język do tego służy?

W Unity masz C# i JavaScript, większość osób poleca używanie tego pierwszego (jest więcej poradników).

Jakie strony internetowe mogą mi pomóc i naprowadzić mnie na ten temat? Może jakieś poradniki/tutoriale na YT?

Obejrzyj tego pana:

Czy na tym forum mogę liczyć na pomoc naprzykład tego typu :
Przypisanie umiejętności do postaci
przypisanie odpowiedniego dropu do odpowiednich mobów

To nie jest tak, że ja ci powiem "kliknij tu i tu i będziesz miał", a raczej odpowiem coś w stylu: zrób sobie skrypt, który przypiszesz do prefaba moba, a w nim zrób sobie pole publiczne, które będzie miejscem na prefab moba i zrób obsługę, że jak ktoś zabije przeciwnika to wtedy musisz wykonać Instantiate i stworzyć nową instancję prefaba w miejscu, gdzie się znajdował przeciwnik, a jego samego musisz zniszczyć, wpierw odpalając animację umierania. A chcesz jeszcze, aby dropy faktycznie wyskakiwały z przeciwników jak fizyczne obiekty? To musisz im jeszcze nadać początkowe warunki ruchu.

1

Ktos, dziękuję, szukam na internecie porównań między Unity a Unreal Engine ale ja jako początkujący nie widzę znacznych różnic. Czy do Unity można zaimportować np. model 3D głazu/mostu/krzaka/drzewa zrobionego w innym programie czy można wstawiać na teren obiekty które są domyślnie w Unity?

2

Możesz. Nie wiem dokładnie co Unity potrafi importować, ale na pewno może pliki OBJ - eksportujesz z dowolnego programu do OBJ i możesz potem zaimportować i używać w Unity.

1

Ogolnie Unity jest bardziej przystepne niz Unreal. Unreal ma niby blueprinty ale one sa dosc ograniczone w porownaniu do pisania kodu, wiec tak czy inaczej musisz pisac kod a w zwiazku z tym C# jest przystepniejszy niz C++

W unity mozesz napisac MMORPG choc nie jest to najlepszy engine do tego. Teraz jest duzo promocji w Unity Asset Store i mozesz sobie zobaczyc jeden z assetow - uMMORPG. Tam masz juz podstawy zrobione pod MMO. Uzywajac tego jako bazy mozesz sie pobawic we wlasne MMO.
Jednak zalecam najpierw przejsc jakies tutoriale i zrobic jakas prosta gierke, nie zaczynalbym od MMO tak czy siak.

2

Rozdzieliłeś dość ładnie grę na poszczególne części. Nie pytasz bezpośrednio, w jakim programie stworzyć taką grę, tylko wiesz, że wymagana jest do tego spora ilość pracy z różnych działów IT i nie tylko. Trudno samemu stworzyć grę MMOx 3D. Tak naprawdę narzędzi/sposóbów wykonania do każdego z Twoich pytań jest mnóstwo. Tworzenie gry to proces artystyczny. Nie ma w dziedzinach kreatywnych jednego słusznego podejścia do sprawy. Trzeba kombinować i myśleć. Jak naprawdę chcesz zdobyć wiedzę na temat budowania gier to ją prędzej czy później zdobędziesz. Nie załamuj się, że już teraz nie wiesz wszystkiego. Na razie niech to będzie dla Ciebie tajemnicą. Życzę powodzenia i wszystkiego dobrego.

1

Dziękuję Wam za odpowiedzi.
Mój wybór padnie chyba na Unity, martwię się tylko kilkoma kwestiami (Wiem że za wcześnie na wymyślanie takich problemów):
-Czy dam radę w Unity stworzyć itemki, powstawiać swoje elementy otoczenia typu drzewa/mgła/deszcz
-Czy da się stworzyć drzewko umiejętności dla każdej postaci osobno?
-Chciałbym wprowadzić tak zwane "Teleporty" do innych krain i różnych handlarzy NPC/Mistrzów dla danej klasy.

Tych 3 myślników obawiam się najbardziej które wymieniłem i nachodzą mnie obawy czy jednak Unreal Engine nie byłby lepszy...

W filmikach które obejrzałem na internecie zaciekawiły mnie w Unrealu blueprinty...ktoś mógłby mi wyjaśnić co to za "klocki" bo chyba tak mogę to nazwać gdy łączy się jakieś kwadraty za pomocą linii. Czym blueprinty są zastąpione w Unity?

3
wojtek1492 napisał(a):

Dziękuję Wam za odpowiedzi.
Mój wybór padnie chyba na Unity, martwię się tylko kilkoma kwestiami (Wiem że za wcześnie na wymyślanie takich problemów):
-Czy dam radę w Unity stworzyć itemki, powstawiać swoje elementy otoczenia typu drzewa/mgła/deszcz
-Czy da się stworzyć drzewko umiejętności dla każdej postaci osobno?
-Chciałbym wprowadzić tak zwane "Teleporty" do innych krain i różnych handlarzy NPC/Mistrzów dla danej klasy.

Tych 3 myślników obawiam się najbardziej które wymieniłem i nachodzą mnie obawy czy jednak Unreal Engine nie byłby lepszy...

W filmikach które obejrzałem na internecie zaciekawiły mnie w Unrealu blueprinty...ktoś mógłby mi wyjaśnić co to za "klocki" bo chyba tak mogę to nazwać gdy łączy się jakieś kwadraty za pomocą linii. Czym blueprinty są zastąpione w Unity?

Wszystko to zrobisz zarówno w Unity jak i UE. Blueprinty w UE to sposób „pisania kodu” za pomocą myszki. Na pewno ma jakieś ograniczenia ten Blueprint System, dlatego w wyjątkowych sytuacjach trzeba pisać kod ręcznie. Nie znaczy to jednak, ze sam silnik ma jakieś ograniczenia. W Unity piszesz go po prostu z klawiatury. W Unity programujesz w języku C#, w UE w C++. Unity jest według mnie bardziej przystępny i łatwiejszy dla początkujących mimo wszystko + ma pełno tutoriali w języku polskim.

PS Chyba, że Unity ma obecnie również system czegoś takiego jak Blueprinty. Nie orientuje się.

1
wojtek1492 napisał(a):

Mój wybór padnie chyba na Unity, martwię się tylko kilkoma kwestiami (Wiem że za wcześnie na wymyślanie takich problemów):
-Czy dam radę w Unity stworzyć itemki, powstawiać swoje elementy otoczenia typu drzewa/mgła/deszcz
-Czy da się stworzyć drzewko umiejętności dla każdej postaci osobno?
-Chciałbym wprowadzić tak zwane "Teleporty" do innych krain i różnych handlarzy NPC/Mistrzów dla danej klasy.

Tych 3 myślników obawiam się najbardziej które wymieniłem i nachodzą mnie obawy czy jednak Unreal Engine nie byłby lepszy...

To jest Twój najmniejszy problem, jak już sobie poradzisz z mechaniką gry, to doprogramowanie podpunktów które wymieniłeś zajmą Ci 0.01% czasu który poświęcisz na tą grę. Mam na myśli to, że w porównaniu do Twojego celu, Twoje podpunkty są dziecinnie proste. Dodam że wszystko o czym pomyślisz, jakieś statystyki, pvp, magia, czary, whatever, wszystko wpisuje się do tej kategorii "dziecinnie proste".

3

Dziękuję. Najważniejsze że napisaliście że w Unity te podpunkty które wymieniłem da się zrobić. Jeśli się da to tylko kwestia czasu i chęci.

4

Raczej na Twoim miejscu martwilbym sie tym jak zrobic zeby wszyscy gracze byli na jednej mapie, jak podzielic ja na strefy, jak dziala w ogole MMO. Takie rzeczy jak skille, drzewka, mgla itp to sa rzeczy ktore najmniej Ci zajma, skup sie na stronie serwerowej...

4

Najpierw zacznę od spisania wszystkiego na kartkę. Moje plany i pomysły żebym wiedział jaki chcę mieć efekt końcowy własnej pracy.

1

Trzeźwy bardzo wartościowy post. Ogólnie jestem pokojowo nastawiony do ludzi ale takich jak Ty to bym z miejsca banem potraktował. A wszystkim za cenne rady i wskazówki dziękuję.

1

Jestem podobnego zdania, co @TomRiddle, że wymienione rzeczy nie są najtrudniejsze w programowaniu (nie mówię o projektowaniu – grafiki, mechanizmów gry i tym podobnych). Nie wiem, czy miałeś jakąś styczność z programowaniem, chyba nie, więc powiem od siebie. Jedna z najtrudniejszych rzeczy w programowaniu jako takim to debugowanie (może być też jedną z najprostszych, jeśli masz do tego dryg, ale dla mnie nie jest).

Nie chodzi o takie znajdowanie błędów, które skutkuje "nie wiem dlaczego, ale działa i to mi wystarcza". W porządku, to nie jest złe podejście. Mówię o innym podejściu – typu "kurczę… działa, ale jak będę chcieć coś dalej z tym robić, to muszę zrozumieć, dlaczego". Czasem "kurczę… znów nie działa", choć zmieniało się kod/parametry 5-10 razy. Czasem "kurczę… a niech to, niech sobie nie działa" – trzeba schować/porzucić dumę, porzucić pomysł i zabrać się za rozwiązywanie z innej strony (ja staram się, by takich sytuacji w ogóle nie było).

Dla przeciwwagi, żeby Cię nie zdemotywować na samym początku, piękne jest w programowaniu to, gdy już zadziała. :) A jeszcze piękniejsze – gdy zrozumiesz, dlaczego działa właśnie tak, a nie inaczej.

Był u nas na forum, chyba w mikroblogach, wpis o tym, jak rozwiązywać problemy w pracy. Autor(ka? – przepraszam, nie pamiętam :( ) napisał(a) o tym, żeby szukać rozwiązania problemu 20 minut samodzielnie, a potem pytać współpracowników/przełożonego. Uważam, że to dobra rada – to znaczy podobny podział czasu. Nie musi to być koniecznie 20 minut, może jeśli chodzi o pytanie na forum, to ten czas samodzielnego szukania/myślenia może wynosić godzinę lub dwie? Może nawet dzień, jeśli można dany problem odłożyć do jutra.

2

Unity i inne silniki są fajne i bardzo rozbudowane, jednak gdybyś chciał stworzyć MMO z naciskiem na Massively w tym skrócie, to mógłbyś mieć pod górkę. Gry MMO często muszą być szczególnie dobrze zoptymalizowane pod kątem rysowania dużej ilości obiektów na mapie, ale również do tego dochodzi połączenie o które też trzeba się martwić.

Niemniej, na Unity MMO powstają i zarabiają grube pieniążki. Na wszystkie Twoje pytania odnośnie tego czy się da zrobić jakiś mechanizm w Unity czy UE padnie odpowiedź tak - skoro te mechanizmy są w innych grach to na pewno się da. Jednak powinny padać pytania typu "jak zrobić to lub tamto" (tylko nie tutaj na forum, tylko w google :P).
Kod implementujący te mechanizmy powinien być dobrze zaprojektowany, to nie działa tak, że znajdziesz sobie skrypt od jednej rzeczy, skleisz ze skryptem od innej rzeczy i masz już grę. To skończyło by się szybko takim monolitem, że jakakolwiek zmiana w grze była by niemożliwa lub powstawały by błędy.

Przy projektowaniu gry sieciowej musisz brać pod uwagę, że klienty mają jedynie iluzję bycia w tym samym świecie, dlatego trzeba tworzyć różne mechanizmy predykcji (czyli zakładać co się może zaraz stać) oraz interpolowania stanów (gracz dostaje informacje od serwera w pewnym odstępie czasu, pomiędzy tymi stanami trzeba jakoś przechodzić). Trzeba pamiętać, że serwer jest "wielkim bratem" i to on przechowuje prawdziwy obraz (stan) świata.
Jak widzisz dużo tego jest. (Btw, polecam książkę: "Multiplayer Game Programming - Joshua Glazer", ale nie na początku przygody z programowaniem)

Wiele z tych rzeczy jest już zrobionych w Unity, ale i tak żeby umieć z tego korzystać, trzeba wiedzieć jak to mniej-więcej działa.
Najlepiej jakbyś na początku spróbował zrobić multiplayer w jakiejś mega prostej gierce która stworzyłeś w Unity, może to być kółko i krzyżyk. Potem będzie Ci trochę łatwiej ;p

2

Dziękuję za pomoc :) Jutro zabieram się za tutoriale. Unity zainstalowane, uczę się interfejsu. Miłego weekendu i majówki ! :)

1

Znalazłem kilka fajnych stron z darmowymi modelami 3D różnych budynków i elementów terenu, tylko mam pytanie czy orientuje się ktoś jakie formaty modeli 3D Unity potrafi otworzyć? Bo formatów jest kilkanaście z tego co zdążyłem zauważyć.

1

Wrzuć i zobacz. Unity też swój własny sklep, stamtąd możesz pobierać bezpośrednio do projektu.

1
wojtek1492 napisał(a):

Znalazłem kilka fajnych stron z darmowymi modelami 3D różnych budynków i elementów terenu, tylko mam pytanie czy orientuje się ktoś jakie formaty modeli 3D Unity potrafi otworzyć? Bo formatów jest kilkanaście z tego co zdążyłem zauważyć.

http://lmgtfy.com/?q=unity+3d+model+formats

1

Model zawsze można przekonwertować na inny format. Jeśli poważnie myślisz o tworzeniu gry to najpierw oswój się z samym silnikiem i jego funkcjonalnościami a nie zawracaj sobie głowy takimi bzdetami ;)

1

Stosuję się do Waszych rad, poznaje interfejs, próbuję tworzyć jakieś mapy z detalami czytając tutoriale. Już teraz widzę że to będzie nie lada wyzwanie ale silnik według mnie ma wielkie możliwości dla kogoś kto potrafi go profesjonalnie obsłużyć. :)

4

@wojtek1492: mam wrażenie, że tutoriale są Ci potrzebne wyłącznie do zrobienia czegoś (np. mapki), a nie do nauki.

Zanim cokolwiek zaczniesz robić, najpierw poznaj narzędzia i zobacz co się w nich znajduje (ogólnie: rozejrzyj się). Następnie otwórz sobie tutorial z absolutnymi podstawami i każdą z lekcji ćwicz wielokrotnie, wymyślając sobie różne rzeczy do wykonania, które w tej lekcji są opisane. Jak już konkretnie przećwiczysz dany temat, to zabierz się za kolejną lekcję.

W ten sposób nauczysz się wszystkiego co potrzebne i w przyszłości będziesz się sprawnie posługiwał narzędziami. A co za tym idzie, będziesz mógł skupić swoje siły na tworzeniu projektu, a nie na czytaniu tutoriali i wydłubywaniu z nich rozwiązań.

1

furious masz rację ale dajmy na to dziś obejrzę tutorial o dodawaniu detali do terenu i to co mówią na tutorialu ćwiczę sam przez kilka dni, uczę się zmieniać wygląd modeli 3D, obracać obiekty itp...gdy to zrozumiem i będę się biegle tym posługiwał to wtedy mogę przejść do następnego tutoriala. Złe myślenie?

1

To zależy – chcesz się nauczyć tworzyć gry, czy tworzyć modele?

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