სამართლიანი თამაში ონლაინ ორ კითხვაზე დგას: შემთხვევითია თუ არა დარიგება და კამათელი, და ხომ ვერ ხედავს ვინმე იმას, რაც არ უნდა დაინახოს. tamashebi.cc-ზე ორივე პასუხი არქიტექტურაშია ჩადებული და არა დაპირებაში. კარტს, ქვებს და კამათელს სერვერი აგდებს კრიპტოგრაფიული შემთხვევითობის წყაროთი; ყოველ მოთამაშეს მხოლოდ საკუთარი ხელი ეგზავნება; ყოველ სვლას სერვერი ამოწმებს და ანგარიშსაც ის ითვლის. ქვემოთ თითოეული პუნქტი დაწვრილებით არის აღწერილი — ისე, როგორც კოდში მუშაობს, გაზვიადების გარეშე. ამის მოკლე ვერსია „სამართლიანი თამაშის“ გვერდზეა.
კამათლისა და კარტის შერევა
- დომინოს ქვებს სერვერი ურევს Web Crypto-ს კრიპტოგრაფიული შემთხვევითობის წყაროთი და ფიშერ–იეიტსის მეთოდით, რომელიც ყოველ რიგს ერთნაირ შანსს აძლევს.
- ჯოკრის და იაპონური ჯოკრის კარტს სერვერი არიგებს Node.js-ის კრიპტოგრაფიული ფუნქციით. ასეთი დარიგების წინასწარმეტყველება ვერ მოხერხდება, თუნდაც ვინმემ ასობით წინა დარიგება ნახოს.
- ნარდის კამათელს სერვერი აგორებს იმ მომენტში, როცა მოთამაშე აგორებს. შემთხვევითი რიცხვი გადახრის გარეშე ითვლება: ის მნიშვნელობა, რომელიც ექვსზე თანაბრად არ იყოფა, გადაიყრება და თავიდან აიღება, ამიტომ თითოეულ წახნაგს ზუსტად ერთნაირი შანსი აქვს.
- შემთხვევითობას ბრაუზერი არასოდეს აწვდის. დარიგება, რომელზეც კლიენტს შეუძლია გავლენა, დარიგებაა, რომელსაც კლიენტი აირჩევს.
- დეტერმინისტული, „ნათესიანი“ შემთხვევითობა კოდში მხოლოდ ტესტებისთვის არსებობს, რომ შეცდომა ზუსტად გამეორდეს. ცოცხალი თამაში მას არ იყენებს.
რას ნიშნავს „ერთნაირი შანსი“ დომინოს მაგალითზე: 28 ქვიდან ბოლო ადგილისთვის ერთი ქვა 28-დან შემთხვევით აირჩევა, წინა ადგილისთვის — დარჩენილი 27-დან, და ასე ბოლომდე. ასე 28 ქვის ყოველი შესაძლო რიგი ზუსტად ერთნაირად სავარაუდოა, და არც ერთი ქვა არ არის „მიდრეკილი“ დასაწყისისკენ ან ბოლოსკენ. შემდეგ სერვერი თითოეულს შვიდ ქვას აძლევს, დანარჩენი თოთხმეტი კი ბაზარში რჩება, იმავე შემთხვევითი რიგით. ეს ყოველი ხელის წინ ხდება და წინა ხელზე არ არის დამოკიდებული.
სერვერის ლოგიკა
ბრაუზერი თამაშს მხოლოდ ხატავს. როცა ქვას დებთ ან კარტს აგდებთ, ბრაუზერი სერვერს ეკითხება, და სერვერი ამოწმებს: თქვენი ჯერია, ეს ქვა ან კარტი თქვენს ხელშია, სვლა წესებით დასაშვებია. დაუშვებელი სვლა უბრალოდ არ სრულდება. ქულებს და მატჩის ანგარიშს სერვერი ითვლის — დომინოს ხუთის ჯერადს, ჯოკრის ფურცელს, ხიშტს და პრემიას, ნარდის ოინს, მარსს და კოქსს. ბაზრიდან რომელ ქვას აიღებთ, ამასაც სერვერი წყვეტს: არჩევა შეუძლებელია, და ბაზრის ბოლო ორი ქვა საერთოდ არ აიღება — ეს ქართული დომინოს წესია.
ბრძანებებს ლიმიტი აქვს: წამში ან რამდენიმე წამში მხოლოდ გარკვეული რაოდენობა მიიღება, ასე რომ, სერვერის ბრძანებებით „დატბორვა“ ვერ მოხერხდება. და ერთი მოთამაშე ერთდროულად მხოლოდ ერთ თამაშშია.
მოწინააღმდეგის ხელის დამალვა
ეს ყველაზე მნიშვნელოვანი საზღვარია. ყოველი მოთამაშის ეკრანისთვის სერვერი ცალკე სურათს აგებს, და მასში მხოლოდ ამ მოთამაშის კარტი ან ქვები ხვდება. სხვისი ხელი არ არის „დამალული“ ან „გადაბრუნებული“ — ის საერთოდ არ არის გაგზავნილ მონაცემებში. ეს იმიტომ არის მნიშვნელოვანი, რომ ეკრანზე დამალული მონაცემი დამალული არ არის: ბრაუზერის დეველოპერის ხელსაწყოებით ნებისმიერს შეუძლია ნახოს, რა მოვიდა. ჯოკრისთვის ამას ტესტი ამოწმებს: მოთამაშის სურათს ტექსტად აქცევს და ამტკიცებს, რომ სხვა ადგილის არც ერთი კარტის იდენტიფიკატორი მასში არ არის.
- დომინო: ხედავთ საკუთარ ქვებს, მაგიდას და მოწინააღმდეგის ქვების რაოდენობას. ბაზრის რიგი არავის ეგზავნება.
- ჯოკერი: ხედავთ საკუთარ კარტს და მაგიდაზე ღიად ნათამაშებს.
- ნარდი: დასამალი არაფერია — დაფა და კამათელი ორივეს ერთნაირად უჩანს.
- ბოტიც იმავე შეზღუდულ სურათს იღებს, რასაც ადამიანი. „სერვერზე მუშაობს, ამიტომ ყველაფერი შეუძლია“ — ასეთი გამონაკლისი არ არსებობს.
ანტი-ჩიტი
tamashebi.cc-ზე ანტი-ჩიტი ძირითადად ის არის, რაც ზემოთ აღიწერა: თაღლითობისთვის საჭირო ინფორმაცია მოთამაშის მოწყობილობამდე უბრალოდ არ მიდის. თქვენს კომპიუტერზე ან ტელეფონზე არანაირ პროგრამას არ ვუშვებთ, და იმას არ ვამტკიცებთ, რომ ხელოვნური ინტელექტი ყოველ სვლას აკვირდება. რაც არის:
- რეიტინგულ მატჩში მხოლოდ რეგისტრირებული ანგარიშები მონაწილეობს; ბოტი და სტუმარი რეიტინგს ვერ იგებს და ვერ კარგავს.
- დასრულებული მატჩი რეიტინგს ზუსტად ერთხელ ცვლის — ამას მონაცემთა ბაზა უზრუნველყოფს.
- გასვლით რეიტინგულ წაგებას ვერ აიცილებთ: დომინოში ასეთი მატჩი რეიტინგს საერთოდ არ ცვლის, ჯოკერში კი ბოტი თამაშს თქვენს ადგილზე ასრულებს და შედეგი თქვენ გეწერებათ.
- ადმინისტრაციას შეუძლია ანგარიშის დაბლოკვა; დაბლოკილი ანგარიში ჩატში ვერ წერს.
- მოთამაშეს შეუძლია უსიამოვნო მოწინააღმდეგის დაბლოკვა — მას შემდეგ ერთმანეთის გამოწვევები და ჩატი აღარ მოდის.
პატიოსნად უნდა ითქვას, რისი გარანტია არ შეგვიძლია. თუ ჯოკრის მაგიდასთან ორი მეგობარი ზის და ტელეფონით ერთმანეთს კარტს უყვებიან, საიტი ამას ვერ დაინახავს — ეს საუბარი სერვერს არ გადის. ასეთივეა მაგიდასთანაც: ცოცხალ თამაშშიც ვერავინ აუკრძალავს ორ ადამიანს ფარულ ნიშნებს. ამიტომ ქოინიან ან რეიტინგულ მაგიდაზე უცნობ კომპანიასთან ფრთხილად იყავით, ხოლო თუ ეჭვი გაგიჩნდათ, მოგვწერეთ: მატჩის ჩანაწერში ყოველი თქმა და ყოველი კარტი ჩანს, და უცნაური კანონზომიერება მასში შესამჩნევია.
დავის გადაწყვეტა
თუ რამე უსამართლოდ მოგეჩვენათ, ჯერ ის გაიხსენეთ, რომ ანგარიშს სერვერი ითვლის და წესები ყველასთვის ერთია: ხშირად „უცნაური“ ქულა ქართული წესის შედეგია, მაგალითად დომინოში მხოლოდ 5-5 იძლევა ქულას გამხსნელ ქვად. შეამოწმეთ წესების გვერდი. თუ ეჭვი მაინც დარჩა, მოგვწერეთ კონტაქტის გვერდიდან: მიუთითეთ თამაში, მოწინააღმდეგის სახელი, მატჩის თარიღი და დრო. სერვერი ყოველ სვლას იწერს — დომინოში მატჩის მოვლენებს, ჯოკერში ყოველ ნათამაშებ კარტს და ხელის ანგარიშს — ასე რომ, მატჩის სვლა აღდგენადია. დასრულებული ჯოკრის მატჩის ჩანაწერი მის მონაწილეებს შეუძლიათ ნახონ.
მაგალითი
ნარდში ზედიზედ სამჯერ დაგიგორდათ დუ-იაქი და ფიქრობთ, რომ კამათელი „გაფუჭებულია“. ერთი კონკრეტული წყვილის, მაგალითად დუ-იაქის, ალბათობა ერთ გაგორებაზე 2/36-ია, ზედიზედ სამჯერ კი დაახლოებით 1 ექვსი ათასიდან. იშვიათია, მაგრამ ათასობით გაგორებაში ასეთი სერიები აუცილებლად ჩნდება — შემთხვევითობა „თანაბარს“ არ ნიშნავს მოკლე მონაკვეთზე. სერვერი ყოველ გაგორებას ცალკე აგდებს და წინა შედეგი შემდეგზე გავლენას არ ახდენს.
ხშირად დასმული კითხვები
- კამათელს ვინ აგორებს?
- სერვერი, კრიპტოგრაფიული შემთხვევითობის წყაროთი, იმ მომენტში, როცა აგორებთ. ორივე მოთამაშე ერთსა და იმავე შედეგს ხედავს.
- შეიძლება მოწინააღმდეგემ ჩემი კარტი ნახოს?
- არა. სერვერი თითოეულ მოთამაშეს მხოლოდ მის ხელს უგზავნის. თქვენი კარტი მოწინააღმდეგის ბრაუზერში საერთოდ არ ხვდება, ამიტომ ვერც დეველოპერის ხელსაწყოებით ნახავს.
- ბოტი თაღლითობს?
- არა. ბოტი იმავე შეზღუდულ ინფორმაციას იღებს, რასაც ადამიანი მის ადგილას: მხოლოდ საკუთარ ხელს და მაგიდას.
- სად ვიჩივლო, თუ თამაში უსამართლოდ მომეჩვენა?
- მოგვწერეთ კონტაქტის გვერდიდან და მიუთითეთ თამაში, მოწინააღმდეგის სახელი და მატჩის დრო. სერვერი ყოველ სვლას იწერს, ამიტომ შემთხვევის შემოწმება შეიძლება.
Domino Coin არის თამაშის შიდა ვირტუალური ქოინი. ის არ არის ფული, არ იცვლება ფულზე და პლატფორმის გარეთ არაფერს ნიშნავს. ნამდვილი ფსონები, ანგარიშის შევსება ან ფულადი ოპერაციები საიტზე არ არსებობს.