প্রকল্প সম্পর্কে

Stellar Abyss হলো একটি ডেস্কটপ-ওরিয়েন্টেড, ব্রাউজারে চালিত 3D স্পেস কমব্যাট প্রোটোটাইপ যা Babylon.js, TypeScript এবং Vite দিয়ে তৈরি। এর জাহাজ, পরিবেশ, মহাবিশ্ব এবং অডিও মৌলিক এবং প্রসিডিউরাল হিসেবে বর্ণনা করা হয়েছে — README-তে স্পষ্টভাবে উল্লেখ করা হয়েছে যে এই প্রজেক্টটি বিদ্যমান কোনো ফ্র্যাঞ্চাইজির সংরক্ষিত জাহাজ, চরিত্র, লোগো, সঙ্গীত বা শব্দ প্রভাব ব্যবহার করে না। **গল্প এবং সেটআপ** গেমটি একটি মৌলিক স্পেস-অপেরা সেটিং হিসেবে সাজানো হয়েছে: Order of the Threshold থেকে নির্বাসিত একজন নেভিগেটর একটি সংকেত অনুসরণ করে Náris Belt-এ প্রবেশ করেন, যেখানে একটি নামহীন সামরিক বাহিনী বাড়ির ফেরার পথ পাহারা দিচ্ছে। লঞ্চের সময় প্লেয়ার Arthur Comet এবং Gael Ray-এর মধ্যে একটি জাহাজ বেছে নেন। একটি রিকনস্যান্স ফ্লাইট ধীরে ধীরে ফাইটার স্কোয়াড্রনের বিরুদ্ধে যুদ্ধে রূপ নেয় এবং অবশেষে Obelisk নামক একটি বিশাল ক্যাপিটাল শিপের মুখোমুখি হয়। **কন্ট্রোল এবং কমব্যাট** ফ্লাইট মাউস-স্টিয়ারড, যেখানে স্ক্রিনের কেন্দ্র থেকে দূরত্ব টার্ন ইনটেনসিটি নিয়ন্ত্রণ করে; মাউস কেন্দ্রে ফিরিয়ে আনলে সোজা চলে এবং পয়েন্টার লক ব্যবহার করা হয় না। কিবোর্ড বাইন্ডিংয়ের মধ্যে রয়েছে ক্রুজ স্পিড (W/S), রোল (A/D), স্ট্রাফ (Q/E), ডুয়াল লেজার পালস (বাম মাউস), আনলক করার পর প্লাজমা ক্যানন (ডান মাউস), আনলক করার পর এনার্জি রাপচার (R), রিচার্জসহ বুস্ট (Left Shift), সংক্ষিপ্ত ইনভালনারেবিলিটি এবং তিন সেকেন্ডের কুলডাউনসহ একটি ডজ (Space), টার্গেট সিলেকশন এবং সাইক্লিং (F, Tab), পজ (Esc), মিউট (M) এবং একটি ডায়াগনস্টিক টগল (F3)। প্লাজমা এরিয়া ড্যামেজ দেয় এবং এনার্জি রাপচার হলো একটি দ্রুত টর্পেডো যার আট সেকেন্ডের কুলডাউন রয়েছে। উইন্ডো ফোকাস হারালে মিশনটি অটো-পজ হয়ে যায়। **মিশন স্ট্রাকচার** ছয়টি পর্যায় রিকনস্যান্স এবং স্কাউট ইন্টারসেপশন থেকে শুরু করে বড় পেট্রোল এবং অ্যাসল্ট ফাইটারদের মোকাবিলা, প্লাজমা ক্যানন আনলক করা, এলিট ফাইটারদের মোকাবিলা এবং এনার্জি রাপচার আনলক করা, রিইনফোর্সমেন্ট কমানো এবং সবশেষে Obelisk-এর সাবসিস্টেমগুলো — ডিফেন্স টারেট, শিল্ড জেনারেটর, আয়ন ইঞ্জিন এবং রিঅ্যাক্টর — একে একে ধ্বংস করার মাধ্যমে শেষ হয়, যার পর একটি চেইন রিঅ্যাকশন ঘটে এবং মিশন সম্পন্ন হয়। **নিয়ম এবং ফিডব্যাক** ক্ষতি পাওয়ার পাঁচ সেকেন্ড পর শিল্ড পুনর্গঠিত হয়, তবে হাল ইন্টিগ্রিটি পুনর্গঠিত হয় না। একটি ফাইটার ধ্বংস করলে সাতটি শিল্ড পয়েন্ট পুনরুদ্ধার হয়। অ্যাস্টেরয়েড এবং ক্যাপিটাল শিপ সংঘর্ষজনিত ক্ষতি করে যা তাৎক্ষণিক মৃত্যু ঘটায় না। একটি Test Flight অপশন মুভমেন্ট, অস্ত্র, ড্যামেজ এবং কুলডাউন অপরিবর্তিত রেখে মিশনের সময়কে 4× গতিতে এগিয়ে নেয়। **ইন্টারফেস এবং লোকালাইজেশন** গেমটি ইংরেজিতে শুরু হয় এবং মেনু ও পজ স্ক্রিনে একটি EN / PT-BR সিলেক্টর অফার করে, যার পছন্দটি ব্রাউজারে সংরক্ষিত থাকে। সেটিং-এর প্রপার নাউনগুলো অনুবাদ করা হয় না। **রানিং এবং বিল্ডিং** লোকাল ডেভেলপমেন্টের জন্য Node.js 22.12+ বা Node.js 24 প্রয়োজন; ডকুমেন্ট করা ফ্লো হলো `npm install` এবং তারপর `npm run dev`, যা `http://127.0.0.1:5173`-এ সার্ভ করা হয়। `?renderer=webgl&debug` যুক্ত করলে WebGL2 ফোর্স করা হয় এবং ডায়াগনস্টিকস চালু হয়। একটি প্রোডাকশন বিল্ড `npm run build` এবং `npm run preview` দিয়ে সার্ভ করা যেতে পারে। `.github/workflows/deploy.yml`-এ একটি GitHub Actions ওয়ার্কফ্লো `main` পুশ করার সময় `dist/` বিল্ড করে GitHub Pages-এ পাবলিশ করে, এবং README উল্লেখ করে যে এই ওয়ার্কফ্লোটি শুধুমাত্র GitHub Pages-এর প্রয়োজনীয় রিড, পেজ রাইট এবং ডিপ্লয়মেন্ট আইডেন্টিটি পারমিশন অনুরোধ করে। **আর্কিটেকচার** কোডটি কোর (ইঞ্জিন, লুপ, ইনপুট, অ্যাসেট), প্লেয়ার (ফ্লাইট এবং হেলথ), এনিমি (AI এবং ফরমেশন), ওয়েপন (পুলড প্রজেক্টাইল এবং কলিশন), ওয়ার্ল্ড (স্পেস এনভায়রনমেন্ট), ইফেক্টস, অডিও, প্রগ্রেসন, বস এবং ইউআই সহ বিভিন্ন মডিউলে সংগঠিত। গেমপ্লে কনস্ট্যান্টগুলো `src/config.ts`-এ থাকে; কমব্যাট এবং প্রগ্রেসন টেস্টগুলো `tests/`-এ এবং একটি ব্রাউজার স্মোক টেস্ট `scripts/`-এ থাকে। `AssetManager.ship()` সাময়িক প্রিমিটিভ মডেল তৈরি করে এবং `AssetManager.loadModel(url, parent)` ভবিষ্যতের ভিজ্যুয়াল রিপ্লেসমেন্টের জন্য glTF/GLB লোড করে। মডেলগুলো লোকাল +Z এর দিকে মুখ করে থাকে এবং খেলার জন্য কোনো এক্সটারনাল মডেলের প্রয়োজন হয় না। প্রথমে WebGPU চেষ্টা করা হয় এবং ব্যর্থ হলে স্বয়ংক্রিয়ভাবে WebGL2 ফলব্যাক হিসেবে কাজ করে। **ভেরিফিকেশন** ডকুমেন্ট করা চেকগুলো হলো `npm test`, `npm run build`, `npm run dev` এবং `node scripts/browser-smoke.mjs`। স্মোক টেস্টের জন্য একটি লোকাল সার্ভার এবং Chrome প্রয়োজন এবং এটি স্টার্টআপ, এক্সিলারেশন, বুস্ট, ফায়ারিং করার সময় স্টিয়ারিং, রিয়েল কিলস, পজ, রেজুম, রিস্টার্ট এবং ব্রাউজার এরর কভার করে, এবং সাময়িক পাথে স্ক্রিনশট লিখে রাখে। README-তে বলা হয়েছে যে ছয়টি লজিক টেস্ট পাস করেছে এবং Chrome/WebGL2 ভ্যালিডেশন ফায়ারিং, ফায়ারিং করার সময় স্টিয়ারিং, স্কোরসহ তিনটি কিল, পজ, রেজুম, রিস্টার্ট এবং কোনো রানটাইম এরর না থাকার বিষয়টি নিশ্চিত করেছে, সাথে একটি পাসিং প্রোডাকশন বিল্ড রয়েছে; এটি আরও উল্লেখ করে যে এই এনভায়রনমেন্টে WebGPU এবং ক্যাপিটাল-শিপ ব্যাটেলের সম্পূর্ণ ব্রাউজার প্লেথ্রু ভ্যালিডেট করা হয়নি। **স্ট্যাটাস এবং সীমাবদ্ধতা** প্রোটোটাইপটিতে ভিক্টরি, ডিফিট এবং রিস্টার্ট স্টেটসহ একটি সম্পূর্ণ মিশন রয়েছে। জাহাজ এবং অডিওকে ফাংশনাল প্রসিডিউরাল প্লেসহোল্ডার হিসেবে বর্ণনা করা হয়েছে। আর্টিস্টিক টেক্সচার, LODs, টাচ কন্ট্রোল এবং গেমপ্যাড কন্ট্রোল এখনও ইমপ্লিমেন্ট করা হয়নি এবং মেইন বান্ডেলটি প্রায় ৬.৩ এমবি, অথবা ১.৩৮ এমবি gzip, যার লোডিং অপ্টিমাইজেশন বাকি। লক্ষ্য হলো একটি সাধারণ ডেস্কটপে ৬০ FPS পাওয়া, যেখানে WebGL2 রেফারেন্স ডায়াগনস্টিক পাথ হিসেবে এবং Google Fonts-এর জন্য লোকাল ফলব্যাক হিসেবে কাজ করে। ডায়াগনস্টিকস FPS, পজিশন, স্পিড, অ্যাক্টিভ এনিমি, প্রজেক্টাইল, অ্যাক্টিভ মেশ এবং মিশনের সময় প্রদর্শন করতে পারে। **কন্ট্রিবিউটিং** `jeffotoni/deathstar`-এর বিপরীতে ফর্ক-অ্যান্ড-পুল-রিকোয়েস্টের মাধ্যমে কন্ট্রিবিউশন গ্রহণ করা হয়; README কন্ট্রিবিউটরদের অনুরোধ করে যেন তারা অফিসিয়াল রিপোজিটরিতে ফিচার ব্রাঞ্চ পুশ না করেন, Conventional Commits ব্যবহার করেন, পিআর-এ সম্পর্কহীন রিফ্যাক্টর না রাখেন এবং প্লেয়ার-ফেসিং রেজাল্টের পাশাপাশি ভ্যালিডেশন কমান্ড এবং ভিজ্যুয়াল বা গেমপ্লে পরিবর্তনের জন্য একটি স্ক্রিনশট বা রেকর্ডিং ব্যাখ্যা করেন। এটি `main` ব্রাঞ্চ সুরক্ষিত রাখার, ডিফল্টভাবে অ্যাকশন পারমিশন রিড-অনলি রাখার, আনট্রাস্টেড ফর্ক কোডে সিক্রেট এড়িয়ে চলার, ক্রেডেনশিয়াল বা জেনারেটেড বিল্ড আউটপুট কমিট না করার এবং `SECURITY.md` অনুযায়ী ব্যক্তিগতভাবে ভালনারেবিলিটি রিপোর্ট করার সুপারিশ করে।