مهندسی معکوس با Claude Code: از نصب REA تا ساختن بازی خودمون

۲۰ آبان ۱۴۰۵ · ۲۶:۳۴ دقیقه

فصل‌های ویدیو

درباره‌ی این ویدیو

مهندسی معکوس با Claude Code: با skill رایگان REA، Claude می‌ره داخل فایل اجرایی یه برنامه و می‌فهمه از درون چطوری کار می‌کنه.با همین یه بازی متن‌باز رو از داخل باز کردیم، جواب‌ها رو با کد اصلیش چک کردیم و بازی خودمون رو ساختیم، با یه گنج و جایزهٔ Claude Pro.

پرامپت کامل اجرای REA توی کامنت پین‌شده‌ست.

REA (Reverse Engineer Anything) یه skill رایگان و متن‌بازه برای Claude Code، با ابزارهایی از راه MCP؛ Claude باهاش Ghidra رو به کار می‌گیره و کنار هر ادعا برچسب «دیده‌شده»، «حدسی» یا «نامعلوم» می‌ذاره. ما فقط روی Claude Code و ویندوز تستش کردیم؛ به گفتهٔ سازنده‌ش روی Codex و Antigravity هم کار می‌کنه.

این ویدیو به درخواست یکی از بیننده‌ها ساخته شد: دکتر فرگاد (@dr.fargod93). مرسی که ازمون خواستی!

بازی بلوک‌بازار (توی مرورگر، بی نصب): https://demo.mrmp.pro/block-bazaar/REA: https://rea.tools/ · https://github.com/morluto/reaGhidra 12.1.4: https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.1.4_build

قوانین جایزه («گنج MrMpAi»):۱. به ازای هر ۵۰ نفری که کد درست بفرستن، یه نفر برنده می‌شه و یه اکانت Claude Pro برای یک ماه می‌گیره، یا معادلش، به انتخاب خودش. حداکثر ۴ برنده. اگه تا آخر مهلت کمتر از ۵۰ نفر پیدا کنن، بین همون‌ها یه نفر برنده می‌شه.۲. مهلت و قرعه‌کشی: حداکثر یه ماه بعد از انتشار این ویدیو، یعنی تا ۱۱ دسامبر ۲۰۲۶، ساعت ۰۶:۰۰ به وقت تهران.۳. شرکت: صندوق گنج رو توی بازی باز کنین، کدی که سرور ما می‌ده (با BB شروع می‌شه) رو copy کنین و زیر همین ویدیو کامنت کنین. هر حساب یوتیوب فقط یه بار شرکت می‌کنه و هر نفر حداکثر یه بار برنده می‌شه.۴. تقلب حذف می‌شه: کدی که سرور نداده، کد تکراری، حساب تکراری، حسابی که بعد از انتشار ویدیو ساخته شده، و چند کد از یه شبکه. کامنتی که با قوانین انجمن یوتیوب جور نباشه هم حذف می‌شه: https://www.youtube.com/howyoutubeworks/policies/community-guidelines/۵. قرعه‌کشی شفافه، مثل قرعه‌کشی قبلی کانال: همهٔ عددهاش رو منتشر می‌کنیم که هر کسی خودش دوباره حسابش کنه.YouTube و Anthropic حامی یا برگزارکنندهٔ این مسابقه نیستن؛ با شرکت، YouTube رو از هر مسئولیتی دربارهٔ اون مبرا می‌دونین.حریم خصوصی: سرور فقط کد، یه شناسهٔ تصادفی دستگاه، seed دنیا و یه هش کلیددار از IP (نه خود IP) رو نگه می‌داره؛ برای شمارش، کامنت‌ها و تاریخ ساخت حساب‌ها خونده می‌شه؛ فقط برای همین مسابقه.

لینک‌ها همین‌جاست، راحت برشون دار؛ برای حمایت از ما یه کامنت معنادار برامون بذار، مرسی.

Mr MP | هوش مصنوعی و کسب‌وکارhttps://mrmp.pro

Claude, Claude Code, Codex, Antigravity, Ghidra, MCP, Windows, YouTube, Cloudflare, itch.io, CrazyGames, Poki and Kotaku are their owners' trademarks, shown only to identify them.Node.js is a registered trademark of the OpenJS Foundation; no affiliation or endorsement.Luanti (luanti.org): code LGPL 2.1+, media CC BY-SA 3.0/4.0; Minetest Game media CC BY-SA 3.0 (Perttu Ahola and contributors). Block Bazaar is our own code, art and sound.

#مهندسی_معکوس #ClaudeCode #هوش_مصنوعی

متن کامل ویدیو

نمایش

تا آخر این ویدیو یاد می‌گیرین که skill مهندسی معکوس، که این روزها خیلی سر زبون‌ها افتاده، چطوری کار می‌کنه و چطوری ازش استفاده کنین. بازی‌ای که باهاش ساختیم رو هم می‌بینین؛ و با بازی کردنش توی سایت ما، می‌تونین برندهٔ یکی از چهار تا اکانت Claude Pro بشین، که Claude Code هم داره. اگه با Claude Code، Codex یا Antigravity کار می‌کنین، این ویدیو رو نباید از دست بدین. یه skill هستش به اسم REA، که روی Claude Code نصبش می‌کنین، و بعد Claude می‌تونه بره داخل فایل اجرایی یه برنامه، و بفهمه از درون چطوری کار می‌کنه.

ما با همین، یه بازی مکعبی واقعی رو، شبیه ماینکرفت، از داخل باز کردیم؛ جواب‌هاش رو، ادعا به ادعا، با کد اصلی خود بازی چک کردیم؛ و از چیزی که یاد گرفتیم، بازی خودمون رو ساختیم. توی این ویدیو قدم به قدم یادتون می‌دم چطوری: چی کار بکنین، و چی کار نکنین. و یه جایزه هم هست: توی همین بازی که با مهندسی معکوس ساختیم، یه گنج قایم کردم. تا چهار نفر، می‌تونن یه اکانت Claude Pro رو برای یک ماه داشته باشن، که باهاش به Claude Code هم دسترسی دارن؛ یا معادلش، به انتخاب خودشون.

به ازای هر پنجاه نفری که گنج رو پیدا کنن، یه نفر این جایزه رو می‌بره. ویدیو رو تا آخر ببینین، تا بگم چطوری دنبالش بگردین، و برین پیداش کنین. این ویدیو رو هم، به درخواست یکی از بیننده‌ها ساختیم: دکتر فرگاد (@dr.fargod93). اگه اشتباه گفتم ببخشید دکتر! مرسی که ازمون خواستی! بریم شروع کنیم!

اول، به زبون ساده: مهندسی معکوس یعنی چی؟ فرض کنین یه غذای خوشمزه خوردین، و دستورش رو ندارین. مزه می‌کنین، بو می‌کنین، و کم‌کم می‌فهمین چی توشه، و به چه ترتیبی پخته شده. مهندسی معکوس همینه، برای نرم‌افزار: برنامه رو داریم، ولی کدی که باهاش نوشته شده رو نداریم، و می‌خوایم بفهمیم از درون چطوری کار می‌کنه. مشکل اینجاست که فایل اجرایی یه برنامه، به زبون ماشینه؛ یه عالمه عدد، که آدم نمی‌تونه بخونه. یه ابزار رایگان هست به اسم Ghidra، که این زبون ماشین رو برمی‌گردونه به یه چیزی شبیه کد، که می‌شه خوندش.

ولی برای یه برنامهٔ بزرگ، خوندن همونم کار سختیه. اینجاست که REA میاد. REA یه ابزار رایگان و متن‌باز هست، که روی Claude Code به شکل یه skill نصب می‌شه، به‌اضافهٔ چند تا ابزار، که از راه MCP بهش وصل می‌شن. یعنی شما یه برنامهٔ جدا باز نمی‌کنین؛ همون Claude Code خودتونه، که حالا بلده Ghidra رو خودش به کار بگیره: فایل رو باز کنه، بگرده، کدها رو بخونه، و آخرش یه گزارش بنویسه. و یه چیز خیلی مهم: روش REA اینه که کنار هر ادعا، یه برچسب بذاره. «دیده‌شده»، یعنی مستقیم توی خود برنامه دیده.

«حدسی»، یعنی از چیزهایی که دیده، نتیجه گرفته. و «نامعلوم»، یعنی نفهمیده. این سه تا برچسب رو یادتون بمونه؛ توی برگهٔ جواب، می‌بینین چقدر به کار میان. ما REA رو روی Claude Code اجرا کردیم. به گفتهٔ سازنده‌ش، روی Codex و Antigravity هم کار می‌کنه؛ ولی ما روی اون دو تا، تستش نکردیم. خب، چی رو باز کنیم؟ ما یه بازی مکعبی انتخاب کردیم، شبیه ماینکرفت، به اسم Luanti. دلیلش ساده‌ست: چون این بازی متن‌بازه، و ما می‌تونیم ادعاها رو با کد اصلیش چک کنیم. و این برای ما یه برگ برنده بود.

به REA، بازی نصب‌شده رو دادیم، و گفتیم فقط از خود برنامه کار کنه، و حق نداره سراغ کد اصلی بره. ولی خودمون کد اصلی همون نسخه، یعنی پنج، نقطه، هجده، نقطه، صفر، رو کنار گذاشتیم، تا آخر کار، جواب‌های REA رو یکی‌یکی باهاش چک کنیم. یعنی این بار فقط نمی‌گیم «REA چی گفت»؛ می‌گیم «چقدرش درست بود». دو تا سؤال ازش پرسیدیم. یک: دنیای این بازی، یعنی زمین و کوه و غار و درخت، چطوری از یه عدد ساخته می‌شه؟ همون عددی که بهش می‌گن seed. دو: وقتی یه بلوک رو می‌کنین، بازی از کجا می‌فهمه به کدوم بلوک نشونه گرفتین، کندنش چقدر طول می‌کشه، و دنیا چطوری تیکه‌تیکه ذخیره می‌شه.

حالا نصب. قبل از اینکه حتی دستور نصب رو بزنین، سه تا چیز باید درست باشه. ما سر هر سه‌تاش گیر کردیم، که شما گیر نکنین. یک: Node.js. نسخه‌ای از REA که ما نصب کردیم، شش، نقطه، هشت، نقطه، صفر، نسخهٔ قدیمی Node.js رو قبول نمی‌کنه. اگه Node.js بیست و چهار دارین، باید دست‌کم بیست و چهار نقطه بیست و دو نقطه یک باشه؛ بقیهٔ نسخه‌هایی که قبول می‌کنه، روی صفحه‌ست. نسخه‌ای که روی کامپیوتر ما بود، بیست و چهار نقطه سیزده بود، و نصب همون اول ایستاد. پس اول توی ترمینال، نسخهٔ Node.js رو ببینین، و اگه قدیمیه، update کنین.

دو: Java. Ghidra برای کار کردن، Java می‌خواد؛ اونم نسخهٔ بیست و یک، شصت و چهار بیتی. روی کامپیوتر ما فقط نسخهٔ هشت بود، که به درد Ghidra نمی‌خوره. سه، و این یکی راحت آدم رو گیر می‌ندازه: نسخهٔ Ghidra. شاید فکر کنین جدیدترین نسخه، بهترینه. نه! REA، نسخهٔ شش نقطه هشت، فقط Ghidra دوازده نقطه یک رو قبول می‌کنه. ما اول جدیدترینش، یعنی دوازده نقطه دو رو نصب کردیم، و REA قبولش نکرد. نسخهٔ دوازده نقطه یک نقطه چهار رو، از صفحهٔ رسمی خودش download کنین؛ ما همون رو تست کردیم، و همه‌چیز درست کار کرد.

حالا خود REA. فقط از پکیج رسمیش بگیرینش، که اسمش روی صفحه‌ست. ما قبل از نصب چک کردیم که این پکیج، مال همون سازنده‌ایه که صفحهٔ رسمی REA معرفی کرده. دستور setup رو از روی صفحه copy کنین، و توی ترمینال paste کنین. یه فهرست میاد، که می‌پرسه REA رو برای کدوم ایجنت نصب کنه. اینجا حواستون باشه: اول با space، تیک Claude Code رو بزنین، بعد Enter. اگه همین‌طوری Enter بزنین، هیچ ایجنتی انتخاب نمی‌شه، و فقط خود skill نصب می‌شه، بدون ابزارهاش؛ یعنی Claude بلده چی کار کنه، ولی دستش خالیه.

ما همین اشتباه رو کردیم. یه راه دیگه هم هست: اسم Claude Code رو توی خود دستور بنویسین؛ اونم روی صفحه‌ست. نکتهٔ بعدی: REA باید بدونه Ghidra کجاست. موقعی که setup رو می‌زنین، آدرس پوشهٔ Ghidra و پوشهٔ Java رو هم بهش بدین، با دو تا متغیری که روی صفحه‌ست. ما بار اول این کار رو نکردیم، و REA نصب شد، ولی Ghidra نداشت. برای چک کردن، setup رو با گزینهٔ --dry-run بزنین؛ چیزی نصب نمی‌کنه، فقط می‌گه همه‌چیز سر جاشه یا نه. برای ما نوشت: Ghidra پیدا شد، نسخهٔ دوازده نقطه یک نقطه چهار، و همهٔ چک‌ها درسته.

و یه جا هم، خود Claude Code اجازه نداد: وقتی خواستیم نصب رو به خود Claude بسپریم، حالت auto mode، اجرای کد بیرونی رو قبول نکرد. این یه قفل ایمنی خود Claude Code هست؛ نه اینکه Claude کار ما رو رد کرده باشه. راه‌حلش ساده‌ست: دستورهای نصب رو خودتون توی ترمینال بزنین. بعدش Claude Code رو ببندین و دوباره باز کنین؛ و اگه خواستین مطمئن بشین REA وصله، دستور /mcp رو بزنین. حالا سؤال. اینجا جاییه که راحت می‌شه اشتباه کرد. نگین «این بازی رو کامل برام توضیح بده».

به گزارش خود REA، فایل اجرایی Luanti، بیشتر از سیزده هزار تا تابع داره. یه سؤال مشخص بپرسین، در رابطه با یه چیز مشخص. ما دقیقا دو تا سیستم رو اسم بردیم: ساخت دنیا، و کندن و گذاشتن بلوک. و سه تا چیز دیگه هم توی پرامپت نوشتیم، که شما هم بنویسین. یک: برای هر ادعا، مدرکش رو بنویسه؛ یعنی کدوم تابع، کدوم متن، یا کدوم آدرس، توی خود فایل. دو: کنار هر ادعا، صریح بخواین که برچسب «دیده‌شده»، «حدسی» یا «نامعلوم» بذاره. سه: یافته‌ها رو همین‌طور که جلو می‌ره، توی یه فایل بنویسه، نه فقط آخر کار؛ تا اگه وسط کار متوقفش کردین، چیزی از دست نره.

ما سقف نیم ساعت گذاشته بودیم. و یه نکتهٔ دیگه: اگه کد اصلی برنامه رو هم دارین، بذارینش بیرون از پوشه‌ای که Claude توش کار می‌کنه، و توی پرامپت هم بگین سراغش نره. وگرنه بعدا نمی‌دونین جواب رو از خود برنامه درآورده، یا از روی کد خونده. پرامپتی که ما استفاده کردیم، توی توضیحاته. و حالا، اجرا. یه جلسهٔ تازهٔ Claude Code، با REA. این همون جلسه‌ست، با همهٔ کارهایی که واقعا انجام داد؛ فقط تندترش کردیم. اولین کاری که Claude کرد، این بود که دستورالعمل REA رو باز کرد و خوند؛ یعنی اول یاد گرفت چطوری کار کنه، بعد رفت سراغ کار.

بعد فایل اجرایی بازی رو با Ghidra باز کرد، یه نگاه کلی انداخت، و شروع کرد به گشتن: دنبال تابع‌هایی که اسمشون به ساخت دنیا می‌خورد، و بعد، خوندن خود کدها. روی هم، پنجاه و چهار تا کار انجام داد، که سی و چهار تاش با ابزارهای REA بود؛ و سیزده بارش، خوندن کد یه تابع. یه نکتهٔ مهم که اینجا دیدیم: این فایل اجرایی، هنوز اسم تابع‌هاش رو توی خودش داشت. یعنی Claude می‌تونست ببینه یه تابع، اسمش makeChunk هست؛ یعنی «یه تیکه از دنیا رو بساز». همین، کار رو خیلی راحت‌تر کرد.

اگه برنامه‌ای این اسم‌ها رو نداشته باشه، کار خیلی سخت‌تر می‌شه؛ ما روی همچین برنامه‌ای تست نکردیم، پس انتظارتون رو پایین‌تر بیارین. نزدیک دقیقهٔ نه، Claude خواست بازی رو اجرا کنه، تا رفتارش رو موقع کار هم ببینه. ولی ابزار REA برای این کار، روی ویندوز جواب نداد، و پیام داد که این امکان، روی ویندوز در دسترس نیست. پس هرچی پیدا کرد، فقط از خوندن فایل بود، نه از دیدن بازی در حال اجرا. اگه می‌خواین REA برنامه رو موقع اجرا هم ببینه، باید روی Linux، WSL یا مک کار کنین؛ ما اینو تست نکردیم.

ده دقیقه و سی و دو ثانیه بعد، Claude خودش کار رو تموم کرد، و یه گزارش بیست و نه کیلوبایتی تحویل داد. سقف نیم ساعتی ما، اصلا لازم نشد. و یه چیز دیگه. اواخر اکتبر، چند تا از کاربرها گزارش دادن که Claude، وسط مهندسی معکوس بعضی بازی‌ها، کار رو متوقف می‌کنه. سایت Kotaku هم در رابطه باهاش نوشت؛ ولی تا وقتی که ما بررسی کردیم، Anthropic تأییدش نکرده بود. پس اینا فعلا گزارش کاربرانه. برای ما پیش نیومد: Claude نه توی این اجرا، نه توی هیچ‌کدوم از جلسه‌های بعدی، یه بار هم کار رو متوقف نکرد، یا رد نکرد.

خب، چی پیدا کرد؟ سه تا چیز رو بهتون می‌گم، که به نظرم فوق‌العاده‌ست. اول، دنیا از یه عدد. seed فقط یه عدده. بازی، مختصات هر نقطه از زمین رو، با همین seed و چند تا عدد ثابت قاطی می‌کنه: هزار و ششصد و نوزده، سی و یک هزار و سیصد و سی و هفت، پنجاه و دو هزار و پانصد و نود و یک، و هزار و سیزده. نتیجه‌ش یه عدده، که تصادفی به نظر میاد، ولی هر بار که حساب بشه، همونه. بعد چند لایه از این عددها، از درشت تا ریز، روی هم جمع می‌شن، و ارتفاع زمین درمیاد. برای همینه که یه seed، همیشه همون دنیا رو می‌سازه.

REA این عددها رو، مستقیم از زبون ماشین بیرون کشید؛ و حتی فرمول رودخونه‌ها رو، با پنج تا عدد ثابتش. دوم، زمان کندن. هر بلوک یه سطح سختی داره: هر چی سطحش بالاتر باشه، محکم‌تره. مثلا بلوک خاکی، سطحش از بلوک سنگی کمتره، پس زودتر کنده می‌شه. ابزارها هم سطح دارن. اگه سطح ابزارتون، دو تا یا بیشتر از سطح بلوک بالاتر باشه، زمان کندن به همون نسبت کم می‌شه؛ مثلا سه سطح بالاتر، یعنی یک‌سوم زمان. و هر سطح فاصله، عمر ابزار رو سه برابر می‌کنه. سوم، یه قانون پنهون توی نشونه‌گیری.

اگه نشونه‌گیریتون، هم به یه بلوک بخوره، هم به یه موجود یا یه بازیکن، بازی اون موجود رو انتخاب می‌کنه، نه بلوک رو؛ حتی اگه اون بلوک، تقریبا به اندازهٔ یه بلوک به شما نزدیک‌تر باشه. یعنی بازی، به موجودها یه امتیاز اضافه می‌ده. و ذخیره: دنیا تیکه‌تیکه‌ست؛ هر تیکه، شونزده در شونزده در شونزده بلوک، و هر بلوک فقط چهار بایت. تیکه‌ها فشرده می‌شن، و توی یه دیتابیس ذخیره می‌شن. ولی اینا درسته؟ اینجاست که اون برگ برنده‌ای که گفتیم، ارزشش رو نشون می‌ده؛ چون ما می‌خواستیم خود این ابزار رو تست کنیم.

توی یه جلسهٔ جدا، همهٔ ادعاهای گزارش REA رو، یکی‌یکی با کد اصلی Luanti، همون نسخه، چک کردیم. REA هشتاد تا ادعا داشت: هفتاد و یک تا درست، چهار تا نیمه‌درست، و صفر تا غلط؛ پنج تا هم از روی کد نمی‌شد چک کرد. یعنی از ادعاهایی که می‌شد چک کرد، نود و چهار و هفت دهم درصد، کاملا درست. اون چهار تای نیمه‌درست هم، ایدهٔ غلط نبودن؛ فقط یه جزئیات کم داشتن. و مهم‌تر: چهل و شش تا از این ادعاها، یه عدد دقیق، یه فرمول، یا ترتیب دقیق مراحل رو می‌گفتن؛ چهل و دو تاش، مو به مو درست بود.

همون عددهای seed، دقیقا همون‌هایی هستن که توی کد اصلی نوشته شده. و یه درس از برچسب‌ها: «حدسی»های REA، هر چهارده تا درست بودن؛ ولی توی اجرای بعدی، از سی و یک تا «حدسی»، شش تاش نیمه‌درست بود. پس «حدسی» رو، همیشه چک کنین. حالا مسابقه. همون سؤال، یه جلسهٔ تازهٔ Claude Code، ولی بدون REA. شرایط یکی: سقف نیم ساعت، و هیچ‌کدوم از دو تا اجرا، ترمینال نداشتن. بدون REA، Claude فقط می‌تونست توی فایل اجرایی، دنبال متن و اسم بگرده. نتیجه؟ زودتر تموم کرد: هفت دقیقه و پنجاه و نه ثانیه، در برابر ده دقیقه و سی و دو ثانیه.

نود و شش تا ادعا: هفتاد و نه تا درست، نه تا نیمه‌درست، و اونم صفر تا غلط؛ یعنی هشتاد و نه و هشت دهم درصد، از ادعاهایی که می‌شد چک کرد. خیلی نزدیک به REA، نه؟ ولی یه چیز عجیب این وسط بود. بیشتر «دیده‌شده»‌های این اجرا، فقط می‌گفتن «این اسم، توی فایل هست»؛ که تقریبا همیشه درسته. ادعای دقیق، یعنی عدد و فرمول، فقط هفت تا داشت، که چهار تاش درست بود؛ در برابر چهل و شش تای REA. همون جایی که REA فرمول seed رو با همهٔ عددهاش نوشت، این اجرا نوشته بود: «نامعلوم».

البته منصفانه بگم: این اجرا چند تا چیز هم پیدا کرد که REA نداشت؛ مثلا چک‌هایی که سرور بازی می‌کنه، تا کسی موقع کندن تقلب نکنه. پس درس اینه: فقط به درصد نگاه نکنین؛

ببینین گزارش، دقیقا چی می‌گه. اگه تا اینجا یه چیز تازه در رابطه با مهندسی معکوس یاد گرفتین، یه لایک بزنین، تا این ویدیو به دست آدم‌های بیشتری برسه.

بذارین همهٔ نکته‌ها رو، توی یه فهرست کوتاه بگم؛ یه جا یادداشتش کنین. این کارها رو بکنین: اول نسخهٔ Node.js رو چک کنین.

Ghidra دوازده نقطه یک بگیرین، نه جدیدترینش. توی setup، تیک Claude Code رو با space بزنین. آدرس Ghidra و Java رو به setup بدین، و با --dry-run چک کنین. یه سؤال مشخص بپرسین، با مدرک و برچسب. و اگه می‌تونین، جواب‌ها رو با یه منبع دیگه چک کنین. و این کارها رو نکنین: به «حدسی»ها مثل حقیقت تکیه نکنین. روی ویندوز، انتظار نداشته باشین REA برنامه رو موقع اجرا ببینه. فکر نکنین هر برنامه‌ای، مثل این یکی، اسم تابع‌هاش رو توی خودش داره. فقط به درصد نگاه نکنین. و هیچ‌وقت، سراغ نرم‌افزاری نرین که اجازهٔ بررسیش رو ندارین.

و همین آخری، یه حرف جدیه. مهندسی معکوس، ابزار قدرتمندیه، و مرز داره. ما REA رو فقط روی Luanti به کار بردیم، که متن‌باز هست، با لایسنس LGPL، نسخهٔ دو نقطه یک. و از Luanti، فقط رفتار رو یاد گرفتیم: اینکه دنیا چطوری ساخته می‌شه، و کندن چطوری حساب می‌شه. بازی خودمون، کد کاملا جدیده؛ با اسم خودمون، ظاهر خودمون، و صدای خودمون. هیچ کد، طرح یا صدایی از Luanti یا ماینکرفت توش نیست؛ و اسم Luanti فقط توی یه خط، توی صفحهٔ سازنده‌ها میاد، که می‌گه از رفتارش یاد گرفتیم.

پس قانون ما اینه: REA رو فقط روی نرم‌افزاری به کار ببرین که مال خودتونه، یا اجازهٔ بررسیش رو دارین. خود سازندهٔ REA هم همین رو نوشته، و نوشته که رفتار رو بازسازی کنین، نه اینکه کد و فایل‌هاش رو کپی کنین. و اینم بگم: من وکیل نیستم، و این مشاورهٔ حقوقی نیست؛ اگه مطمئن نیستین یه کاری مجازه یا نه، قبلش از یه متخصص بپرسین.

حالا بخش جذاب: ساختن بازی خودمون. اسمش رو گذاشتیم بلوک‌بازار: یه دنیای مکعبی، که توش کسب‌وکار راه می‌ندازین. گزارش REA رو دادیم به یه جلسهٔ تازهٔ Claude Code، و گفتیم یه بازی تحت وب بساز، که دنیاش و کندنش از روی همین گزارش باشه، ولی همه‌ش کد جدید باشه. و چند تا چیز مخصوص خودمون خواستیم: بلوک‌هایی با ظاهر ایرانی، مثل کاشی فیروزه‌ای، آجر، گچ، چوب، حوض باغ ایرانی، و درخت انار؛ که همه‌شون توی خود کد کشیده می‌شن. و یه پیچش کسب‌وکاری: یه بلوک پیشخون، که وقتی می‌ذارینش، مغازه‌تون باز می‌شه.

مشتری‌ها میان، خرید می‌کنن، سکه می‌گیرین، و با سکه، بلوک تازه و مغازهٔ بزرگ‌تر می‌خرین. هدف: صد تا سکه. مرحلهٔ اول، بیست و یک دقیقه طول کشید. Claude دنیا رو با همون روشی ساخت که REA پیدا کرده بود: لایه‌های عدد تصادفی، و یه seed جدا برای هر تیکه. زمان کندن بلوک‌ها هم، از همون قانون سطح‌ها اومد. ولی یه نکته: Claude توی این جلسه، نه ترمینال داشت نه مرورگر، و خودش گفت که نمی‌تونه بازی رو اجرا کنه. پس تست با ما بود. توی مرورگر تستش کردیم: کار می‌کرد؛ راه رفتن، پریدن، کندن و گذاشتن، همه درست.

ولی سه تا مشکل بزرگ داشت. روی گوشی، دید اون‌قدر کوتاه بود که دنیا یه دشت صاف و خالی پر از ماسه به نظر می‌رسید. بازی رو که شروع می‌کردی، صاف روبه‌روی تنهٔ یه درخت بودی. و توی دقیقهٔ اول، هیچ‌چی نمی‌گفت مغازه کجاست. و اینجا مهم‌ترین نکتهٔ ساختن با Claude هست: مشکل‌ها رو دقیق بنویسین، و همه رو با هم بدین. ما یه فهرست پنج‌تایی نوشتیم، و مرحلهٔ دوم رو با همون شروع کردیم. نزدیک بیست و هفت دقیقه بعد: شروع روی یه تپهٔ سبز، با چشم‌انداز؛ یه راهنما برای قدم‌های اول؛ و پیشخون، آماده توی دستتون.

مرحلهٔ سوم، هفده دقیقه: مه هم‌رنگ آسمون، مشتری‌هایی که واقعا راه می‌رن، با لباس‌های مختلف، و یه حباب سکه کنار سرشون موقع خرید. مرحلهٔ چهارم، سی و یک دقیقه: رودخونه، درخت نخل، بادگیر، فانوس، و غروب. ولی وقتی فیلمش رو گرفتیم، مشتری‌ها صف می‌کشیدن و هیچی نمی‌خریدن؛ اینم رفت توی فهرست مرحلهٔ بعد. مرحلهٔ پنجم، پنجاه و یک دقیقه: دروازهٔ طاق‌دار، سه جور غرفه، حباب حرف فارسی، آتش‌بازی، یه غرفه برای خودم، و یه گنج، با سرور خودش. و بازی، اصلا باز نشد! یه اسم، توی یه فایل، دو بار تعریف شده بود؛ همون یه خط رو درست کردیم.

بعد، خودم بازیش کردم، و غرفهٔ خودم رو پیدا نکردم! یه دلیلش توی بازی نبود: Cloudflare، جلوی سایت ما، فایل‌های قبلی رو تا یه هفته نگه می‌داشت، و من نسخهٔ قدیمی رو بازی می‌کردم. پس هر نسخهٔ تازه رو، توی یه پوشهٔ تازه بذارین. حالا بازی روبه‌روی غرفه شروع می‌شه، با یه نقشهٔ کوچیک. مرحلهٔ ششم، نوزده دقیقه: جای مغازه محدود شد، حداکثر سه تا؛ و تاجرهای رقیب اومدن: کاراکترهای خود بازی، نه بازیکن واقعی، که غرفه می‌سازن، و سر مشتری با شما رقابت می‌کنن. روی هم، Claude توی شش مرحله، دو ساعت و چهل و هفت دقیقه روی ساختن بازی کار کرد، با پانصد و شش تا کار؛ به‌اضافهٔ تست‌ها و اصلاح‌هایی که ما بین مرحله‌ها انجام دادیم.

کل بازی، حدود چهار مگابایته، و بدون نصب، توی مرورگر باز می‌شه. قبل از اینکه بازی تموم‌شده رو نشونتون بدم، سؤالی که حتما براتون پیش اومده: از یه بازی تحت وب، می‌شه درآمد داشت؟ این‌ها رو تا نوامبر دو هزار و بیست و شش بررسی کردیم. یک: itch.io. بازی رو رایگان می‌ذارین، با گزینهٔ «هرچقدر دوست داری پرداخت کن». دو: CrazyGames. دو مرحله داره. توی مرحلهٔ اول، Basic Launch، بازی منتشر می‌شه، ولی درآمدی نداره. اگه بازی انتخاب بشه، یعنی Full Launch، با ابزار خودشون تبلیغ نشون داده می‌شه، و از درآمد تبلیغات سهم می‌گیرین.

حجم اول بازی هم باید زیر پنجاه مگابایت باشه؛ که بازی ما، خیلی زیرشه. درصد سهم رو، توی صفحهٔ رسمیشون پیدا نکردیم، پس عددی نمی‌گم. سه: Poki. اونجا هر بازی رو یه نفر بررسی می‌کنه؛ و شرایطش رو، برای هر بازی جداگونه تعیین می‌کنن.

چهار، و به نظر من برای یه کسب‌وکار، جالب‌ترینش: همین مهارت رو به‌عنوان خدمت بفروشین. یه بازی کوچیک، با برند یه فروشگاه یا یه رستوران، برای تبلیغ. و صادقانه بگم: ما هنوز بازی رو برای این سایت‌ها نفرستادیم، و از هیچ‌کدوم درآمدی نگرفتیم؛ پس درآمدش، تست نشده. اینجا قول پول نمی‌دم؛ فقط راه رو نشون می‌دم. و حالا، چیزی که اول ویدیو قولش رو دادم: بلوک‌بازار؛ بازی‌ای که با کمک مهندسی معکوس، و چیزهایی که یاد گرفتیم، ساختیم. یه دره، توی نور عصر. از دروازهٔ طاق‌دار بازار رد می‌شیم، و وسط بازار، غرفهٔ بزرگ MrMpAi هست، که خراب نمی‌شه.

و اونی که اونجا وایستاده، منم! با صدای خودم سلام می‌کنه، و چهارده نفر دورش، براش دست می‌زنن. بیرون بازار، چند تا بلوک چمن رو می‌کنیم، جاش کاشی فیروزه‌ای می‌ذاریم، و پیشخون رو می‌ذاریم. مغازه باز شد! اولین مشتری میاد، می‌گه «یه کیلو انار لطفا»، و پول می‌ده. چند دقیقه بعد: بازار بزرگ‌تر، فانوس‌های غروب، صد تا سکه، آتش‌بازی، و صفحهٔ هدف، با کاغذرنگی. همه‌ش توی مرورگر، بدون نصب، روی کامپیوتر و گوشی؛ و برای گوشی، دکمه‌های لمسی داره. بازی خودش ذخیره می‌شه، و یه دکمه هم هست، که شهرتون رو با یه لینک، برای دوستاتون بفرستین.

بازی الان روی سایت ماست: demo.mrmp.pro/block-bazaar. لینکش، توی توضیحات و کامنت پین‌شده هم هست؛ همین الان می‌تونین بازیش کنین. و حالا، جایزه! یه جایی توی همین بازی، یه صندوق قایم کردم: گنج MrMpAi. کاراکترم سه تا راهنمایی بهتون می‌ده، یکی‌یکی، و می‌گه: زود باش بگرد، تا بقیه جاشو پیدا نکردن، تو بتونی پیداش کنی. زیر سکه‌هاتون هم یه راهنمای قدم‌به‌قدم هست. جوری ساختیمش که با یه کم بازی کردن، خیلی ساده به صندوق گنج برسین. جاش رو اینجا نمی‌گم. صندوق رو که باز کنین، سرور ما یه کد مخصوص بهتون می‌ده، که با BB شروع می‌شه.

اون کد رو copy کنین، و زیر همین ویدیو، توی کامنت بذارین؛ و اگه کنار کد، نظرتون رو هم بنویسین، عالی می‌شه. یه شمارندهٔ زنده هم توی بازی هست، که می‌گه تا الان چند نفر پیداش کردن. و قوانین جایزه، دقیق: یک: به ازای هر پنجاه نفری که کد درست بفرستن، یه نفر برنده می‌شه، و یه اکانت Claude نسخهٔ Pro رو، برای یک ماه می‌گیره؛ یا معادلش، به انتخاب خودش. حداکثر چهار برنده. دو: قرعه‌کشی، حداکثر یه ماه بعد از انتشار این ویدیو. سه: هر حساب یوتیوب، فقط یه بار شرکت می‌کنه.

چهار: تقلب حذف می‌شه: کد تکراری، حساب تکراری، حسابی که بعد از انتشار ویدیو ساخته شده، و چند تا کد از یه شبکه. پنج: قرعه‌کشی شفافه، مثل قرعه‌کشی قبلی کانال؛ همهٔ عددهاش رو منتشر می‌کنیم، که هر کسی خودش دوباره حسابش کنه. همهٔ قوانین، توی توضیحات ویدیو هم هست. پس لطفا برای حمایت، این ویدیو رو برای دوستاتون بفرستین، که اونا هم بتونن توی این قرعه‌کشی شرکت کنن، و یه چیز تازه یاد بگیرن.

و حالا نوبت شماست. راهش رو دیدین: یه برنامهٔ متن‌باز، یا برنامه‌ای که اجازه‌ش رو دارین، انتخاب کنین. REA رو روی Claude Code نصب کنین، با همون نکته‌ها. یه سؤال مشخص بپرسین. «حدسی»ها رو چک کنین. و از چیزی که یاد گرفتین، یه چیز کاملا مال خودتون بسازین. اگه مشکلی پیش اومد، توی کامنت بگین؛ در کنارتون هستم. و سؤال من از شما: بعدی چی رو مهندسی معکوس کنیم و بسازیم؟ توی کامنت‌ها بنویسین؛ پیشنهادی که بیشترین لایک رو بگیره، ویدئوی بعدیه. مرسی که تا اینجای ویدیو همراه من بودین.

امیدوارم حالا با خیال راحت، اولین مهندسی معکوس خودتون رو با Claude Code شروع کنین. می‌بینمتون.