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

প্রকল্পের GitHub রিপোজিটরি



এটা কী

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



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

কোডের বাইরে

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

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

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

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

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

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

নিয়ন্ত্রণ

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

কর্ম কী
সরান বা A D
সফট ড্রপ বা S
হার্ড ড্রপ Space
ঘড়ির কাঁটা দিক ঘোরানো W X
ঘড়ির বিপরীত কাঁটা দিক ঘোরানো Z
হোল্ড C বা LShift
মেনু Esc বা M
সোর্স কোড G (টাইটেল স্ক্রিন)

মোবাইল (টাচ)

কর্ম জেসচার
সরান বাম/ডান সোয়াইপ
সফট ড্রপ ধরে নিচে ড্র্যাগ করুন
হার্ড ড্রপ দ্রুত নিচে ফ্লিক করুন
ঘড়ির কাঁটা দিক ঘোরানো ট্যাপ
হোল্ড দ্রুত উপরে ফ্লিক করুন

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

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



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

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

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

অন্তর্গত প্রযুক্তি

  • রেসপন্সিভ ডিজাইন যা ডেস্কটপ ও মোবাইল (পোর্ট্রেট) উভয়ের জন্য অপ্টিমাইজ করা
  • পারফরম্যান্সের জন্য প্রি-রেন্ডার করা ব্লক স্প্রাইট এবং গ্রিড ব্যাকগ্রাউন্ড
  • টুকরা রোটেশনের জন্য Super Rotation System (SRS) স্টাইল ওয়াল কিক ব্যবহার করে
  • নির্ভরযোগ্য ফ্লিক বনাম ড্র্যাগ পার্থক্য নির্ণয়ের জন্য ভেলোসিটি-ভিত্তিক টাচ জেসচার ডিটেকশন
  • গ্র্যাভিটি স্পিড এবং লক ডিলের জন্য লেভেল-ভিত্তিক টাইমিং সিস্টেম
  • হাই স্কোর এবং অডিও সেটিংস localStorage-এ সংরক্ষিত
  • ব্যাকগ্রাউন্ড মিউজিক উৎস NmCCQxVBfyM
  • লাইন ক্লিয়ার সাউন্ড ইফেক্ট উৎস UMViM2tHrOk
  • প্রজেক্টটি সম্পূর্ণ ওপেন-সোর্স MIT লাইসেন্স-এর অধীনে
  • নিম্নলিখিত AI টুলগুলোর সাহায্যে নির্মিত:
    • Claude Code CLI - কোডিং/ডেভেলপমেন্ট
    • Gemini CLI - কোডিং/ডেভেলপমেন্ট
    • Cha CLI - কোডিং এবং লেখা
    • xAI Grok - লোগো ও আইকন
    • Perplexity - বাগ গবেষণা
    • Google Search - SVG এবং অন্যান্য অ্যাসেট খোঁজা
    • YouTube + yt-dlp - অডিও ক্লিপ উৎস
    • FFmpeg - অডিও ফাইল এডিটিং

শেষ ভাবনা

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

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