Dlaczego XNA nie jest uważany za silnik gry?

13

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?

Ali1S232
źródło
19
@Miro To nie ma sensu.
Kaczka komunistyczna
2
Jaki jest sens? Jeśli wykonuje to zadanie, którego potrzebujesz, użyj go. Jeśli nie, to nie rób tego. Kogo obchodzi, jak ludzie to nazywają? W każdym razie to tylko etykieta, najczęściej używana od marketingowych małp;)
Maik Semder
to tylko dlatego, że komentarz Kaczka komunistyczna odpowiedziała na mój komentarz w tym pytaniu
Ali1S232
4
@Maik Semder To wcale nie jest etykieta. Silnik i szkielet to dwie odrębne i odrębne rzeczy, a XNA to ta ostatnia. Przydatne jest rozróżnienie i zrozumienie, że XNA nie jest silnikiem, w przeciwnym razie możesz się bardzo zdezorientować, gdy odkryjesz, że faktycznie może być konieczne utworzenie silnika w XNA lub że nie oferuje on żadnych wtyczek-niektóre-bity-i- możliwości odtwarzania, jak w przypadku rzeczywistych silników.
doppelgreener
3
@ Maik Jest to część tego, jak pracujemy nad tym, co robi. Mówię kierowca , wiesz, co to jest, a co nie, co robi i jak możesz z niego korzystać. Coś podobnego powinno się zdarzyć, kiedy mówię „ framework” - ale tylko wtedy, gdy rozpoznasz, czym jest framework, a co nie jest (silnik). Biorąc pod uwagę te praktyczne implikacje, przede wszystkim sprzeciwiam się tobie, mówiąc: „Kogo obchodzi, jak ludzie to nazywają? W każdym razie to tylko etykieta”
doppelgreener

Odpowiedzi:

28

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.

Kaczka komunistyczna
źródło
Zgadzam się, że musisz zastąpić ustawienia rysowania i aktualizacji, ale to nie znaczy, że nie ma silnika renderowania, chodzi o to, że przygotowuje wszystko do rysowania, a nie są to tylko abstrakcyjne wywołania losowania, patrząc tylko na jego próbkę nie ma nic poza GameEngine 2d (naprawdę nie sprawdzałem rzeczy 3D) i, o ile pamiętam, ma kontrolery wejściowe, i mam na myśli to, że jest to po prostu framework, ponieważ Microsoft tak go nazwał lub ma jakiś logiczny powód ?
Ali1S232,
1
@Gajet: Zastanów się przez chwilę, że w sieci toczy się dyskusja na temat tego, jak stworzyć silnik w XNA, ale nie dla Unreal Engine lub CryEngine. Myślę, że wspólną cechą silnika gry jest to, że możesz po prostu podłączyć bity i coś pójdzie ( TV Tropes zapewnia, że ​​pod tym względem silniki mogą być dość oparte na danych ). W przeciwieństwie do tego, XNA pozwala samemu wykonać praktycznie każdą uncję pracy - po prostu nie trzeba tworzyć oprogramowania pośredniego do komunikacji z urządzeniami.
doppelgreener
1
Co więcej, nie sądzę, że znalazłem jeszcze jasną definicję silnika gry, ale wiem, że istnieją silniki gier , a XNA po prostu nie robi żadnych rzeczy, które robią (oprócz dostarczania oprogramowania pośredniego i niektórych bardzo proste komponenty niskiego poziomu).
doppelgreener
@Janathan Hobbs: teraz widzę, o czym mówisz, ale znowu wypróbowałem GameBryo (NetImmerse) i jest to uważane za silnik gry, ale dopóki prędkość światła nie miała mniej funkcji niż sam XNA, był to tylko środek pośredni, więc myślę, że może zmienić tytuł pytania nawhat makes an sdk to be called a GameEngine?
Ali1S232
1
Ale mógłby opracować silnik przy użyciu istniejącego silnika jako ramy jeśli naprawdę chciał być pedantyczny. Wiele osób wzięło quake 3 tech, a następnie stworzyło silnik, który był bardziej użyteczny. Z drugiej strony możesz stworzyć grę bez „silnika”, jeśli naprawdę tego chcesz. Bardziej słuszne jest nazywanie xna ramą, ale nie wiem, jak odróżnić „silnik”, ponieważ nie jest on tak silnie zdefiniowany jak „framework”.
Tetrad,
5

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.

Inżynier
źródło
2

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ę?

użytkownik29569
źródło