Meisam Malekzadeh
Meisam Malekzadeh
خواندن ۳ دقیقه·۴ سال پیش

جاسوس بازی در جاوا‌اسکریپت

در دوران پیشا کرونا! یکی از بازی های محبوبی که توی زمان نهار و استراحت توی شرکت بازی میکردیم Spyfall یا به قول بچه ها جاسوس بود( البته در رتبه اول با اختلاف بسیار استوژیت قرار داشت!)

بازی خیلی ساده اما بامزه است، بین همه بازیکن ها کارت پخش میشه که روی همه اونها یک موقعیت یکسان نوشته شده(مثل ساحل، بانک،فرودگاه و ...) بجز یکی که نقش جاسوس رو داره، توی زمان حدودا ۶ دقیقه ای باید با پرسیدن سوال، بقیه سعی کنند جاسوس رو پیدا کنند و جاسوس سعی کنه بفهمه که اون موقعیت کجاست.

طبیعتا سوال ها و جواب ها نه باید اینقدر مستقیم باشه که سریع موقعیت لو بره نه اینقدر نامفهوم که جاسوس رو نشه پیدا کرد.

مشکل چی بود؟

مشکل اصلی یکی این بود که طبیعتا کارتها همیشه توی شرکت بود و فقط اونجا میشد بازی کرد و مشکل دوم هم اینکه کارت ها(فکر کنم ما نسخه کپی داشتیم) بی کیفیت بود و توی بعضی از دسته ها کارت جاسوس رو میشد حدس زد کدومه!

چندتایی سایت آنلاین هم بودند که قسمت پخش کارت رو انجام میدادن اما غیر از یکی که نسبتا خوب بود و بعدا یک دفعه غیب شد! بقیه خیلی مشکل داشتند. این شد که Challenge Accepted!

چالش ها
حجم پروژه خوشبختانه چندان بزرگ نیست چون فقط چندتا بخش داره اما کوچک بودن الزاما به معنای ساده بودن نیست!

۱ - همزمانی:

برعکس بیشتر پروژه ها که ارتباط کلاینت فقط با سرور برقراره و در ازاء درخواستی که ارسال میکنه جوابی رو دریافت میکنه، اینجا درخواست شما در لحظه باید روی کلاینت بقیه دوستاتون هم تاثیر بگذاره. برای مثال وقتی فرد جدیدی به بازی اضافه میشه همزمان بقیه بازیکن ها باید مطلع بشن بدون اینکه لازم باشه دکمه ای رو بزنن.

۲- چندزبانی! :

همه ممکنه زبان انگلیسیشون اینقدر خوب نباشه که بتونن موقعیت ها رو متوجه بشن یا حداقل وقتی میخونن تابلو نشن که جاسوس نیستن!
پس اگه قراره کاربردی باشه باید بتونه چند زبان رو پشتیبانی کنه و واسط کاربری هم برای زبان های RTL و هم برای LTR مناسب باشه.

3- انتشار رایگان:

طبیعتا من قصد نداشتم برای انتشار این بازی سروری تهیه کنم، چون بازی کاملا رایگان هست و با این نرخ دلار( الان چند شد؟‍!) هم قیمت ها چندان وسوسه کننده نیست!
بازی باید با ابزای ایجاد میشد که قابلیت انتشار به صورت SaaS روی سرویس های رایگان رو داشته باشه.
من برای فرانت از React/Typescript و برای بک اند از Node.js + MongoDB استفاده کردم.

4- ریسپانسیو

این یه بازی Party Game هستش، پس 100٪ کسانی که این بازی رو انجام میدن از موبایلشون استفاده میکنند و باید تجربه کاربری مناسبی روی گوشی ها داشته باشه.

5- جدی بودن!

درسته که این یه بازی ساده است، اما این به برنامه نویس چندان ارتباطی نداره!! یعنی پروژه همچنان باید کاملا اصولی و تا حد ممکن امن باشه.

نتیجه:

دموی آنلاین پروژه رو میتونید توی این آدرس ببینید www.bitbird.ir/spyfall ، کلاینت روی Firebase منتشر شده و API روی Heroku. (ممکنه بخاطر رایگان بودن سرویس، کمی کند باشه!)

سورس پروژه رو هم میتونید اینجا برای کلاینت و اینجا برای سرور ببینید.

و اگه دوست داشتید میتونید از اینجا برای من یک چایی بخرید! :)

جاوااسکریپتبرنامه‌نویسیریکتnode jsreact
برنامه‌نویس، کوله‌گرد، هیچهایکر
شاید از این پست‌ها خوشتان بیاید