Execute o jogo XNA sem gráficos


11

Pensando se existe alguma maneira de executar um jogo XNA sem exibir nada.

Eu tenho um jogo de trabalho que roda em uma configuração de servidor do cliente em que um jogador é o host e outras pessoas podem se conectar ao seu jogo.

Agora eu quero poder rodar o jogo como um host em um servidor decicado sem placa gráfica, basicamente não quero executar nenhuma lógica Draw ().

Eu realmente preciso passar por todo o jogo e remover todas as referências ao XNA?

Como as pessoas fizeram isso?

Edição : A razão pela qual eu quero fazer isso é porque eu tenho uma configuração de servidor cliente em funcionamento no jogo e eu não quero fazer um programa de servidor "sem cabeça" separado.


Por que você não pode simplesmente escrever código Drawcomo if (headless) { return; }?
ashes999

1
@ asher999 Não tenho certeza se isso removerá completamente toda a lógica de desenho e gráficos do jogo. Um servidor virtual pode não ter nenhum adaptador gráfico real.
JensB

Alterar o tipo de saída ou pular o desenho não removerá magicamente a dependência do XNA em um dispositivo gráfico. Se você estiver carregando algum conteúdo que exija um dispositivo gráfico (especialmente texturas), há uma chance muito boa de que eles falhem ao carregar usando uma das soluções propostas.
Dadoo Games

Respostas:


10

Basta criar um projeto C # normal e incluir os binários XNA. Isso dará acesso aos tipos de dados e métodos de estrutura do XNA. Meu jogo faz isso e funciona perfeitamente.


1
Eu acho que você escreveu um wrapper que age como o XNA chamando os métodos necessários, como o Update para você? Vou tentar, obrigado.
JensB

2

A resposta é: não faça isso. Se você não precisa fazer um jogo - ie; você não está procurando tirar proveito das coisas que o XNA oferece, por que fazê-lo? Você realmente deveria estar desenvolvendo um software personalizado que possa simular com sucesso o jogo que deseja jogar - normalmente um sistema de console de algum tipo. Se você fornecer mais detalhes, atualizarei minha resposta com uma resposta menos genérica.


1
Eu posso lhe dar uma razão: teste de unidade. Frequentemente, você deseja testar um trecho ou seção de código sem precisar carregar ou desenhar e gráficos.
Stephen Tierney

3
@StephenTierney Eu posso lhe dar outro motivo: ele não está tentando, ele está tentando executar um servidor de jogo (em uma máquina dedicada). Releia a pergunta e considere retomar seu voto negativo.
Vaughan Empunhaduras


1

Para aproveitar a sugestão de sem título, você pode incluir apenas referências às DLLs e usá-las sem usar nenhum dos loops de jogo padrão. Para exemplos disso, você pode ver a série de tutoriais sobre formas de win win no clube de criadores: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

Além disso, se você quiser ficar ainda mais sofisticado, poderá substituir todo o ciclo do jogo XNA pelo seu próprio costume e controlar todo o processo. Para obter mais informações sobre isso, consulte /programming/6361691/custom-xna-game-loop-in-windows


1

Se você alterar o Tipo de Saída de um Projeto XNA para "Aplicativo de Console", o aplicativo simplesmente abrirá um Console vazio na inicialização, sem abrir a janela do jogo. Isso pode ser útil para o que você está tentando realizar, já que deseja fazer testes e pode usar muito facilmente o console como uma janela de depuração.


1

Você também pode substituir a atualização e fazer chamadas e simplesmente retornar.

Além disso, não chame o dispositivo gráfico em suas principais classes de jogos, o que deve impedir que a janela xna seja instanciada no jogo, agindo como seu servidor.

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.