Подходит ли структура XNA для программирования на стороне сервера?

11

Я ищу создание MUD на основе текста, поэтому многие элементы платформы XNA кажутся соответствующими тому, что мне нужно. Особенно такие вещи, как общий игровой цикл, сети и т.д. Это выглядит как XNA тесно связаны с интерактивной средой с интерфейсом и аудио, так что я не уверено, что это правильный путь.

Будет ли проще просто заново воссоздать эти типы аспектов, попытаться согнуть структуру XNA в соответствии с тем, что мне нужно, или существует ли лучшая структура для этого типа работы?

Agent_9191
источник

Ответы:

5

Я не думаю, что платформа XNA предложит вам большую пользу для серверной части текстовой игры, нет. Вы должны взглянуть на стандартные библиотеки классов .NET Framework для этого варианта использования.

Но немного расширив этот вопрос, хотя платформы XNA действительно предназначены для разработки клиентских 2d и 3d игр, возможно, есть причина использовать их части на стороне сервера 2d или 3d игр. Распространено повторное использование частей графического ядра на сервере, потому что серверу необходимо выполнять такие вещи, как тестирование видимости и столкновений, так же, как и клиент. В этом случае, если ваш движок использовал математическую библиотеку из XNA, вам нужно будет также связать это с кодом вашего сервера.

U62
источник
3

Если вы используете C #, вам следует рассмотреть возможность использования WCF для абстрагирования от сетевого уровня. Условно говоря, в MUD не было бы большого сетевого трафика, поэтому, если вы пойдете по этому маршруту, вам будет намного легче. Я использовал WCF для пошаговой стратегической игры, и она хорошо сработала для меня.

Майк Штробель
источник
1
Обычно я бы согласился, но WCF не поддерживает прямые telnetсоединения. Для обычных текстовых MUD разрешено telnetподключение пользователей к серверу.
Agent_9191
@ Agent_9191 В зависимости от ваших целей, имеет смысл иметь telnetинтерфейс в качестве слоя поверх более надежного API, например, построенного на WCF.
Коди Брошиус
Разве WCF не привел бы к задержке, или вы использовали бы пользовательскую привязку, которая говорила о сырых сокетах?
Nate
Ну, если ему нужен интерфейс telnet, WCF, вероятно, в любом случае не будет хорошим выбором; Я подозреваю, что это будет излишним. Но я не думаю, что задержка будет проблемой, поскольку информация, отправляемая туда и обратно, будет относительно простой - безусловно, более простой, чем полезная нагрузка многих веб-сервисов. Я использую WCF для довольно сложной пошаговой стратегии, и у меня не было проблем с производительностью. Я сохраняю полезную нагрузку небольшим с настраиваемой сериализацией, и задержка не является проблемой, потому что сообщения не отправляются туда-сюда очень часто (для моего проекта большинство сообщений происходит в конце каждого хода).
Майк Штробель
1

Вы можете пойти по маршруту XNA и просто использовать нужные вам элементы (аудио, сеть и т. Д.); но это увеличивает сложность вашего проекта и уменьшает ваше «непосредственное понимание» кодовой базы.

По сути, когда вы добавляете больше промежуточного программного обеспечения, ваши знания о том, как на самом деле работает ваш код, уменьшаются - если вы не углубляетесь в реализацию промежуточного программного обеспечения. По мере удаления от себя вы теряете эффективность, способности и понимание.

Итак, как указано выше, для вас будет гораздо выгоднее использовать C # и соответствующие библиотеки не-XNA.

Если вы делаете это для своего собственного назидания, вы можете также свернуть свое собственное, где вы заинтересованы в этой области - вы узнаете больше таким образом.

Действуй! Повеселись!

А. А. Грапсас
источник
1

Это во многом зависит от ваших требований.

Если вы заинтересованы в поддержке аудио, друзья приглашают и так далее, то я считаю, что XNA - это путь.

Основное ограничение, с которым вы сталкиваетесь при использовании XNA для работы в сети, - это ограничение на 32 игрока на игру.

Когда вы разрабатываете игру с платформой XNA, не обязательно быть связанным со всеми различными API. Многие люди используют структуру XNA, но полагаются на другие структуры для создания сетей.

Мое предложение состоит в том, чтобы физически (записать их в блокноте или что-то в этом роде), перечислить ваши потребности и желания для сетевого аспекта. Затем сравните и сопоставьте различные рамки.

Krisc
источник
-1

Я склоняюсь к тому, чтобы сказать «создать с нуля», но это просто внутреннее чувство, основанное на том, что я работал с C # и кодом MUD по отдельности. В любом случае, вы получите больший контроль и узнаете больше, используя собственные версии того, что вы можете использовать в XNA.

По какой причине вы не используете существующий движок MUD, по крайней мере, для справки?

Эндрю Брокерт
источник
Есть степень Я использую существующий двигатель для справки. Я пытаюсь портировать базу кода SMAUG на C # из существующей базы C. Таким образом, набор функций, в основном , определяется, это просто , чтобы это работало в C #.
Agent_9191