এই প্রকল্পটি অবশ্যই আমার সবচেয়ে উন্নত এক. আমি টোয়াইলাইট প্রিন্সেস (নিন্টেন্ডো গেমকিউব) এর জন্য একটি ওয়েব বিএমডি ভিউয়ার প্রোগ্রামিং শুরু করেছি কারণ আমি এই গেমটিকে ভালোবাসি এবং একজন গেম প্রযোজক হিসাবে, আমি স্তরগুলি বিশ্লেষণ করে এবং কীভাবে সেগুলি তৈরি করা হয়েছিল তার বিশদ বিবরণে নিজেকে নিমজ্জিত করে মুগ্ধ হয়েছি৷ এই প্রজেক্টটি আমার জন্য সেই আবেগকে অন্বেষণ করার এবং আমি যে গেমটি ভালোবাসি তার গভীর উপলব্ধি অর্জন করার একটি উপায়। এটি একটি চ্যালেঞ্জিং এবং ফলপ্রসূ শেখার অভিজ্ঞতা। এই প্রকল্পটি আমাকে কোথায় নিয়ে যাবে এবং আমি পথ ধরে কী নতুন আবিষ্কার করব তা দেখতে আমি উত্তেজিত। এখন অবধি এই প্রকল্পটি আমাকে কয়েক মাস গবেষণার জন্য সময় নিয়েছে। গবেষণা যা অন্য 20 টিরও বেশি লোকের কাজের উপর ভিত্তি করে যারা তদন্ত করেছে এবং তাদের জ্ঞান এবং ফলাফল ভাগ করেছে rarc, bmd, gcm yaz0, j3d, tev ইত্যাদি। আমি এমন কিছু ব্যক্তির সাথে দেখা করেছি যে আমি তাদের ক্রেডিট দেওয়ার জন্য লিখেছিলাম:
ধন্যবাদ জানাই: ("LordNed", "thakis", "Jasper St. Pierre", "Kiwi", "Dolphin Emulator Team", "Gamma", "Zan")- তাদের অগ্রণী প্রচেষ্টার জন্য!
জল, কুয়াশা, অ্যানিমেটেড টেক্সচারগুলি বর্তমানে রোডম্যাপে রয়েছে
প্রোগ্রামটি three.js এবং webGL ব্যবহার করে প্রোগ্রাম করা হয়েছিল। এটি ক্রোম ব্রাউজারে একটি ধ্রুবক 60fps এ চলে। দুর্ভাগ্যবশত আমি আপনার সাথে ইন্টারেক্টিভ ভিউয়ার (মডেল, রুম ইত্যাদি) শেয়ার করতে পারছি না, কারণ আমি দেখতে চাই না গবেষণার ন্যায্য ব্যবহারের সীমা কতদূর। আমার মন্টেজ উপভোগ করুন:
https://api.fenixfox-studios.com/assets/d43523dd-5cbe-4da4-9c7d-2d275690050a
BMD এবং BDL হল ফাইল ফরম্যাট যা Nintendo এর GameCube এবং Wii গেমগুলিতে মডেল ডেটা সংরক্ষণের জন্য ব্যবহার করে। এগুলি নিন্টেন্ডোর J3DGraph লাইব্রেরির অংশ, যা বৃহত্তর JSYSTEM টুলকিটের একটি উপাদান। বিএমডি প্রথম লুইগিস ম্যানশন গেমটিতে উপস্থিত হয়েছিল। এটি তখন সুপার মারিও সানশাইন-এ ব্যবহৃত একমাত্র মডেল ফরম্যাট ছিল। উইন্ড ওয়াকার আরও বিডিএল ফর্ম্যাট চালু করেছে, যা MDL3 নামক উপাদান ফিফো নির্দেশাবলীর জন্য একটি অতিরিক্ত বিভাগ সহ BMD-এর একটি এক্সটেনশন। MDL3 রেন্ডারিং দক্ষতা উন্নত করতে ব্যবহৃত হয়। সুপার মারিও গ্যালাক্সি 2 এই মডেল বিন্যাসটি ব্যবহার করা শেষ গেম ছিল।
JSYSTEM হল একটি মালিকানাধীন গেম ডেভেলপমেন্ট টুলকিট যা নিন্টেন্ডো এর কনসোলের জন্য গেম তৈরি করতে ব্যবহার করে। এতে 3D মডেলিং, অ্যানিমেশন এবং পদার্থবিদ্যার মতো কাজের জন্য বিভিন্ন লাইব্রেরি এবং সরঞ্জাম অন্তর্ভুক্ত রয়েছে। J3DGraph হল JSYSTEM-এর মধ্যে একটি লাইব্রেরি যা 3D গ্রাফিক্স পরিচালনার জন্য ফাংশন প্রদান করে এবং BMD এবং BDL ফাইল ফরম্যাটের জন্য দায়ী। BMD মানে Binary MoDel এবং BDL মানে Binary Display List।
JSYSTEM টুলকিটটি 2000 এর দশকের গোড়ার দিকে রিভার্স ইঞ্জিনিয়ার এবং গেম মডারদের দ্বারা আবিষ্কৃত হয়েছিল, যখন তারা নিন্টেন্ডো গেমকিউব এবং উই গেমগুলির কোড বিশ্লেষণ এবং ডিকম্পাইল করতে শুরু করেছিল। তারা দেখেছে যে অনেক গেম একই ধরনের কোড স্ট্রাকচার এবং লাইব্রেরি ভাগ করেছে, যার ফলে তারা একটি সাধারণ ডেভেলপমেন্ট টুলকিটের অস্তিত্ব নিয়ে সন্দেহ করতে পারে। অনেক গবেষণা এবং পরীক্ষা-নিরীক্ষার পর, তারা গেম থেকে JSYSTEM লাইব্রেরিগুলি সনাক্ত করতে এবং বের করতে সক্ষম হয় এবং J3DGraph লাইব্রেরি এবং BMD এবং BDL ফাইল ফরম্যাট সহ এর বিভিন্ন উপাদানকে নথিভুক্ত এবং বিপরীত-ইঞ্জিনিয়ার করতে শুরু করে।
JSYSTEM-এর বোঝার সাথে সাথে মোডাররা JSYSTEM ফরম্যাটের সাথে কাজ করার জন্য তাদের নিজস্ব টুল তৈরি করতে শুরু করে এবং JSYSTEM লাইব্রেরি ব্যবহার করে তাদের নিজস্ব কাস্টম মডেল, টেক্সচার এবং এমনকি নতুন গেম তৈরি করতে শুরু করে। এটি একটি প্রাণবন্ত মোডিং সম্প্রদায় তৈরির দিকে পরিচালিত করে যা আজও বিদ্যমান রয়েছে, অনেক মোডাররা তাদের অনুসন্ধান এবং সরঞ্জামগুলি অনলাইনে ভাগ করে নিয়েছে।
শুরুতে, আমি প্রকৃত *.dol বা *.gcm কন্টেইনার ফরম্যাটগুলিতে আগ্রহী ছিলাম না কারণ অন্যান্য লোকেরা ইতিমধ্যেই ব্যবহার করার জন্য প্রস্তুত সরঞ্জাম সরবরাহ করে একটি দুর্দান্ত কাজ করেছে (পরে আমি নিজেই gcm পাঠক তৈরি করেছি)। কিছুক্ষণ অনুসন্ধান করার পরে, আমি এমন ফোল্ডারগুলি খুঁজে পেয়েছি যেগুলি দেখে মনে হয়েছিল সেগুলিতে কিছু আকর্ষণীয় জিনিস থাকতে পারে, যেমন রুম এবং অন্যান্য উপাদান৷ ফারন উডস-এর মতো বড় এলাকাগুলিকে খণ্ডে ভাগ করে আলাদা ফাইলে সংরক্ষিত করা হয়েছিল, যা পরে সম্পূর্ণ এলাকা তৈরি করতে একত্রিত হবে।
কিন্তু আমি সহজ শুরু করতে চেয়েছিলাম. হয়তো সহজ কিছু! ফোল্ডারে বেশিরভাগ জিনিসপত্র আনপ্যাক করার পরে, আমি ফাইলগুলিকে আকার অনুসারে সাজিয়েছি এবং একটি অতি সাধারণ বস্তু পেয়েছি। যখন আমি HexWorkshop এ ফাইলটি চেক করেছি, তখন আমি VTX, INF, DRW, এবং SHP-এর মতো মার্কারগুলিতে হোঁচট খেয়েছি৷ শীর্ষস্থানীয় অবস্থান থেকে, আমি বলতে পারি এটি একটি সাধারণ দরজার নব সহ একটি সমতল বাক্স। আমি শীঘ্রই বুঝতে পারলাম এটি লেকের বিছানা মন্দিরের দরজা।
আমি জানতাম যে বস্তুটি দেখতে কেমন হতে পারে, এবং আমি জানতাম যে ভার্টেক্স স্থানাঙ্কের পাশাপাশি টেক্সচার তথ্যের মতো মৌলিক তথ্য কোথায় দেখতে হবে।
আপনাকে সতর্ক থাকতে হবে কারণ কিছু তথ্য আপনার ক্ষেত্রে ভুল। কিছু বিশেষ গুণাবলী সেই ডক্স যা বলছে তার থেকে ভিন্ন ছিল৷ কিন্তু একটি 3d মডেল এবং এর টেক্সচার বের করার জন্য আপনার শুধু এই ধরনের ফরম্যাট শীট থাকা দরকার!
অন্তত সাধারণ বস্তুর উপর আমার সফল প্রচেষ্টার পরে, আমি ভেবেছিলাম যে এটি আরও খনন করার এবং একটি সম্পূর্ণ এলাকা মোকাবেলা করার সময় হবে! একই অ্যালগরিদম দিয়ে সশস্ত্র যা আমি লিখেছিলাম আমি R00_00 নামের ফাইলটি বেছে নিয়েছি। আমি আশা করছিলাম যে এটি অর্ডন ভিলেজ বা ফারন উডস হবে। কিন্তু এটা কোন ব্যাপার না কারণ আমি যা পেয়েছি তা ছিল আবর্জনার স্তূপ। স্পষ্টতই ভুল ভার্টেক্স অর্ডারের একটি কেস। এই ছবিটি দেখে বলতে পারবেন এটা কোন ঘর?
আকৃতি দ্বারা আকৃতি, আমি ধীরে ধীরে জল পরীক্ষা. এদিক-ওদিক, পাহাড় ও সমাধির পাথর দেখা দিতে শুরু করেছে। এটা স্পষ্ট হয়ে গেল যে আমি কাকারিকো কবরস্থান এলাকা দেখছিলাম।
বেশ কিছুক্ষণ পরে, আমি এই ফলাফলটি তৈরি করতে সক্ষম হয়েছি: কিছু বস্তু অনুপস্থিত ছিল, কিছু মুখ উল্টানো ছিল এবং একটিও টেক্সচার সঠিকভাবে প্রয়োগ করা হয়েছে বলে মনে হচ্ছে না।
সমাধান কিছুটা বিভ্রান্তিকর ছিল। যদিও নির্দিষ্ট আকারের নির্দিষ্ট উপাদান সূচকগুলি সংজ্ঞায়িত ছিল, তবে তাদের একটি সরল 1:1 সম্পর্ক ছিল না। পরিবর্তে, আপনাকে BMD ফাইলের INF বিভাগে সংজ্ঞায়িত দৃশ্যের শ্রেণিবিন্যাস দেখতে হবে। এই শ্রেণিবিন্যাসটি নোডের একটি গাছ নিয়ে গঠিত যা একটি আকৃতি বা উপাদানকে প্রতিনিধিত্ব করতে পারে। সাধারণত, শ্রেণিবিন্যাস একটি উপাদান দিয়ে শুরু হবে, তারপরে কিছু আকার থাকবে। উদাহরণস্বরূপ, আপনি কিছু দেখতে পারেন (mat1, shp2, shp5, shp6, mat2, shp1, shp12...)। এই ক্ষেত্রে, আকার 2, 5, এবং 6 সব উপাদান 1, এবং তাই ব্যবহার করবে।
ভাল, দুর্দান্ত, কিন্তু যে কেউ কখনও সেই গেমটি খেলেছে তারা লক্ষ্য করতে পারে যে উপকরণগুলি বন্ধ হয়ে যাচ্ছে। রঙগুলি বন্ধ, উপকরণগুলির মধ্যে কোনও মিশ্রণ নেই এবং এটি সাধারণভাবে বেশ অন্ধকার দেখায়। এই মুহুর্তে, আমি এই সবের সবচেয়ে মন ফুঁকানো অংশে ডুব দিতাম। গেমকিউব এই কাজগুলি পরিচালনা করতে TEV পর্যায়, বা টেক্সচার এনভায়রনমেন্ট পর্যায়গুলি ব্যবহার করে। TEV পর্যায়গুলি টেক্সচারের মিশ্রণ, রঙ পরিচালনা এবং স্বচ্ছতা প্রভাব প্রয়োগের জন্য দায়ী। উল্লেখ্য যে GameCube প্রকৃতপক্ষে স্বচ্ছতা প্রভাবকে সমর্থন করে না যেমনটি আমরা আজকে দুটি রেন্ডার পাস এবং দূরবর্তী বস্তুর সাথে প্রথমে রেন্ডার করেছি। কিছু গিটহাব রেপো, কিছু নিবন্ধ, কিছু ফোরাম থ্রেড আছে। আপনি যতটা সম্ভব তথ্য আপনার হাত পেতে!
আরও একটি গুরুত্বপূর্ণ অংশ যা আমার যোগ করার দরকার ছিল তা হল কুয়াশা, পুষ্প এবং মেঘের মতো বায়ুমণ্ডলীয় প্রভাব। এই সময় পর্যন্ত আমি কুয়াশা এবং ফুলের প্রভাব সফলভাবে তৈরি করতে পারিনি, কিন্তু আমি মেঘের ছায়া খুঁজে পেয়েছি এবং সেগুলিকে একটি মিশ্রিত TEV স্টেজে রেখেছি। আমি এখনও মেঘের জন্য সঠিক UV স্থানাঙ্ক খুঁজছি।
সেই ঘরের চূড়ান্ত ফলাফলটি এইরকম পছন্দ করবে: (এতদূর আসতে বেশ কিছুটা সময় লেগেছিল)
এই প্রকল্প একটি অবিশ্বাস্য যাত্রা হয়েছে. বুদ্ধিমান লোকেরা কীভাবে অতীতের প্রযুক্তিগত সীমাবদ্ধতা সমাধান করেছিল তা খুঁজে বের করার জন্য আমার সময় ব্যয় করা আমাকে গোধূলি রাজকুমারীর জটিল সৌন্দর্যের প্রশংসা করতে সাহায্য করেছিল। আমি ভাল অগ্রগতি করেছি, কিন্তু এখনও অন্বেষণ এবং বাস্তবায়নের জিনিসগুলির একটি বিশাল তালিকা রয়েছে৷ আমি এই ভিউয়ারের উপর কাজ চালিয়ে যাওয়ার পরিকল্পনা করছি, কুয়াশা, বিটিকে (টেক্সচার অ্যানিমেশন) এবং অন্যান্য বায়ুমণ্ডলীয় প্রভাবগুলির মতো বৈশিষ্ট্যগুলি যোগ করে এটিকে যথাসম্ভব নির্ভুল এবং নিমজ্জিত করতে।