Одноранговые конкурентные азартные игры без хоста? [закрыто]

15

Мне интересно - были ли когда-либо созданы игры, которые:

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

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

ThePiachu
источник
1
«peer-to-peer» и «нет возможности обмана любого игрока» - это невозможно.
Кикаймару
7
@ Kikaimaru Вы не правы.
Сэм Хоцевар
@ Kikaimaru На самом деле, у меня есть некоторое представление о том, как это может работать, но я хотел бы сначала спросить, прежде чем пытаться изобрести колесо (хорошо, в данном случае, возможно, самолет).
ThePiachu
2
Я очень сомневаюсь, что есть метод, который предотвратил бы мошенничество на уровне, который делает сервер-клиент. Игроки могут, например, знать, что другие игроки обманывают и перестают играть - без какого-либо кода (или вы можете просто остановить игру), но разве это не «возможность обмана»?
Кикаймару
@Kikaimaru Если протокол обеспечивает корректность, попытка мошенничества - это то же самое, что попытка мошенничества - вообще не игра - если есть более двух игроков, другие игроки могут продолжать играть, и попытка мошенничества будет игнорироваться, в отличие от неверного IP-пакета. быть.
Сэм Хочевар

Ответы:

19

Я не знаю, были ли созданы такие игры, но они наверняка были теоретизированы. По этой теме было опубликовано несколько работ. Возможно, вы захотите исследовать схемы обязательств, которые предлагают объяснение того, как две несогласные стороны могут подбросить монету, будучи физически отдаленными (см. Также эту статью 1981 года: подбрасывание монет по телефону ).

Одним из очень подробных документов является, например, Cheat-Proof Peer-to-Peer Коллекционные карточные игры :

Мы предлагаем чит-защищенный одноранговый протокол для реализации карточных онлайн-игр. Мы разбиваем действия, общие для всех TCG, и объясняем, как они могут выполняться между двумя игроками без необходимости стороннего судьи (для которого обычно требуется беспристрастный сервер). В каждом действии игроку либо запрещают обманывать, либо, если он обманывает, противник сможет доказать, что он это сделал . В заключение мы покажем, насколько эти методы безопасны и как они могут быть смешаны для других стилей TCG и других одноранговых игр.

Также Cheat-Proof Playout для централизованных и одноранговых игр :

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

Сэм Хоцевар
источник
1
Также смотрите страницу Mental Poker в Википедии - en.wikipedia.org/wiki/Mental_poker . На форуме биткойнов обсуждалась возможность применения этого bitcointalk.org/index.php?topic=1487.0
liamzebedee
Отличная ссылка @liamzebedee. В этой статье описан точный алгоритм, который позволяет покеру хорошо работать в одноранговой сети.
Captncraig
4

Хотя это не азартная игра, я разрабатываю игру AIR, которая соответствует вашим требованиям.

  1. Разработано с использованием многоадресного протокола Flash RTMFP. Ни один клиент не считается хостом.
  2. Физическая система соревнований.
  3. Проверяет ввод оппонента и дисквалифицирует игру на неверные данные.
  4. Не передает определенную физическую информацию по причинам пропускной способности / задержки (это также отключило некоторые методы мошенничества).

Тем не менее, обратите внимание ...

Я считаю "нет возможности ... обмануть" ложное утверждение. Если вы не контролируете все аспекты (аппаратное и программное обеспечение), то обман возможен.

Хотя это и не игра, я думаю, что сеть Биткойн является ярким примером того, что вы ищете.

редактировать

Я собираюсь немного расширить ваш главный вопрос.

Во-первых, я не вижу ни одной игры, требующей «доказуемо справедливых» условий без какого-либо авторитетного требования. От лидеров до микроплатежей, централизованные системы и власть идут вместе.

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

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

Натан Гоингс
источник
Да, у меня может быть некоторый опыт работы с биткойнами ... bitcoin.stackexchange.com/users/323/thepiachu ;)
ThePiachu
1

Несколько частей, которые могут помочь, в зависимости от вариантов использования:

Если вам нужно получить одновременный ввод от пользователей без возможности преждевременного использования информации в своих интересах, вы можете использовать схему обязательств. По сути это:

  1. Оба игрока предоставляют хэш действия, которое они хотят выполнить.
  2. После того, как оба предоставили свое обязательство, оба могут предоставить свои действия в виде открытого текста.
  3. Открытый текст можно сравнить с хешами, чтобы убедиться, что никто не изменил свой ответ после изучения действий другого человека.

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

Однако этого недостаточно для такой игры, как покер, потому что она требует, чтобы карты были известны только одному человеку, при этом сохраняя возможность вытягивать их из общей колоды. В Википедии есть довольно хороший алгоритм для совместного тасования по схеме, в которой оба игрока шифруют каждую карту по отдельности несколько раз. Это создает ситуацию, когда 2 ключа требуются для дешифрования любой данной карты, и у обоих игроков есть 1. В статье приводятся проблемы производительности, но я не думаю, что AES или аналогичные программы непомерно дороги в масштабе, необходимом для покера на 2 игрока.

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

captncraig
источник