Zastanawiam się tylko, czego brakuje XNA, aby można go uznać za silnik gry. Robi wszystko, co powinien zrobić silnik gry (oprócz części fizyki); obsługuje także każdy aspekt zdefiniowany w artykule Wikipedii na temat silników gier .
Dlaczego XNA nie jest uważany za silnik gry?
Odpowiedzi:
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.źródło
what makes an sdk to be called a GameEngine?
Framework zapewnia minimalną architekturę zbudowaną dla określonego rodzaju aplikacji. Minimalizuje założenia dotyczące szczegółów implementacji wykraczające poza określone cele architektury. Podczas gdy wieloplatformowy system tworzenia gier może mieć na celu zapewnienie „tego, co wspólne (prawie) wszystkim grom komputerowym, niezależnie od platformy”, i może implementować tylko takie abstrakcyjne czynniki, jak czas i zarządzanie jednostką, Framework XNA (domyślnie) ma na celu zapewnienie „tego, co wspólne (prawie) wszystkim grom komputerowym napisanym do wykonania na XNA CLR”. Biorąc pod uwagę, że koncentracja jest tak wąska, udało im się bezkarnie włączyć funkcje silnika. Łączą to wszystko pod nagłówkiem „Framework”, ponieważ oznacza to pewną swobodę implementacji, z której będziesz cieszyć się jako twórca gry.
Z grubsza mówiąc, ramy powinny być tak nieograniczające, jak to możliwe, jednocześnie zapewniając przydatne podstawy. Z drugiej strony silnik jest zazwyczaj bardziej skoncentrowany na określonych funkcjach, a podczas korzystania z niego akceptujesz pewne ograniczenia, z którymi będziesz związany.
źródło
Nigdy nie korzystałem z „silnika gry”, ale rozumiem to bardziej jako wstępnie zdefiniowany zestaw narzędzi w pakiecie ze wstępnie zdefiniowaną szkieletową strukturą gry do opracowania określonego rodzaju gry. I z pewnością ta struktura rozwoju określonego rodzaju gry jest głównym czynnikiem decydującym w silniku gier, z pewnością wydaje się, że właśnie do tego zachęca wspomniany artykuł z Wikipedii. Dla mnie środowisko XNA jest bardziej podobne do zestawu bibliotek innych firm, takiego jak AJAX, ponieważ dodaje gotowe procedury do istniejącego języka programowania bez kości. Nie nakłada żadnych ograniczeń ani wytycznych na to, co Ty, jako programista, możesz zrobić, a czego nie możesz zrobić z tymi procedurami bibliotecznymi. Moim zdaniem w żaden sposób nie przypomina to silnika. Potem pochodzę z oprogramowania biznesowego / środowiska sieciowego,
Zbudowałem strukturę pomysłu na grę za pomocą XNA i zdecydowanie mam wrażenie, że korzystam z innej biblioteki nad C #. Wykorzystam procesy, które zhackowałem w programie testowym, do stworzenia dwóch lub trzech gier dla systemu Windows i być może Xbox.
Tak więc, jak powiedziałem, moim zdaniem jest to dalekie od tego, co rozumiałem jako „silnik gry”, więc kiedy natknąłem się na ten post, nie miałem pojęcia, dlaczego ktoś mógłby dokonać takiego porównania. Czy się mylę?
źródło