Cechy
Game Engine
- strumieniowanie światów "nieskończonych" rozmiarów
- automatyczne wczytywanie, zwalnianie, aktualizowanie oraz wyświetlanie terenu i obiektów
- obiekty dowolnej struktury oraz z dowolnym zestawem parametrów
- natychmiastowe wyszukiwanie ścieżek nawet pomiędzy odległymi lokacjami
- wbudowane klasy obsługujące obiety:
- statyczne
- drzwi
- przedmioty
- postacie
Animacje
- szkieletowa
- klatki kluczowe (orientacja docelowa, obrót względny, przesunięcie)
- płynne przejścia pomiędzy wieloma animacjami
- inteligentne, zależne od odległości od kamery animacje twarzy
- zdarzenia
- wysoce kompatybilna (jedna animacja działa dla wszystkich modeli o zbliżonym szkielecie)
- tworzenie animacji w narzędziu Mesh Editor
- importowanie animacji z zewnęrznych formatów
Kamera
- dowolne ustawienie kamery (np. Fpp, Tpp, Izometryczna, Statyczna)
- efekty kamery - trzęsienie, falowanie
- automatyczne przycinanie niewidocznych obiektów
Geometria
obliczanie powierzchni, objętości, odległości, transformacje (przemieszczanie, obracanie, skalowanie, transformacje przez macierz), podstawowa detekcja kolizji, rysowanie
- płaszczyzna
- punkt (2d/3d)
- krawędź (2d/3d)
- trójkąt (2d/3d)
- czworokąt (2d/3d)
- prostokąt
- prostopadłościan
- obracalny prostopadłościan
- koło
- kula
- kapsuła
- walec
- torus
- stożek
- piramida
Grafika
- kolory rgb, hsb (barwa, jasność), przezroczystość, odwrotny, dodawanie, interpolacja
- transformacje kolorów na ekranie
- kalibracja gamma
- 4:3, 5:4, 16:9, 16:10 lub dowolne proporcje ekranu
- wsparcie dla shaderów 2.0, 3.0
- buforowanie wierzchołków dla podstawowych funkcji rysujących (obrazki, elementy gui, obiekty geometryczne, ...)
- alpha blending, testing
- synchronizacja, tryb okienkowy / pełnego ekranu
- zrzuty ekranu
- tworzenie własnych czcionek
- rysowanie czcionek z cieniami
- światła punktowe, stożkowe, kierunkowe
- dynamiczne mapy świateł
- wsparcie dla occlusion query
- system cząsteczkowy (bazowany na prostym kształcie albo animowanym szkielecie)
- viewport'y, rendertarget'y (ze wsparciem dla formatów wysokiej precyzji)
- płynne przejścia pomiędzy ekranami
- efekty 2D - napisy, rozmycia, przejścia przy użyciu specjalnej tekstury
GUI (Graficzny Interfejs Użytkownika)
- wsparcie dla - przycisków, checkbox'ow, combobox'ow, menu kontekstowych, pulpitow, dowolnych elementów, obrazków, menu, zakładek, tekstu, viewport'ow, list, pasków postępu, regionów, pasków przewijania, suwaków, linijek z tekstem, okienek, okienek wyboru plików / katalogów
- opisy elementów (tooltip'y)
- message box'y
- zmiana skin'ów
Input
- klawiatura, myszka, joypady
- wykrywanie stanów klawiszy, naciśnięć, zwolnień, dwu-klików, kombinacji
- przycinanie kursora myszki do prostokątu, wyłączanie sterówników, sprzętowy kursor
IO (Wejście / Wyjście)
- odczyt i zapis plików binarnych, tekstowych, xml
- wczytywanie i zapisywanie plików z pamięci, na dysku, plików wewnątrz plików z wsparciem dla szyfrowania danych
- informacje o pliku / katalogu, szukanie pliku / katalogu, tworzenie/usuwanie pliku/katalogu, operacje na wszystkich plikach wewnątrz katalogu
- pakowanie danych różnych plików do jednego dużego pliku PAK (zachowuje hierarchię katalogów, automatycznie sortuje dane dla szybszego dostępu)
- wykrywanie napędów (dyski twarde, napędy optyczne)
Matematyka
- minimum, maksimum, średnia, wartość bezwzględna, saturate, znak, przycinanie, zaokrąglanie, zaokrąglanie do góry, zaokrąglanie w dół, część ułamkowa, align, kwadrat, sześcian, pierwiastek, pierwiastek sześcienny, potęga, logarytm naturalny, logarytm dwójkowy, sinus, cosinus, sincos, tangens, cotangens, arcus cosinus, arcus sinus, arcus tangens, kąt, liniowa interpolacja, interpolacja 'hermite', potęgowa interpolacja, interpolacja na podstawie 4-ch wartości, rozwiązywanie równań 0-go, 1go, 2go i 3go stopnia
- wektory (2, 3, 4 wymiarowe rzeczywiste i całkowite), operacje - dodawanie, odejmowanie, mnożenie, dzielenie, zmiana znaku, wartość bezwzględna, najmniejszy komponent, największy komponent, indeks najmniejszego komponentu, indeks największego komponentu, normalizacja, długość, długość^2, ustawianie długości, iloczyn skalarny, iloczyn wektororwy, prostopadła, porównywanie, porównywanie z epsilonem, transformowanie przez macierz
- macierze (3x3, 4x3, 4x4) - dodawanie, skalowanie, obracanie, mnożenie, odwracanie, z kwaternionu
- kwaterniony - dodawanie, skalowanie, mnożenie, odwracanie, obracanie, pobieranie kątu i osi obrotu, zamiana z i do macierzy
- 512 bitowe liczby całkowite i zmiennoprzecinkowe, operacje - dodawanie, odejmowanie, mnożenie, dzielenie, reszta z dzielenia, kwadrat, pierwiastek
- funkcja kalkulatora (obliczanie wartości podanych ciągów, np "sin(2*x) + dot(vec(1,2,3),vec(4,5,6)) + 15*(1+2*pow(x,y))" jako liczby całkowite, zmiennoprzecinkowe oraz wektory
Modele
- wierzchołki (pozycja, normalna, tangens, binormalna, tekstura0, tekstura1, indeks macierzy, współczynniki wagi, rozmiar, kolor, indeks duplikatu wierzchołka)
- krawędzie (indeksy wierzchołków, przystające face'y, normalne, opcje, identyfikator)
- trójkąty (indeksy wierzchołków, przystające face'y, przystające krawędzie, normalne, opcje, identyfikator)
- czworokąty (indeksy wierzchołków, przystające face'y, przystające krawędzie, normalne, opcje, identyfikator)
- automatyczne mapowanie uv
- transformowanie (przemieszczanie, skalowanie, transformowanie przez macierz), odwracanie, odbicie lustrzane
- prawidłowe obliczanie normalnych, tangentów, binormalnych
- zespalanie wierzchołków, krawędzi, zaokrąglanie krawędzi, face'ów
- łączenie, rozszczepianie, kopiowanie
- łączenie wierzchołków z sąsiadami, wierzchołków z sąsiednimi krawędziami, krawędzi z sąsiednimi face'ami, prostokątów z krawędziami
- zamiana trójkątow na czworokąty, czworokątów na trójkąty, krawędzi na wielokąty
- operacje logiczne na 2 i 3 wymiarowych modelach (or, and, xor, sub..) - BETA
- dodawanie/usuwanie wierzchołków/krawędzi/trójkątów/czworokątów
- optymalizacja (usuwanie wierzchołków w jednej linii, face'ow, cache wierzchołków)
- poziom detali (lod)
- binarny / tekstowy własny format
- importowanie formatów 3ds, ase, obj, wrl, x, xml (OgreXml, IGame/3dxi)
- tworzenie modeli na podstawie figur geometrycznych
Pamięć
- zerowanie, kopiowanie, kopiowanie 'jeśli', kopiowanie na bazie indeksów, ustawianie wartości, porównywanie, zamienianie, kopiowanie z wyrównaniem (8do32, 16do32, 24do32, 32do8, 32do16, 32do24), szyfrowanie, allokowanie, reallokowanie
- kontenery pamięci działające na dowolnej strukturze (bazowane na liście, bazowane na blokach)
- cache dla przechowywania dynamicznie ładowanych danych (modeli, materiałów, tekstur, animacji, szkieletów lub własnych danych) z sortowaniem po nazwie dla szybszych dostępów, oraz możliwością ładowania danych w lokalnej lub globalnej ścieżce
- wykrywanie wycieków pamięci
Różne
- wsparcie dla pliku konfiguracyjnego
- detekcja procesora (mmx, 3dnow, sse, sse2, sse3, liczba rdzeni)
- menadżer stanów
- losująca jednostka, tworząca liczby całkowite, zmiennoprzecinkowe, prawidłowe wektory odchylenia, współrzędne punków (wewnątrz lub na powierzchni) kul, prostopadłościanów, kapsuł, walców, krawędzi, okręgów, prostokątów
- wsparcie dla logowania
- pobieranie i ustawianie tekstu do schowka
- wykrywanie języka systemu operacyjnego
- operacje na tekstach (case up, case down, dodawanie, długość, porównywanie, porównywanie ścieżek, zaczyna się z, zawiera, zawiera słowa, zamiana, pobieranie rozszerzenia, nie rozszerzenia, ścieżki i nazwy, początku oraz końca ścieżki, zamiana z i do - liczb całkowitych, zmiennoprzecinkowych, binarnych, szesnastkowych, wektorów
- wsparcie dla pomiaru czasu, czas uruchomienia programu, stanu, różnica czasu od ostatniej klatki, ilość klatek na sekundę
- operacje na czasie i datach - różnica pomiędzy datami w sekundach, sekundy od 1 stycznia 0 roku 00:00:00 (ze wsparciem dla lat przestępnych)
- minimalizowanie, maksymalizowanie, aktywacja, przesuwanie, pobieranie rodzica, pobieranie aktywnych okien systemu operacyjnego
- wsparcie dla "przeciągnij i upuść"
- de/kompresja danych
- sortowanie własnych typów danych z własnymi funkcjami porównującymi
Sieć
- pobieranie plików z internetu
- komunikacja peer-to-peer za pomocą socket'ów UDP
Fizyka
- detakcja kolizji ciał stałych
- ragdoll
- kontrolery postaci
- pojazdy
- aktorzy - sfery, kapsuły, prostopadłościany, obracalne prostopadłościany, wypukłe, złożone z trójkątów (tylko statyczne)
- stawy - stałe, zawiasy, sferyczne, wysuwające, rozłączalne
- obliczanie pozycji aktorów, macierzy, prędkości, prędkości kątowej, energii, masy, oporów
- grupy aktorów oraz własne dane
- trzymanie i przenoszenie aktorów
Shadery
- wypukłości - płaskie, normalne, parallax, relief
- light blooming
- glow
- światło dużego zakresu + adaptacja oka
- motion blur
- depth of field
- per pixel lighting
- cienie "stencil shadows"
- cienie "shadow mapping"
- cienie "hardware shadow mapping"
- miękkie cienie
- wolumetryczne oświetlenie
- wolumetryczne chmury
- ambient occlusion
- sub-surface scattering
- wczesne z
- miękkie cząsteczki
- markery
- trawa
- ogień
- woda
- sierść
- mgła
- słońce
- niebo
Dźwięki
- 1 i 3 wymiarowe, strumieniowanie formatów wav / ogg, z pliku lub pamięci
- grupy głośności dźwięków (odgłosy, głosy, muzyka, otoczenia, globalne)
- system muzyki i odgłosów otoczenia odtwarzający losowe ścieżki z wybranych tematów muzycznych ze wsparciem dla płynnych przejść pomiędzy ścieżkami
Tekstury
- filtrowanie anizotropowe, mip-mapping
- wsparcie dla formatów L8, A8, A8L8, X8R8G8B8, A8R8G8B8, DXT3, DXT5, ...
- wsparcie dla trybów 2d, 3d, cube, software
- tekstury koloru, normalnych, wypukłości, specular, glow, alpha, detali, odbić
- lockowanie, unlokowanie, przycinanie, rozmycie, uśrednianie, wyostrzanie, normalizowanie, downsampling, normal downsampling, ustawianie i pobieranie pixeli tekstur
- zamiana bump na normal mapy
- kompresja tekstur
- importowanie bmp, png, jpg, tga, dds
Wątki
- zarządzanie procesami
- uproszczona obsługą wielowątkowości
- osobne wątki dla przetwarzania gry, obliczania fizyki, renderowania, przetwarzania dźwięków