Jak stworzyć gre MMORPG

Jak jest ktoś kto chciałby zacząć jakiś projekt to programuję trochę w Unity w C# i modeluję w blenderze.

Tutaj jest mój projekt, client pod mmorpg.

https://docs.google.com/uc?id=0B-q7HJqBSKNseEZwUmZ0TERiTlE&export=download

Modele są z assetów, bo moim celem było napisanie skryptów i stworzenie bazy.

Chodziło o stworzenie możliwości rejestracji konta i logowania do bazy danych.

Client wykorzystuje serwer PHOTON taki jakiego używa np. Albion Online.

Programuje czysto hobbistycznie, a modeluje przede wszystkim wnętrza architektoniczne do pracy, więc modelowanie postaci raczej na przeciętnym poziome :P

Cały projekt również chciałbym potraktować jako zabawę :)

PS: Jakby ktoś chciał otwierać klienta to polecam dać maksymalną rozdzielczość oraz dać mu trochę czasu, lubi się zastanowić zanim wyśle dane na serwer...

Powinny być zrobione ekrany ładowania.

13062809_812685148865352_1426480670_o.png

No to i ja coś napiszę od siebie.

Po raz potrzebny jest plan.

Po dwa wytrwałość.

Po trzy umiejętność myślenia. W brew pozorom programowanie to nie tylko cyferki i matematyka bez zdrowego pomyślunku 5 z matematyki nic nie dadzą.

Po cztery wytrwałość.

I teraz coś ogólnego. Zależy co chcesz osiągnąć? Jeżeli chcesz spróbować z grami, albo jesteś tylko hobbistą tak jak ja, to polecam jakieś program typu ECLIPSE ORIGIN.

No chyba że myślisz coś na poważnie, to proponuje unity.

@PS Ja programuje w programie BYOND, (w sumie mogę nazwać to językiem...) Oczywiście jako amator, ale mam dwa projekty jeden w odstawce a drugi to DBZ. Oczywiście obydwa w 2d. (2d Rządzi).

https://www.youtube.com/user/MrMarekssj2/videos?sort=dd&view=0&shelf_id=0

BYOND to nie język... to min. zwykła platforma udostępniająca szereg narzędzi dla programistów do napisania prostej gry 2D, czego nie polecam.

Żeby stworzyć grę musisz się nauczyć dość dużo. Dobre gry zazwyczaj piszę się w języku C++, gdyż inne języki są znacznie wolniejsze od niego, wynika to z konstrukcji tego języka, która jest bliższa procesorowi, niż reszta języków kompilowanych. Musisz się go nauczyć dobrze, zazwyczaj ogarnięcie podstaw podstaw języka to 2 tygodnie, przy bardzo szybkim tempie nauki. Ale C++ jest sam w sobie bardzo trudny (wynika właśnie to z tego poziomu abstrakcji, który jest "mniejszy" od innych), dlatego powinno ci to zająć nawet dłużej. Później bo ogarnięciu podstaw struktur języka możesz spróbować zacząć używać jakiejś biblioteki/silnika gier (polecam Cocos2d-x). Niby tego nie wiele, ale na prawdę to dużo zabawy.

Jeżeli nie myślisz o dłuższej karierze game developera. To zajmij się Unity prościej nie będzie. Ale to nadal dużo pracy.

A tu link, gdybyś musiał wybierać język:
http://carlcheo.com/startcoding

Większość się tu wypowiadających zbyt dużej wiedzy raczej nie posiada. "Dobre gry zazwyczaj pisze się w c++" WTF!?, czy którakolwiek gra w dzisiejszych czasach pisana jest wyłącznie w jednym języku? No nie, c++ jest stosowany glownie do tworzenia jądra gry, choć ja osobiście nie lubię cpp, jeżeli chcesz się pchać w jakiś niskopoziomowy język to chyba c będzie fajniejsze (może rust się wybije). A co do języka który będzie spoko, to c# jest okej, od razu mamy okienka i to bardzo motywuje do dalszej pracy, VB też się nada tylko jest mało wydajny jak na dzisiejsze czasy. Wracając jeszcze do tych 2 tygodni, to niestety, jest to mało realne, tyle czasu nie wystarczy Ci na zaprojektowanie struktury sieciowej.

Człowieku. rzucasz zdaniami nawet nie rozumiejąc co piszesz. pewnie takie słówka jak niskopoziomowy/wyspoziom tylko znasz dlatego, że przewinęło się, gdzieś w tutorialu do phpa. W ilu językach ma się pisać tą grę według ciebie ? Bo rzucasz zdaniami kompletnie bez sensu. Niby w czym c jest lepszy od c++, przecież c++ ma wszystko to co ma c i jeszcze mnóstwo więcej ? Zdaniem o C# miałeś na myśli, aby pisać na platformę .NET skoro gadasz o okienkach...? Wiesz, że platforma .NET jest wolniejsza jeszcze od Javy ? "Od razu mamy okienka" Wiesz, że systemy GUI do tworzenia okienek nie należą do specyfikacji języka, jak chcesz taki system to zrobisz to w każdym języku z dobrym IDE ? "Projektowanie struktury sieciowej" Co ty pierdzielisz za głupoty, on chce napisać grę, a nie stworzyć projekt sieci ?

  1. Program napisany w C jest szybszy od kodu napisanego w C++. C to język w którym można programować nawet niektóre mikroprocesory.
  2. Natomiast program napisany w C++ jest wielokrotnie szybszy od tego ścierwa microsoftu (C#) próbującego upodobnić się do rodziny języków C.
  3. Trudność języka C++ polega na jego możliwościach. Mamy tu zarówno dostęp do pamięci fizycznej jak i (w brew temu co jakaś mądra głowa napisała) bardzo wysoki poziom abstrakcji. Po prostu, język może więcej, naturalne jest też że jest więcej do nauki.
  4. W C++ również można mieć od razu okienka jak się skorzysta z odpowiednich bibliotek. I tak, odpowiednikiem tego ścierwa C# + .NET jest znacznie lepsze, szybsze i wieloplatformowe C++ + QT.
  5. Jeśli ktoś chce robić sieciówkę to naturalnym jest że musi mieć strukturę sieciową - jakoś te klienty muszą się łączyć z serwerem i wymieniać danymi.

1. Nie które mikroprocesory po programujesz też w C++. A C nie zawsze musi być szybszy od C++ jeżeli używamy tych samych mechanizmów, różnica szybkości między tymi jest tak nie wielka, że nie nazywa się tego już nawet zaletą.
2. To chyba nie domnie bo nie sądziłem inaczej
3. Nie masz dostępu do pamięci fizycznej bezpośrednio tylko do pamięci wirtualnej (w normalnych OS), a reszta też chyba nie do mnie
4. Pisałem to i nie chodzi tu o biblioteki tylko pewne systemy dla bibliotek
5. Struktura sieci w grach mmo to ustalenie jedynie istniejącej architektury i treści komunikatów, nie jest to żadne planowanie, struktura sieci jest pojęciem znacznie szerszym, tu ograniczasz się najwyżej do warstwy transportowej i aplikacji, a zazwyczaj tylko aplikacji więc treści komunikatów.

Pisałem do was obu.

1. Być może, ale to C ma większe zastosowanie w elektronice. I nie zgadzam się, C jest szybsze.

3. Dokładniej to w C++ za pomocą wskaźnika można się odwołać do dowolnego logicznego adresu w RAM, HDD itd.

4. Które też są bibliotekami.

5. Właśnie że nie. Możesz wybrać sobie istniejącą architekturę, ale no właśnie - musisz wybrać albo tworzyć nowe. Dobrać protokoły którymi się będziesz posługiwać i oczywiście potrzebujesz kodu który to wykorzysta. Treść komunikatów to jedno. Ale trzeba też zaplanować i zrealizować zachowanie co jeśli dane nie przyjdą, będą opóźnione lub uszkodzone. Do tego dochodzi kwestia zabezpieczenia tego.

1. W praktyce C jest minimalnie szybsze co nawet jest nie warte uwagi, ale C++ ma pewne featury w sterownikach kompilacji i kompilatorach, które go czynią w pewnych aspektach szybszym
3. Wskażnik na HDD wtf co ty masz na myśli :D:D:D:D:D Nie da się wskazywać na pamięć twardego dysku ty w ogóle wiesz co piszesz ?? Totalna głupota, możesz najwyżej przenieść dane z dysku do pamięci i na nie wskazywać. I jeszcze to "itd." co masz na myśli. I nie w cywilzowanych systemach operacyjnych wskazywanie pamięci fizycznej jest bezpośrednio nie możliwe wskazujesz na pamięć wirtualną - pośrednik OS do pamięci fizycznej, aby tacy młodzi napaleni programiści jak ty nie wysadzili sobie komputera wpisując do niego jakieś głupoty.
4. Nie te systemy to nie biblioteki
5. Architektura serwera narzuca protokoły, jeżeli nie korzystamy z architektury istniejącej, tworzymy własną nie wybieramy protokołów transportowych bo nie ma co tu wybierać, a niższe protokoły to nie architektura aplikacji. Jedynie co robimy tworzymy własny protokół aplikacyjny. Synchronizacja żądań odpowiedzi to nie jest ta warstwa sieci tylko warstwa transportowa TCP załatawia ona to za ciebie, pakiety o różnych sumach kontrolnych zostaną wysłane na nowo, pakiety w TCP nie mogą nie przyjść inaczej użytkownik zostanie rozłączony, jeżeli ktoś ma lagi/opóźnione pakiety będzie się teleportował i tyle. Chyba nie rozumiesz, także za bardzo podziału sieci na warstwy. Podsumowując to co ustalasz to nie struktura sieci tylko działanie twojego protokółu, czyli co się wysyła i jak się na to reaguje.

Sądząc po takich wypowiedziach jesteś kolejnym laikiem, który naczytał się za dużo kursów nie wnikając w szczegóły,a później pisze herezje po forach. Napisz swoją pierwsze aplikację sieciową, która ma przynajmniej 20k linijek to może pogadamy, bo ja pracuję jako Software developer i głównie co pisze to aplikacje biznesowe ze stronami typu SPA

1. W praktyce C jest minimalnie szybsze co nawet jest nie warte uwagi, ale C++ ma pewne featury w sterownikach kompilacji i kompilatorach, które go czynią w pewnych aspektach szybszym
3. Wskażnik na HDD wtf co ty masz na myśli :D:D:D:D:D Nie da się wskazywać na pamięć twardego dysku ty w ogóle wiesz co piszesz ?? Totalna głupota, możesz najwyżej przenieść dane z dysku do pamięci i na nie wskazywać. I jeszcze to "itd." co masz na myśli. I nie w cywilzowanych systemach operacyjnych wskazywanie pamięci fizycznej jest bezpośrednio nie możliwe wskazujesz na pamięć wirtualną - pośrednik OS do pamięci fizycznej, aby tacy młodzi napaleni programiści jak ty nie wysadzili sobie komputera wpisując do niego jakieś głupoty.
4. Nie te systemy to nie biblioteki
5. Architektura serwera narzuca protokoły, jeżeli nie korzystamy z architektury istniejącej, tworzymy własną nie wybieramy protokołów transportowych bo nie ma co tu wybierać, a niższe protokoły to nie architektura aplikacji.  Jedynie co robimy tworzymy własny protokół aplikacyjny. Synchronizacja żądań odpowiedzi to nie jest ta warstwa sieci tylko warstwa transportowa TCP załatawia ona to za ciebie, pakiety o różnych sumach kontrolnych zostaną wysłane na nowo, pakiety w TCP nie mogą nie przyjść inaczej użytkownik zostanie rozłączony, jeżeli ktoś ma lagi/opóźnione pakiety będzie się teleportował i tyle. Chyba nie rozumiesz, także za bardzo podziału sieci na warstwy. Podsumowując to co ustalasz to nie struktura sieci tylko działanie twojego protokółu, czyli co się wysyła i jak się na to reaguje.
Sądząc po takich wypowiedziach jesteś kolejnym laikiem, który naczytał się za dużo kursów nie wnikając w szczegóły,a później pisze herezje po forach. Napisz swoją pierwsze aplikację sieciową, która ma przynajmniej 20k linijek to może pogadamy, bo ja pracuję jako Software developer i głównie co pisze to aplikacje biznesowe ze stronami typu SPA

3. Da się. Piszę o możliwościach języka. A to co ogranicza OS to zupełnie inna historia. C++ jest językiem który umożliwia pisanie programów które same się bootoją oraz własnego OS.

5. Kolejne zejście w stronę modelów, co nawet nie jest tematem tej rozmowy. Podczas gdy od początku piszę o kodzie sieciowym z perspektywy projektu - a więc właśnie co się wysyła, jak się na to reaguje oraz jak się to wysyła i odbiera. Bo widzisz, jak przypadku gry pakiety przestaną przychodzić to ty jako programista musisz ustalić jaki ma być czas oczekiwania na próbę odzyskania połączenia. To czy gra ma teleportować postać rozłączonego gracza to również kwestia umowna.

Aż ciężko uwierzyć że robimy w tej samej branży.

3. Temat dotyczy tworzenia gier nie OS i w ramach pisania gier piszę o możliwościach języka. to że na jakiś poziomie nie żadnych zabezpieczeń to jest inna historia i możesz odwoływać się do jakiej pamięci chcesz i kiedy chcesz. Nawet w C# (którego tak bez powodu nie nawidzisz a który ma swoje plusy i minusy jak każde języki o których powinno mówic się w aspektach przeznaczenia a nie jest gownem bo ja piszę w C++) jeżeli napiszesz platformę .NET na tym poziomie będzie miał dostęp do każdej pamięci także. Btw wskaźniki nie są featurem C++/C w pewnym rozumieniu one je tylko przyswajają co ciężko nawet nazwać kompilacją.
5. Nie pisałeś o kodzie sieciowym tylko "strukturze sieci" :D:D To co się wysyła i odbiera to jest właśnie jedna z definicji protokołu I tak jak mówiłem masz wpływ na warstwę transportową,ale nie jest to potrzebne, ponieważ w dobrych systemach implementujących pewne architektury serwera lub tworzące własne masz załatwione od ręki z możliwością ich edycji ograniczającej się do 1 propertisa, a ty nazywasz to (popierając zdanie jednego z użytkowników) projektowaniem struktury sieci które zajmie mu dwa tygodnie. Przykro mi aspekty "struktury sieci" to nie to mylisz pojęcia

Faktycznie ciężko uwierzyć. Btw nadal sądzisz, że te systemy to biblioteki ? serio poczytaj bo na tym dyskusja powinna się skończyć


Nie chce korzystać z programów typu rpg maker xD ale wrzuca grafikę z rpg makera xD ten temat to jakiś troll czy coś ?

Ludzie opamiętajcie się, ktoś was się pyta jak zabrać się za zrobienie prostej gry a wy tutaj kłócicie się o jakieś absurdalne rzeczy.

Jeżeli chcesz zabrać się za tworzenie gier to polecam najpierw przerobienie jakiegoś kursu z programowania żeby zrozumieć podstawy.

Osobiście polecał bym np C# + Unity ogromna liczba tutoriali dużo Ci pomoże.

Ale jeżeli chciał byś najpierw spróbować coś stworzyć a potem się dopiero w to zagłębiać to polecam tobie ten tutorial

http://pixelnest.io/tutorials/2d-game-unity/install-and-scene/

Naprawdę jeżeli się dobrze w niego wczytasz to nawet jeżeli nie ogarniasz programowania to zawsze czegoś się nauczysz. No i całkiem dużo frajdy :)

Nauka metodą prób i błędów to też nauka, w ten sposób pamiętam edytowałem swój pierwszy OTS do tibi nie mając pojęcia co to programowanie ale z kumplami grało się fajnie.

Tak więc, moim zdaniem ściągnij sobie unity i zrób jakiś projekt z tutoriala a potem sobie w nim grzeb, dodaj coś swojego itp. i jeżeli spodoba Ci się to co robiłeś to wtedy będziesz mógł zacząć naukę.

Jak byś potrzebował z tym jakiejś pomocy to możesz pisać do mnie na priva :)

Popieram... ta kłótnia o różnicach pomiędzy językami programowania jest "średnio" przydatna dla autora wątku.

Najlepiej po prostu zacząć cokolwiek, choćby zabawę z modowaniem i zobaczyć czy nadajemy się do pracy twórczej, bo to jest podstawa.
Chodzi o to żeby lubić tworzyć gry, a tworzenie gier to proces wielowątkowy, na który składają się różne rzeczy, pojedyncza osoba raczej nigdy nie poradzi sobie ze wszystkimi aspektami tworzenia gry komputerowej, na wysokim poziomie.

Przeciętna gra składa się z różnych elementów, takich jak grafika, fabuła, mechanika itd... Nikt raczej nie jest dobry we wszystkim, więc samotny twórca który np: nie radzi sobie z tworzeniem grafiki, będzie raczej musiał skorzystać z pracy innych, w zależności od tego jaka to ma być gra, grafiki można zdobyć za darmo, lub zapłacić. Już pisałem wcześniej, że nie trzeba od razu tworzyć projektu skomplikowanego i kompletnego, wystarczy zrobić cokolwiek co ma ręce i nogi i umożliwi pokazanie innym potencjał twórcy... a później droga do dalszej realizacji może nagle zrobić się o wiele wygodniejsza.
No ale podstawa to wytrwałość, dużo czasu i zamiłowanie do tego. To ma być FRAJDA - zwłaszcza w przypadku gry robionej przez jedną osobę, bo praca w zespole to inna bajka.

Weźmy np mnie, w tej chwili dopinam ostatnie guziki w kwestiach inventory, ale miałem problem z wyrzucaniem przedmiotów na ziemię, gdy zasypiałem wciąż myślałem jak to zrobić, a na następny dzień wstałem i szybko zjadłem śniadanie bo nie mogłem się doczekać aż usiądę do komputera i naprawię ten błąd. Przyjemność z tego mam ogromną, co najmniej taką jak przy graniu w fajną grę :) Myślę że gdybym np: nastawił się na zrobienie gry dla kasy i żmudny proces tworzenia nie byłby dla mnie specjalnie przyjemnością, to byłoby mi bardzo ciężko zrobić cokolwiek.

I jeszcze raz powtórzę: najbardziej uniwersalnym wyborem (zwłaszcza dla osoby która nie ma doświadczenia i specjalnie sprecyzowanych celów) będzie silnik Unity, największe community, najwięcej pomocy dla początkujących, silnik zarówno do prostych gier 2d, jak i rozbudowanych 3D, przyzwoite wymagania sprzętowe (np: do Unreal engine potrzeba już wyraźnie mocniejszego komputera).
Pewnie że Unity ma swoje wady, ale nic nie jest idealne.

Ja tworzeniem gier zajmuję się od 17 lat, a od 6 lat robię to profesjonalnie. Jedna z moich gier została nawet dodana na mmorpg.org.pl jakiś czas temu. Jeżeli masz 12 minut wolnego czasu, to zapraszam do posłuchania od czego ja polecam zacząć robienie gier. W rzeczywistości nauka programowania jest dość prosta i ogólnie jeśli się wie w jakim kierunku iść, to można dość szybko zacząć robić swoje pierwsze gry. Wymaga to tylko wytrwałości.

Chcecie wiedzieć jak nauczyć się tworzenia gier w prosty i przyjemny sposób? Polecam kurs jak zrobić grę. Przez praktyczne lekcje nauczycie się tam robienia gier.

Wpadłem na ten temat przypadkiem i pomyślałem, że poczytam i jak ludzie dadzą dobre rady to też się zabiorę za tworzenie choćby prostych gier single w jakichś game maker'ach czy innych takich i może w końcu wezmę się za naukę programowania (w Moim wypadku i tak prawdopodobnie będę musiał to kiedyś zrobić). Ale za każdym razem jak czytam lub słyszę o programowaniu i jak ludzie się kłócą w niektórych kwestiach, to odechciewa Mi się tego i myślę nad zmianą szkoły, bo wydaje Mi się, że za szybko tego nie połapię. No cóż... Pozostało Mi znaleźć programistów i grafików i zająć się pisaniem lore do gier.

Tak jak w temacie jak stworzyć gre MMORPG?

Słyszałem,że aby zrobić własną gre trzeba znać jakieś języki programistyczne (ale nie wiem jakie).Chciałbym się nauczyć takiego języka ponieważ mam 2 tygodnie wolnego czasu więc chętnie je na to poświęce.Zadam parę ważnych dla mnie pytań:

Jakiego języka programowania trzeba się nauczyć aby stworzyć własną gre MMORPG?,Ile zajęło by mi nauczenie się owego języka?Co bym musiał posiadać/zrobić aby taką grę stworzyć?Gdzie/w czym na przykład miałbym programować gre?(samo znanie owego języka mi nic nie da)Czy do zaprogramowania takiej gry potrzebny jest dobry komputer?

Od razu napisze:

NIE mam zamiaru korzystać z żadnych programów typu game maker itp.,chyba żadna lepsza gra przy pomocy tego typu programów nie powstała.(?)

Chcę stworzyć mmorpg,nie samo rpg.Mam zamiar stworzyć gre z podobną grafiką do tej w załączniku.Chcę stworzyć grę sam.Grę chciałbym zrobić w formie clienta do pobrania(tak jak np.Lol,Metin.)takiego,że mógłbym w każdej chwili wydać aktualizację.

Screenshot_2016-08-10-19-48-03-1.png