Waystone

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

همین حالا بازی کن

فلش‌ها / WASD برای لغزاندن سنگ روی توده · Q / E برای چرخاندن آن · فاصله برای پایین آوردنش · P مکث · M حرکت کاهش‌یافته. هشت سنگ ایستاده؛ سه‌تا از دست رفته و نور خاموش می‌شود.

▶ بازی

مفهوم همان قرارداد است

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

تابلوی مفهوم Waystone
تابلوی مفهوم نوشته‌شده: ماکت‌های خاکی، مقادیر هگز پالت، قوانین متریال و نور
Waystone به‌صورت زنده در موتور
همان توده‌ی سنگ به‌صورت زنده در موتور، روی گرانیت واقعی زیر نقشه‌ی سایه‌ی واقعی

جعبه‌های خاکستری پیش از هنر

کل حلقه‌ی بازی ابتدا به‌صورت اشکال ساده اجرا شد: جرثقیل، رهاسازی، آزمون استقرار، باد، قانون سنگ‌های ازدست‌رفته، شروع دوباره. دور دوم یک باگ واقعی را آشکار کرد که اسکرین‌شات‌ها نمی‌توانستند نشان دهند — تندباد در حین placed % 3 فعال شد، و چون تندباد سنگی نمی‌گذارد، حلقه‌ی نوبت همان تندباد را بی‌پایان تکرار می‌کرد. این آزمایش همچنین نشان داد که جرثقیل بالای قاب تصویر معلق مانده و دوربین بیش‌ازحد پایین قرار گرفته است. هر سه مورد پیش از ساخت حتی یک سنگ اصلاح شدند.

شکل‌های اولیه‌ی بلاک‌اوت
بلاک‌اوت: پایه و سنگ‌ها به‌صورت جعبه و استوانه — فیزیک از همان ابتدا فیزیک واقعی است
همان توده‌ی سنگ با هنر روی آن
همان توده‌ی سنگ با گرانیت Blender روی آن

تراشیدن، حکاکی، پخت

هر سنگ راهنما از شکل‌های اولیه‌ی هم‌پوشان ذوب می‌شود، با ریمش وکسلی، سپس با دو لایه نویز جابه‌جا و ساده‌سازی مسطح می‌شود تا سطح به جای ذوب شدن به یک توده، به وجه‌های تراشیده تقسیم شود. آن مجسمه‌ی پرجزئیات در یک پوسته‌ی کم‌جزئیات پخته می‌شود — نرمال، انسداد محیطی و رنگ پایه — با گلسنگی که با یک ماسک نویز هدایت می‌شود و بر اساس نرمال سطح دروازه‌بانی شده، به‌طوری که سبز و زنگاری روی وجه‌های رو به بالا رشد می‌کنند و هرگز روی وجهی که سنگ روی آن قرار دارد رشد نمی‌کنند.

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

کالایدر همان سنگ است

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

توده‌ای کج
شش سنگ در، کج — سنجه‌ی شاقول نشان می‌دهد که تماس‌ها واقعاً چه می‌کنند
تندباد
تندباد: یک ضربه‌ی واقعی روی هر سنگ، متناسب با جرم و ارتفاعی که در آن قرار دارد

بازی‌ای درباره‌ی باد، بدون هیچ صدای بادی در آن

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

اندازه‌گیری‌شده، به‌صداقت

با Playwright روی رندرر نرم‌افزاری این میزبان ممیزی شده — بدون GPU، و ماشینی که در آن زمان کارهای Blender چهار آزمایشگاه دیگر را نیز اجرا می‌کرد. نرخ فریم زیر، کف است.

اندازه‌گیریمقدار
بار خروجی (pck)۶.۴۱ مگابایت
زمان اجرای موتور (wasm، ثابت)۳۳.۷ مگابایت
هنر نوشته‌شده در بار۱۱.۴۸ مگابایت
استم‌های صوتی۰.۴۵ مگابایت
دورهای بلاک‌اوت۶ - r2 با تندبادی مواجه شد که برای همیشه دوباره فعال می‌شد؛ r5 در ۵۰ دقیقه ۱۰۴ شب کامل را بازی کرد و هر بار در سنگ ۵ فروریخت
دورهای ممیزی هنری۹ - r8 تمیز، r9 در حال تأیید
سنگ‌های راهنمای تراشیده و پخته‌شده۶ عدد، هر مدل high-poly به یک بدنه‌ی low-poly (۲۰۱ تا ۴۴۳ مثلث)
منبع کالایدربدنه‌ی کالایدر هر سنگ از مش پخته‌شده‌ی مخصوص خودش در زمان بارگذاری ساخته می‌شود
پلی‌تست خودآزمایی۸ از ۸ سنگ، ۲ از دست رفته، ۱٫۴۴ متر، برد در t=۴۰۸ ثانیه
زمان بازی در برابر زمان واقعی در ممیزی~۸۵٪ - این بخش هرگز به رندر وابسته نبود
کلیپ‌های موکپ استفاده‌شدههیچ - در این بخش کاراکتری وجود ندارد (P5 غیرقابل اجرا)

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

چیدمان RigidBody3D

شش نوع سنگ با جرم واقعی، اصطکاک ۰٫۹۲ و برخورد پیوسته. توده‌ی سنگی با تماس‌ها سرپا می‌ماند، نه با اسکریپت.

بدنه‌های محدب برگرفته از طراحی

هر کالایدر از مش پخته‌شده‌ی مخصوص خودِ سنگ در زمان بارگذاری ساخته می‌شود — شکلی که می‌بینید همان شکلی است که تعادل را حفظ می‌کند.

نقشه‌های سایه‌ی بلادرنگ

یک DirectionalLight3D سرد از سمت غرب، سایه‌ی توده‌ی سنگی را روی صخره می‌اندازد: سایه همان چیزی است که با آن شیب و کجی را می‌خوانید.

فیزیک به‌عنوان آنتاگونیست

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

چیدمان صحنه با Trimesh

قفسه و پایه به‌عنوان مش‌های خودِ Blender برخورد می‌کنند، پس سنگی که می‌لغزد روی همان صخره‌ای فرود می‌آید که روی آن ترسیم شده است.

GPUParticles3D

پُف‌های گرد و غبار زیر هر فرودگاه، علف خشک و شن که در جهت تندباد به کنار کشیده می‌شوند.

ثابت‌های تنظیم‌شده

جرثقیل ۰٫۵۲ متر بالای توده معلق می‌ماند gravity_scale معادل ۰٫۵۵ — «رها کردن آرام»، نه «انداختن» اصطکاک ۰٫۹۸، برگشت ۰، میرایی زاویه‌ای ۰٫۷۵ هدف‌گیری محدود به ۰٫۴۶ متر از مرکز در ۱٫۴۲ متر فاصله یا زیر سطح پایه از دست می‌رود استقرار: سرعت ۰٫۱۳ متر بر ثانیه و ۰٫۴۲ رادیان بر ثانیه به مدت ۰٫۳۸ ثانیه زمان انتظار استقرار ۵ ثانیه — لرزش هیچ‌وقت نوبت را معطل نمی‌کند تندباد هر سنگ سوم، هشدار ۱٫۲ ثانیه‌ای ضربه‌ی تندباد = جرم × ۰٫۶۲ × ضریب ارتفاع شیب = انحراف مرکز جرم / ۰٫۵۵ متر ۸ سنگ برای برد، ۳ سنگ از دست‌رفته برای باخت حداکثر فاصله‌ی سایه ۱۶ متر، بایاس ۰٫۰۴ نور اصلی ۰٫۸۵ + نور محیط ۰٫۳۸ — بالاتر از حدود ۱٫۴ گرانیت رنگ‌پریده می‌شود max_physics_steps_per_frame معادل ۳۰