Cześć!
Muszę przyznać, że odkąd ostatni raz coś tu pokazałem sporo się zmieniło . Jakoś w październiku 2019, po roku nauki OpenGL, wpadłem na pomysł żeby spróbować stworzyć własny silnik do tworzenia gier. Coś jak UE4, tylko na mniejszą skalę, o wiele uboższą wersję, ale przez to spójną i łatwiejszą do ogarnięcia (co nie jest takie łatwe do osiągnięcia jak mi się wydawało).
Po ponad półtora roku mogę Wam zaprezentować zalążek...
My Game Engine Engine (tak, to najlepsze co mogłem wymyślić)
Lista rzeczy które chyba wspiera mój silnik
- Podstawowe features silnika:
- Projekt podzielony na sceny, wsparcie dla wielu scen
- System aktorów i komponentów (trochę jak w UE4)
- Ładowanie modeli z plików
- System HierarchyTree - pliki modeli 3D są zazwyczaj hierarchiczne, dlatego konwertowane są na takie HierarchyTree, w planach edytowanie tych tree i zapisywanie ich znowu na plik (jeśli np. chcemy sprawdzić i naprawić zepsuty plik modelu).
- Serializacja praktycznie wszystkiego
- System eventów
- Staram się utrzymać multiplatformowość, lecz nie próbowałem tego kompilować na linuxie.
- Renderowanie (OpenGL)
- PBR (wraz z IBL), BRDF Cook-Torrance
- SMAA1X, SMAAT2X (temporal AA, wykorzystuje velocity buffer który może też zostać użyty do zaimplementowania motion blur)
- SSAO
- HDR+Bloom
- Shadow mapping (omnidirectional i 2D dla directional lights/niektórych spot lights)
- Normal mapping
- Parallax Occlusion Mapping
- Deferred shading
- System materiałów (który jest trochę upośledzony) - albedo, roughness, metallic, ao, normal, depth maps, kolory jeśli nie ma tekstur, animacja materiałów.
- Animowanie meshów (skeletal meshes)
- Fizyka przy użyciu PhysX (zaimplementowałem tylko podstawowe funkcje)
- Kule, kostki i bake'owanie własnych meshów
- Audio: prymitywne, wykorzystuje OpenAL soft
- Ładowanie dźwięków z .wav
- Dźwięki pozycyjne (3D)
- Własny edytor projektów:
- Dodawanie, usuwanie i edytowanie aktorów i komponentów w real-time
- Dość przyjemny interfejs w kodzie do dodawania własnych przycisków do edytora, np. jeśli tworzymy własne klasy
- Podgląd meshów, materiałów, zmiana ustawień w real-time (które się jeszcze nie zapisują).
Zapraszam do przetestowania!
- W folderze Projects znajdziesz 2 przykładowe projekty.
- Wszystko co niebieskie lub fioletowe można kliknąć (to przyciski)
- Rozszerzanie okna jeszcze nie działa
- TAB aby przełączyć między kontrolowaniem kamery a edytorem, F2 aby podejrzeć modele kolizji
- Wymaga OpenGL 4.0 i zainstalowanego Visual C++ 2015-2019 Redistributable (instalka znajduje się w folderze)
Github - zerknij do brancha without_assets zeby pobrac lżejszą wersje. Uwaga: nie odpowiadam za potencjalne szkody na psychice spowodowane próbą kompilacji tego potwora - brak wsparcia CMake, bo za bardzo tego nie ogarniam.
.EXE ~150MB, lżejsza wersja
VirusTotal (jakby fakt że jest to projekt open-source nie wystarczał)
Jak na razie nie polecam nic w tym tworzyć - czasami się crashuje. Spora część kodu jest do zmiany, mój styl programowania się mocno przez cały ten czas zmienił. Jestem otwarty na wszelkie sugestie, propozycje i krytykę.
Dzięki za poświęcony czas.