Microsoft XNA to zestaw narzędzi z zarządzanym środowiskiem wykonawczym dostarczonym przez Microsoft, który ułatwia tworzenie i zarządzanie grami komputerowymi. XNA próbuje uwolnić twórców gier od pisania „powtarzającego się kodu” i połączyć różne aspekty produkcji gier w jednym systemie.
Został zaprojektowany jako framework - w rzeczywistości XNA to Microsoft XNA Framework - więc technicznie nie jest to silnik z nazwy.
Nie ma „silnika” - jeśli zauważysz, czerpiesz swoją główną klasę z XNA.Framework.Game i musisz samodzielnie zastąpić funkcje rysowania i aktualizacji. Nie ma centralnego systemu renderowania, systemu wejściowego ani systemu audio gotowego do użycia po wyjęciu z pudełka. Istnieje SpriteBatch i klasy wierzchołków, istnieje KeyboardState i są pewne klasy audio .. ale są to tylko abstrakcje nad kodem rysunkowym niskiego poziomu.
EDYCJA: Ze względu na użyteczność, dlaczego coś ma znaczenie, jeśli jest oznaczone jako silnik, framework, biblioteka lub zestaw narzędzi?
Aby to nieco wyjaśnić: opracowuję silnik w XNA. Oczywiście nie mogę tego zrobić w czymś takim jak Unreal, jak wspomniał Jonathan. Jednak jest kilka rzeczy, które uważam za ważne, których XNA po prostu nie ma:
Plug-n-play: Chcę być w stanie stworzyć jakiś szablon - mam HP, siatkę, animację i BOOM! W mojej grze jest NPC.
Ukryty niski poziom - XNA już to robi, ale nie chcę się bawić z GameServiceProviders. Chcę tylko poskładać rzeczy razem.
Gra oddzielona od silnika - może istnieć klasa „gry”, ale chcę oddzielić logikę i kod od systemu podstawowego. Nie chcę if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)mieszać się z aktualizacją buforów mojego renderera grafiki.