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

Gra MMORPG – kilka pytań

Odpowiedz Nowy wątek
2018-05-01 20:51

Rejestracja: 1 rok temu

Ostatnio: 19 godzin temu

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. Poprostu temat mnie zaciekawił i mam kilka pytań do Was.

Każdy z nas a już napewno 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 poprostu 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.

edytowany 1x, ostatnio: furious programming, 2018-05-01 20:57

Pozostało 580 znaków

2018-05-26 13:32
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 7 godzin temu

Lokalizacja: Tuchów

2
public int figType;

Hmm… ktoś nie zna jeszcze stałych, albo enumów. ;)

Wspominam o tym dlatego, że używasz gołych liczb od 1 do 3, które nie niosą ze sobą informacji o figurach – to tzw. magic numbers. Za tydzień nie będziesz pamiętał o tym, która figura to np. 1. Zamiast liczb, lepiej jest posługiwać się nazwami, bo dzięki nim łatwo zrozumieć co sobą reprezentują.

Przykład dla stałych:

const int Rectangle = 0;
const int Triangle  = 1;
const int Circle    = 2;

Dzięki takim stałym możesz zwiększyć czytelność kodu tworzącego figury:

Figure figure = new Figure(Rectangle, 3, 2, 0);  // od razu widać, że tworzony jest prostokąt

a także zwiększyć czytelność kodu instrukcji wyboru:

private void countArea()
{
  switch(figType) {
    case Rectangle:
      area = side * height;
      break;
    case Triangle:
      area = side * height * 0.5;
      break;
    case Circle:
      area = 3.14 * radius * radius;
      break;
  }
}

Najważniejszą rzeczą związaną ze stałymi jest możliwość używania ich w wielu miejscach kodu oraz zawsze taka sama wartość. Jeśli postanowisz zmienić indeks figury, np. zmienić wartość prostokąta z 0 na 4, to wystarczy zmienić jedną linijkę:

const int Rectangle = 4;

a cała reszta kodu sama się do tej zmiany dostosuje.


W powyższych przykładach co nieco zmieniłem. Pierwsza zmiana to nazwa klasy – Twoja klasa Figures swoją nazwą informuje, że opisuje wiele figur, a w rzeczywistości opisuje tylko jedną. Dlatego nazwę zmieniłem na Figure. Druga zmiana to metoda countArea. Niepotrzebnie zwraca double, skoro i tak wynik ląduje w polu klasy. Dlatego też zmieniłem typ metody na void i usunąłem return.

Sugeruję dla każdego problemu z kodem zakładać osobne wątki – każdy na jeden problem. Natomiast w tym wątku pisać posty tylko wtedy, gdy zechcesz się pochwalić postępami lub coś pokazać. Bo póki co robi się bałagan – jeden wątek do wszystkiego.


Nie jestem pewien, czy jest to dobra sugestia, by zakładać oddzielne wątki. Może tylko wtedy, jeśli będzie chciał dowiedzieć się czegoś konkretnego, dokładnego, lub też wyjaśnić jakiś błąd. Ale w moim rozumieniu podstawy jako takie (jak wyżej) należą do "dyskusji o podstawach" programowania, a ta znów należy do "dyskusji ogólnych" o tym projekcie, a te znów należą do tego wątku. - Silv 2018-05-26 13:39
Taka zasada panuje na forum – jeden problem to jeden wątek. Ten wątek dotyczył kilku ogólnych pytań na temat tworzenia gry, następnie służył jako blog do informowania o postępach, a teraz zawiera pytania stricte dotyczące C# (ale nie kodu gry), choć takiego tagu wątek nie posiada. Jest w nim wszystko, robi się bajzel i coraz trudniej połapać się o co w nim chodzi. - furious programming 2018-05-26 13:43

Pozostało 580 znaków

2018-05-30 10:23

Rejestracja: 1 rok temu

Ostatnio: 19 godzin temu

0

Uczę się tablic wielowymiarowych i list. Pomocne są poradniki z YT, na filmiku lepiej jest to wyjaśnione niż na suchym tekście w książce. Standardowo mam kilka pytań do Was, będę wdzięczny za każdą odpowiedź.

  1. Czy jeśli robię grę z nastawieniem pod Multiplayer to od początku skrypty dotyczące naprzykład statystyk gracza lub umiejętności, muszą być pisane pod Multiplayer czy można je pisać bez żadnych "dodatków" w kodzie C#?

  2. Do utworzenia systemu umiejętności użyć bazy danych czy ScriptableObjects (chyba że jedno nie wyklucza drugiego)?

  3. Czy macie jakieś materiały lub możecie polecić coś o stworzeniu systemu handlu między graczami? Znalazłem poradniki na temat craftingu, połączenia z serwerem, systemu umiejętności a o systemie handlu nie mogę znaleźć.

  4. Jeśli stworzę skrypty odpowiedzialne za komunikację sieciową między graczami to do jakiego obiektu na scenie mam je dodać? Musi to być napewno obiekt który jest od początku gry gdy klikniemy ikonę gry na pulpicie. Czy służy do tego jakieś odzielny skrypt który włącza pozostałe gdy gracz uruchamia grę?

Dziękuję za pomoc. Pozdrawiam

edytowany 1x, ostatnio: wojtek1492, 2018-05-30 10:27

Pozostało 580 znaków

2018-06-04 07:06

Rejestracja: 1 rok temu

Ostatnio: 19 godzin temu

0

Kupiłem książkę C# z zadaniami i rozwiązaniami do tego. Nowy komputer śmiga aż miło, chłodzenie muszę wymienić bo straszny hałas na tym BOX'owym :)

Do tworzenia systemu umiejętności i wszystkich itemów w grze chciałbym wykorzystać ScriptableObjects a dane o tym przechowywać w bazie danych, myślicie że to dobre rozwiązanie?

PS. Zapraszam do wypełnienia ankiety oraz rozsyłania jeśli ktoś chciałby pomóc :)

https://www.survio.com/survey/d/D6E9D0X1I4N1S9J8K

PS. Mam problem z wyświetlaniem sceny w Unity...przybiera dziwne kolory, paski z odcieniami jednego koloru.
Od jutra zabieram się za rozpisanie wszystkiego krok po kroku czego użyję i jak będzie wyglądało to wszystko, żebym wiedział co mam programować.

Pozdrawiam

edytowany 2x, ostatnio: wojtek1492, 2018-06-06 18:29

Pozostało 580 znaków

2018-06-16 18:11

Rejestracja: 1 rok temu

Ostatnio: 19 godzin temu

1

U mnie bez większych nowości, dalej zgłębiam wiedzę z zakresu C#. Kupiłem nową książkę i rozpracowuje tablice :)

Pokaż pozostałe 6 komentarzy
@cerrato: lepiej w poście spytaj. :) - Silv 2018-06-16 18:59
Wstydzę się :( - cerrato 2018-06-16 19:03
Pewnie nie prędko Panowie :) Zanim ogarnę C# na takim poziomie że sam będę w stanie napisać skrypty do umiejętności postaci itp to pewnie minie dobre kilka miesięcy więc efekty będą nieprędko, ale jestem dobrej myśli. - wojtek1492 2018-06-16 19:28
Mam nadzieję, że za kilka miesięcy, a nawet lat, nadal tu będę, nie chce iść w ślady @sceptyczny_dinozaur - cerrato 2018-06-16 19:34

Pozostało 580 znaków

2018-06-16 19:35

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Z jakiej książki się uczysz?

Pozostało 580 znaków

2018-07-06 13:01

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

1

Jak postępy? @wojtek1492

Pozostało 580 znaków

2018-07-06 16:37

Rejestracja: 1 rok temu

Ostatnio: 19 godzin temu

1

Wszystko dobrze, narazie uczę się samego C# bez Unity, nie będę wstawiał linijek z kodem który ćwiczę i poprawiam po 10 razy :)

Pozostało 580 znaków

2018-10-19 17:52

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

1

Cześć!
Dawno nie robiłeś wpisu coś się zmieniło?

Pozostało 580 znaków

2020-03-09 19:34

Rejestracja: 1 rok temu

Ostatnio: 19 godzin temu

2

Dzień dobry, nie będę wyjaśniał i tłumaczył mojej nieobecności i napisze otwarcie co zamierzam.

Zrezygnowałem z Unity i C# na rzecz Godot i GDScript który ma dużo wspólnego z Pythonem.

Wybór na ten silnik i język programowania padł właśnie głównie ze względu na język programowania w Godot.
Pomyślałem że jeśli nauczę się programować w Pythonie i nie wyjdzie mi w branży gier to Python ma również wiele innych przyszłościowych dziedzin w których jest i (podobno) będzie wykorzystywany jeszcze przez długie lata.

Kupiłem kurs na Udemy, dwie książki i ruszam dalej. Nie porzuciłem moich nierealnych marzeń stworzenia gry MMORPG, jednakże wiem że napewno nie będzie to tak rozbudowany projekt jak wyobrażałem sobie na początku :)

Czy według Was warto zacząć od modułu PyGame i od gier 2D czy odrazu iść w 3D? Czytałem różne fora/grupy i zdania są podzielone. Według mnie warto byłoby poćwiczyć 2D, z tego względu że nadal jestem początkujący i jeśli nie będę radził sobie z 2D to nie ma sensu zabierać się za 3D.

Gdy opanuje podstawy Pythona/programowania 2D myślę nad kursem na Udemy o tworzeniu gier multiplayer w Unity/Unrealu. Bo pewnie multiplayer działa podobnie na wszystkich silnikach więc może coś zaimplementuje dla siebie:)

Długa droga przedemną ale nie będę się poddawał :)

Edit: Znacie tytuły książek/kursów lub macie jakieś wskazówki o portach TCP/UDP/RPC?
Ponieważ domyślam się że to właśnie na nich cała "multiplayerowa" otoczka wszystkich gier działa :)

edytowany 2x, ostatnio: wojtek1492, 2020-03-09 19:43

Pozostało 580 znaków

2020-03-11 21:07

Rejestracja: 4 lata temu

Ostatnio: 10 godzin temu

0

w tym engine godot mozna pisac gry w pythonie, czy tylko c# i ich skryptowy jezyk? Podobno jest mozliwosc pisania w rust.

Można pisać albo w C# lub ich własnym języku; albo korzystać z zewnętrznego API (GDNative) i klepać właściwie w czym się chce. Są już gotowe bindingi do Rusta: https://github.com/GodotNativeTools/godot-rust

Kiedy do pythona powstanie taki kompilator jak numba czy cos na wzor golang?

Już są, tyle że raczej o wąskim zastosowaniu, typu MicroPython. Przy czym Pythona się używa głównie dlatego, że nie jest kompilowany…

ja gdzies czytalem ze tworcy pythona planuja wprowadzic normalny szybki kompilator jak w swift czy go, bo obecnie nawet ruby 2.7 bije pythona 3.8 - tomeksromek 2020-03-11 21:09
Aha. Ja nic takiego nie czytałem i mocno by mnie to zdziwiło, jako że Python był od początku projektowany jako język możliwie w dużym stopniu wykorzystujący przewagi, jakie mają interpretowane języki. - Althorion 2020-03-11 21:10
jest rozmowa na ten temat na forum stackover i reddit jak znajde to ci wkleje, bedzie drugi kompilator jak w kotlinie - tomeksromek 2020-03-11 21:11

Pozostało 580 znaków

Odpowiedz

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