محمدحسین مؤذن‌نیا
همهٔ نمونه‌کارها

رزمک

استراتژی سه‌بعدی در مرورگر

نقش
همهٔ کار به‌تنهایی، از طراحی بازی تا برنامه‌نویسی
فناوری‌ها
TypeScript, three.js, WebGL 2, Bun, Preact, Electron
نشانی
razmk.ir

چرا ساختمش

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

چه ساختم

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

  • میدان نبرد سه‌بعدی با three.js و WebGL 2
  • ۱۵ یگان و ۱۳ ساختمان، از پیاده‌نظام و خودرو تا بالگرد جنگی، بمب‌افکن و دستهٔ پهپاد
  • حریف هوش مصنوعی که اقتصادش را برنامه‌ریزی می‌کند، ارتش می‌سازد و در چند موج حمله می‌کند
  • بازی آنلاین با اتاق و لابی، به‌همراه ذخیرهٔ بازی و بازپخش
  • مأموریت آموزشی برای کسی که اولین بار بازی استراتژی می‌کند
  • رابط کامل فارسی و راست‌چین، و رابط انگلیسی
  • نسخهٔ دسکتاپ کوچک برای macOS که همین بازی را باز می‌کند

بخش دشوار

نتیجه‌ای که تقلب‌پذیر نیست و تغییر نمی‌کند

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

یک بازی در دو جا

مسابقهٔ زنده روی سرور اجرا می‌شود. ذخیره و بازپخش همان شبیه‌سازی را در مرورگر اجرا می‌کنند. هر دو از یک لایهٔ نمایش استفاده می‌کنند، پس بازپخش دقیقاً شبیه خود مسابقه است.

وضعیت فعلی

رزمک هنوز در حال توسعه است، تا امروز با بیش از ۲٬۲۰۰ کامیت. همین حالا می‌توانید آن را در razmk.ir بازی کنید. کد بازی خصوصی است.

پروژه‌ای در ذهن دارید؟

در چند خط بنویسید چه می‌خواهید بسازید، برای چه کسانی و تا چه زمانی: hello@moazennia.ir. همهٔ پیام‌ها را خودم می‌خوانم. اگر کار در تخصص من باشد، برآورد زمان و هزینه را برایتان می‌فرستم.