piątek, 5 sierpnia 2011

Silnik NeoAxis 1.0


Niedawno ukazała się wersja 1.0 silnika NeoAxis. Jest to silnik oparty o Ogre3D, jeden z lepszych darmowych silników graficznych. NeoAxis jednak nie jest tylko silnikiem graficznym. Jest to całościowy silnik do gier (grafika, dźwięk, fizyka, AI, kontrolery, GUI itd.) napisany w C# (plus niewielki udział natywnych DLL napisanych w C++). Dlaczego akurat on zwrócił moją uwagę? W skrócie: łatwy do użytku, tani (jest też wersja free, dostępna bezpośrednio do pobrania ze strony), zawierający mnóstwo features-ów, ale, co najważniejsze - w pełni rozszerzalny. Przedstawię tutaj pokrótce najważniejsze możliwości tego silnika:

  • Platformy aktualnie obsługiwane: Windows, Mac OC, Linux
  • Platformy planowane: iOS, Android
  • Edytory wizualne: Edytor zasobów (edytor GUI, edytor fizyki, edytor particli), Edytor map (edytor terenu, kalkulator oświetlenia statycznego), Edytor logiki/skryptowania
  • Bardzo dobra integracja z Visual Studio i współpraca z .NET 4.0 (zalecane jest używanie C# 4.0 + Visual C# 2010)
  • Wczytywanie meshy: .mesh (Ogre3D), .dae (Collada), możliwość łatwej implementacji własnego importera (dostępna przykładowa klasa, wraz z komentarzem)
  • Programowanie: silnik zoptymalizowany, wykorzystuje SSE, umożliwia podpinanie natywnych bibliotek (napisanych w C/C++ i w wielu innych językach), wsparcie dla Visual Studio (2008/2010), Sharp Develop, Mono Develop, możliwość pisania własnych wizualnych edytorów (w WinForms lub w WPF)
  • Dużo gotowych klas, typowych w programowaniu gier: realistyczna woda, z obsługą fal i plusków, manager cut-scenek, broń + pocisk + wybuchy - idealne do gier FPS, drzwi, przełączniki, punkty spawnowania, obsługa kamer, bogaty zestaw pomocnych w pisaniu gier funkcji matematycznych i wiele wiele więcej
  • Rendering:
    - 64-bit HDR system
    - Optymalizacja silnika pod kątem wielu kart graficznych
    - Proceduralne generowanie shaderów + materiały
    - Hardware-owy instancing geometrii (dobre dla takich gier jak RTS-y, klony MineCrafta, ogólnie gdzie na scenie są setki tysięcy tych samych elementów)
    - Animacja: skinned mesh, pose animation, morphing, oraz możliwość zaimplementowania własnych typów animacji (prawdopodobnie 3Ds Max CAT też by się dało tutaj importowac)
    - Gotowe efekty postprocessingowe: blur, radial blur, korekcja koloru, bloom, motion blur, obraz podczerwieni, efekt starego telewizora
    - Efekty cząsteczkowe, wstęgi szlaku za obiektami (fajnie wygląda przy broni białej),
    - Zaawansowany profiler dostępny pod klawiszem F11
  • Oświetlenie: shadowmapy zwykłe, shadowmapy PSSM, cienie na stencilu, wsparcie dla normalmap, bumpmap, paralaxmap, emissive, reflection, cienie mogą rzucać obiekty z kanałem alpha (półprzezroczyste cienie relatywnie do przezroczystości tekseli tekstury obiektu), obsługa fixed pipeline dla starszych kart graficznych, light mapy, irradiance volume, światła punktowe, spotlight-y, kierunkowe, miękkie cienie, i wiele, wiele innych fajnych rzeczy
  • Fizyka: NVisa PhysX, Open Dynamics Engine, wspomaganie budowania modeli fizycznych przez wizualny edytor fizyki
  • Obsługa multiplayera (w katalogu SDK przykład aplikacji serwerowej, oraz chatu - kody źródłowe)
  • GUI: można tworzyć własne skiny i rozszerzyć istniejące klasy: button, checkbox, combobox, editbox, listbox, scrollbar, tabcontrol, textbox, videobox. Można odtwarzać wideo w GUI, można także pokazywać GUI (interaktywne) na obiektach 3D. Do GUI jest wizualny edytor - można też kodować ręcznie, albo oba sposoby na raz. Wsparcie dla lokalizacji oraz użycie kodowania Unicode.
  • Kontrolery: joy-e, pady, kierownice, a nawet wsparcie Kinnecta!
  • Gry web: możliwość publikacji gry jako komponent na stronie www, po uprzednim zainstalowaniu NeoAxis player-a.
  • Cena: zależy czego potrzebujemy. Cena waha się od 99$ do 9800$ (to już jest pełny kod źródłowy wszystkiego). Ja wybrałem wersję Indie Personal za 99$. Wszystkie licencje Royalty Free. Szczegóły można poznać tutaj: http://www.neoaxis.com/neoaxis/licensing 
  • SDK zawiera wiele assetów, oraz kilkanaście przykładów demonstrujących możliwości SDK, a także parę mini-gier.
 
Według mnie silnik zapowiada się rewelacyjnie (nie będę już przytaczał fragmentów kodu, aby pokazać jak fajnie się robi nowe typy obiektów w grze, które są modyfikowalne w edytorach). Znacząco przyspiesza tworzenie gry. Poprzednio programowałem z użyciem XNA, ale teraz definitywnie przesiadam się na ten silnik. Na koniec review-sy silnika na DevMasterze: http://www.devmaster.net/engines/engine_details.php?id=383

środa, 30 marca 2011