7.3 KiB
تپهٔ آرزوها — روبات مارکت
بازی سهبعدی JavaScript با Three.js: پدر و بچه در جنگل راه میروند، از دستگاه خرید میکنند و به پیکنیک میرسند. مدلها با کد ساخته شدهاند.
اجرا
npm install
npm run dev
npm run build
node --test tests/*.test.js
کنترل
- چپ / راست یا A / D: حرکت
- بالا / پایین: زوم دوربین، بدون حرکت شخصیت
- دکمههای چهارجهته: نگه داشتن برای حرکت یا زوم در موبایل
- E یا دکمهٔ محصولات: باز کردن دستگاه در نزدیکی آن
- شروع دوباره: بازنشانی داستان، موجودی و زوم
گفتوگوها کوتاهاند و در کادر سفید پایین صفحه خودکار عوض میشوند. در طول تمام گفتوگوها، از جمله پل، حرکت آزاد است. هنگام خرید، تحویل محصول یا باز بودن دفترچه حرکت موقتاً متوقف میشود.
دستگاه ۶۰ کانال و خرید با هتومان
واحد بازی «هتومان» است: ۱۰ هتومان = ۱۰۰٬۰۰۰ ریال، یعنی هر هتومان ۱۰٬۰۰۰ ریال. موجودی اولیه ۵۰۰ هتومان است. همهٔ اعداد و قیمتها نمایشیاند و پرداخت واقعی ندارند.
دستگاه شش ردیف دهتایی با شمارههای ۱ تا ۶۰ دارد. فقط کانالهای ۲۱ تا ۶۰ قابل خریدند. با نزدیک شدن به دستگاه، نشان E / تعامل روی کارتخوان نمایش داده میشود. با E یا لمس نشان، پنجرهٔ خرید باز میشود: فقط شمارههای ۲۱ تا ۶۰ سمت راست و کد، محصول فرضی و قیمت کانالهای قابل خرید سمت چپ قرار دارند. کلیک روی شماره یا محصول، کد را پر میکند؛ «پرداخت» یا Enter مرحلهٔ کارتخوان را باز میکند. دوربین به کارتخوان نزدیک میشود؛ سپس با دکمهٔ «کشیدن کارت» یا کلید C مبلغ کسر میشود، پیام خرید موفق نمایش داده میشود و محصول تحویل داده میشود. پیش از کارت کشیدن امکان انصراف بدون کسر موجودی وجود دارد. کدهای فارسی، عربی و انگلیسی پشتیبانی میشوند. کانال نامعتبر پول کم نمیکند. توضیح تبدیل واحد هم کنار دستگاه و هم داخل پنجره نمایش داده میشود.
محصولات فرضی بین کانالها تکرار میشوند: آبمیوه ۳۵، آب ۱۵، بیسکویت ۲۵، شیرکاکائو ۴۰، چای سرد ۴۵، لیموناد ۴۰، شکلات ۳۰، آجیل ۶۵ و کیک ۳۵ هتومان. مسیر تحویل از کانال انتخابشده شروع میشود. برای تکمیل مأموریت، هزینهٔ حداقل یک نوشیدنی و یک خوراکی کنار گذاشته میشود.
ساختار
src/main.js: صحنه، دوربین، دستگاه، رابط و حلقهٔ بازیsrc/controls.js: جهت حرکت و شرایط مجاز بودن حرکت؛ دیالوگ مانع حرکت نیستsrc/characters.js: شخصیتهای مفصلی، تناسب بدن، لباس، چشمها، قدم زدن و تماس دستهاsrc/payment.js: مراحل پرداخت، انصراف و جلوگیری از برداشت تکراریsrc/game-state.js: قیمتهای هتومان، موجودی، اعتبارسنجی کد و خریدsrc/story.js: متنهای کوتاه، فصلها، انتخاب مسیر و کشفهاsrc/style.css: چیدمان واکنشگرا و کادر سفید متنtests/: آزمون مسیر داستان، حرکت، پول و تبدیلهای شخصیتها
قیمتها و موجودی فقط در ماژول game-state تعریف شدهاند. محاسبات با هتومان صحیح انجام میشود؛ رابط با ارقام فارسی نمایش میدهد.
محدودیتها
مدلها هنوز هندسی و سبک هستند؛ تناسب بدن و حرکت طبیعیتر شده اما مدل انسانی واقعگرایانه یا موشنکپچر اضافه نشده است. پرداخت واقعی، ذخیرهٔ پیشرفت و برخورد آزاد با درختها وجود ندارد. بازیکن در مسیر تعیینشده حرکت میکند. زمان کامل تجربه هنوز با بازیکن اندازهگیری نشده است.
پنجرههای خرید، دفترچه، پایان و پرداخت پسزمینهٔ شیشهای نیمهشفاف دارند. نشان تعامل به موقعیت سهبعدی دستگاه متصل است و با حرکت دوربین جابهجا میشود.
تعامل تکدکمهای
گزینههای چندانتخابی داستان حذف شدهاند. هر رویداد یک کار مشخص دارد: تماشای خرگوش، برداشتن نقاشی، ادامه در مسیر آفتابی و کامل کردن نقاشی با آسمان طلایی. برای انجام آن، کلید F یا همان دکمهٔ روی صفحه را بزنید. متنهای معمولی خودکار عوض میشوند و حرکت آزاد میماند. E تعامل با دستگاه و C کشیدن کارت است. انتخاب شمارهٔ محصول و دکمهٔ پرداخت در پنجرهٔ دستگاه باقی است.
سفر از خانه به کوه
بازی با خروج خانواده از خانه شروع میشود. با F یا دکمهٔ روی صفحه سوار ماشین شوید؛ با W یا ↑ گاز بدهید، با S یا ↓ ترمز کنید و با A/D فرمان بدهید؛ پس از رسیدن به ورودی جنگل، در ورودی جنگل دوباره F را بزنید تا پیاده شوید. در مسیر جنگل، جمعی از دخترها و پسرها کنار آتش میرقصند و خانواده آدرس دستگاه وندینگ را از آنها میپرسد. پس از خرید نوشیدنی و خوراکی، مسیر را تا پیکنیک بالای کوه ادامه دهید.
دوربین پیشفرض سومشخص است؛ با V یا دکمهٔ تغییر دوربین بین نمای اولشخص و سومشخص جابهجا شوید. برای نگاه به اطراف روی صحنه بکشید. W/S یا چپ/راست حرکت در مسیر و Shift دویدن است. این نسخه از مدلهای هندسی استفاده میکند و کیفیت گرافیکی یک بازی AAA ندارد.
گفتوگوی هر رویداد هنگام رسیدن به همان نقطه نمایش داده میشود و تا پایان آن حرکت متوقف میماند. دوربین نزدیک دستگاه خودکار روی آن تمرکز میکند. خانواده پس از رسیدن به قله روی فرش مینشینند.