Claude Code بدون سورسکد، به ماینکرفت و تراریای ۳DS سهبعدی واقعی اضافه کرد
خلاصهٔ کاملتر
طبق این مقاله، Claude Code (ایجنت برنامهنویسی Anthropic) به نسخهٔ ۳DS بازیهای Minecraft: New Nintendo 3DS Edition و Terraria سهبعدی استریوسکوپیک اضافه کرده؛ یعنی همون جلوهٔ عمق بدون عینکی که اصلیترین ویژگی کنسول ۳DS بود ولی این دو بازی هیچوقت درست ازش استفاده نکردن. هیچ سورسکدی در دسترس نبوده و همهچیز با reverse engineering (یعنی فهمیدن کارکرد برنامه از روی کد کامپایلشده) انجام شده. نتیجه پلاگینهاییه که وسط مسیر رندر بازی میشینن و تصویر چشم دوم رو اضافه میکنن.
تو مقاله اومده که نسخهٔ ۳DS ماینکرفت از اول کد سهبعدی داشته: بافرهای چشم راست، ماتریسهای چشم تو شیدرها و محاسبات دوربین برای اسلایدر عمق. ولی این کد قبل از انتشار کنار گذاشته شده. نویسنده دو دلیل احتمالی میآره: هزینهٔ سنگین ساختن دوبارهٔ کل صحنه روی سختافزار ضعیف ۳DS، و راحت نبودن چشم. تو تستهای اول، تصویر دو چشم هر کدوم با نرخ پایین و جدا از هم آپدیت میشدن (حدود ۱۷ هرتز برای هر چشم) و یه چشم از اون یکی عقب میموند که حالت تهوع میآورد.
روش کار تجربی بوده: هر لایهٔ رندر (پسزمینه، زمین، کاراکتر، UI و بقیه) رو چند پیکسل جابهجا میکردن، اسکرینشات میگرفتن و میدیدن کدوم بخش صحنه تکون خورده. اینطوری ترتیب عمق کل صحنه درمیومد. برای ماینکرفت یه پروژهٔ متنباز قبلی بخشی از ساختار داخلی بازی رو مستند کرده بود، ولی تراریا رو باید از صفر نقشهبرداری میکردن.
ترفند اصلی اینه که بهجای دو بار رندر کامل فریم (که بار CPU رو دو برابر میکرد و چیزای وابسته به زمانبندی مثل بارون رو خراب میکرد)، بازی فریمش رو عادی میکشه و پلاگین خروجی آمادهٔ GPU رو یه بار دیگه با یه جابهجایی کوچیک برای چشم دوم رسم میکنه. هزینهٔ CPU تقریباً عوض نمیشه و GPU که جای خالی داشت بار اضافه رو میکشه. همین روش مشکل عقب موندن یه چشم رو هم حل کرد.
تست روی سختافزار واقعی کلی باگ نشون داد که امولاتور نمیگرفت، چون امولاتورها برای سرعت از دقت میزنن. مثلاً تو تراریا چشم راست روی کنسول واقعی کاملاً سیاه میشد و لازم بود یه فضای جدا تو حافظهٔ ویدیویی براش رزرو بشه. برای Old 3DS که حافظهٔ خیلی کمتری داره، تصویر چشم راست با رزولوشن پایینتر تو یه گپ استفادهنشده از حافظهٔ ویدیویی گذاشته شد، یعنی عملاً بدون مصرف حافظهٔ اضافه. یه باگ C-stick هم پیدا شد که تو خود فریمورک پلاگین بود.
ماد تراریا از سهبعدی جلوتر رفته: پشتیبانی از C-stick، مرتبسازی و ادغام آیتمها با استفاده از توابعی که اصلاً برای همگامسازی مولتیپلیر بودن، سقف بالاتر برای stack آیتمها و نقشهای که دیگه روی Old 3DS کرش نمیکنه. سازنده یه مرحلهٔ «خودبازبینی» هم گذاشته بود که بعد از هر تغییر، مدل کد خودش رو دنبال احتمال کرش میگشت و به گفتهٔ مقاله باگهای واقعی رو قبل از تست گرفت. سازنده میگه قول نگهداری طولانیمدت نمیده و برای همین کدها رو متنباز کرده.
نکات کلیدی:
- کار کاملاً از روی باینری کامپایلشده انجام شده و هیچ سورسکدی در دسترس نبوده
- نسخهٔ ۳DS ماینکرفت کد سهبعدی نیمهکاره داشته که قبل از انتشار حذف شده بود
- رندر یهباره و رسم دوبارهٔ خروجی GPU با جابهجایی، هزینهٔ CPU رو تقریباً ثابت نگه میداره
- روی Old 3DS، تصویر چشم راست تو فضای خالی حافظهٔ ویدیویی ذخیره میشه
- هر دو ماد با لایسنس MIT روی GitHub منتشر شدن و منوی تنظیماتشون با دکمهٔ Select باز میشه




