О сайте 123DiceRoller

123DiceRoller — бесплатный онлайн-симулятор, который бросает реалистичные 3D-кубики прямо в вашем браузере. Он задуман честным, быстрым и конфиденциальным: результаты выдаёт криптографически стойкий генератор случайных чисел, кубики летят по законам настоящей физики, а никакие сведения о вас и ваших бросках не отправляются на сервер.

Как устроен бросок, шаг за шагом

  1. Сначала выбираются числа. Для каждого кубика Web Crypto API вашего браузера (crypto.getRandomValues) выдаёт случайное 32-битное число. Оно превращается в грань методом выборки с отклонением: значения, из-за которых младшие грани выпадали бы чуть-чуть чаще, отбрасываются, — поэтому у каждой грани N-гранного кубика шанс ровно 1 из N.
  2. Бросок моделируется. Физический движок твёрдых тел (cannon-es) бросает кубики на стол с учётом гравитации, трения, отскоков и столкновений кубиков друг с другом. Весь бросок рассчитывается за доли секунды, ещё до того как его покажут.
  3. Кубики поворачиваются под результат. Любой кубик симметричен: d20 можно повернуть 60 разными способами, и он будет выглядеть одинаково. Симулятор выбирает тот поворот, при котором выпавшее число оказывается там, где физика поместила верхнюю грань, и применяет его с самого первого кадра. Движение настоящее, а число уже выбрано заранее — честно.
  4. Кубики, вставшие наклонно, перебрасываются. Если какой-то кубик должен остановиться, опираясь на другой, бросок незаметно переигрывается — так же, как за настоящим столом попросили бы перебросить.
  5. Бросок воспроизводится с тенями, отражениями и звуком каждого удара точно в такт.

Почему бы не дать физике выбирать число?

Потому что симуляция — не честный источник случайности. Мелочи вроде начального положения, шага по времени и округления могут заставить одни грани выпадать чаще других, и никто не сможет доказать, что этого не происходит. Криптографический генератор спроектирован и проверен так, чтобы быть непредсказуемым и равномерным. Разделив эти две задачи, мы берём лучшее от обеих: бросок, который выглядит и звучит как настоящий, и результат, которому можно доверять.

Точные вероятности

Шансы, которые показываются для каждого броска, рассчитываются, а не угадываются. Суммы вычисляются свёрткой, по одному кубику за раз, а броски с «оставить» и «отбросить», например с преимуществом, — перебором всех различных исходов. Метод подробно описан в калькуляторе вероятности кубиков.

На чём сделан сайт

  • three.js — 3D-графика (лицензия MIT)
  • cannon-es — физика (лицензия MIT)
  • Обычный PHP на сервере — без базы данных, аккаунтов и отслеживания

Обе библиотеки загружаются с этого сайта, а не со стороннего CDN, так что страница никогда не подгружает код откуда-либо ещё.

Часть семейства 123

У 123DiceRoller есть соседи: 123Calculator и другие наши бесплатные инструменты без регистрации. Есть вопросы, идеи или нашли ошибку? Пишите на hello@123diceroller.com.

Обновлено