Чесност на коцките во таблата: како навистина работи RNG на серверот
Секој што игра табла онлајн барем еднаш ја има напишано во пребарувачот истата мисла во некоја своја верзија: дали коцките се наместени? Тоа прашање заслужува вистински одговор, а не маркетиншко креваање раменици. Ова е техничката верзија: од каде доаѓаат дигиталните коцки, што навистина може да тргне наопаку и како правилно направена игра го става фрлениот број надвор од дофат на секого, со архитектура наместо со ветување.
Каде се раѓа дигиталната коцка
Вистинската коцка ја меша физиката: превртувањето, отскокот, чојата. Дигиталната коцка е број произведен од генератор на случајни броеви (RNG), софтвер (често потхрануван и од хардвер) чија работа е да враќа вредности што никој не може да ги предвиди ниту да ги повтори.
Не се сите генератори исти. Обичен псевдослучаен генератор, оној што ја меша плејлистата, дава низа целосно определена од почетната вредност (семето). Ако ги знаете семето и алгоритамот, го знаете секој "случаен" број што тој генератор некогаш ќе го врати. За плејлиста тоа е доволно, за игра во која нешто зависи од исходот е бескорисно. Сериозните игри користат криптографски безбедни генератори (CSPRNG), кои постојано се досејуваат со ентропија од реалниот свет: шум од хардверот, треперење во тајмингот, хаос од системските настани. Нивното клучно својство е токму она што му треба на игра со коцки: ни оној што ги видел сите претходни излези не може да го предвиди следниот.
Поважното прашање: каде се извршува тоа?
Еве го делот што играчите ретко се сетуваат да го прашаат. Помалку е важно кој генератор го произвел вашето фрлање, а повеќе каде се извршил. Ако коцките се создаваат на уредот на играчот, играта е скршена по конструкција, колку и да е добар алгоритамот: изменет клиент може да фрла одново додека резултатот не му се допадне, да го смени исходот во меморија или да ги ѕирне вредностите пред да се одлучи за потег. Коцките на страна на клиентот се ветување, а ветувањата се вадат од апликацијата со една закрпа.
Точната архитектура е серверска: фрлањето се случува на серверот на играта, во средина до која не допира хардверот на ниту еден играч. Вашиот уред добива фрлање што веќе постои и само го анимира. Во нашата игра, како што објаснуваме на страницата за фер игра, тоа оди подалеку од коцките: серверот го проверува секој обиден потег според правилата, а двата клиенти непрекинато ја споредуваат својата табла со отпечатокот што серверот го испраќа со секое ажурирање. Не постои момент во кој на уредот на играчот му се верува за нешто важно.
Оваа единствена одлука во дизајнот брише цели категории мамење наеднаш. Никој не може да фрли повторно, бидејќи фрлањето му претходи на потегот. Никој не може да го прочита следниот број од сопствениот уред, бидејќи таму го нема. И никој не може тивко да ја свитка таблата, бидејќи табла што не се согласува со серверската се отфрла и се синхронизира одново за едно одење и враќање низ мрежата.
Што навистина значи "докажливо чесно"
Со години одговорот на индустријата на прашањето "дали коцките се чесни?" беше сертификат: лабораторија еднаш го прегледува генераторот и издава печат во кој треба да верувате. Мислиме дека заслужувате нешто посилно од печат. Докажливата чесност значи дека воопшто не морате да ни верувате, бидејќи секое фрлање носи сопствен доказ. Механизмот е шема на обврзување со размена потег по потег, а изгледа вака: куп запечатени ливчиња кај секој играч плус наш запечатен плик.
- Заклучување. Пред да падне првата коцка, серверот создава тајно семе и ви го предава неговиот криптографски отпечаток, хеш, додека исходот е сè уште непознат. Во истиот момент апликацијата на секој играч запечатува сопствен нумериран куп ливчиња и го објавува само отпечатокот на тој куп. Сите три отпечатоци се замрзнуваат заедно во еден запис, така што подоцна ниту еден не може да се замени со друг, а ниту еден не открива што крие.
- Размена. Коцките не се решени однапред. Се градат една по една, по утврдена и јавна формула, и на секоја ѝ треба ливче од двата купа. Секој потег, играчот што треба да фрла прв го објавува своето наредно ливче, противникот го открива своето дури откако тоа е заклучено, а коцката се пресметува последна, од двете ливчиња и од запечатеното семе. Печатот на секое ливче е изведен од следното во неговиот куп, поради што ливчето не може да се замени дополнително. И бидејќи последниот непознат влез секогаш стои од другата страна на таблата, никој, вклучително и ние, не може да ја знае коцката додека е отворена која било одлука што сè уште би можела да ја промени.
- Проверка. Кога партијата ќе заврши, серверот го отвора пликот и ви го покажува семето, а целиот запис се објавува. Вие го хеширате семето и потврдувате дека се совпаѓа со отпечатокот што сте го добиле на почетокот, доказ дека никогаш не бил заменет; проверувате дека секое ливче му припаѓа на купот на кој неговата страна се обврзала; а потоа ја пуштате истата јавна формула и сами го изведувате секое фрлање одново. Ако една коцка била придвижена, пресметката не би се совпаднала и лажирањето би било непобитно.
Во тоа е целата разлика меѓу "верувајте му на нашиот сертификат" и "проверете сами". Не морате да верувате дека нашите коцки се чесни; можете да ги проверите, партија по одиграна партија, со математика што секој може да ја повтори. На страницата за фер игра стои алатката што прави токму тоа: дајте ѝ завршена партија и гледајте како секое фрлање се изведува одново од објавениот запис. Единственото што јавната страница не може е да потврди дека тој запис е вашиот меч, зашто копијата од отпечатоците заклучени пред играта ја зачувал само вашиот уред; таа последна проверка живее во апликацијата.
Една чесна забелешка што доказот не ја менува: докажливо чесните коцки сепак не се мазни, љубезни и наизменични. Проверливото семе произведува грутки, серии и суши точно со онаа честота што ја предвидува веројатноста. Сомнителен би бил токму тек без серии. Вистинската случајност е грутлеста, и токму затоа толку често изгледа наместена.
Зошто чесните коцки изгледаат наместени
Оттука влегува психологијата, зашто чувството за наместени коцки е вистинско и тогаш кога коцките не се такви. Работата ја вршат три добро документирани искривувања:
Избирливо помнење. Ја паметите вечерта кога четири потега по ред останавте надвор од таблата. Не ги паметите стотиците обични влегувања пред тоа. Болните исходи се запишуваат посилно: секој искусен играч носи личен музеј на неправди и ниту еден запис за она што било обично.
Законот на малите броеви. Луѓето очекуваат ситен примерок да личи на долгорочниот просек. Во 36 фрлања секоја комбинација "би требало" да се појави околу еднаш, но вистинските примероци од по 36 фрлања се диво нерамни: некои броеви ги нема воопшто, други доаѓаат трипати. Една вечер покрај таблата е ситен примерок. Во него владее варијансата, а варијансата се доживува лично.
Асиметрија на загубата. Истрел од 17 на 36 што ве погодува изгледа како неправда; 19-те пати од 36 кога промашува не се чувствуваат воопшто. А бидејќи во таблата постојано се разрешуваат настани со 30 до 70 отсто, "невозможните" исходи пристигнуваат со постојан дотур, точно со брзината со која се и можни.
Противотровот е познавањето на вистинските броеви. Кој било определен број се појавува во 11 од 36 фрлања. Дублет доаѓа еднаш на шест фрлања. Блот оддалечен шест пипа бива погоден речиси во половина од случаите. Нашиот водич низ основите на веројатноста ја разложува целата табела, а штом тие бројки ќе ви влезат во главата, повеќето "наместени" моменти сами се прекласифицираат во сосема обичен вторник.
Прашањето за интересот
Уште една чесна ставка: оператор на игра со табла нема што да добие од криви коцки, а има сè да изгуби. Натпреварувачките играчи, оние што остануваат со години, се токму луѓето што ги следат изгледите и забележуваат отстапувања. Рејтинг системот истовремено работи и како јавна ревизорска трага: ако коцките систематски му одеа некому на рака, распределбата на рејтинзите ќе се поместеше на мерлив начин. Чесните коцки не се доблест што ја глумиме; тие се единствениот стабилен деловен модел што една игра на вештина воопшто го има.
Како сами да се уверите
Не верувајте му на збор на ниту еден оператор, ни нам. Научете ги основните честоти од водичот за веројатност, па потоа гледајте ги сопствените партии со тие броеви в глава: изгледите за влегување против табла со две затворени полиња, честотата на дублети низ долга сесија, процентот погодоци на директни истрели. Чесните коцки се приближуваат до предвидувањата од табелата зачудувачки брзо. А ако сакате архитектонски детали, обврзувањата и размената потег по потег, фрлањата на серверот, проверката на таблата при секој потег, спарувањето противници по Glicko-2, страницата за фер игра е целосниот опис на тоа како е направена нашата маса, заедно со алатката за проверка. Тогаш партиите ги решава онаа променлива што и треба да ги решава: колку добро го играте она што ви паднало. Водичите низ стратегијата постојат токму за тоа.