Autor Wątek: Prezentacja mojego silnika MagicEngine  (Przeczytany 925 razy)

Offline Dragomirus

  • Użytkownik

  • +1
# Listopad 28, 2017, 15:24:33
Witajcie,
od czasu do czasu po pracy włączam sobie kompilator i coś tam próbuje sobie napisać własny silnik do tworzenia gier MMORPG 3D. Ogólnie to zacząłem to jako projekt na studia w 2014 roku, ale dopiero chyba teraz zaczyna to cokolwiek przypominać bo trochę więcej wiem o programowaniu gier :P (może później wrzuce jakieś stare fotki).

Korzystam z:
 - modułu algorytmiczngo silnika LibGDX -> mapy, tablice, sortowanie
 - moduł matematyczny silnika LibGDX -> wektory, kwaterniony, macierze (większość obliczeń jest liczona w C++)
 - LWJGL
 - Kryonet
 - Java
 - OpenGL (min. 4.0)
 - SWING

To sam już zrobiłem:
 - obsługa strumieniowania z plików (wszystko jest liczone i robione w C++)
 - obsługa shaderów: vertex, geometry, tessellation evaluation, tessellation control, fragment
 - wstępne ładowanie tekstur z plików PNG (w przyszłości może jakiś własny format plików) i obsługa atlasów tekstur
 - obsługa wielu canvasów jednocześnie, które dzielą context openGL'a pomiędzy sobą
 - obsługa sieciowa po TCP/IP, działa przesyłanie pakietów i szyfrowanie XTEA (dla pakietów), RSA (dla pakietu logowania)
 - kamera ortograficzna
 - biblioteka do wyświetlania figur geometrycznych na ekranie (2D i 3D)
 - biblioteka do wyświetlania GUI (2D)
 - projekt wstępnej kamery projekcyjnej (w tym tzw. fly camera)
 - wstępny projekt skydome
 - wstępne wyświetalnie terenu oparte na tesalacjii i drzewie czwórkowym
 - skończony edytor do lokalizacji i przypisywania voice overów

W planach:
 - skończyć material editor (60%)
 - zabrać się za katalog do assetów
 - zabrać się za edytor siatki

I poniżej póki co tylko podgląd na to co obecnie można jedynie zobaczyć, czyli mój edytor materiałów, który jest skończony w jakiś 60%. Ogólnie to inspiracja płynie z silnika Redkit 2 (Wiedźmin 2) bo edytor sam w sobie dawał mnóstwo swobody i można było stworzyć w nim większość shaderów, ale żeby nie było trochę rzeczy zrobiłem po swojemu (jak atrybuty) żeby po prostu było trochę czytelniej i bardziej poukładane.

https://imgur.com/CXLKwZc
Początkowy wygląd diagramów, gdzie niebieskie bloki oznaczały uniformy, a czerwone zmienne.

https://imgur.com/Ys477EH
Wstępny szkic atrybutów, które są przekazywane z vertex shadera do fragment shadera oraz końcowy output node czyli obliczenie konkretnego koloru piksela.

https://imgur.com/tkwodFi
Wszystkie nody odpowiedzialne za obliczenia matematyczne (na razie tylko te co są dostępne w redengine 2) oraz nowy uniform - czas.

https://imgur.com/0nzTEkR
Tutaj widać, że node editor zaczyna tłumaczyć nody na język glsl. Na pomarańczowo zmienne, na niebiesko uniformy.

https://imgur.com/FxV52yF
Tutaj edytor zaczyna tłumaczyć połączenia pomiędzy nodami na język glsl.

https://imgur.com/A6J8wol
Tutaj widać wielki test dodawania kilku wartości :P.

https://imgur.com/qXd2tBQ
Tutaj dodana reszta funkcji matematycznych. Widać, że jak edytor musi dodać wektor4D i floata to tego drugieo przekształca do wektora4D.

https://imgur.com/QpO16fR
Widok drzewa atrubutów w edytorze. Działa zmiana parametrów dla zmiennych w glslu. Zasada jest taka, że wyszstke uniformy mają ustawione standardowe wartości. Jeżeli użytkownik zmieni, któryś z nich w edytorze modeli (wkrótce) to tworzy się nowa instancja materiału z tym zmienionym paramterem.

https://imgur.com/vu0BOKl
Widok drzewa atrybutów dla tekstur. Myślę, że tutaj możnaby zrobić troszeczkę większe te tekstury.

Mam nadzieję, że uda mi się na bierząco aktualizować zmiany w silniku. Jak ma ktoś jakieś sugestie, rady i uwagi to proszę o komentarz, będę bardzo wdzięczny :).
« Ostatnia zmiana: Listopad 28, 2017, 15:29:28 wysłana przez Dragomirus »

Offline Mr. Spam

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

Offline Mergul

  • Użytkownik

# Listopad 28, 2017, 20:33:21
Fajnie :) Ja bym odwrócił żeby w bloczkach wyjście było zawsze z prawej, a wejście z lewej :) Naturalnym dla człowieka jest czytanie od lewej do prawej :)

Offline Dragomirus

  • Użytkownik

  • +1
# Listopad 28, 2017, 23:17:39
@up
No właśnie im więcej robię coś w tym edytorze tym bardziej ten szczegół mnie denerwuje, więc jak najbardziej pewnie na końcu to zmienię :P

Jako, że dokopałem się do screenów mojego silnika z 2014/2015 roku to udostępniam bo chyba warto zobaczyć ten old school :P. Całość była pisana w Javie (bez OpenGLa jeszcze) i miała to być wersja 2D. Połączenie socketowe było tragiczne i ciągle sypało wyjątkami. Ponad to taka ciekawostka: część grafik była wzięta z Tibii w wersji 3.1 (1997 rok):

https://imgur.com/a/VTEwO
Okno tworzenia postaci

https://imgur.com/a/do0Ac
Edytor do tworzenia przedmiotów i obiektów

https://imgur.com/a/XHOcw
Edytor do tworzenia lokacji

https://imgur.com/a/0GhVY
Widok zmiany stroju

https://imgur.com/a/cCl81
Jakaś tam karczma. Widok niestety z edytora bo musiałbym skonfigurować bazę danych żeby wrzucić widok z gry :/

https://imgur.com/a/lEGhn
Jakieś pole i wieżyczka

https://imgur.com/a/8dVZQ
Świątynia, gdzie zaczynało się grę i kawałek portu.
« Ostatnia zmiana: Listopad 28, 2017, 23:19:14 wysłana przez Dragomirus »