Как создать прототип онлайн-игры? [закрыто]


8

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


1
Ну, я слышал, что Unity способен создавать игры в стиле MMO, однако это движок, который фокусируется на 3D, вы можете делать 2D, но вам просто нужно немного проявить творческий подход (например, создать плоскость, которая содержит 2D-спрайт, как текстуру и настройку камеры смотреть вниз.) Я знаю, что 3D Buzz сделал учебник по программированию в Unity MMO, но я не думаю, что он доступен для публики. Я предлагаю вам использовать Paper Prototyping, где вы пытаетесь создать игру, используя вырезки из бумаги и перемещать вещи самостоятельно, это хороший способ получить обратную связь, не создавая полную игру, просто сами обрабатывайте онлайн-события.
Бенджамин Дэнджер Джонсон

1
ZMQ отлично подходит для сокращения сетевого взаимодействия.
Анко

@BenjaminDangerJohnson Я использовал Unity, но их сетевые компоненты слишком специфичны для совместного использования позиций объектов. Вы должны написать свой собственный движок поверх него, если вы хотите использовать его для чего-то другого, и это противоречит цели прототипирования.
Панда Пижама

@Anko 0MQ кажется интересным, и я попробую. Меня беспокоит то, что он пытается упростить транспортный уровень, что, скорее всего, означает, что в конечном итоге вам придется написать собственный протокол приложения, чего я и хочу избежать на этапе создания прототипа.
Панда Пижама

2
На основании перезаписи 0MQ (или RabbitMQ) будет работать нормально. Никакая система обмена сообщениями не может автоматизировать репликацию данных вашей игры, содержание сообщения всегда будет за вами, чтобы вы могли его создать и интерпретировать. Черт, в локальной сети вы можете просто рассылать спам, и любой слушающий может выбрать предназначенные для них пакеты, данные могут быть XML или JSON или простым потоком текстовых пар ключ-значение, потому что для локального прототипирования вы гарантированно будете иметь тонны пропускной способности. Но вы все равно должны выполнять работу с кодом.
Патрик Хьюз

Ответы:


4

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

Вы можете сделать это без необходимости платить программистам или художникам. Испытание различных вариантов правил игры занимает всего минуту или две, вместо того, чтобы затрачивать часы или дни (или недели!) На программирование, и вы можете знать, работает ли ваша игра на самом деле, вместо того, чтобы разрабатывать ее раньше, чем раньше. реализации и угадать, что будет или не будет работать. Кроме того, ваши программисты все равно будут вам нравиться в конце процесса. :)

  • При этом я рекомендую иметь хотя бы одного человека в качестве наблюдателя; не принимать участие в самой игре, а другой человек, чья работа состоит в том, чтобы вести записи о том, кто что сделал и когда. Эти данные о том, что действительно происходило во время каждой игры, могут стать чрезвычайно полезными при настройке правил, устанавливаемых между играми.

Ручка, бумага, игральные кости, открытки, доски, жетоны. Это действительно все, что вам нужно. И для создания прототипа игрового дизайна это лучше, чем что-либо еще.


6
Наоборот. Если ваши коллеги по работе отказываются делать то, что наглядно демонстрирует самый быстрый и экономичный способ для компании быстро перейти к разработке прототипа игры, то вы не в профессиональной среде.
Тревор Пауэлл

2
Давайте не будем превращать это в обсуждение на рабочем месте. Конечно, физическое прототипирование очень хорошо, но это не всегда возможно, и не во всех играх можно играть физически. Обычно я могу за несколько часов взломать однопользовательские идеи 2D-игр и изменить их, чтобы узнать, насколько они интересны. Я просто хочу иметь возможность сделать то же самое для многопользовательских игр.
Панда Пижама

5
Вы тот, кто воспитал рабочую среду, а не я. Если вы не хотите говорить о них, это нормально. Но не ждите, что я буду молчать, пока вы заявляете, что физическое прототипирование не может работать в «профессиональной» рабочей среде. Потому что это просто неправда.
Тревор Пауэлл

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

1
Ни один метод не может волшебным образом сделать прототипирование «тривиальным» для любого типа игры (а тем более для каждого типа игры). Вдвойне, когда сети участвуют. Что это "не тривиальные не повод уволить любой метод прототипирования, потому что вы никогда не собираетесь найти метод , который является тривиальным.
Тревор Пауэлл

2

relatively simple rule changes such as "let's try this in real time instead of turn-based"Это звучит как довольно фундаментальное изменение для меня, а не простое изменение правила. Я думаю, что такой фундаментальный выбор дизайна должен быть сделан еще до того, как вы начнете писать какой-либо сетевой код, будь то автономные прототипы или даже бумажные прототипы.

То есть прототип игрового процесса без каких-либо сетей. Это будет означать написание многопользовательской игры локально (т.е. оба игрока находятся на одном компьютере), чтобы проверить идеи игрового процесса.

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


Не совсем, если он не подключен к сети, преобразование пошаговой игры в реальное время не очень сложно. Проблема при попытке использовать один и тот же компьютер состоит в том, что вы ограничены двумя или, может быть, четырьмя пользователями одновременно. В любом случае, это был один пример, но есть много других вещей, которые я хочу протестировать, и их определенно легче проверить, если они действительно подключены к сети ...
Panda Pajama

Не понимая смысл вашего первого предложения. Это именно то, к чему я стремлюсь, что изменить игровой процесс легко, если игра не подключена к сети. И если есть другие вещи, которые можно протестировать только после того, как сеть фактически установлена ​​(например, синхронизация по Интернету), то примите как можно больше решений, прежде чем начать беспокоиться об этом.
Джокинг

0

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

Но, если бы я был вынужден создать такую ​​вещь для кого-то, кто хотел, я бы использовал:

  • язык программирования Python
  • 0MQ для обмена сообщениями (через pyzmq )
  • модуль pickle для отправки произвольных данных (как показано в примере здесь )

Это охватывает все проблемы надежного транспорта, разграничения сообщений и сериализации / десериализации. (Pickle небезопасен ни для чего, кроме использования в интранете.)

Вам все равно нужно будет настроить логику, чтобы решить, что делать с данными, принять и реализовать решение о том, какие компьютеры подключаться к каким другим компьютерам и т. Д. И он не поддерживает ненадежный обмен сообщениями, или удаленные вызовы процедур, или автоматическую репликацию состояний и т. Д. И т. Д. Поэтому обычно лучше просто спланировать то, что вы хотите, и написать это таким образом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.