Згубілі кубікі ад настольнай гульні або спатрэбіўся d20 прама пасярод сесіі? Кінуць кубік анлайн можна прама тут — гэты бясплатны генератар заменіць любы кубік, якога не аказалася пад рукой. Вызначце, колькі кубікаў трэба кінуць, у полі «Кубікі» — ад 1 да 20 — задайце колькасць бакоў для кожнага ў полі «Бакі» і націсніце «Згенераваць». Старонка адкрываецца з двума звычайнымі шасціграннымі кубікамі, таму першы кідок можна зрабіць у адзін клік. Кожны кубік адлюстроўваецца асобна, а агульная сума кідка з'яўляецца пад імі, таму для 3d6 не прыйдзецца лічыць у галаве.
Кожны кідок выконваецца вашым браўзерам праз Web Crypto API (crypto.getRandomValues), які прадстаўляе крыптаграфічна надзейныя выпадковыя значэнні з уласнай крыніцы энтрапіі вашай сістэмы, а не праз псеўдавыпадковую функцыю JavaScript накшталт Math.random(). Ператварэнне зыходнага 32-бітнага значэння ў нумар боку — гэта тое месца, дзе генератары кубікаў непрыкметна памыляюцца: вылічэнне значэння па модулі колькасці бакоў з'яўляецца самым відавочным падыходам, але яно ўносіць скажэнне, бо, калі толькі колькасць бакоў не дзеліць 2^32 без астатку, самыя малодшыя бакі выпадаюць крыху часцей за астатнія. Гэты недахоп называецца зрушэннем па модулю (modulo bias), і ён цалкам вымяральны, а не проста тэарэтычны. Дадзены інструмент, наадварот, адкідвае любое значэнне, якое перавышае найбольшае дакладнае кратнае колькасці бакоў, і цягне лік нанова — гэтая тэхніка называецца выбаркай з адхіленнем (rejection sampling). Яна патрабуе некалькіх дадатковых ітэрацый, затое забяспечвае дакладную гарантыю замест прыблізнай. Дадзеныя не адпраўляюцца на сервер, нічога не лагіруецца, і пасля загрузкі старонкі вашы кідкі працягнуць працаваць нават пры абрыве злучэння.
Два палі робяць усю працу, і яны наўпрост адпавядаюць натацыі кубікаў, якая ўжо выкарыстоўваецца ў гульнях. «Кубікі» — гэта колькасць кубікаў, якія вы кідаеце за адзін раз, ад 1 да 20. «Бакі» — гэта колькасць бакоў у кожнага з іх, ад 2 да 1000: гэтага хопіць для падкідвання манеткі d2, поўнага ролевага набору з d4, d6, d8, d10, d12 і d20, працэнтнага кубіка d100 і ўсяго, што гульня можа вынайсці за іх межамі. Любы запіс выгляду NdM — гэта і ёсць гэтыя два палі: 2d6 азначае «Кубікі» 2 і «Бакі» 6, адзіночны d20 — гэта «Кубікі» 1 і «Бакі» 20. Кідаеце 3d6 для праверкі характарыстыкі персанажа? Усталюйце «Кубікі» на 3, «Бакі» на 6, націсніце «Згенераваць», і тры бакі з'явяцца разам з іх сумай. Два перамыкачы змяняюць тое, як выглядае вынік, а не тое, чым ён з'яўляецца. Опцыя «Аніміраваныя 3D-кубікі», уключаная па змаўчанні, прымушае кубік круціцца, перш чым ён спыніцца — адключыце яе, і лічбы з'явяцца імгненна ў выглядзе простага спіса. Налада «Выпадковы колер» надае кожнаму кубіку ўласны колер замест стандартнага чырвонага, і яна працуе толькі тады, калі ўключаны «Аніміраваныя 3D-кубікі», бо ў простым спісе няма кубікаў, якія можна было б размаляваць. Кропкі малююцца толькі для шасцігранных кубікаў; любы іншы від проста паказвае лік, які выпаў на баку, паколькі шаблону кропак для сямнаццацігранніка не існуе.
Пад вынікам знаходзіцца радок, які пазбаўляе вас ад вылічэнняў: Σ — гэта сума ўсіх кубікаў у кідку, побач з якой пазначаны час генерацыі і пазнака пра тое, што кідок выкананы лакальна. Кнопка «Капіяваць усё» змяшчае вынік у буфер абмену, а «Захаваць у файл» запісвае яго ў тэкставы дакумент — абедзве функцыі выдаюць асобныя бакі, па адным на радок, а не суму, таму лог таго, што было кінута, застаецца менавіта логам бакоў, якія выпалі. «Гісторыя» захоўвае 10 вашых апошніх кідкоў прама ў браўзеры: націсніце на любы з іх, каб вярнуць яго на экран разам з сумай, скапіюйце або выдаліце асобны запіс, альбо ачысціце ўвесь спіс, калі захочаце. Кнопка «Ачысціць» пусцее поле з вынікамі, не кранаючы вашыя налады.
Ці лепш віртуальныя кубікі за сапраўдныя? У плане сумленнасці — так, і прычына крыецца ў фізіцы. У звычайнага адлітага кубіка кропкі высвідроўваюцца і зафарбоўваюцца, а высвідроўванне выдаляе матэрыял. У выніку бок з шасцёркай — з шасцю паглыбленнямі ў ім — аказваецца ледзь прыкметна лягчэйшым за астатнія, а супрацьлеглы яму бок — ледзь прыкметна цяжэйшым. Precision dice (прэцызійныя кубікі) у казіно існуюць менавіта з гэтай прычыны: іх кропкі запаўняюцца ўпоравень матэрыялам той жа шчыльнасці, краі зразаюцца пад прамым вуглом, а не закругляюцца, яны апрацоўваюцца з дакладнасцю да доляў міліметра, і ўсё роўна іх выводзяць з гульні пасля некалькіх гадзін выкарыстання. Кубікі з скрынкі з настольнай гульнёй не валодаюць ніводнай з гэтых характарыстык і з цягам часу становяцца толькі горш: адколаты ражок, сцёртае гадамі ўтрасення рабро, кубік, кінуты на коўдру замест стала, насамрэч наогул не забяспечваюць выпадковасць. У віртуальнага кубіка няма геаметрыі, якая магла б сапсавацца, няма зносу і няма тэхнікі кідка, пра якую можна было б спрачацца, і на дзесяцітысячны раз ён паводзіць сябе гэтак жа, як і на першы. Чаго ён не можа — дык гэта ляжаць у вас у руцэ. Сумленнае рэзюмэ такое: гэты генератар выйграе ў сумленнасці, але прайграе ў атмасферы.
Сумленны кубік — гэта не тое ж самае, што сумленная сума. Кожны бок аднаго кубіка выпадае з аднолькавай верагоднасцю, але як толькі вы складаеце кубікі разам, сумы перастаюць быць роўнаверагоднымі, і гэта ўвесь час заспявае людзей знянацку. Два шасцігранныя кубікі кладуцца ў 36 роўнаверагодных камбінацыях; шэсць з іх у суме даюць 7, у той час як роўна адна камбінацыя дае 2 і адна дае 12 — таму 7 выпадае ў шэсць разоў часцей, чым 12, на ідэальна сумленных кубіках. Даданне трэцяга кубіка яшчэ мацней звужае размеркаванне, вось чаму 3d6 групуюцца вакол сярэдзіны і чаму геймдызайнеры звяртаюцца да іх, калі значэнне павінна быць звычайным часцей, чым экстрэмальным. Адзін шасцігранны кубік у сярэднім выдае 3,5, таму 2d6 дае ў сярэднім 7, а 3d6 — 10,5, і гэтая арыфметыка за сталом звычайна больш карысная, чым любая асобная верагоднасць. Нішто з гэтага не з'яўляецца скажэннем: проста так працуе складанне кубікаў, і менавіта з гэтай прычыны гульня патрабуе кідка 2d6, а не d12, калі абодва пакрываюць адзін і той жа дыяпазон.
У кубікаў няма памяці. Чатыры шасцёркі запар не робяць пятую шасцёрку менш верагоднай, калі кубік за ўвесь вечар ні разу не паказаў адзінку, гэта не значыць, што яна яму належыць, і ніводны бок ніколі не «чакае сваёй чаргі» больш за іншыя — кожны кідок не залежыць ад усіх папярэдніх, і кубікі не могуць ведаць, што яны рабілі хвіліну таму. Інстынкт, які сцвярджае адваротнае, — гэта памылка гульца (gambler's fallacy), і той жа самы інстынкт робіць нас нікудышнымі генератарамі кідкоў: калі нас просяць напісаць праўдападобную серыю вынікаў, мы пазбягаем паўтораў, чаргуем высокія і нізкія значэнні і размяркоўваем лічбы значна раўнамерней, чым гэта калі-небудзь робіць выпадковасць. Сапраўдная выпадковасць, наадварот, спараджае навалы, серыі аднолькавых значэнняў і доўгія прабелы. Паслядоўнасць, якая выглядае падазрона акуратнай — гэта адбітак пальца чалавека.
Чаму варта абраць гэты генератар кубікаў?
- Кідкі толькі ў браўзеры: кубікі кідаюцца на вашым прыладзе і нікуды не адпраўляюцца
- Выпадковасць Web Crypto API: крыптаграфічная бяспека, а не Math.random()
- Адсутнасць modulo bias: алгарытм rejection sampling захоўвае роўную верагоднасць для кожнага боку
- Любы кубік для любой гульні: ад 1 да 20 кубікаў за раз, ад d2 аж да d1000
- Аўтаматычны падлік сумы: Σ падсумоўвае ўвесь кідок, таму 3d6 не патрабуе вылічэнняў у галаве
- Аніміраваныя 3D-кубікі з магчымасцю адключэння для імгненнага атрымання простага спіса
- Свой колер для кожнага кубіка, каб некалькі кубікаў было лёгка адрозніць з першага погляду
- «Гісторыя» і «Захаваць у файл»: захоўвайце запісы аб кідках, вынікі якіх вам, магчыма, давядзецца абгрунтоўваць
- Безлімітна і бясплатна: без рэгістрацыі, без абмежаванняў на выкарыстанне і нічога на нашых серверах
Кубікі з'яўляюцца ўсюды, дзе гульні патрэбен лік, які ніхто не выбіраў. Гульцы ў настольныя ролевыя гульні — дома ці ў анцікафэ з клубам настолак — робяць кідок атакі на d20, кідаюць 3d6 для вызначэння характарыстыкі і d100 для працэнтнай праверкі, і сесія, якая страціла палову свайго мяшочка з кубікамі, працягваецца нягледзячы ні на што. Настольныя гульні на кухні працуюць гэтак жа, калі кубікі кудысьці зніклі — усталюйце «Бакі» на 6, «Кубікі» на 2 і гуляйце далей. Дыстанцыйныя групы кідаюць косці на агульным экране, каб усе бачылі адны і тыя ж бакі, што выпалі. У 5 класе на ўроку матэматыкі праводзяць класічны дослед: кіньце 2d6 60 разоў, падлічыце сумы і дазвольце форме размеркавання праявіцца на дошцы. Геймдызайнеры правяраюць, ці сапраўды механіка мае такі вялікі роскід, як здаецца, перш чым што-небудзь пойдзе ў друк. І мноства кідкоў вырашаюць не больш чым тое, хто ходзіць першым, хто купляе каву або які з двух планаў перамагае — тыя самыя рашэнні ўсляпую, якія людзі прымалі з дапамогай кубікаў на працягу некалькіх тысяч гадоў.
У гэтага генератара ёсць некалькі сумленных абмежаванняў, пра якія варта ведаць. Адзін кідок выкарыстоўвае адзін від кубікаў: значэнне ў полі «Бакі» прымяняецца да кожнага кубіка ў кідку, таму d20 і d6 разам запатрабуюць двух кідкоў замест аднаго. Тут няма мадыфікатараў, кідкоў з перавагай (advantage) або перашкодай (disadvantage), кубікаў, што выбухаюць (exploding dice), і поля для ўводу натацыі — вы атрымліваеце бакі і іх суму, а любыя правілы звыш гэтага вы прымяняеце самі. Значок Σ падлічвае кожны кубік у кідку, у той час як «Капіяваць усё» і «Захаваць у файл» запісваюць асобныя бакі, а не суму. Анімацыя заўсёды ўяўляе сабой шасцігранны куб, незалежна ад колькасці бакоў, таму што гэта дэкарацыя: бок, на якім ён спыняецца, — гэта кідок, які рухавічок ужо здзейсніў. Кідкі выконваюцца лакальна на вашай прыладзе, таму для дыстанцыйнай гульні адзін чалавек кідае кубікі і дэманструе экран — гэты генератар робіць кідок, які вы можаце растлумачыць, а не той, які можа сертыфікаваць трэці бок. І крыптаграфічна сумленны кубік — гэта ўсё яшчэ проста сумленны кубік: ён не мае ніякага дачынення да розыгрышаў латарэй або казіно і нікому не дае перавагі. У гэтых межах гарантыя надзейная — кожны бок кожнага кубіка мае абсалютна аднолькавыя шанцы пры кожным асобным кідку.