Контроль честности


Некоторые игроки сомневаются в честности и непредвзятости игры. Чтобы удостовериться, что «система не подыгрывает» сопернику, а также, что игра идет по заранее созданным выбросам кубиков, мы разработали систему проверки с названием контроль честности. Поэтому играя у нас в длинные нарды или короткие нарды, вы будете абсолютно уверены, что все зависит от вашего умения и немного от везения. Каждый игрок может повлиять на будущее распределение кубиков, устанавливая смещение. Давайте разберемся как проверять честность игры и повлиять на броски.

Начальное смещение последовательности бросков в контроле честности

Начальное смещение последовательности бросков в контроле честности

Перед каждой игрой на стороне каждого игрока генерируется своя случайная последовательность бросков (множество из двух значений кубика от 1 до 6) с помощью криптографического генератора случайных чисел, используя реализацию, предоставляемую поставщиком служб шифрования (CSP). Далее в зашифрованном виде сгенерированные последовательности отправляются на сервер, где мы их сохраняем в неизменном виде. Эти две последовательности каждый игрок может скачать до начала и во время игры в виде защищенного паролем ZIP архива, нажав кнопку «Скачать архив бросков». Тем самым, убеждаясь, что последовательности во время игры не изменяются. Пароль от файла (архива) будет известен игрокам только в конце матча и отображается в финальном окне матча. Пароль одинаковый для всех «архивов бросков» игр в пределах одного матча.

 

Блок контроля честности в финальном окне матча

Блок контроля честности в финальном окне матча

При старте игры в матче каждый игрок выбирает смещение для своей и соперника последовательностей. За несколько секунд до начала игры изменение смещения запрещается. Во время выбора вы также видите какое смещение устанавливает соперник. На изображение показано что ваше смешение 2, а соперника 4.

 

В конце матча в блоке контроль честности окна результатов матча можно скачать лог матча и скопировать пароль от архивов бросков. Затем можно приступить к самостоятельной проверке.

 

Проверка контроля честности

  1. Скачиваем архив с именем: nardgammon_game_{номер}_dices.zip. Внутри лежит файл nardgammon_{номер матча}_{номер игры}_dices_raw.txt в котором находятся две изначальные последовательности бросков.
    Игрок1 (white — белые): 5:4 3:5 6:3 4:2 3:2 6:4 5:6 3:1 5:2 4:6 6:6 5:4 5:1 4:3 1:4 1:1 . . .
    Игрок2 (black — черные): 1:4 1:3 1:6 6:1 6:2 3:5 4:2 2:2 3:6 2:3 1:4 5:4 6:1 4:1 1:5 2:6 . . .
  2. Смотрим какое было смещение. Запоминаем в начале игры или можно найти в логе (истории) матча. В нашем примере смещение у белых (white) было 4. У черных (black) — 2
    В нотации матча смещение записано в поле
    [Game {Номер игры по порядку} «ID: {Номер игры на портале}. Start dice: white(4) black(2)»]
    Honest control. Match history with game offset
  3. Для генерации итогового смещения для каждого игрока в своей последовательности используется следующий алгоритм:
    Номер первого броска, включая розыгрыш первого хода, определяется по формуле:
    Начало = (Смещение игрока — 1) * 2 + Смещение соперника
    Таким образом, номер первого броска для белых будет:  (4 — 1) * 2 + 2 = 8
    А для игрока, играющего черными шашками: (2 — 1) * 2 + 4 = 6
    Применяем смещение. Определяем розыгрыш первого хода и последующие броски игроков.

    Игрок1 (белые): 5:4 3:5 6:3 4:2 3:2 6:4 5:6 3:1 5:2 4:6 6:6 5:4 5:1 4:3 1:4 1:1 . . .
    Игрок2 (черные): 1:4 1:3 1:6 6:1 6:2 3:5 4:2 2:2 3:6 2:3 1:4 5:4 6:1 4:1 1:5 2:6 . . .
  4. Розыгрыш определяется по первым кубикам бросков. Для белых из первого броска 3:1 берем значение кубика 3. Для черных из 3:5 берем значение 3. Они равны, поэтому розыгрыш продолжается до тех пор, пока не победит один из игроков.
    Берем следующие броски. Для белого 5:2, берем 5. Для черного 4:2 берем 4. В розыгрыше права первого хода побеждают белые.
  5. В зависимости от типа нард, первый ход игрок может перебрасывать, как например в длинных нардах, а может использовать последний бросок розыгрыша, как в коротких нардах.
  6. Затем при каждом броске игрок получает выброс подряд из своей последовательности.

Частые вопросы:

  • Можно ли подобрать пароль от архива? Можно, но на это уйдет несколько лет
  • Можно ли перехватить или подменить передачу сгенерированных кубиков от игрока? Нет нельзя, все данные между игроками и сервером передаются в шифрованном виде по HTTPS протоколу с длинной ключа 256 бит. Так же что данные надёжно защищены подтверждает SSL сертификат выданный нашему домену.
  • Одинаковый ли пароль для обоих игроков? Да, одинаковый
  • Может ли соперник получить пароль до конца игры? Нет, пароль пересылается с сервера и показывается игроку только при завершении всех игр в конце матча
  • Что происходит при невозможности хода? Если игрок не может сделать ход, то при следующем ходе кубики будут выбраны следующие значения из последовательности


МЫ В СОЦСЕТЯХ