Запустите игру XNA без графики

11

Хотите знать, есть ли возможность запустить игру XNA, не отображая ничего?

У меня есть рабочая игра, которая работает в настройке клиент-сервера, где один игрок является хостом, а другие люди могут подключиться к его игре.

Теперь я хочу иметь возможность запускать игру в качестве хоста на назначенном сервере без видеокарты, в основном я вообще не хочу запускать логику Draw ().

Мне действительно нужно пройти всю игру и удалить все ссылки на XNA?

Как люди сделали это?

РЕДАКТИРОВАТЬ : Причина, по которой я хочу это сделать, заключается в том, что у меня в игре настроен рабочий клиент-сервер, и я не хочу создавать отдельную «безголовую» серверную программу.

JensB
источник
Почему вы не можете просто написать код Drawкак if (headless) { return; }?
ashes999
1
@ asher999 Не уверен, что это полностью уберет всю логику рисования и графики из игры. Виртуальный сервер может вообще не иметь реального графического адаптера.
JensB
Изменение типа вывода или пропуска чертежа не приведет к магическому удалению зависимости XNA от графического устройства. Если вы загружаете какой-либо контент, требующий графического устройства (особенно текстур), очень велика вероятность, что они не смогут загрузиться с использованием любого из предложенных решений.
dadoo Games

Ответы:

10

Просто создайте обычный проект на C # и включите двоичные файлы XNA. Это даст вам доступ к типам данных XNA и методам каркаса. Моя игра делает это и работает без нареканий.

без названия
источник
1
Я предполагаю, что вы написали обертку, которая действует как XNA, вызывая необходимые методы, такие как Update для вас? Я попробую, спасибо.
JensB
2

Ответ: не делай этого. Если вам не нужно делать игру - т.е. вы не хотите воспользоваться преимуществами того, что предлагает XNA, зачем это делать? Вы действительно должны заняться разработкой пользовательского программного обеспечения, которое может успешно имитировать игру, в которую вы хотите играть - обычно это какая-то консольная система. Если вы дадите более подробную информацию, я обновлю свой ответ менее общим ответом.

Вон Хилтс
источник
1
Я могу дать вам одну причину: модульное тестирование. Часто вы хотите протестировать кусок или часть кода без необходимости загружать или рисовать и графику.
Стивен Тирни
3
@ StefhenTierney Я могу привести еще одну причину: он не пытается, он пытается запустить игровой сервер (на выделенной машине). Пожалуйста, перечитайте вопрос и подумайте о том, чтобы забрать обратно свое голосование.
Вон Хилтс
1

Хорошо, если вы просто хотите устранить вызовы на ничью, вы пытались использовать это: Подавить ничью

H3llrais3R
источник
1

Чтобы основываться на предложении без названия, вы можете просто включить ссылки на библиотеки DLL и использовать их без использования каких-либо игровых циклов по умолчанию. Примеры этого вы можете посмотреть в серии учебных пособий по winforms в клубе авторов: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

Также, если вы хотите стать еще более навороченным, вы можете заменить весь игровой цикл XNA своим собственным и контролировать весь процесс. Для получения дополнительной информации об этом посмотрите /programming/6361691/custom-xna-game-loop-in-windows

Тяжелый рок
источник
1

Если вы измените Тип вывода проекта XNA на «Консольное приложение», приложение просто откроет пустую консоль при запуске, даже не открывая фактическое окно игры. Это может быть полезно для того, что вы пытаетесь выполнить, поскольку вы хотите выполнять тесты, и вы можете очень легко использовать консоль в качестве окна отладки.

UBSophung
источник
1

Вы также можете переопределить обновление и перевести вызовы и просто вернуться.

Кроме того, не вызывайте графическое устройство в ваших основных игровых классах, что должно помешать экземпляру окна xna в игре, действующей в качестве вашего сервера.

Джейсон Кумбс
источник