مار و پله آنلاین؛ بازی چندنفرهی بلادرنگ تا ۸ نفر
بازی مار و پلهی آنلاین تا ۸ نفره با اتاق و لینک دعوت، تختهی تصادفی، گفتگو، تماشاگر و برگشت بعد از قطع اتصال؛ روی Cloudflare Workers، قابل نصب روی گوشی.
معرفی
مار و پله یک بازی آنلاین چندنفره است که برای بازی با دوستان ساختم. بدون نصب و بدون ثبتنام: نام خودت را مینویسی، یک اتاق میسازی، کد چهار حرفی یا لینک دعوت را میفرستی و همه روی یک تخته بازی میکنید؛ از گوشی یا رایانه، تا ۸ نفر همزمان. هر حرکت لحظهای برای همه دیده میشود. بازی روی marpele.alipour.me اجرا میشود و میتوانی همین حالا امتحانش کنی.
امکانات بازی
اتاق با کد: ساخت اتاق با یک کد چهار حرفی، کپی لینک دعوت و اشتراکگذاری. در اتاق انتظار همهی بازیکنها را میبینی و میزبان بازی را شروع میکند.
تختهی تصادفی: تخته ۱۴۴ خانهای است و در هر دست مارها و نردبانها از نو و بهصورت تصادفی چیده میشوند، با قاعدههایی که تخته همیشه منصفانه و بازیشدنی بماند (مار و نردبان زنجیرهای نداشته باشند، به هم نزدیک نشوند و کوتاه باشند).
قاعدهها: برای برد باید دقیقاً به خانهی آخر رسید و با آوردن ۶ یک نوبت اضافه میگیری.
انیمیشن: تاس، حرکت مهره از خانهای به خانهی دیگر، بالا رفتن از نردبان و سر خوردن از مار، و جشن برنده، با صدا که میشود خاموشش کرد.
گفتگو و ایموجی: گفتگوی داخل بازی با ایموجیهای سریع، و گزارش بازی که هر حرکت را مینویسد.
تماشاگر: اگر بازی شروع شده باشد، با کد اتاق تماشاگر میشوی. تا ۶۰ تماشاگر میشود و آنها هم میتوانند گفتگو کنند.
قطع اتصال: اگر اینترنت یک بازیکن قطع شود، یک دقیقه فرصت دارد برگردد و به همان جای بازی وارد شود؛ بعد از آن، بهجایش تاس میاندازند تا بازی نایستد. میزبان میتواند بازیکن قطعشده را بیرون کند.
بازی دوباره: بعد از پایان، میزبان با همان گروه یک دست تازه شروع میکند.
روی یک دستگاه: تا ۸ نفر میتوانند روی یک گوشی یا رایانه بازی کنند، و اگر یک نفر باشی رایانه هم وارد رقابت میشود.
قابل نصب: مثل یک برنامه روی صفحهی اصلی گوشی نصب میشود و پوستهاش بدون اینترنت هم باز میشود.
نمودار زیر نحوهی ارتباط را نشان میدهد.
طراحی ظاهر
صفحهی بازی تیره و فارسی (راستبهچپ) است، با تختهای که مارها و نردبانها روی آن رسم شدهاند. چیدمان برای دسکتاپ و موبایل جدا طراحی شده: روی رایانه، تخته در وسط و فهرست بازیکنها و گزارش کنارش است، و روی گوشی تخته تمام عرض صفحه را میگیرد و گفتگو و گزارش از پایین باز میشوند. رنگ هر بازیکن ثابت است تا مهرهها آسان شناخته شوند.
نحوهی کار (فنی)
سرور تصمیم میگیرد. تاس را سرور میاندازد و قاعدههای بازی را سرور اجرا میکند، پس کسی نمیتواند تقلب کند. کد قاعدهها یکی است و هم سرور و هم صفحه از همان استفاده میکنند، تا در همه جا یکجور کار کنند.
هر اتاق یک واحد جدا. هر اتاق یک نمونهی مستقل روی Cloudflare Durable Objects است که وضعیت بازی را نگه میدارد و با WebSocket به همهی بازیکنها خبر میدهد. وضعیت ذخیره میشود، پس سرور دوبارهراهاندازی هم بازی را نمیپراند.
لبهی شبکه. بازی روی Cloudflare Workers اجرا میشود، یعنی نزدیک به کاربر و بدون سرور جدا برای نگهداری.
ایمنی. نام و پیامها پاکسازی میشوند، گفتگو سرعتمحدود است، اتصال فقط از خود سایت پذیرفته میشود، و اتاقها ظرفیت دارند.
بدون وابستگی. صفحه با جاوااسکریپت ساده و Canvas نوشته شده و فونت فارسی در خود بازی است.
ابزار
JavaScript، HTML Canvas، CSS
Cloudflare Workers و Durable Objects، WebSocket
PWA (Service Worker و Web App Manifest)
نتیجه
یک بازی کامل و روان که با یک لینک شروع میشود، بین چند نفر همزمان کار میکند و روی موبایل و رایانه یکجور خوب است.
از من حمایت کنید
اگر این نوشتهها به کارتان آمد، با یک حمایت کوچک به ادامهی آنها کمک کنید.
گالری
دربارهی این پروژه سوالی دارید؟
اگر دربارهی این پروژه سوالی دارید یا پروژهای مشابه در دست دارید، خوشحال میشوم با من در ارتباط باشید.