আমার নিখুঁত টেট্রিস

প্রকল্পের গিটহাব রেপো



এটি কী

টেট্রিস একটি কিংবদন্তি গেম এবং আমি এটা খুবই উপভোগ করি। আমি গেমটি খুব পছন্দ করি এবং খেলার মাধ্যমে আনন্দ পাই। এটা একটি দুর্দান্ত চাপ হ্রাসকারী। একটি মজার উইকেন্ড প্রজেক্ট হিসেবে, আমি ব্রাউজার গেম/অ্যাপ হিসেবে ডেস্কটপ এবং মোবাইল উভয়ের জন্য ডিজাইন করে গেমটি তৈরি করার সিদ্ধান্ত নিলাম, ভাইব কোডিং-এর প্রিন্সিপল ব্যবহার করে। এই সংস্করণের মোবাইল দিকটি Play-Tetris-এর দ্বারা উদ্বুদ্ধ, যেটার সোয়াইপ-ভিত্তিক কন্ট্রোলগুলোর মাধ্যমে মোবাইলে খুব সুন্দর সেটআপ আছে। আমার টেট্রিস বাস্তবায়নটি এখানে খেলুন এখানে, এটি আমি মনে করি সবচেয়ে “নিখুঁত” সংস্করণের টেট্রিস



আমার সংস্করণের টেট্রিসের গেমপ্লে, নিজেরাই খেলুন এখানে

কোডের বাইরে

আমি টেট্রিস ক্লোন নির্মাণ করতে কোনো পোর্টফোলিও প্রজেক্ট হিসেবে বা নতুন কিছু শেখার জন্য শুরু করিনি। আমি এটা তৈরি করেছি কারণ আমি একে সত্যিই দরকার বোধ করেছিলাম। যখন আমি মানসিক চাপ অনুভব করি, সেটা অফিসে একটা কষ্টকর সপ্তাহ হোক বা সাধারণ জীবনজটলা, টেট্রিস এমন কিছু স্বাস্থ্যকর জিনিসগুলোর মধ্যে একটি যা আমাকে পুনরায় রিসেট করতে সাহায্য করে। চাপলে আমি সাধারণত অনেক খাই, যা সময়ের সঙ্গে বেড়ে যায়, তাই এমন কিছু থাকা বড় বিষয় আমার জন্য যেটা কোনো নেতিবাচক দিক ছাড়াই কাজ করে। মাত্র ১০ থেকে ৩০ মিনিট ব্লক ফেললে আমার মস্তিষ্কটা একটু পরিষ্কার হয়েছে মনে হয়। এটি আমার কাছে কেবল অনানুষ্ঠানিক শান্তি নয়, এটি এমন কিছু সহজ এবং ফোকাসড জিনিস যেখানে আমি সেই চাপ ঢেলে দিতে পারি। এমনকি কিছু চমৎকার গবেষণা আছে যা দেখায় টেট্রিস কীভাবে মস্তিষ্কের অনাকাঙ্ক্ষিত স্মৃতি এবং চাপ পরিচালনায় প্রভাব ফেলতে পারে, উদাহরণস্বরূপ ট্রমা ফিল্ম পরীক্ষায়, বাস্তব দুর্ঘটনার পর চিকিৎসা প্রাপ্ত মানুষের ক্ষেত্রে, এবং থেরাপির এক পরিপূরক হিসেবে মস্তিষ্কে পরিমাপযোগ্য পরিবর্তন সহ। আমি এই গেমটিকে কোনো চিকিৎসা পদ্ধতিতে পরিণত করার চেষ্টা করছি না, কিন্তু এটা দেখতে ভালো লাগে যে বাস্তবে বিজ্ঞানই সম্ভবত আমার অনুভবকৃত বিষয়গুলিকে সমর্থন করছে—টেট্রিস মানুষের চাপ মোকাবিলায় সত্যিই সাহায্য করতে পারে।

সুতরাং আমি খুঁজে বের করলাম একটি ভাল টেট্রিস সংস্করণ খেলার জন্য, এবং সমস্যা ছিল যে বাইরে যা ছিল তা আমার খেলার ধরণে মানানসই ছিল না। iOS অ্যাপ স্টোরের মোবাইল অ্যাপগুলো বিজ্ঞাপন ও মাইক্রোট্রানজ্যাকশনে ভরা। ওয়েব ভার্সনগুলো ফোনে দেরিতে চলত বা মন্দ লাগত। ক্লাসিক NES সংস্করণটা চমৎকার কিন্তু সেটার জন্য এমুলেটর এবং অতিরিক্ত হার্ডওয়্যার লাগত। আমি এমনকি একটি Miyoo Mini কিনে ফেলেছি ভাবেই যে এটা সমস্যা সমাধান করবে, এবং শেষ পর্যন্ত আমি কেবল একটি দ্বিতীয় ডিভাইস বহন করে টেট্রিস খেলতে শুরু করেছি। এক পর্যায়ে আমার উপলব্ধি হলো যে আমি উপযুক্ত সংস্করণ খুঁজতে যে সময় ব্যয় করছি তা থেকে সহজে নিজে একটি বানিয়ে ফেলতাম।

আধুনিক ব্রাউজার, Claude Code-এর মতো LLM টুলস, এবং ভাইব কোডিংয়ের মত ওয়ার্কফ্লোদের সাথে, অবশেষে নিজে যে টেট্রিস চাই তা তৈরি করার সঠিক সময় মনে হলো। দ্রুত, মিনিমাল, কোন বিজ্ঞাপন নেই, কোন অ্যাকাউন্ট নেই, কোনো অ্যাপ স্টোর নয়। কেবল একটি ব্রাউজার গেম যা আমার ফোন ও ল্যাপটপে কাজ করে এবং যেটার উপর আমি পুরো নিয়ন্ত্রণ রাখি। প্রায় একটি দিনের মধ্যে আমার কাছে একটি কাজ করা সংস্করণ ছিল, এবং ডেস্কটপ ও মোবাইল উভয়েই অনুভূতি ঠিক করার জন্য প্রায় এক সপ্তাহের অনিয়মিত কাজের পর আমি এতে সন্তুষ্ট ছিলাম।

আমি এটি শেয়ার করছি কারণ যদি এটি এমনকি আর একজন মানুষকেই আমাকে যেভাবে সাহায্য করে তেমনভাবে চাপ হ্রাস করতে সাহায্য করে, তবে সেটাই আমাকে সত্যিই খুশি করবে। এটা ছোট একটি জিনিস, কিন্তু কখনও কখনও ঠিকই একটি ছোট জিনিসই আপনার দরকারের সব কিছুই হতে পারে।

বৈশিষ্ট্যসমূহ

  • ক্লাসিক 10x20 টেট্রিস বোর্ড
  • ডেস্কটপে পূর্ণ কীবোর্ড নিয়ন্ত্রণ এবং মোবাইলে টাচ জেসচার নিয়ন্ত্রণ
  • স্ট্যান্ডার্ড সাত-ব্যাগ পিস র‌্যান্ডমাইজার
  • হোল্ড পিস এবং নেক্সট পিস প্রিভিউ
  • ঘোস্ট পিস প্রদর্শন যা দেখায় পিসগুলো কোথায় ল্যান্ড করবে
  • লেভেল-ভিত্তিক গতি বক্ররেখা এবং ডাইনামিক লক বিলম্ব
  • স্কোর, লাইন, লেভেল, এবং হাই স্কোর ট্র্যাকিং যা লোকাল স্টোরেজে সংরক্ষিত থাকে
  • সফট ড্রপ এবং হার্ড ড্রপ স্কোরিং
  • রিজিউম, রিস্টার্ট, এবং কুইট অপশন সহ পজ মেনু
  • লাইন ক্লিয়ার ফ্ল্যাশ অ্যানিমেশন
  • মিউট টগল সহ ব্যাকগ্রাউন্ড মিউজিক (স্টেট সংরক্ষিত)
  • iOS সেফ এরিয়া সাপোর্ট (ডাইনামিক আইল্যান্ড, নচ, হোম ইন্ডিকেটর)
  • সার্ভিস ওয়ার্কার মাধ্যমে অফলাইন সাপোর্ট (প্রথম ভিজিটের পর ইন্টারনেট ছাড়াও কাজ করে)
  • PWA হিসেবে ইনস্টলযোগ্য (iOS/Android-এ হোম স্ক্রিনে যোগ করে অ্যাপ-সদৃশ অভিজ্ঞতা)

নিয়ন্ত্রণ

ডেস্কটপ (কীবোর্ড)

Action Keys
Move or A D
Soft Drop or S
Hard Drop Space
Rotate CW W X
Rotate CCW Z
Hold C or LShift
Mute M
Pause Esc or P

মোবাইল (টাচ)

Action Gesture
Move বাম / ডান সোয়াইপ
Soft Drop ধরে রেখে নিচে ড্র্যাগ করুন
Hard Drop দ্রুত নিচের দিকে ফ্লিক করুন
Rotate CW ট্যাপ করুন
Hold দ্রুত উপরের দিকে ফ্লিক করুন

কঠিনতা বক্ররেখা

এই সংস্করণে গতি বক্ররেখা এবং লক বিলম্ব ক্লাসিক এবং আধুনিক টেট্রিস গেমগুলো কীভাবে কঠিনতা বৃদ্ধি করে তা নিয়ে গবেষণার মাধ্যমে টিউন করা হয়েছে। মূল NES টেট্রিস-এ, গ্র্যাভিটি লেভেল 29-এ প্রতি ফ্রেমে এক সারি পর্যন্ত পৌঁছায়, যা বিখ্যাত “কিল স্ক্রিন” তৈরি করে যেখানে গেম বেশিরভাগ মানুষের জন্য কার্যত অখেলনীয় হয়ে ওঠে। এটি আসলে কোনো ডিজাইন করা সমাপ্তি ছিল না, এটি হার্ডওয়্যার এবং DAS (বিলম্বিত অটো-শিফট) কীভাবে ড্রপ গতির সাথে তাল মেলাতে ধীর ছিল তার একটি পাশফলাফল ছিল। উইলিস গিবসন 2024 সালে এটা প্রমাণ করেছিলেন যখন তিনি এটা পেরিয়ে লেভেল 157-এ গিয়ে গেম ক্র্যাশ করেছিলেন



ক্লাসিক 1989 NES টেট্রিসের গেমপ্লে (মূল উৎস)

আধুনিক গেমগুলো যেমন TGM (Tetris: The Grand Master) এটাকে আলাদাভাবে সমাধান করেছে। কেবল পিসগুলোকে দ্রুত পড়তে না দিয়ে যতক্ষণ না গেম ভেঙে যায় ততক্ষণ পর্যন্ত, TGM গ্র্যাভিটিকে 20G (তাত্ক্ষণিক ড্রপ) এ ক্যাপ করে এবং তারপর লক বিলম্ব এবং DAS-এর মতো অন্যান্য টাইমিং উইন্ডো গুলোকে টাইট করে কঠিনতা বাড়ায়। Tetris Guideline স্ট্যান্ডার্ড 500ms লক বিলম্ব এবং সর্বোচ্চ 15 মোভ রিসেট ব্যবহার করে, যা এই সংস্করণ অনুসরণ করে। TGM2 ডেথ মোড এবং TGM3 শিরাসে নিয়ে গবেষণা দেখিয়েছে প্রতিযোগিতামূলক খেলার বাস্তব মানদণ্ড প্রায় 250ms লক বিলম্ব সঙ্গে দ্রুত DAS-এর কাছাকাছি, যখন 133ms-এর নিচে যাওয়া বিশেষায়িত ক্ষেত্র।

এসবের ভিত্তিতে, এখানে গতি বক্ররেখা প্রতি সারির জন্য 33ms-এ গ্র্যাভিটি ক্যাপ করে (NES লেভেল 19 থেকে 28-এর মতো) তাত্ক্ষণিক ড্রপে না গিয়ে, এবং DAS উচ্চ লেভেলে 170ms থেকে 100ms পর্যন্ত স্কেল করে যাতে আপনি লক বিলম্বের সময় বোর্ডটি পার করতে পারেন। লক্ষ্য ছিল উচ্চ লেভেলগুলোকে নিষ্ঠুরভাবে দ্রুত কিন্তু ন্যায্য অনুভব করানো, যাতে Tetris 99 এবং TGM-এর সমাপ্তি-কঠিনতা কিরকম থাকে তার কাছাকাছি কিন্তু মূল NES পদ্ধতিতে কেবল কাঁচা গতি আপনার ইনপুটকে ছাড়িয়ে যাওয়া না হয়।

পিছনের প্রযুক্তি

  • ডেস্কটপ এবং মোবাইল (পোর্ট্রেট) উভয়ের জন্য অপ্টিমাইজড রেসপনসিভ ডিজাইন
  • পারফরম্যান্সের জন্য প্রি-রেন্ডার করা ব্লক স্প্রাইট এবং গ্রিড ব্যাকগ্রাউন্ড
  • পিস রোটেশনের জন্য সুপার রোটেশন সিস্টেম (SRS) স্টাইল ওয়াল কিকস ব্যবহার করে
  • নির্ভরযোগ্য ফ্লিক বনাম ড্র্যাগ পার্থক্য নির্ণয়ের জন্য ভেলোসিটি-ভিত্তিক টাচ জেসচার ডিটেকশন
  • গ্র্যাভিটি স্পিড এবং লক বিলম্বের জন্য লেভেল-ভিত্তিক টাইমিং সিস্টেম
  • হাই স্কোর এবং মিউট স্টেট localStorage-এর মাধ্যমে সংরক্ষিত
  • ব্যাকগ্রাউন্ড মিউজিক সোর্স NmCCQxVBfyM
  • প্রজেক্টটি সম্পূর্ণ ওপেন-সোর্স MIT লাইসেন্স অধীনে
  • নিম্নলিখিত AI টুলগুলো ব্যবহার করে নির্মাণ করা হয়েছে:
    • Claude Code CLI - কোডিং/ডেভেলপমেন্ট
    • Gemini CLI - কোডিং/ডেভেলপমেন্ট
    • Cha CLI - কোডিং এবং লেখা
    • xAI Grok - লোগো ও আইকন
    • Perplexity - বাগ রিসার্চিং

শেষ ভাবনা

এই ধরনের প্রজেক্টগুলোর একটি যেখানে অনুপ্রেরণা প্রযুক্তিগত নয়, এটি ব্যক্তিগত ছিল। আমি কেবল এমন একটি টেট্রিস সংস্করণ চাইছিলাম যা আমার চাইয়া মত কাজ করে, বিজ্ঞাপন ছাড়া, অতিরিক্ত হার্ডওয়্যার ছাড়া, এবং অন্য কারো অ্যাপের উপর নির্ভর না করে যা কোনো সময় অদৃশ্য বা পরিবর্তিত হতে পারে। ধারণা থেকে প্রায় এক সপ্তাহ অনিয়মিত কাজ করে আধুনিক AI টুলস এবং ভাইব কোডিং ব্যবহার করে একটি পলিশড গেম তৈরি করা সম্ভব হওয়া আমাদের সফটওয়্যার ডেভেলপমেন্ট-এর বর্তমান অবস্থান সম্পর্কে অনেক কিছু বলে।

আমি এটি তৈরি করার পর থেকে প্রায় প্রতিদিন এই সংস্করণটি ব্যবহার করছি, এবং এটি এখনও ঠিক যেটা আমি প্রয়োজন তা করে। এটি আমাকে যেটাই আমাকে মানসিক চাপ দিচ্ছে তা থেকে একটু দূরে সরে যেতে, কয়েক মিনিটের জন্য কোনো সহজ কিছুর ওপর মনোযোগ দিতে, এবং পরিষ্কার মাথা নিয়ে ফিরে আসতে সাহায্য করে। আপনি যদি এটি চেষ্টা করে দেখেন এবং এটি আপনার ক্ষেত্রেও একইভাবে কাজ করে, সেটাই আমি চাইতে পারতাম এমন সর্বোৎকৃষ্ট ফলাফল। এবং যদি আপনি এটিকে ফর্ক করতে চান, গতি বক্ররেখা সামান্য পরিবর্তন করতে চান, নিয়ন্ত্রণ বদলাতে চান, অথবা এর ওপর ভিত্তি করে কিছু তৈরি করতে চান—করুন। যদি আপনি কোনো বাগ পান বা কোনো পরামর্শ থাকে, রিপো-তে একটি ইস্যু খুলতে বিনা দ্বিধায় করুন। এটাই এটাকে ওপেন-সোর্স করার পুরো উদ্দেশ্য।