इंजीनियरिंग
15 से 30 खेलों तक: मल्टी-स्पोर्ट प्लेटफ़ॉर्म बनाने में असल में क्या लगता है
किसी खेल को जोड़ना कोई कॉन्फ़िग बदलाव नहीं है। यह नया नियम-सेट, नया स्कोरिंग मॉडल और नए अपवादों का नया समूह है। जानिए Zeetius ने अपना दायरा दोगुना कैसे किया।
जब लोग सुनते हैं कि कोई प्लेटफ़ॉर्म तीस खेल सपोर्ट करता है, तो वे आम तौर पर मान लेते हैं कि कहीं एक ड्रॉपडाउन है और उसके पीछे नियमों की एक तालिका। एक पंक्ति जोड़ो, खेल मिल गया। शुरू में हमने भी कुछ ऐसा ही सोचा था। यह बिल्कुल सच नहीं है, और इसकी वजह इस कारोबार की सबसे दिलचस्प इंजीनियरिंग समस्या है।
हर खेल की इस पर अलग राय है कि स्कोर आख़िर होता क्या है
बैडमिंटन 21 तक के तीन में से सर्वश्रेष्ठ गेम का खेल है, दो के अंतर से जीत और 30 पर कैप। टेबल टेनिस 11 तक के पाँच या सात में से सर्वश्रेष्ठ गेम का है, दो के अंतर से जीत, कोई कैप नहीं, और सर्विस हर दो पॉइंट पर बदलती है। कुश्ती में पीरियडों के भीतर अंक लगातार जुड़ते हैं और चित (फ़ॉल) होते ही मुकाबला तुरंत खत्म हो सकता है। बास्केटबॉल में रुकने वाली घड़ी है। क्रिकेट में पारियाँ हैं। चेस बॉक्सिंग एक ही बाउट में दो बिल्कुल अलग स्कोरिंग प्रणालियों के बीच बारी-बारी से चलती है।
ऐसी कोई साझा अमूर्त संरचना नहीं है जो इन सबको समेटे और इतनी धुँधली भी न हो जाए कि काम की न रहे। एक सामान्य "पॉइंट" फ़ील्ड, जिसका मतलब हर खेल में अलग हो, कोई मॉडल नहीं है। वह बस अतिरिक्त झंझट वाला एक टेक्स्ट बॉक्स है, और उस डेटा का हर उपयोगकर्ता उसे समझने के लिए खेल का लॉजिक दोबारा लिखने को मजबूर होता है।
हमने क्या तय किया: खेल नहीं, पैराडाइम
सफलता तब मिली जब हमने खेलों को मॉडल करना छोड़कर स्कोरिंग पैराडाइम को मॉडल करना शुरू किया। तीस खेलों के नीचे असल में गिनती के कुछ ही सचमुच अलग स्वरूप निकले:
- सेट-और-रैली वाले खेल — बैडमिंटन, टेबल टेनिस, टेनिस, पिकलबॉल, पैडल, वॉलीबॉल। मैच सेटों का क्रम है, सेट रैलियों का क्रम है, और हर रैली का ठीक एक विजेता होता है। फ़र्क पूरी तरह लक्ष्य स्कोर, दो पॉइंट के नियम, कैप और सर्विस के क्रम में है।
- घड़ी-और-संचय वाले खेल — फ़ुटबॉल, बास्केटबॉल, हैंडबॉल, हॉकी। मैच समय-सीमा वाले पीरियडों का क्रम है। पॉइंट ऐसी घटनाओं में जुड़ते हैं जो किसी टीम और अक्सर किसी खिलाड़ी के नाम दर्ज होती हैं, और घड़ी खुद एक ऐसी स्थिति है जो शुरू, बंद और खत्म हो सकती है।
- बाउट वाले खेल — कुश्ती, चेस बॉक्सिंग। पीरियड, लगातार चलती स्कोरिंग, और समाप्ति की ऐसी शर्तें जो किसी भी पल लागू होकर बाकी सब पर भारी पड़ सकती हैं।
जब किसी खेल को एक पैराडाइम में रख दिया जाता है, तो उसे जोड़ना नया लॉजिक लिखने की जगह उसके पैरामीटर घोषित करने का काम बन जाता है। पिकलबॉल में हफ़्ते नहीं, दिन लगे, क्योंकि वह असामान्य सर्विस नियम और अलग लक्ष्य स्कोर वाला सेट-और-रैली खेल है, और इन दोनों के लिए पैराडाइम में पहले से जगह थी।
नियम-सेट डेटा है, इंजन कोड है
इसी बँटवारे की वजह से तीस खेलों को वह टीम संभाल पाती है जो तीस गुना बड़ी नहीं है। दो पॉइंट के अंतर वाले लॉजिक में एक सुधार एक बार होता है और छह खेलों में एक साथ सही हो जाता है। नया खेल पैराडाइम को मिले हर बग फ़िक्स विरासत में पा लेता है। और जब कोई फ़ेडरेशन कोई नियम बदलती है, जो बाहर वालों की उम्मीद से कहीं ज़्यादा बार होता है, तो वह डेटा में बदलाव होता है, जिसकी समीक्षा होती है और जिसे डिप्लॉय किया जाता है, न कि कोड में ऐसा बदलाव जिसे शून्य से सोचना पड़े।
वह हिस्सा जिसके बारे में कोई आगाह नहीं करता: किनारे के मामले
पैराडाइम आसान रास्ते को संभाल लेते हैं। असली काम का लगभग आधा हिस्सा उस स्थिति में है जब खेल सहयोग नहीं करता।
- एक खिलाड़ी रैली के बीच में रिटायर हो जाता है। गेम किसे मिलेगा, और नतीजों के आर्काइव में स्कोरलाइन क्या दिखेगी?
- अंपायर दो रैली पहले दर्ज हुए एक पॉइंट को सुधारता है। इसके बाद की हर चीज़, यानी लाइव पेज, जीत की संभावना और ब्रैकेट, को पेज रीलोड किए बिना खुद को दुरुस्त करना होता है।
- मैच शुरू होने से पहले ही वॉकओवर दर्ज हो जाता है। कोई स्कोर नहीं है, पर नतीजा है, और ब्रैकेट को फिर भी आगे बढ़ना है।
- एक ही ड्रॉ में दो खिलाड़ियों का नाम एक जैसा है। स्कोरिंग स्क्रीन को उनमें फ़र्क करना आना चाहिए, और अंपायर को सदस्य ID पर आँखें गड़ाने की ज़रूरत न पड़े।
- कोर्ट के किनारे कनेक्टिविटी दम तोड़ देती है, और स्कूल के जिम में तो पक्का। स्कोर स्थानीय रूप से कतार में रहने चाहिए और नेटवर्क लौटने पर क्रम से मिलान होना चाहिए।
आख़िरी वाली बात ने किसी भी नियम के फ़र्क से ज़्यादा आर्किटेक्चर को आकार दिया। कोर्ट का किनारा नेटवर्क के लिहाज़ से प्रतिकूल माहौल है, और जो स्कोरिंग सिस्टम कनेक्टिविटी मानकर चलता है, वह मैच गँवा देता है।
अगर आप इंजीनियर नहीं हैं, तब भी यह क्यों मायने रखता है
क्योंकि इससे तय होता है कि कोई फ़ेडरेशन असल में क्या माँग सकता है। जिस प्लेटफ़ॉर्म पर हर खेल अलग से बना हो, वहाँ "क्या आप कलरिपयट्टू सपोर्ट कर सकते हैं?" का मतलब रोडमैप का एक तिमाही है। पैराडाइम पर आधारित प्लेटफ़ॉर्म पर ईमानदार जवाब अक्सर उलटा सवाल होता है: स्कोरिंग का स्वरूप क्या है, और वह कहाँ हमारी मान्यताओं को तोड़ता है? अगर जवाब यह निकले कि वह असामान्य पैरामीटर वाला सेट-और-रैली खेल है, तो काम हफ़्तों का है। अगर वह सचमुच नया पैराडाइम है, तो ज़्यादा समय लगेगा, और हम यह साफ़ कह देंगे।
तीस खेल कोई उपलब्धि नहीं है। उपलब्धि यह है कि इकतीसवें खेल को बिना कुछ दोबारा लिखे हाँ कह पाएँ।