Por que o XNA não é considerado um mecanismo de jogo?

13

Eu só estou querendo saber o que está faltando XNA, para ser considerado como um motor de jogo. Ele faz todas as coisas que um mecanismo de jogo deve fazer (exceto a parte da física); também suporta todos os aspectos definidos no artigo da Wikipedia sobre mecanismos de jogos .

Por que o XNA não é considerado um mecanismo de jogo?

Ali1S232
fonte
19
@ Miró Isso não faz sentido.
The Duck Comunista
2
Qual é o objetivo? Se executar o trabalho que você precisa, use-o. Se não, então não. Quem se importa com o que as pessoas chamam? É apenas um de qualquer maneira etiqueta, usado principalmente de macacos de marketing;)
Maik Semder
é apenas porque o comentário O Pato Comunista respondeu ao meu comentário nesta pergunta
Ali1S232 25/01
4
@Maik Semder Não é um rótulo. Um mecanismo e uma estrutura são duas coisas distintas e separadas, e o XNA é o último. É útil distinguir e entender que o XNA não é um mecanismo; caso contrário, você pode ficar muito confuso ao descobrir que realmente precisa criar um mecanismo no XNA ou que ele não oferece nenhum plug-in-alguns-bits-e- jogar recursos como os motores reais.
Doppelgreener 25/05
3
@Maik Isso faz parte de como trabalhamos o que faz. Eu digo motorista , você sabe o que é e o que não é, o que faz e como você pode usá-lo. Algo semelhante deve acontecer quando digo framework - mas apenas se você reconhecer o que é um framework e o que não é (um mecanismo). Considerando essas implicações práticas I principalmente objeto para você dizendo "Quem se importa como as pessoas chamam É apenas um rótulo de qualquer maneira?"
doppelgreener

Respostas:

28

O Microsoft XNA é um conjunto de ferramentas com um ambiente de tempo de execução gerenciado fornecido pela Microsoft que facilita o desenvolvimento e o gerenciamento de jogos de computador. O XNA tenta libertar os desenvolvedores de jogos de escreverem "códigos repetitivos" e trazer diferentes aspectos da produção de jogos em um único sistema.

Ele foi projetado como uma estrutura - de fato, o XNA é o Microsoft XNA Framework -, portanto, tecnicamente, não é um mecanismo por nome.

Não existe um 'mecanismo' - se você notar, você obtém sua classe principal do XNA.Framework.Game e precisa substituir as funções de desenhar e atualizar. Não existe um sistema central de renderização, sistema de entrada ou sistema de áudio pronto para uso. Há SpriteBatch e as classes de vértice, há KeyboardState e existem algumas classes de áudio ... mas elas são apenas abstrações no código de desenho de baixo nível.

EDIT: Por uma questão de utilidade, por que algo importa se está rotulado como um mecanismo, estrutura, biblioteca ou conjunto de ferramentas?

Para esclarecer um pouco: estou desenvolvendo um mecanismo no XNA. Obviamente, não posso fazer isso em algo como Unreal, como Jonathan mencionou. No entanto, há algumas coisas que considero importantes que o XNA simplesmente não possui:

Plug-n-play: Eu quero poder criar algum tipo de modelo - tenho esse HP, essa malha, essa animação e BOOM! Eu tenho um NPC no meu jogo.

Nível baixo oculto - o XNA já faz isso, mas não quero mexer com o GameServiceProviders. Eu só quero enfiar coisas juntos.

Jogo separado do mecanismo - Pode haver uma classe 'jogo', mas quero separar minha lógica e meu código do sistema básico. Não quero if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)misturar com a atualização dos buffers no meu renderizador gráfico.

O Pato Comunista
fonte
Eu aceito que você precise substituir as configurações de desenho e atualização, mas isso não significa que ele não tem mecanismo de renderização, o ponto é que tudo está pronto para você desenhar, e essas não são apenas chamadas de resumo abstratas, apenas olhando para sua amostra ele tem nada menos que um GameEngine 2d (eu não verifiquei coisas 3D realmente), e tanto quanto me lembro, ele tem controladores de entrada, e quero dizer, é apenas uma estrutura porque a Microsoft o nomeou ou tem algum motivo lógico ?
11111 Ali1S232
1
@ Gajet: Considere por um momento que há discussões na rede sobre como criar um mecanismo no XNA, mas não no Unreal Engine ou no CryEngine. Eu acho que uma característica comum de um mecanismo de jogo é que você pode simplesmente conectar os bits e algo irá acontecer (a TV Tropes afirma que os mecanismos podem ser razoavelmente orientados por dados nesse sentido ). Por outro lado, o XNA permite que você faça basicamente todo o trabalho - você não precisa criar o middleware para interagir com os dispositivos.
Doppelgreener 25/05
1
Além disso, não acredito que tenha encontrado uma definição clara de mecanismo de jogo ainda, mas o que sei é que existem mecanismos de jogo e o XNA simplesmente não faz nada do que faz (exceto fornecer middleware e alguns componentes simples de baixo nível).
Doppelgreener 25/05
@ Jonathan Hobbs: agora eu posso ver o que você está falando, mas tentei novamente o GameBryo (NetImmerse) e isso é considerado um mecanismo de jogo, mas até a velocidade da luz ele tinha menos recursos do que o próprio XNA, era apenas uma mera parte intermediária, então acho que nós pode mudar o título da pergunta parawhat makes an sdk to be called a GameEngine?
Ali1S232 25/05
1
Mas você poderia desenvolver um mecanismo usando um mecanismo existente como estrutura, se realmente quisesse ser pedante. Muitas pessoas usaram a tecnologia do terremoto 3 e criaram um motor que era mais utilizável. Então, novamente, você também pode fazer um jogo sem um "mecanismo", se realmente quiser. É mais correto chamar xna de framework, mas não sei como fazer a distinção de um "mecanismo", pois não é tão fortemente definido como "framework".
Tetrad
5

Uma estrutura fornece uma arquitetura mínima criada para um tipo específico de aplicativo. Minimiza as suposições sobre os detalhes da implementação além dos objetivos declarados da arquitetura. Embora uma estrutura de desenvolvimento de jogos de plataforma cruzada possa ter o objetivo de fornecer "o que é comum a (quase) todos os jogos de computador, independentemente da plataforma", e possa implementar apenas fatores abstratos como tempo e gerenciamento de entidades, o XNA Framework (implicitamente) tem o objetivo de fornecer "o que é comum a (quase) todos os jogos de computador escritos para execução no XNA CLR". Dado que esse foco é tão restrito, eles foram capazes de incluir os recursos do motor com impunidade. Eles agrupam tudo isso sob o título "Framework", pois isso indica uma certa liberdade de implementação que você, como desenvolvedor de jogos, desfrutará.

Grosso modo, uma estrutura deve ser o mais irrestrita possível, ao mesmo tempo em que fornece bases úteis. Um mecanismo, por outro lado, normalmente é mais focado em recursos específicos e, ao usá-lo, você aceita que existem certas limitações às quais estará vinculado.

Engenheiro
fonte
2

Eu nunca usei um 'mecanismo de jogo', mas meu entendimento disso é mais como um conjunto predefinido de ferramentas agrupadas com uma estrutura de jogo esquelética predefinida para o desenvolvimento de um tipo específico de jogo. E certamente que a estrutura para o desenvolvimento de um tipo específico de jogo é o principal fator de definição em um mecanismo de jogos, certamente parece ser o que o artigo da Wikipedia mencionado acima é atraente. Para mim, a estrutura XNA é mais parecida com um conjunto de bibliotecas de terceiros, como o AJAX, na medida em que adiciona rotinas pré-criadas à linguagem de programação desossada existente. Ele não impõe restrições ou diretrizes sobre o que você, como programador, pode e não pode fazer com essas rotinas da biblioteca. Na minha opinião, isso não é de forma alguma um motor. Então, venho de um background de software comercial / centrado na Web,

Eu construí a estrutura para uma ideia de jogo usando XNA e definitivamente parece que estou usando apenas mais uma biblioteca em C #. Vou usar os processos que hackeei no programa de teste para produzir dois ou três jogos para Windows e possivelmente Xbox.

Então, como eu disse, na minha opinião, isso está muito longe do que eu entendia ser um 'Motor de Jogos', então, quando me deparei com este post, não tinha ideia de por que alguém faria essa comparação. Estou errado?

user29569
fonte