engineeringfairnessmultiplayer
સર્વરની સત્તા એટલે કે રમતની જે એકમાત્ર નકલ ગણાય છે તે સર્વર પાસે હોય છે. તમે જે ચાલ રમવા માગો છો તે તમારું ઉપકરણ મોકલે છે, સર્વર એને પોતાના પાસા સામે અને પોતાના નિયમો સામે ચકાસે છે, અને ત્યારે જ પાટિયું બદલાય છે. બદલાયેલી એપ ગમે તે દાવો કરી શકે: સત્ય ત્યાં રહે છે જ્યાં એનો હાથ પહોંચતો નથી.
બેકગેમન આ કડકાઈને લાયક છે. આ સીડી અને પોટવાળી પાસાની રમત છે, એટલે છેતરવાના બે રસ્તા: ચાલ બનાવટી કરવી અથવા દાવ વાળવા. ન્યાયી સર્વરે બંને બારણાં બંધ કરવાં પડે. બીજા બારણામાં અમે પણ આવીએ છીએ, અને ત્યાં અમે આવીશું જ.
સર્વરની સત્તા એટલે ખરેખર શું?
Orion ની ચાલુ દરેક રમત એક જ જગ્યાએ હોય છે: અમારા સર્વર પર. તમારા ફોન પરનું પાટિયું એક બારી છે, રમત નહીં. તમે કૂકરી ખેંચો ત્યારે એપ એને ખસેડતી નથી. એ એક ટૂંકો સંદેશ મોકલે છે જે કહે છે: મારે આ રમવું છે. સર્વર એ ઇરાદો પોતાના પાટિયા પર, પોતાના નિયમ એન્જિનથી, એ વારા માટે પોતે નાખેલા પાસા સાથે ફરી ચલાવે છે. માન્ય ચાલ રમતને આગળ લઈ જાય છે અને બંને ખેલાડીને એ જ નવી સ્થિતિ મળે છે. અમાન્ય ચાલ ક્યારેય બની જ નથી.
આ બધા માટે એક જ સર્વર છે. iOS એપ મૂળ SwiftUI છે, Android એપ મૂળ Jetpack Compose છે, અને બંને એ જ બેકએન્ડની અને એ જ ખેલાડીવર્ગની બારીઓ છે. કાચ જુદો, સત્ય એ જ.
ક્લાયન્ટ પર ભરોસો કરતી રમતોમાં છેતરપિંડી કેમ થાય છે?
કારણ કે તમારા સામેવાળાનું ઉપકરણ તમારા સામેવાળાનું જ છે. એના પર ચાલતું બધું બદલી શકાય. થીગડું મારેલો ક્લાયન્ટ ક્યારેય માન્ય ન હતી એવી ચાલ મોકલી શકે. મેમરી સંપાદક જગ્યા પર જ એક સંખ્યા ફરી લખી શકે, અને પડદો એ જૂઠ વફાદારીથી બતાવશે. આમાંનું કશું અસાધારણ નથી. સાધનો મફત છે, નોંધાયેલાં છે અને સ્માર્ટફોન કરતાં જૂનાં છે.
ક્લાયન્ટ પર ભરોસો કરતી રમત દરેક ખેલાડી પાસેથી બોનેટ નીચે ડોકિયું નહીં કરવાનું વચન માગે છે. કેટલાક ડોકિયું કરે છે. એટલે અમે ક્લાયન્ટના મતને જ બિનમહત્ત્વનો બનાવી દીધો. Orion માં એપને બરાબર ત્રણ કામ છે:
- દોરવું: પાટિયું, કૂકરીઓ, ક્યુબ, ઘડિયાળ.
- માગવું: સર્વરને ચાલ રમવાનું કહેવું, બમણું આપવું, હાર કબૂલવી.
- મેળવવું: સર્વર જેને સાચી કહે તે સ્થિતિ બતાવવી.
પાસા નાખવા, માન્યતા નક્કી કરવી અને એક સિક્કો પણ ખસેડવો એ યાદીમાં નથી. પરિણામ નક્કી કરતું કશું ઉપકરણ પર જન્મતું નથી.
હું ચાલ રમું ત્યારે શું થાય છે?
તમે રમો છો.. તમારી એપ ઇરાદો મોકલે છે: આ કૂકરી, આ બિંદુ. તમારા ઉપકરણ પરનું કશું સાચું પાટિયું બદલતું નથી.
સર્વર એને ફરી ચલાવે છે.. અમારું નિયમ એન્જિન એ ચાલને સર્વરના પાટિયા સામે અને સર્વરના પાસા સામે ચલાવે છે. માન્ય હોય તો રમત આગળ વધે. ન હોય તો કઈ એપે મોકલી એ જોયા વગર એ મૂળ પાસે જ નકારાય છે.
બંને પક્ષને એ જ સત્ય મળે છે.. નવી સ્થિતિ બંને ખેલાડી પાસે જાય છે. તમારું જોડાણ તૂટે, તો વારાની ઘડિયાળની ફરી જોડાવાની મુદત તમારી જગ્યા સાચવે છે, અને પાટિયું ખરેખર જેવું છે તેવું જ તમે પાછા આવો છો, તમારા ફોનને છેલ્લે જેવું યાદ હતું તેવું નહીં.
દાવ પણ એ જ નિયમ પાળે છે. પ્રવેશ ફીવાળી રમત શરૂ થાય ત્યારે સર્વર બંનેની ફી પોતાની પાસે અનામત રાખે છે. પોટ એક જ ચોપડામાં રહે છે, સર્વર પર, અને રમત પૂરી થાય ત્યારે ત્યાં જ ચૂકતે થાય છે. કોઈ ક્લાયન્ટને ક્યારેય પુછાતું નથી કે એને લાગે છે એ કેટલું જીત્યું. સિક્કા અને રત્નો આભાસી છે, ખરી દુનિયામાં એમનું મૂલ્ય નથી અને એ વટાવી શકાતાં નથી, છતાં એ ચોપડો અમે કંઈક કીમતી હોય એ રીતે જ સાચવીએ છીએ, કારણ કે છે જ: પાટિયાની સ્થિતિ પરનો તમારો ભરોસો.
સર્વરને પોતાને છેતરતાં શું રોકે છે?
આ જ સાચો સવાલ છે, અને મોટા ભાગની રમતોને આશા હોય છે કે તમે એ ક્યારેય પૂછશો નહીં. છાનામાના પાસા નાખતું સર્વર, જેની તરફેણ કરે એના માટે દયાળુ દાવ નાખી શકે, અને તમને એ ક્યારેય દેખાશે નહીં. દરેક દાવ સંભવિત લાગે છે. પાસા આવા જ હોય છે.
એટલે એ સત્તા અમે અમારી પાસેથી જ છીનવી લીધી. રમત શરૂ થાય તે પહેલાં સર્વર એક ગુપ્ત બીજ બનાવે છે અને તેનું SHA-256 વચન પ્રગટ કરે છે. પછી દરેક દાવ એ જ બીજમાંથી HMAC-SHA256 વડે કઢાય છે, એક પછી એક, ક્રમમાં. રમત પૂરી થાય એટલે સર્વર બીજ ખુલ્લું કરે છે. પહેલા દાવ પહેલાં અપાયેલા વચન સાથે બીજ મળે છે કે નહીં અને રમતનો દરેક દાવ એમાંથી જ આવે છે કે નહીં એ કોઈ પણ ચકાસી શકે. ગૂઢલિપિના અર્થમાં, બંને ખેલાડીમાંથી કોઈએ કૂકરીને અડ્યા પહેલાં જ તમારા પાસા નક્કી થઈ ગયા હતા. શૂન્યમા દાવે અમે પ્રગટ કરેલું વચન તોડ્યા વગર બારમા દાવને વાળવો અમારા માટે શક્ય જ નહોતું.
આમાંના કશા માટે અમારો શબ્દ માનવાની જરૂર નથી. orion.arthea.ai/verify પરની ચકાસણી આખી સાંકળ તમારા બ્રાઉઝરમાં, Web Crypto વડે, તમારા યંત્ર પર, રમતના જાહેર રેકોર્ડ પરથી ફરી ગણે છે. ખાતું નહીં, ઇન્સ્ટોલ નહીં. orion.arthea.ai/go નું બારણું App Store અને Google Play ની કડીઓ લઈને ઊભું છે અને અત્યારે શું ઉપલબ્ધ છે એ હંમેશાં બતાવે છે.