Autor Wątek: Budowa Silnika Gry  (Przeczytany 18220 razy)

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 18:32:26
Witam wszystkich!

Jestem po raz pierwszy na forum, długo już śledzę warsztat ale dopiero
teraz postanowiłem poprosić was o radę.

Napisałem sobie swój Framework.

  • Obsługa Okna
  • Logger
  • Parser komend we własnej konsoli (ala. logger lub pomocnicze okno podczas sprawdzania błędów :D)
  • Tworzenie urządzenia Direct3D
  • Renderowanie Sceny
  • Rysowanie Prymitywów
  • Wczytywanie obiektów (modeli) z pliku

+ jeszcze napisałem w wolnych chwilach moduł matematyczny i pomocnicze struktury.


Świetnie pisze mi sie na tym różne rzeczy, tylko chciałbym to bardziej rozszerzyć.

Ostatnio naszła mnie ochota napisania silnika. Tak wiem, projektów silnika jest nie ukończonych 99%
na całym warsztacie, ale Silnik chciałbym pisać dla gry (Zebrałem prostą ekipę [oczekują na start pracy]), tak więc nie będzie to nieskończony projekt.
Framework jest mało użyteczny jeśli chodzi o bardziej skomplikowane rzeczy, gdzie implementację różnych efektów trzeba pisać samemu.

(Silnik ten chciałbym później mieć jako ukończony projekt, który pomoże mi w przyjęciu do jakiejś firmy.)

Mam do was jedno ważne pytanie, co musi wchodzić w skład silnika gry.
Chciałbym dowiedzieć się na tyle, abym mógł zacząć przerabiać mój framework na poważny silnik.

Mam dopiero 16 lat (zaraz 17 :D).
Jeśli macie jakiś zastrzeżenia co do mojego stanu wiedzy dot. programowania, matematyki i fizyki to:
  • Chodzę do szkoły o profilu: Mat-Fiz-Inf (Akurat :D, zajęcia rozszerzone, ładne ocenki)
  • Biegle C++ (Umiem także C#, JAVA i trochę C) (na początku zacząłem od C++ [podobno najtrudniejszy, ale chciałem szybko "tworzyć gry", to było 3 lata temu)
  • Myślę, że biegle Direct3D (Przerobiłem 3 kursy Direct3D (Nie tylko Grafiki, ale innych modułów Direct'a, oraz przeczytałem kilka lektur na temat programowania w Direct3D, potrafię implementować różne efekty graficzne, bez żadnego kodu źródłowego (jedynie czasami jak jest pustka w głowie))
  • Podstawy OpenGL (Na początku gdzieś zacząłem się uczyć, ale wybrałem D3D)
  • Chodzę na dodatkowe lekcje z matematyki i fizyki
  • Napisałem prostą grę na silniku Ogre (Wczytywanie Mapy Wysokości, Jakaś fabuła, i proste Questy i postacie)
  • Pisałem proste demka w Irrlicht (Baardzo proste, chciałem tylko zobaczyć jak to tam wygląda)
  • Jedynym minusem jest to, że nie próbowałem robić nic pod inne systemy niż od Microsoftu

1.Więc, bardzo chciałbym sie dowiedzieć z czego powinien składać się Silnik Gry (z jakich modułów i co powininen zawierać w sobie).
2.Pod jaką bibliotekę pisać: pod DirectX czy dokończyć naukę OpenGL i pisać właśnie w OpenGL ?

P.S. Jeżeli macie jakieś artykuły, książki dotyczące architektury silnika, z czego się składa, to chętnie bym chciał zobaczyć tytuły lub linki ;).

Uhhh... Ale się napisałem.
To chyba na Tyle. Jeżeli nadal jakoś wątpicie, że nie podołam napisać czegoś takiego, to pytajcie.
(Jeżeli nawet tego nie napiszę, to chciałbym spróbować, bo bez próbowania nic by nie było.)
Pozdrawiam.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline 11

  • Użytkownik

# Listopad 30, 2012, 18:38:14
Jeśli chodzi o uniwersalny silnik gry, to przejrzyj sobie listę ficzerów Unreal Engine'u i sam sobie odpowiedz, czy jesteś w stanie to napisać. ;)

http://www.unrealengine.com/en/features/

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 18:44:36
Nie chodzi mi o uniwersalny, bo w pojedynkę nie skończę tego przed 30 ;).

Chodzi mi o silnik RPG (może MMORPG, ale z tego co widać na warsztacie, projekty te nie dochodzą do końca), Świat 3D, Kamera (Styl Skyrim lub Gothic (albo wiedźmin), coś takiego [tryb 3-osobowy])..

coś na ten styl Silnik, tylko co powinien zawierać i co powinien robić, bo Unreal Engine 3, to jest "jedna wielka masa" wszystkiego :D

Offline asmen

  • Użytkownik

  • +6
# Listopad 30, 2012, 18:48:26
Chodzi mi o silnik RPG (może MMORPG, ale z tego co widać na warsztacie, projekty te nie dochodzą do końca), Świat 3D, Kamera (Styl Skyrim lub Gothic (albo wiedźmin), coś takiego [tryb 3-osobowy])..

I doszliśmy do sedna sprawy... :D

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 18:52:30
No tak, założenia mam, tylko
Co ma być w tym Silniku, żeby nie trzeba było, dowalać dodatkowych rzeczy, jak czegoś nam zabraknie np.

Wiem, że będę potrzebował języka skryptowego (swój ? nie bardzo, może LUA), ale nie napiszę go sobie (taki przykład z życia: zapomnienie) i w środku tworzenia gry zdam sobie sprawę, że nie mam tegoż w silniku i trzeba będzie tworzyć sobie to i sprawdzać, czy wszystko działa (u mnie to może być możliwę błędami i utratą włosów na głowie xD).

Offline flexi

  • Użytkownik

# Listopad 30, 2012, 18:58:24
Zadaj se pytanie co bedziesz potrzebowal w takiej grze, wtedy bedziesz wiedzial co zaimplementowac.

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 18:59:13
W silniku jest Hierarchia, zależności pomiędzy klasami, nowe rzeczy, których będę musiał się chyba nauczyć, ale Jakie np. Moduły by tam musiały być i co będą mogły robić ... (takie podstawowe założenie, silnik będzie złożony z modułów)

Robiąc grę w Ogre -> u nich wg. mnie jest duży (WIELKI) nie porządek, za dużo klas i struktur, wszystko pomieszane. Ja to bym chciał zrobić, abym ja (i późniejsi użytkownicy silnika (w razie wydania na świat)) mógł w łopatologiczny sposób wiedzieć co gdzie i jak ... a nie tak jak w przypadku ogra.
(http://www.ogre3d.org/docs/api/html/ <- Opis Całego Ogra -,-, tam to trzeba umieć szukać, czasem coś znaleźć jak pisałem, to była męczarnia (ale udawało się))
« Ostatnia zmiana: Listopad 30, 2012, 19:13:17 wysłana przez XPietrucha »

Offline flexi

  • Użytkownik

# Listopad 30, 2012, 19:26:52
Ogre to silnik graficzny, a nie silnik gry.

Offline .:NOXY:.

  • Użytkownik
    • Profil

  • +4
# Listopad 30, 2012, 19:35:13
Najprostrzy sposob jak zrobic gre to taki zeby ja robic, pisz strukturalnie, w sposob zorientowany na dane, uzywaj gietkiego jezyka najlepiej jakiegos prostego jak objC czy cos podobnego. Jezeli chodzi o pisanie silnikow just don't. Wierz mi to jest never ending story. A jest tu paru takich co by moglo o tym mowic tygodniami. Czego to juz nie dodali do swojego 7silnika. No offence ale taka jest prawda albo sie pisze gry albo silniki tu nie ma za bardzo drogi pomiedzy.

Ach i jeszcze jedna rada, jak chesz sie brac za MMO to zacznij uczyc sie pisania multi, zlozonej sieciowosci, przesylania tony danych w 1/10 predkosci swiatla itp. Bo bez tego padniesz na samym poczatku. MMO to nie LAN.

To sa poprostu rzeczy trudne, nie mowie ze awykonalne ale wymagaja doswiadczenia na warsztacie jest duzo osob ktora ma za soba parenascie lat doswiadczenia w programowaniu, czesc z tych osob prawie caly ten czas poswiecilo w branzy. A jednak nikt sie na RPG / MMO nie porywa. Tego sie poprostu nie da zrobic w pojedynke.

Sorry za trucie, takie sa realia. To nie jest bajka, to walka z wiatrakami. Predzej uda ci sie ukonczyc srednio zaawansowany 3rd person shooter ala Gears of War, niz RPG/MMO ach no i trzeba jeszcze brac poprawke na postep technologiczny.

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 19:35:52
No wiem, że OGRE to silnik graficzny (po samym rozwinięciu nazwy), ale pisałem na tym gierkę (a raczej coś co było podobne do gry, bo zbyt długie to to nie było), dodawałem kilka własnych rzeczy, ale ja ogólnie odwołałem się do wyglądu tamtego zorganizowania kodu (w sensie klas itp.)

Aktualnie pisze sobie jak to powinno wyglądać (Silnik). To czy moglibyście mi powiedzieć, co miało by się znaleźć w silniku (jak podam taki rys i co muszą robić), żeby dopełnić ten opis. (jakieś 15 min.)

Offline 11

  • Użytkownik

# Listopad 30, 2012, 19:37:45
A jednak nikt sie na RPG / MMO nie porywa. Tego sie poprostu nie da zrobic w pojedynke.
Dużo ludzi z powodzeniem dałoby sobie radę ze zwykłym, single player RPG. Nie wiem, po co łączysz to z MMO.

Offline .:NOXY:.

  • Użytkownik
    • Profil

  • +1
# Listopad 30, 2012, 19:41:07
Dużo ludzi z powodzeniem dałoby sobie radę ze zwykłym, single player RPG. Nie wiem, po co łączysz to z MMO.

Bo 90% ludzi ktorzy chca robic RPG musza je robic jako MMO (no wlasnie nie wiedzac dlaczego nikt sie nie porywa na stare dobre cRPG)
« Ostatnia zmiana: Listopad 30, 2012, 19:43:40 wysłana przez .:NOXY:. »

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 19:48:00
@.:NOXY:.
Silnik chciałbym pisać w C++, bo w nim się czuję najlepiej. Jak już napisałem co do MMO to "Porywanie się z motyka na słońce". Wolę napisać coś co ukończę niż babrać się do śmierci i porzucić projekt.

Wg. mnie napisanie grywalnego RPG'a to Silnik + Fabuła + Ładna Oprawa Graficzna i Dźwiękowa.
Ostatnią rzeczą zajmą się moi znajomi i wolne assety w internecie (Znajomi też w tym siedzą już (po części dzięki mnie ^ ^)), a w internecie też jest bardzo dużo darmowych rzeczy / nie drogich.
Silnik chciałbym napisać ja, fabułą też bym się zajął (wyobraźnie mam, pomysł także).
Poza tym oprócz samego faktu gry na własnym Silniku, to pozostaje nam fakt, że własny Silnik byłby dobrym podparciem pod nowe projekty (jeżeli pierwszy w ogóle wypali), a poza tym jest to dobry punkt w przyjęciu do pracy (tak wyczytałem bynajmniej, chociaż jest to najmniejszym punktem)

50% osób zadowoli sama oprawa graficzna i dźwiękowa i możliwości postaci :D

@@@Napisałem Sobie Taki o to "Rys Silnika":

To jest taki początek czyli

Render, Input i Sound.

  • Render
    (Nie wiem, czy nie dałem za duży zakres możliwości Render)
    • Tworzenie Obiektów Direct3D
    • Renderowanie Prymitywów
    • Renderowanie Własnego Formatu Modeli (+Tekstury)
    • Ładowanie Wielu Shaderów
    • Sprawdzanie widoczności obiektów (poprzez Kamerę [Frustum Culling, Backface Culling i Occlusion Culling])
    • Efekty (Na początek DepthOfField, Bloom, Cienie i Woda)
    • Cienie (Może dynamiczne, miękkie, obsługiwane przez wiele świateł)
    • Światła (Spróbuję zastosować Deferred Shading, Oczywiście obsługa Spot, Directional, Point)
    • Kamera (1-Osobowego trybu mi nie potrzeba, tylko 3-Osobowy)
    • Zwalnianie Obiektów Direct3D
  • Input
    (Co wybrać DirectInput, Zdarzenia Windows API czy RAW Input ? A może coś innego)
    • Inicjalizacja Systemu Wejścia
    • Obsługa wejścia z Klawiatury (Zbiera wejście z klawiatury)
    • Obsługa wejścia z Myszy (Zbiera wejście z myszy)
    • Zwalnianie Obiektów
  • Sound
    (Jaka biblioteka do dźwięku ? (Słyszałem o FMOD, ale jest płatny do celów komercyjnych))
    • Inicjalizacja Systemu Dźwięku
    • Odtwarzanie Dźwięku (na wybranym polu (3D), ustawianie zapętlania, format OGG lub WAV (MP3 podobno jest płatne)
    • Wyłączanie Dźwięku (No to wyłączanie wszystkich (kompletna cisza), lub jednego po podaniu ID danej włączonej piosenki
    • Obsługa efektów (np. Uderzenie Stali o Stal (miecze), podczas walki i wykryciu kolizji)
    • Zwalnianie Obiektów

Chciałbym mieć także klasę Root, która by zarządzała innymi modułami, oraz robiła nadrzędne rzeczy w silniku (... sam nie wiem co :D)

Nie wiem czy implementować Manager (Zasobów np. Tekstur, Modeli, Efektów itp.)?
Nie lepiej ładować zasoby na starcie i trzymać gdzieś w pamięci i tylko się do nich odwoływać
w razie potrzeby ?

Czego mi tutaj jeszcze brakuje ?
« Ostatnia zmiana: Listopad 30, 2012, 19:57:12 wysłana przez XPietrucha »

Offline asmen

  • Użytkownik

# Listopad 30, 2012, 20:02:26
Cytuj
Wg. mnie napisanie grywalnego
RPG'a to Silnik + Fabuła + Ładna
Oprawa Graficzna i Dźwiękowa.

Mylisz się i to bardzo. Gdzie w tym wszystkim gameplay, mechanika?

Offline XPietrucha

  • Użytkownik

# Listopad 30, 2012, 20:03:07
A wybacz, pisałem to z tym RPG bez przemyślenia ;).

To co mi poradzacie ?
pisać od razu grę, bez silinika ?
« Ostatnia zmiana: Listopad 30, 2012, 20:26:40 wysłana przez XPietrucha »