A estrutura XNA é apropriada para programação no lado do servidor?


11

Estou procurando criar um MUD baseado em texto, para que muitos dos elementos da estrutura XNA pareçam adequados ao que eu preciso. Especialmente coisas como o loop geral do jogo, a rede, etc. Parece que o XNA está fortemente acoplado a um ambiente interativo com interface do usuário e áudio, por isso não tenho certeza se é o caminho certo a seguir.

Seria mais fácil recriar esses tipos de aspectos, tentar dobrar a estrutura do XNA para o que eu preciso, ou existe uma estrutura melhor para esse tipo de trabalho?

Respostas:


5

Não acho que a estrutura do XNA lhe ofereça muito uso para o lado do servidor de um jogo baseado em texto, não. Você deve examinar as bibliotecas de classes do .NET framework padrão para esse caso de uso.

Mas ampliando um pouco a questão, embora as estruturas XNA sejam realmente destinadas ao desenvolvimento de jogos em 2D e 3D em clientes, pode haver motivos para usar partes delas no lado do servidor de um jogo em 2D ou 3D. É comum reutilizar partes do mecanismo gráfico no servidor, porque o servidor precisa fazer coisas como visibilidade e testes de colisão, tanto quanto o cliente. Nesse cenário, se o seu mecanismo tiver usado a biblioteca matemática do XNA, você precisará vincular isso também no código do servidor.


3

Se você estiver usando C #, considere usar o WCF para abstrair a camada de rede. Um MUD não teria muito tráfego de rede, relativamente falando, portanto, seguir esse caminho poderia facilitar muito as coisas para você. Eu tenho usado o WCF para um jogo de estratégia baseado em turnos, e funcionou muito bem para mim.


1
Geralmente, eu concordo, mas o WCF não suporta telnetconexões diretas . Para MUDs baseados em texto regulares, permitir que os usuários acessem telneto servidor é um dado.
Agent_9191 17/07/10

@ Agent_9191 Dependendo dos seus objetivos, pode fazer sentido que a telnetinterface seja uma camada sobre uma API mais robusta, por exemplo, uma construída no WCF.
Cody Brocious

O WCF não apresentaria latência ou você usaria uma ligação personalizada que falasse soquetes brutos?
Nate

Bem, se ele precisar de uma interface telnet, o WCF provavelmente não será uma boa escolha; Eu suspeito que seria um exagero. Mas não acho que a latência seja um problema, já que as informações enviadas são relativamente simples - certamente mais simples do que as cargas úteis de muitos serviços da web. Eu uso o WCF para um jogo de estratégia baseado em turnos bastante complexo e não tive problemas de desempenho. Eu mantenho a carga útil pequena com a serialização personalizada, e a latência não é um problema, porque as mensagens não são enviadas com frequência (para o meu projeto, a maioria das mensagens acontece no final de cada turno).
quer

1

Você pode seguir a rota XNA e apenas usar os elementos específicos que deseja (áudio, rede, etc.); mas está aumentando a complexidade do seu projeto e diminuindo o seu "entendimento imediato" da base de código.

Basicamente, à medida que você adiciona mais middleware, seu conhecimento da maneira como seu código está realmente operando diminui - a menos que você mergulhe na implementação do middleware. Ao se distanciar, você perde eficiência, capacidade e entendimento.

Portanto, como mencionado acima, seria muito mais benéfico usar C # e as bibliotecas não XNA apropriadas.

Se você estiver fazendo isso para sua própria edificação, poderá fazer o seu próprio onde estiver interessado na área - você aprenderá mais dessa maneira.

Vá em frente! Diverta-se!


1

Depende em grande parte de suas necessidades.

Se você está interessado em apoiar o áudio, o amigo convida, etc., do que acredito que o XNA é o caminho a percorrer.

A principal limitação que você enfrenta ao usar o XNA para redes é o limite de 32 jogadores por jogo.

Quando você desenvolve um jogo com a estrutura XNA, não é absolutamente necessário acoplar-se a todas as várias APIs. Muitas pessoas usam a estrutura XNA, mas confiam em outras estruturas para a rede.

Minha sugestão é listar fisicamente (anotá-las no bloco de notas ou algo assim) suas necessidades e desejos para o aspecto da rede. Em seguida, compare e contraste os vários quadros.


-1

Eu me inclino a dizer "criar do zero", mas isso é apenas um pressentimento baseado em ter trabalhado com código C # e MUD separadamente. Você terá mais controle e aprenderá mais ao lançar suas próprias versões do que você puder usar do XNA, de qualquer maneira.

Algum motivo para você não estar usando um mecanismo MUD existente, pelo menos para referência?


Faça um diploma Estou usando um mecanismo existente para referência. Estou tentando portar a base de código SMAUG para C # a partir da base C existente. Portanto, o conjunto de recursos é definido na maior parte do tempo, apenas fazendo com que funcione em C #.
Agent_9191 14/07
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.