"जल्दी से अनुकूलन मत करो" का मतलब यह नहीं है "चीजों को करने के लिए सबसे खराब संभव तरीका उठाओ"। आपको अभी भी प्रदर्शन निहितार्थ पर विचार करने की आवश्यकता है (जब तक कि आप सिर्फ प्रोटोटाइप नहीं हैं)। बिंदु अन्य को अपंग करने के लिए नहीं है, विकास में उस बिंदु पर और अधिक महत्वपूर्ण चीजें - जैसे लचीलापन, विश्वसनीयता आदि सरल, सुरक्षित अनुकूलन चुनें - उन चीजों को चुनें जिन्हें आप सीमित करते हैं, और जिन चीजों को आप मुक्त रखते हैं; लागत का ध्यान रखें। क्या आपको मजबूत-टाइपिंग का उपयोग करना चाहिए? अधिकांश खेलों ने किया और ठीक काम किया; यदि आपको गेमप्ले के लिए लचीलेपन के दिलचस्प उपयोग मिले तो आपको इसे हटाने में कितना खर्च आएगा?
अनुकूलित कोड, विशेष रूप से "स्मार्ट" कोड को संशोधित करना बहुत कठिन है। यह हमेशा एक विकल्प होता है जो कुछ चीजों को बेहतर बनाता है, और अन्य को बदतर (उदाहरण के लिए, आप मेमोरी उपयोग के लिए सीपीयू समय का व्यापार कर सकते हैं)। उस विकल्प को बनाते समय, आपको सभी निहितार्थों के बारे में पता होना चाहिए - वे विनाशकारी हो सकते हैं, लेकिन वे सहायक भी हो सकते हैं।
उदाहरण के लिए, कमांडर कीन, वोल्फेंस्टीन और डूम प्रत्येक एक अनुकूलित रेंडरिंग इंजन के शीर्ष पर बने थे। प्रत्येक की अपनी "चाल" थी जो खेल को पहले स्थान पर लाने में सक्षम थी (प्रत्येक में समय के साथ और अधिक अनुकूलन विकसित हुए, लेकिन यह महत्वपूर्ण नहीं है)। यह ठीक है । खेल के बहुत मूल को अनुकूलित करना ठीक है, ऐसा लगता है कि खेल को संभव बनाता है; विशेष रूप से यदि आप नए क्षेत्र की खोज कर रहे हैं जहां यह विशेष रूप से अनुकूलित सुविधा आपको गेम डिज़ाइनों पर विचार करने की अनुमति देती है जो बहुत अधिक खोज नहीं की गई थीं। अनुकूलन की सीमाएँ आपको दिलचस्प गेमप्ले दे सकती हैं और साथ ही आरटीएस गेम में इकाई गणना की सीमाएँ प्रदर्शन को बेहतर बनाने के तरीके के रूप में शुरू हो सकती हैं, लेकिन उनके पास गेमप्ले का प्रभाव भी है।
लेकिन ध्यान दें कि इन उदाहरणों में से प्रत्येक में, अनुकूलन के बिना खेल मौजूद नहीं हो सकता है। वे "पूरी तरह से अनुकूलित" इंजन के साथ शुरू नहीं हुए - उन्होंने नंगे आवश्यकता के साथ शुरुआत की, और अपने तरीके से काम किया। वे नई तकनीक विकसित कर रहे थे, और उनका उपयोग मज़ेदार गेम बनाने के लिए कर रहे थे। और इंजन ट्रिक्स कोडबेस के छोटे हिस्से के रूप में संभव के रूप में सीमित थे - भारी अनुकूलन केवल उस समय पेश किए गए थे जब गेमप्ले ज्यादातर किया गया था, या जहां इसने एक दिलचस्प नई सुविधा को उभरने की अनुमति दी थी।
अब एक गेम पर विचार करें जिसे आप बनाना चाहते हैं। क्या वास्तव में कुछ तकनीकी चमत्कार है जो उस खेल को बनाता या तोड़ता है? शायद आप एक अनंत दुनिया पर एक खुली दुनिया के खेल की कल्पना कर रहे हैं। क्या यह वास्तव में खेल का केंद्रीय टुकड़ा है? खेल बस इसके बिना काम नहीं करेगा? हो सकता है कि आप एक ऐसे खेल के बारे में सोच रहे हों, जहाँ भू-भाग बिना सीमा के विकृत हो, यथार्थवादी भूविज्ञान और इस तरह के; क्या आप इसे एक छोटे दायरे के साथ काम कर सकते हैं? यह 3 डी के बजाय 2 डी में काम करेगा? जितनी जल्दी हो सके कुछ मजेदार हो जाओ - भले ही अनुकूलन के लिए आपको अपने मौजूदा कोड के एक बड़े हिस्से को फिर से काम करने की आवश्यकता हो, यह इसके लायक हो सकता है; और आप यह भी महसूस कर सकते हैं कि चीजों को बड़ा बनाना वास्तव में खेल को बेहतर नहीं बनाता है।
बहुत सारे अनुकूलन के साथ हाल के खेल के एक उदाहरण के रूप में, मैं फैक्टरियो को इंगित करता हूं। खेल का एक महत्वपूर्ण हिस्सा बेल्ट हैं - उनमें से कई हजारों हैं, और वे आपके कारखाने के चारों ओर सामग्री के कई व्यक्तिगत बिट्स ले जाते हैं। क्या खेल एक भारी-अनुकूलित बेल्ट इंजन के साथ शुरू हुआ था? नहीं! वास्तव में, मूल बेल्ट डिजाइन को अनुकूलित करना लगभग असंभव था - इसने बेल्ट पर वस्तुओं का एक भौतिक सिमुलेशन किया, जिसने कुछ दिलचस्प चीजें बनाईं जो आप कर सकते हैं (यह तरीका है जो आपको "आकस्मिक" गेमप्ले - गेमप्ले में आश्चर्य होता है) डिजाइनर), लेकिन आप बेल्ट पर हर एक आइटम अनुकरण करना था। हजारों बेल्टों के साथ, आपको शारीरिक रूप से नकली वस्तुओं के दसियों हिस्से मिलते हैं - यहां तक कि इसे हटाने और बेल्ट को काम करने देने से आप संबंधित सीपीयू समय में 95-99% तक कटौती कर सकते हैं, यहां तक कि मेमोरी इलाके जैसी चीजों पर विचार किए बिना। लेकिन यह केवल तब करना उपयोगी है जब आप वास्तव में उन सीमाओं तक पहुंचते हैं।
बहुत कुछ सब कुछ है कि बेल्ट के साथ कुछ भी करने के लिए बेल्ट को अनुकूलित करने की अनुमति देने के लिए रीमेक किया जाना था। और बेल्ट को अनुकूलित करने की आवश्यकता है, क्योंकि आपको एक बड़े कारखाने के लिए बहुत अधिक बेल्ट की आवश्यकता होती है, और बड़े कारखाने खेल का एक आकर्षण हैं। आखिर, अगर आपके पास बड़े कारखाने नहीं हो सकते हैं, तो अनंत दुनिया क्यों है? अजीब बात है कि आपको पूछना चाहिए - शुरुआती संस्करण नहीं :) इस खेल को फिर से तैयार किया गया था और कई बार फिर से शुरू किया गया था कि वे अब कहाँ हैं - एक 100% ग्राउंड-रीमेक सहित जब उन्हें एहसास हुआ कि जावा में जाने का रास्ता नहीं है इस तरह का खेल और C ++ पर स्विच किया गया। और यह फैक्टरियो के लिए बहुत अच्छा काम करता था (हालांकि यह अभी भी एक अच्छी बात थी कि इसे गेट-गो से अनुकूलित नहीं किया गया था - खासकर क्योंकि यह एक शौक परियोजना थी, जो शायद ब्याज की कमी के लिए अन्यथा विफल हो सकती है)।
लेकिन बात यह है, वहाँ हैंबहुत सी चीजें जो आप एक सीमित दायरे की फैक्ट्री के साथ कर सकते हैं - और कई गेमों ने ऐसा ही दिखाया है। स्वतंत्रता से मौज-मस्ती के लिए सीमाएं और भी अधिक सशक्त हो सकती हैं; यदि "मानचित्र" अनंत थे, तो स्पेसकैम अधिक मजेदार होगा? यदि आपने "बेल्ट" को बहुत अधिक अनुकूलित के साथ शुरू किया है, तो आप उस रास्ते पर जाने के लिए बहुत अधिक मजबूर होंगे; और आप अन्य डिज़ाइन दिशाओं का पता नहीं लगा सके (जैसे कि भौतिक-सिम्युलेटेड कन्वेयर बेल्ट के साथ आप क्या दिलचस्प चीजें देख सकते हैं)। आप अपने संभावित डिज़ाइन-स्पेस को सीमित कर रहे हैं। ऐसा नहीं लग सकता है क्योंकि आप बहुत सारे अधूरे खेल नहीं देखते हैं, लेकिन कठिन हिस्सा सही हो रहा है - आपके द्वारा देखे जाने वाले प्रत्येक मजेदार खेल के लिए, शायद सैकड़ों हैं जो बस वहां नहीं पहुंच सकते थे और (या इससे भी बदतर, भयानक गंदगी के रूप में जारी किया गया)। यदि अनुकूलन आपको ऐसा करने में मदद करता है - आगे बढ़ें। अगर यह नहीं ... यह समय से पहले होने की संभावना है। अगर आपको लगता है कि कुछ गेमप्ले मैकेनिक बढ़िया काम करता है, लेकिन सही मायने में चमक के लिए अनुकूलन की जरूरत है - आगे बढ़ें। यदि आपके पास दिलचस्प यांत्रिकी नहीं है,उन्हें अनुकूलित न करें । सबसे पहले मज़े की तलाश करें - आपको पता चलेगा कि ज्यादातर आशाएँ उसके साथ मदद नहीं करती हैं, और अक्सर हानिकारक होती हैं।
अंत में, आप एक महान, मजेदार खेल है। यह अब अनुकूलन करने के लिए समझ में आता है ? हा! यह अभी भी उतना स्पष्ट नहीं है जितना आप सोच सकते हैं। क्या कुछ मजेदार है?आप इसके बजाय कर सकते हैं? मत भूलो कि आपका समय अभी भी सीमित है। सब कुछ एक प्रयास करता है, और आप उस प्रयास पर ध्यान केंद्रित करना चाहते हैं जहां यह सबसे ज्यादा मायने रखता है। हां, भले ही आप "फ्री गेम", या "ओपन सोर्स" गेम बना रहे हों। देखो कैसे खेल खेला जाता है; सूचना जहां प्रदर्शन एक अड़चन बन जाता है। क्या उन स्थानों को अधिक मज़ेदार बनाने के लिए अनुकूलन करना (जैसे कभी बड़ा निर्माण, कभी अधिक पेचीदा कारखानों का निर्माण)? क्या यह आपको अधिक खिलाड़ियों को आकर्षित करने की अनुमति देता है (जैसे कमजोर कंप्यूटर, या विभिन्न प्लेटफार्मों पर)? आपको हमेशा प्राथमिकता देने की जरूरत है - अनुपात को बढ़ाने के लिए प्रयास करें। आपको अपने गेम खेलने से और दूसरों को गेम खेलने से देखने की संभावना है कि आपको कम लटकने वाले फल मिलेंगे। लेकिन महत्वपूर्ण भाग पर ध्यान दें - वहां पहुंचने के लिए, आपको एक खेल की आवश्यकता है । उस पर ध्यान दें।
शीर्ष पर एक चेरी के रूप में, विचार करें कि अनुकूलन कभी समाप्त नहीं होता है। यह थोड़ा चेक मार्क वाला कार्य नहीं है जिसे आप समाप्त करते हैं और अन्य कार्यों के लिए आगे बढ़ते हैं। हमेशा "एक और अनुकूलन" आप कर सकते हैं, और किसी भी विकास का एक बड़ा हिस्सा प्राथमिकताओं को समझ रहा है। आप अनुकूलन के लिए अनुकूलन नहीं करते हैं - आप इसे एक विशेष लक्ष्य प्राप्त करने के लिए करते हैं (जैसे कि "स्क्रीन पर 200 इकाइयाँ 333 मेगाहर्ट्ज पेंटियम पर" एक महान लक्ष्य है)। टर्मिनल लक्ष्य का ध्यान न रखें क्योंकि आप मध्यवर्ती लक्ष्यों पर बहुत अधिक ध्यान केंद्रित करते हैं जो टर्मिनल टर्मिनल के लिए अब पूर्व-आवश्यकता भी नहीं हो सकते हैं।