माझा परिपूर्ण टेट्रिस

प्रकल्पाचे GitHub भांडार



हे काय आहे

Tetris हा एक दिग्गज खेळ आहे आणि मला तो खूप आवडतो. मला हा खेळ खरोखरच आवडतो आणि तो खेळण्यात मला आनंद मिळतो. ताण कमी करण्यासाठी हा एक उत्तम उपाय आहे. एका मनोरंजक सप्ताहांत प्रकल्पासाठी, vibe codingच्या तत्त्वांचा वापर करून, डेस्कटॉप आणि मोबाइल दोन्हीसाठी तयार केलेला ब्राउझर गेम/अॅप म्हणून हा खेळ बनवण्याचे मी ठरवले. या आवृत्तीची मोबाइल बाजू Play-Tetrisपासून प्रेरित आहे, ज्यामध्ये स्वाइप-आधारित नियंत्रणांसह खरोखरच छान मोबाइल रचना आहे. माझी टेट्रिसची अंमलबजावणी येथे पाहा आणि खेळा; Tetrisची ही माझ्या मते सर्वात “परिपूर्ण” आवृत्ती आहे.



माझ्या टेट्रिसच्या आवृत्तीचा गेमप्ले, स्वतःसाठी तो येथे खेळा

कोडच्या पलीकडे

पोर्टफोलिओ प्रकल्प म्हणून टेट्रिसची नक्कल तयार करण्यासाठी किंवा काहीतरी नवीन शिकण्यासाठी मी हे सुरू केले नव्हते. मला त्याची खरोखर गरज होती म्हणून मी ते तयार केले. जेव्हा मी तणावाखाली असतो—कामातील एखादा कठीण आठवडा असो किंवा आयुष्याचा सगळा भार एकवटत असो—तेव्हा स्वतःला पुन्हा सावरायला मदत करणाऱ्या मोजक्या आरोग्यदायी गोष्टींपैकी टेट्रिस एक आहे. तणावाखाली असताना मी खूप खाण्याकडे वळतो, जे कालांतराने वाढत जाते; त्यामुळे कोणतेही तोटे नसलेली आणि उपयोगी ठरणारी एखादी गोष्ट माझ्यासाठी खूप महत्त्वाची आहे. फक्त 10 ते 30 मिनिटे चौकोन खाली सोडल्यावर माझ्या मेंदूची जणू थोडी साफसफाई झाल्यासारखे वाटते. माझ्यासाठी हे केवळ सहज मन रमवणे नाही; त्या तणावाला ओतण्यासाठी एखादी साधी आणि एकाग्र करणारी गोष्ट मिळवण्याचा हा एक मार्ग आहे. टेट्रिस मेंदूच्या अनाहूत आठवणी आणि तणाव हाताळण्याच्या पद्धतीवर परिणाम करू शकतो, असे दाखवणारे काही छान संशोधनही आहे—उदाहरणार्थ, आघातविषयक चित्रपटांच्या प्रयोगांमध्ये, खऱ्या अपघातांनंतर उपचार घेतलेल्या लोकांमध्ये, आणि मोजता येणाऱ्या मेंदूतील बदलांसह उपचारांना पूरक म्हणून. या खेळाला वैद्यकीय उपचारात रूपांतरित करण्याचा माझा प्रयत्न नाही, पण मला आधीपासून जाणवणाऱ्या गोष्टीमागे खरे विज्ञान असू शकते—टेट्रिस लोकांना तणावाचा सामना करण्यास खरोखर मदत करू शकतो—हे पाहणे छान आहे.

म्हणून खेळण्यासाठी टेट्रिसची चांगली आवृत्ती शोधू लागलो; पण समस्या अशी होती की मला ज्या पद्धतीने खेळायचे होते, त्यासाठी बाहेर उपलब्ध असलेली कोणतीही गोष्ट खरोखर योग्य नव्हती. iOS App Storeवरील मोबाइल अॅप्स जाहिराती आणि सूक्ष्म-व्यवहारांनी भरलेली आहेत. वेब आवृत्त्या मंद होत्या किंवा फोनवर अतिशय खराब वाटत होत्या. क्लासिक NES आवृत्ती उत्तम आहे, पण त्यासाठी अनुकरणक आणि अतिरिक्त हार्डवेअर आवश्यक आहे. ही समस्या सुटेल असा विचार करून मी Miyoo Miniसुद्धा विकत घेतले; पण शेवटी टेट्रिस खेळण्यासाठी माझ्यासोबत दुसरे उपकरणच घेऊन फिरत राहिलो. योग्य आवृत्ती शोधण्यात लागणारा वेळ पाहता, ती स्वतः तयार करण्यास त्यापेक्षा कमी वेळ लागेल, हे एका टप्प्यावर माझ्या लक्षात आले.

आधुनिक ब्राउझर, Claude Codeसारखी LLM साधने आणि vibe codingसारख्या कार्यपद्धतींमुळे मला हवी असलेली टेट्रिसची आवृत्ती स्वतः तयार करण्यासाठी हीच योग्य वेळ आहे असे शेवटी वाटले. जलद, साधी, जाहिरातीविना, खात्याविना, अॅप स्टोअरविना. फक्त माझ्या फोनवर आणि लॅपटॉपवर चालणारा आणि ज्यावर माझे पूर्ण नियंत्रण असेल असा ब्राउझर गेम. साधारण एका दिवसात माझ्याकडे कार्यरत आवृत्ती तयार झाली; आणि डेस्कटॉप तसेच मोबाइलवर ती मजबूत करण्यासाठी आणि योग्य अनुभव मिळवण्यासाठी अधूनमधून सुमारे एक आठवडा काम केल्यानंतर मला ती आवडली.

मी हे शेअर करत आहे, कारण यामुळे मला जशी तणावमुक्ती मिळते, तशी आणखी एका व्यक्तीलाही मिळाली, तरी मला खूप आनंद होईल. ही छोटी गोष्ट आहे, पण कधीकधी नेमकी अशीच छोटी गोष्ट आपल्याला आवश्यक असते.

वैशिष्ट्ये

  • क्लासिक 10x20 टेट्रिस बोर्ड
  • डेस्कटॉपवर पूर्ण कीबोर्ड नियंत्रणे आणि मोबाइलवर स्पर्श-हावभाव नियंत्रणे
  • प्रमाणित सात-बॅग तुकडा यादृच्छिकीकरण
  • धरून ठेवलेल्या तुकड्याचे आणि पुढील तुकड्याचे पूर्वदृश्य
  • तुकडे कुठे पडतील हे दाखवणारे भुताटकी तुकड्याचे प्रक्षेपण
  • गतिशील लॉक विलंबासह पातळी-आधारित वेग वक्र
  • गुण, ओळी, पातळी आणि उच्च गुणांची स्थानिक संचयात जतन केलेली नोंद
  • हळू ड्रॉप आणि झटपट ड्रॉपसाठी गुणांकन
  • पुन्हा सुरू करणे, रीस्टार्ट करणे, बाहेर पडणे, संगीत/SFX बंद करणे आणि स्रोत कोडाची लिंक यांसह गेममधील मेनू
  • ध्वनी परिणामासह ओळ साफ करण्याचे फ्लॅश अॅनिमेशन
  • iOS सुरक्षित क्षेत्रासाठी समर्थन (Dynamic Island, नॉच, होम इंडिकेटर)
  • Service Workerद्वारे ऑफलाइन समर्थन (पहिल्या भेटीनंतर इंटरनेटशिवाय कार्य करते)
  • PWA म्हणून स्थापित करता येते (अॅपसारख्या अनुभवासाठी iOS/Androidच्या होम स्क्रीनवर जोडा)

नियंत्रणे

डेस्कटॉप (कीबोर्ड)

कृती कळा
हलवणे ← → किंवा A D
हळू ड्रॉप ↓ किंवा S
झटपट ड्रॉप Space
घड्याळाच्या दिशेने फिरवणे ↑ W X
घड्याळाच्या विरुद्ध दिशेने फिरवणे Z
धरून ठेवणे C किंवा LShift
मेनू Esc किंवा M
स्रोत कोड G (शीर्षक स्क्रीनवर)

मोबाइल (स्पर्श)

कृती हावभाव
हलवणे डावीकडे / उजवीकडे स्वाइप करा
हळू ड्रॉप धरून खाली ओढा
झटपट ड्रॉप खाली जलद झटका द्या
घड्याळाच्या दिशेने फिरवणे टॅप करा
धरून ठेवणे वर जलद झटका द्या

कठीणतेचा वक्र

या आवृत्तीतील वेगाचा वक्र आणि लॉक विलंब क्लासिक तसेच आधुनिक टेट्रिस खेळांमध्ये कठीणतेची प्रगती कशी हाताळली जाते, यावरील संशोधनाचा वापर करून समायोजित केले आहेत. मूळ NES Tetrisमध्ये, 29व्या पातळीवर गुरुत्वाकर्षण प्रति फ्रेम एका ओळीपर्यंत पोहोचते; हीच प्रसिद्ध “kill screen” बनली, जिथे बहुतेक मानवांसाठी खेळ प्रभावीपणे अखेळण्याजोगा होतो. तो खरोखर आखलेला शेवट नव्हता; हार्डवेअरचा परिणाम आणि DAS (Delayed Auto Shift) ड्रॉपच्या वेगाशी जुळवून घेण्यासाठी खूपच धीमा असल्याचा तो परिणाम होता. 2024 मध्ये Willis Gibsonने पातळी 157 वर खेळ पुढे नेऊन क्रॅश केला, तेव्हा हे सिद्ध झाले.



क्लासिक 1989 nes टेट्रिसचा गेमप्ले (मूळ स्रोत)

TGM (Tetris: The Grand Master)सारख्या आधुनिक खेळांनी ही समस्या वेगळ्या पद्धतीने सोडवली. खेळ मोडेपर्यंत तुकडे अधिकाधिक वेगाने खाली पाडण्याऐवजी, TGM गुरुत्वाकर्षण 20G (तात्काळ ड्रॉप)वर मर्यादित करते आणि नंतर कठीणता वाढवण्यासाठी लॉक विलंब व DASसारख्या इतर वेळेच्या खिडक्या कमी करते. Tetris Guideline प्रमाणात 15 पर्यंत हालचाल रीसेटसह 500ms लॉक विलंब वापरला जातो आणि ही आवृत्ती त्याचे पालन करते. TGM2 Death mode आणि TGM3 Shiraseवरील संशोधनातून असे दिसून आले की स्पर्धात्मक खेळासाठी व्यावहारिक किमान मर्यादा जलद DASसह सुमारे 250ms लॉक विलंबाची आहे, तर 133msपेक्षा कमी वेळ तज्ज्ञांच्या क्षेत्रात येतो.

या सर्वाच्या आधारे, येथे वेगाचा वक्र तात्काळ ड्रॉपऐवजी प्रति ओळ 33msवर गुरुत्वाकर्षण मर्यादित करतो (NES पातळी 19 ते 28प्रमाणे), आणि उच्च पातळ्यांवर DAS 170msपासून 100msपर्यंत कमी होते, ज्यामुळे लॉक विलंबादरम्यान तुम्ही बोर्ड ओलांडून जाऊ शकता. उच्च पातळ्या अत्यंत वेगवान पण तरीही न्याय्य वाटाव्यात, तसेच कच्च्या वेगाने तुमच्या इनपुटला मागे टाकू देण्याच्या मूळ NES पद्धतीपेक्षा Tetris 99 आणि TGM अंतिम टप्प्यातील कठीणता ज्या पद्धतीने हाताळतात त्याच्या अधिक जवळचा अनुभव मिळावा, हा यामागील उद्देश होता.

अंतर्गत रचना

  • डेस्कटॉप आणि मोबाइल (उभ्या दिशेतील) दोन्हीसाठी अनुकूलित प्रतिसादक्षम रचना
  • कार्यक्षमतेसाठी पूर्व-रेंडर केलेले ब्लॉक स्प्राइट्स आणि ग्रिड पार्श्वभूमी
  • तुकडे फिरवण्यासाठी Super Rotation System (SRS) शैलीतील वॉल किक्सचा वापर
  • विश्वासार्ह झटका विरुद्ध ड्रॅग फरकासाठी वेग-आधारित स्पर्श हावभाव शोध
  • गुरुत्वाकर्षणाचा वेग आणि लॉक विलंबासाठी पातळी-आधारित वेळ प्रणाली
  • उच्च गुण आणि ऑडिओ सेटिंग्ज localStorageमध्ये जतन केलेल्या
  • पार्श्वसंगीताचा स्रोत NmCCQxVBfyM
  • ओळ साफ करण्याच्या ध्वनी परिणामाचा स्रोत UMViM2tHrOk
  • हा प्रकल्प MIT License अंतर्गत पूर्णपणे मुक्त-स्रोत आहे
  • पुढील AI साधनांचा वापर करून तयार केले:
    • Claude Code CLI - कोडिंग/विकास
    • Gemini CLI - कोडिंग/विकास
    • Cha CLI - कोडिंग आणि लेखन
    • xAI Grok - लोगो आणि आयकॉन
    • Perplexity - बगचे संशोधन
    • Google Search - SVG आणि इतर साधने शोधणे
    • YouTube + yt-dlp - ऑडिओ क्लिप्स मिळवणे
    • FFmpeg - ऑडिओ फाइल्स संपादित करणे

अंतिम विचार

हा अशा प्रकल्पांपैकी एक होता, ज्यामागची प्रेरणा तांत्रिक नव्हे, तर वैयक्तिक होती. मला फक्त माझ्या इच्छेनुसार चालणारी टेट्रिसची एक आवृत्ती हवी होती—जाहिरातींशिवाय, अतिरिक्त हार्डवेअरशिवाय आणि कधीही नाहीसे होऊ शकणाऱ्या किंवा बदलू शकणाऱ्या दुसऱ्या कोणाच्या अॅपवर अवलंबून न राहता. आधुनिक एआय साधने आणि व्हाइब कोडिंग वापरून, अधूनमधून केलेल्या कामाच्या सुमारे एका आठवड्यात कल्पनेपासून एक सुबक खेळ तयार करता आला, ही गोष्ट सॉफ्टवेअर विकासाच्या बाबतीत आपण सध्या कुठे आहोत याबद्दल बरेच काही सांगते.

हा प्रकार तयार केल्यापासून मी तो जवळजवळ दररोज वापरत आहे आणि मला जे हवे आहे ते तो अजूनही अगदी तस्सेच करतो. जे काही मला तणाव देत आहे त्यापासून थोडावेळ दूर जाण्यास, काही मिनिटांसाठी एखाद्या साध्या गोष्टीवर लक्ष केंद्रित करण्यास आणि अधिक स्वच्छ मनाने परत येण्यास तो मला मदत करतो. तुम्ही तो वापरून पाहिला आणि त्याचा तुमच्यावरही असाच परिणाम झाला, तर त्याहून चांगला परिणाम मी मागू शकत नाही. आणि तुम्हाला त्याची फोर्क प्रत तयार करायची असेल, वेगाची वक्ररेषा बदलायची असेल, नियंत्रणे बदलायची असतील किंवा त्यावर आधारित पुढे काही तयार करायचे असेल, तर नक्की करा. तुम्हाला एखादा दोष आढळला किंवा काही सूचना असेल, तर गिटहब संग्रहालयावर बिनधास्त समस्या नोंदवा. हा प्रकल्प मुक्त-स्रोत करण्यामागचा संपूर्ण हेतू हाच आहे.