نگاهی بر ساخت اسب های باورپذیر در Red Dead Redemption II
هر گاه صحبت از کیفیت اجرا و توجه به جزییات میشود، ممکن نیست که صحبتی از راکاستار گیمز و محصولات آن بهمیان نیاید. ارائه چنین کیفیتی در طول سالیان دراز شاید از نگاه گیمرها بسیار شیرین و دوستداشتنی است اما چالشهای فراوانی را متوجه تیم توسعه بازی میکند. گذر از هر نسخه به نسخه بعدی سختتر میشود و سطح توقعات هم بهمراتب بالاتر میرود.
یکی از این موارد را میتوانیم در طراحی و توسعه اسبهای درون بازی Red Dead Redemption II ببینیم. بزرگترین دنیای بازیهای راکاستار، نهتنها پوشش وسیع و متنوعی از گیاهان و جانوران را داشت، بلکه باید میراث داستانگویی غنی نسخه قبلی خود را نیز ادامه میداد. میراثی که از همان ابتدا مهمترین نقش مکمل بازی را برای اسب همراه بازیکن کنار گذاشته بود.
مهمترین نقش مکمل بازی برای اسب همراه بازیکن کنار گذاشته شده بود
و این صرفا یک جمله ساده نبود و رهبران توسعه بازی از همان ابتدا هدف خود را اینگونه تعریف کرده بودند که نتیجه نهایی باید بگونهای باشد که خود گیمرها عاشق سوارکاری و مسافرت با اسبها باشند. به همین منظور تیمهایی متشکل از برنامهنویسان و انیمیشنسازانی در دو استودیوی راکاستار نورث در اسکاتلند و شعبهی هند همکاری عمیقی را در این زمینه شروع کردند تا بتوانند سیستمهای حرکتی نوینی را برای بازی جدید راکاستار آماده کنند.
اگر علاقمند به این سبک از مقالهها هستید پیشنهاد میدهیم که مقالههای «جنگجوی دورگه؛ نگاهی بر چالشهای طراحی مبارزات آترئوس»، «آرمان شهر جادویی؛ نگاهی بر فرایند ساخت شهر Beauclair بازی ویچر 3» و «زیبای آخرالزمانی؛ نگاهی بر فرایند توسعه پوشش گیاهی Horizon Zero Dawn» را هم از دست ندهید.
شروع ماجرا
شروع این داستان به بعد از ساخت بازی GTA V و جایی باز میگردد که اعضای تیم تصمیم به بازنگری اساسی در تعدادی از سیستمهای مورد استفاده خود کردند که یکی از آنها سیستم مرتبط با حرکت عناصر درون بازی بود. برای بازی RDR II آنها سیستمهای حرکتی مجزای تعریف شده برای حیوانات، انسانها و اسبها را یکپارچه کردند. آنها همچنین با علم به این موضوع که در محصول جدید سرعت جابجاییها آهستهتر از دنیای GTA خواهد بود و جزییات عناصر بیشتر به چشم خواهند آمد، تلاش کردند از همان ابتدا مهمترین جاندار درون بازی یا همان اسبها را باتوجهبه شاکلههای سیستمهای جدید خود بازطراحی کنند.
در همین راستا و با گذشت چندین ماه از شروع پروژه، نمونهی اولیه از اسبها آماده شد که در ویدیوی زیر میتوانید آن را مشاهده کنید.
همانگونه که در این ویدیو مشخص است، در این مرحله چندین مرحله از سرعتگیری اسبها همانند راهرفتن، یورتمه، تاخت ملایم و چهارنعل رفتن و همچنین حالتهای گذار بین آنها پیادهسازی شده است.
بررسیهای اولیه این نمونه چندین نکته را برجسته کرد. درکنار اینکه شاکلهی سیستم بسیار کاربردی و مورد رضایت بود، اما سرعتهای گسسته تعریف شده برای اسبها و همچنین نبود تنوع کافی حرکتی جزو نکات منفی نمونه آماده شده بود. با نگاه به ویدیو بالا کاملا مشخص است که مرز بین مثلا راهرفتن و یورتمه رفتن دقیقا کجاست و این همان گسستگی بین حرکات است. همچنین اگر تعداد اسبهای تولیدی سیستم فعلی از یک عدد بیشتر میشد، بهراحتی قابل تشخیص بود که حرکت تمامی آنها همانند یکدیگر است. این مسئله بهخصوص در زمانیکه مثلا تمامی اعضای یک باند تبهکاری قصد حرکت با یکدیگر را داشتند بیشتر از پیش خودش را نشان میداد و صد البته مورد پسند تیم ساخت بازی هم نبود و این دقیقا همان نبود تنوع حرکتی در اسبها را برجسته میکرد.
در نگاه اعضای استودیو اسبها صرفا یک وسیله حملونقل نبودند
درکنار این موارد، اعضا متوجه این مسئله نیز بودند که حرکتها و انیمیشنهای یک اسب صرفا به سرعتگیری یا چرخیدن آن به چپ و راست، آن هم صرفا با کجکردن ساده یک سروگردن نمیشود و باید جزییات به مراتب بیشتری را به آن اضافه کنند. آنها دریافته بودند که چهارپایان یکسری اصول را در انجام حرکتهای خود رعایت میکنند و حتی جزییات مرتبط با همین اصول است که خصوصیات هر اسب را از اسب دیگری متمایز میکند.
با بازگشت دوباره به این اصل که «اسبها صرفا یک وسیله حملونقل نیستند»، اولویت تیم روی اضافهکردن المانهایی قرار گرفت که با آنها بتواند پویایی یک موجود زنده را بهتصویر بکشند. بههمین خاطر آنها شروع به تهیه فیلمهایی از حرکت اسبهای واقعی کردند. بهعنوان مثال ویدیو زیر یک آنالیز کوتاه از چرخیدن اسبها را نشان میدهد.
بدن اسب قبل از چرخش بدون انحراف در راستای حرکت قرار دارد. سپس او در مرحله پیش از چرخش قدمی در جهت چرخش بهکنار برمیدارد و سپس اقدام به چرخیدن میکند. با اینکه با اهداف تحقیقاتی در کلیت به نمایش گذاشتن حرکات اغراق شده است، اما همین نمونهها هم این ذهنیت را درون تیم ایجاد کرد که باید درجههای بیشتری از جزییات و آزادی در حرکت را به سیستم خود اضافه کنند.
آزادی حرکت
از اولین مواردی که مورد توجه قرار گرفت، اضافهکردن مفهومی به نام «حرکت جانبی» به سیستم حرکتی بازی بود. منشا اولیه این مفهوم را میتوانیم در همان قدم پیش از چرخش اسبها در ویدیو بالا بدانیم. نوعی خاصی از حرکت که برای تصویرسازی هرچه واقعیتر تغییر جهتدادنها به آن نیاز بود و اسبها نیز بهشدت به آن متکی بودند.
البته همانگونه که قبلا اشاره کردیم، با این هدف که هر اسبی باید شخصیت ویژه خودش را داشته باشد، این ایده نیز در ذهن اعضا شکل گرفت که با کم و زیاد کردن کمیت و کیفیت اجرای این حرکت جانبی میتوانند درصدی از هدف اشاره شده را تحقق ببخشند.
صحبت از این موارد با اینکه ساده است اما در انتها به یکی از سختترین ویژگیهای پیادهسازی شده برای اسبها بدل شد. در ویدیوی زیر میتوانید نمونه اولیه اضافه شدن سیستم حرکت جانبی را مشاهده کنید.
نمونه بالا صرفا حاصل اضافهکردن چند انیمیشن جدید به درخت انیمیشنهای درون بازی است و در هنگامی که بازیکن تصمیم میگیرد حرکتی همانند چرخاندن سر اسب را انجام دهد، انیمیشنهای جدید درکنار موارد قبلی فعال میشود و عمل چرخیدن اسب را به تصویر میکشد.
بهطور واضحتر مثلا ما از قبل انیمیشنهایی برای چرخیدن و البته حرکت روبهجلو را داشتیم ولی در حال حاضر و بر مبنای جزییات حرکت یک اسب واقعی، بخشی سومی به نام حرکت جانبی را هم به این مسئله اضافهکردیم و حرکت کلی اسب نتیجهی ترکیب ۳ دسته انیمیشن مجزا میشود. بااینحال همانگونه که از ویدیو هم مشخص است، نمونه اولیه چندان جالب نیست و بهوضوح میتوانیم سرخوردن مثلا پاهای عقبی اسب در حین عمل چرخش و پیادهسازی مفهوم حرکت جانبی را مشاهده کنیم. اما برای اینکه متوجه راهکار این مشکل باشیم، نیاز به این دارد که با سیستم رایجی که در ساخت انیمیشنهای بازیهای مورد استفاده قرار میگیرد کمی آشنا شویم.
برای ترکیب انیمیشنهای یک شخصیت معمولا از سیستمی بهنام «درخت انیمیشنها» که بخشی از موتور ساخت بازی است استفاده میشود
در ساخت یک بازی و ترکیبکردن انیمیشنهای عنصری که در این جا موجودی همانند اسب است، معمولا کار توسط سیستمی بهنام «درخت انیمیشنها» انجام میگیرد. در این سیستم بخش مرتبط با مدیریت انیمیشنهای موتور ساخت بازی، سعی میکند براساس یکسری آمار و ارقامی که در اختیارش قرار میگیرد، انیمیشنهای مرتبط با یک شخصیت یا شی را با یکدیگر ترکیب کند و خروجی باورپذیرتری را در اختیار ما بگذارد. همچنین بهخاطر همین عمل ترکیب انیمیشنها با یکدیگر به این سیستم «Blend Tree» هم میگویند.
در یک نگاه ساده فرض کنید ما برای حرکت رو جلوی یک انسان یک انیمیشن و برای حرکت به کنار آن انیمیشن دیگری را آماده کردهایم. حال اگر بازیکن سعی کند مثلا با نگهداشتن همزمان جهت جلو و کنار حرکت موربی را انجام دهد که همزمان هم به جلو و هم به کنار حرکت میکند، با فرض بر اینکه انیمیشن جداگانهای برای این نوع حرکت آماده نشده باشد، سیستم سعی میکند با ترکیب کردن انیمیشن حرکت روبهجلو و انیمیشن حرکت به کنار، انیمیشن ترکیبی را برای این حرکت جدید آماده کرده و به نمایش بگذارد.
این فرایند تقریبا برای دیگر ترکیبهای حرکتی نیز پابرجاست. شخصیت شما درون بازی ایستاده است و با فشار دادن جهت جلو آن را به حرکت درمیآوردید. این سیستم سعی میکند حالتهای گذار بین انیمیشنهای ایستادن و راهرفتن را با ترکیبکردن آنها پیدا کند و بهتصویر بکشد تا شما یک گذار پیوسته و نرم را بین این دو وضعیت حرکتی مشاهده کنید.
راکاستار و ناتیداگ جدای از اینکه سیستم انیمیشنی پیشرفتهای در اختیار دارند، برای هر موجود و شخصیت دهها انیمیشن مجزا طراحی میکنند
البته کیفیت خروجی نهایی به همت تیم سازنده هم بستگی دارد که چقدر به پیادهسازی باکیفیت انیمیشنها و تنوع آنها و البته طراحی خود سیستم درخت انیمیشن اهمیت داده است و همچنین سعی کرده باشند که چنین قابلیتهایی را برای موقعیتهای مختلف فعال کرده باشند.
مثلا بیشتر بازیها هیچ حالت گذار نرم و پیوستهای بین ایستادن و دویدن را پیادهسازی نمیکنند. تیمهای بازیسازی معروف همانند راکاستار و ناتیداگ جدای از اینکه سیستم انیمیشنی پیشرفتهای در اختیار دارند، برای هر شخصیت تا دهها انیمیشن مخصوص طراحی میکنند. آنها بهخوبی میدانند که حتی یک درخت انیمیشن قدرتمند هم بیشتر از هر چیزی به انیمیشنهای باکیفیت و متنوعی برای کارکردن احتیاج دارد تا بتواند ترکیبهای باکیفیتتری را تولید کند. توجه به همین موارد است که حرکتدادن شخصیتهای درون بازیهای این استودیوها بسیار نرمتر و صد البته لذتبخشتر از شخصیتهای بازیهای دیگر تولیدکنندگان بازی است.
مسئله این بود که بخش سخت ماجرا از همین سیستم درخت انیمیشنهای بازی شروع شده بود. چرا که اعضای تیم بهسرعت متوجه این مسئله شدند که با هر قدمی که در راستای اضافهکردن جزییات به اسبها برمیدارند، پیچیدگی و نگهداری از اجزای درخت انیمیشنهای آنها بهطور سرسامآوری افزایش پیدا میکند.
مشکل در این مسئله بود که سیستم فعلی درخت انیمیشنها بهطور خودکار نمیتوانست اطلاعات و ویژگیهای لازم برای ترکیبکردن انیمیشنها را بهطور خودکار از درون خود انیمیشنها و دیگر اقلامی که به این سیستم اضافه شده بود استخراج کند و مورد استفاده قرار دهد. این مسئله منجر به این شده بود که هر تغییری درون سیستم از جمله اضافهشدن حرکات جدید، نیازمند یکسری اقدامات دستی طاقتفرسا و تکراری بشود و صد البته پیچیدگی خروجی نهایی هم افزایش پیدا کند. دو عکس زیر صرفا وضعیت بخشی از درخت انیمیشن مرتبط با اسبهای بازی را نشان میدهد که چطور در گذر زمان شاخههای بسیاری به آن اضافه شده است و عمدهی آن بهدلیل خودکار نبود فرایند استخراج دادهها است.
جدای از اینها، مثلا اگر شما درنظر داشتید سبکهای مختلفی از راهرفتن را برای اسبهای خود آماده کنید، محکوم به این بودید که برای هر یک از این سبکها، درخت جداگانهای را آماده کنید و تیم بهخوبی میدانست که با این روش کار به نتیجه نخواهد رسید.
به همین منظور آنها بهدنبال پیادهسازی سیستمی رفتند که در آن بر مبنای یک فضای سهبعدی از پیش تعریفشده، میتوانست بهصورت خودکار درکنار استخراج تمامی اطلاعات لازم، از جمله میزان حرکت هر یکی از استخوانهای تعبیه شده برای یک اسب، بدون نیاز به دخالت انسان همهی آنها را با یکدیگر ترکیب کنند. برای همین دیگر نیازی به این نبود که برای هر حرکت جدیدی، برنامهنویسان و انیماتورها برای ساخت نمودارهای مرتبط با درخت انیمیشن آن دور هم جمع شوند و چون تمامی کارها بهصورت خودکار صورت میگرفت، دقت پیادهسازی حرکات نیز بهبود قابلتوجهی را تجربه کرد.
اما منظور از یک فضای سهبعدی از پیش تعریف شده چیست؟ اعضای تیم برای پوشش تمامی حرکات احتمالی، سه شاخص سرعت زاویهای، سرعت خطی و سرعت جانبی را تعریف کردند. سرعت زاویهای سرعت چرخید به دور خود، سرعت خطی، میزان جابجایی به جلو یا عقب و سرعت جانبی میزان جابجایی به پهلوها را پوشش میداد و منظور از یک فضای سهبعدی تعریف شده، فضای محاسباتی است که در آن تمامی حرکات و محاسبات براساس این سه شاخص تجزیه و تحلیل میشوند.
مثلا فرض کنید که شما درون بازی تصمیم به انجام حرکتی همانند ویدیو زیر میکنید و برای انجام آن جهتهایی را به شکل مشخصی فشار میدهید. در بخش برنامهنویسی بازی، تمامی جهتهایی که نگه داشتهاید به سه شاخصی که قبلا اشاره کردیم تجزیه میشوند.
مثلا نتیجه این میشود که درحالیکه ده درجه در ثانیه باید به دور خود بچرخیم، همزمان باید دو متر بر ثانیه هم به کنار حرکت کنیم و دراینمیان هم حرکتی در راستای جلو یا عقب نداریم. استخراج چنین اعداد و ارقامی درنهایت میتواند اینگونه مورد استفاده قرار بگیرد که برمبنای آن میزان حرکت تمامی اجزایی که درگیر این حرکت هستند را مشخص کنیم. مثلا میزان حرکت فلان پارچه با این میزان از سرعت جانبی و زاویهای چقدر خواهد بود؟ و برای بهتصویر کشیدن آن چقدر از هر یک از انیمیشنهای موجود را باید با یکدیگر ترکیب کرد؟
با فعالیت بیشتر روی چنین سیستمی مفاهیم دیگری از قبیل «دریفت» از جانب اعضای تیم تعریف شد. در یک نگاه ساده ویدیو بالا را هم میتوانیم یک دریفت با شعاع حرکتی بالا بدانیم که در آن ما صرفا درگیر دو مولفهی حرکت زاویهای و جانبی هستیم و خبری از مولفهی سوم نیست. اما اهمیت این تعریف آنجایی بود که تیم توانست ازطریق آن بخشی از پویایی و زنده بودن اسبها را بهتصویر بکشد. به تصویر زیر که ساختار یک دریفت را به تصویر میکشند دقت کنید.
در تصویر اول ما هیچ حرکت جانبی نداریم و صرفا یک بازه متقارن با محوریت راستای بدن اسب و در روبهروی آن مشخص شده است. این بازه فضای حرکتی را نشان میدهد که در آن تقریبا تغییری از جانب سیستمهای بازی روی مسیر حرکتی اسب انجام نمیگیرد. اسب در این بازه همچنان از جانب بازیکن دستورها را دریافت میکند اما تغییر مسیرهای کوچکی که در این بازه اعمال میشود را با نرخی آهسته و به نرمی اجرایی میکند.
«بیش فرمانی» بیانگر وضعیتی است که در آن سوارکار یا راننده متوجه میشوند که میزان چرخش نهایی فراتر از آن چیزی است که اعمال کردهاند
در تصویر دوم ما شاهد عمل چرخشی هستیم که مثلا از جانب بازیکن اعمال شده است. در این وضعیت بازهی فرمانپذیری اسب به سمت چرخش گسترش پیدا میکند. هرچه این بازه گستردهتر شده و از وضعیت مرحله اول فاصله بگیرد، ما شاهد این خواهیم بود که مولفههای سرعت زاویهای و سرعت جانبی افزایش پیدا میکند و درنهایت اسب با سرعت بیشتری عمل چرخش را انجام میدهد. بااینحال اگر همچنان در آستانهی تعیینشده قرار داشته باشیم، اسب با فرمانپذیری قابل قبولی دستورها را اجرایی میکند و میتوانید تناسب تقریبا یک به یک ولی با کمی تأخیر را بین میزان چرخشی که اعمال کردهاید را با میزان چرخش اسب مشاهده کنید.
بااینحال اگر همانند تصویر سوم میزان چرخش اعمال شده از آستانهی تعیینشده عبور کند، فرمانپذیری اسب وارد مرحلهی بهخصوصی به نام «بیش فرمانی» میشود. این مسئله که در دنیای رانندگی با اتومبیلها نیز وجود دارد، بیانگر وضعیتی است که در آن سوارکار یا راننده متوجه میشوند که میزان چرخش نهایی فراتر از آن چیزی است که اعمال کردهاند و دیگر تناسب یک به یکی بین این دو وجود ندارد.
این بیشفرمانی را که تیم سازنده آن را همانند دنیای اتومبیلرانی «دریفت» نامگذاری کرده بود، اسب را وارد وضعیتی میکند که در آن شما احساس خواهید کرد که دیگر این خود اسب است که کنترل کاراها را بهدست گرفته و شما صرفا نظارهگر کار هستید. اینگونه میتوان برداشت کرد که اسب در قامت یک موجود زنده این چنین برداشت کرده است که تا عمل تغییر مسیر دیگری اعمال نشود او باید عمل چرخش را ادامه دهد. اگر دقت کنید در تصویر سوم و پس از وارد شدن به مرحله بیشفرمانی، ناحیه کنترلپذیری بهشدت کاهش پیدا کرده است و این بهنوعی تصویرگر آماری همان چیزی است که در موردش صحبت کردیم. در ویدیو زیر اولین نمونهی پیادهسازی شدهی مفهوم دریفت در اسبهای بازی را مشاهده میکنید که البته شامل جزییات به مراتب بیشتری از توضیحاتی است که تا به الان ارائه کردهایم.
اما اهمیت مسئله دریفت و جزییات پیرامون آن در این بود که اعضا بهوسیلهی آن توانستند به شکل غیرملموسی ایدهی کنترل غیرمستقیم سوارکاری بازیکنان را پیادهسازی کنند. مثلا بهجای اینکه کنترل اسب بازیکنان را در سر پیچها کاملا تحت اختیار بگیرند و را در مسیر درست قرار دهند، میتوانستند با اعمال تاخیرهایی در فرمانپذیری اسب که توضیحات آن را کموبیش بیان کردیم، مسئله را اینگونه در ذهن بازیکنان تداعی کنند که اسب آنها در قامت یک موجود زنده همانند فرمان خودرو کاملا تحت کنترل نیست و درخواست شما را با همان سرعت و کیفیت اجرا نخواهد کرد.
در خلال تمامی مسائل بالا اعضای تیم متوجه این شده بودند که هرچه روی جزییات حرکتی اسب در حال حرکت کار کردهاند، به شکل عجیبی همچنان برای وضعیت بدون حرکت که در آن هر سه مولفهی سرعتی صفر هستند، کاری نکردهاند. به همین خاطر آن با استفاده از تکنیکهای رایجی همانند موشن کپچر، سعی کردند تا جای ممکن، عادات و رفتارهای بهخصوص نژادهای مختلف را وارد دنیای بازی کنند و این بخش را به دنیای واقعی نزدیکتر کنند.
حرکتهای متنوع اسب، سرعت و پاسخگویی
قبلا اشاره کردیم که اسبها چهار نوع حرکتی به نام راهرفتن، یورتمه، تاخت ملایم و چهارنعل رفتن را دارا هستند. در هر کدام از این حرکات چهارگانه ترتیب و زمانبندی برخورد پاهای عقب و جلو با زمین متفاوت است. در این نقطه بد نیست بدانید که جدای از مبحث سرعت، تفاوت در تاخت ملایم و چهارنعل را حتی میتوانید در ضربآهنگ پاهای اسب نیز تشخیص بدهید. در تاخت ملایم ما میتوانیم یک حرکت سهضربی و در چهارنعل رفتن یک حرکت چهارضربی را با کمی دقت تشخیص بدهیم که چنین چیزی با دقت کامل در بازی RDR II پیادهسازی شده است و میتوانید در زیر آنها را مشاهده کنید.
اهمیت این حرکات چهارگانه از این جهت است که گذر از یک حالت به حالت دیگر باید نرم و البته واقعگرایانه صورت بگیرد و چرخهای اجرای این حرکات نیز رعایت شود. مثلا نمیتوان در میان چرخهی کامل شدن حرکت یورتمه رفتن، به یکباره آن را به تاخت ملایم تبدیل کرد و به یکباره دستی که مثلا در هوا قرار دارد را برای اجرای چرخهی جدید روی زمین قرار داد. چیزی که البته بسیاری از استودیوها خیلی کم به آن توجه میکنند.
تیم توسعه بهجای وابستهکردن نوع حرکت اسبها به بازههای جداگانهای از سرعت، همانند آن چیزی که در اولین ویدیو مطلب شاهد آن بودیم، بازههای گستردهای را با سه زیربخش برای هر کدام از آنها درنظر گرفت تا بتواند نتیجه نهایی را به واقعیت نزدیک کند. در زیر میتوانید نسبت درنظر گرفته شده برای حداقل سرعت، سرعت ایدهآل و حداکثر سرعت هر یک از این چهار حرکت را مشاهده کنید.
این نمودار به خوبی همپوشانی انواع حرکت در سرعتهای مختلف را نشان میدهد و این بدین معنی است که با رعایت چنین چیزی ما میتوانیم بسته به شرایط در یک سرعت مشخص شاهد چندین نوع حرکتی نیز باشیم. اینکه بر چه مبنایی به چنین نموداری رسیده میشود کار سختی نیست. کافی است مثلا به یک مسابقهی اسبسواری دقت کنید تا متوجه شود که چگونه در همان اول کار اسبها بهسرعت از وضعیت ایستاده به چهارنعل تغییر وضعیت میدهند و چنین چیزی برای دیگر حرکتها نیز صادق است. در کل مشاهدههای میدانی کلید رسیدن به چنین دادهها و نمودارهایی است.
اما همچنان تیم در عمل با مسئله انتقال نرم و واقعی بین انواع حرکت اسبها مشکل داشت. در نسخههای اولیه عمل انتقال خیلی ساده بود و این کار با یک پرتابه صورت میگرفت. ویدیو زیر این مسئله را نشان میدهد.
با اینکه این پیادهسازی در یک حالت ایزوله همانند آنچه در ویدیو بالا قرار دارد، کاملا قابلقبول جلوه میکرد اما دربردارندهی یکسری از مشکلات بود. اولین مسئله این بود که کنترل سرعت در این وضعیت مشکل بود. آنها مجبور بودند برای دستیابی به گذاری نرم و قابل قبول برای تمامی نقاطی که سرعتها با یکدیگر تلاقی داشتند، از این پرتابهها داشته باشند که آمادهسازی همهی آنها کار طاقتفرسایی بود.
دومین مشکل این بود که در این پیادهسازی، حالتگذار بر مبنای چرخهی قدمهای اسب تعیین میشد و برای همین بسته به اینکه پاهای اسب در حال حاضر در چه وضعیتی هستند، امکان این وجود نداشت که اعضای تیم بتوانند کنترل دقیقی روی حالتهای گذار و مدت زمان آنها داشته باشند. مثلا ممکن بود بازیکن در هر وضعیت ممکنی از چرخهی قدمها، ابتدا، وسط یا حتی انتهای آن سرعت اسب را تغییر دهد. در این وضعیت باید برای رسیدن دستها و پاهای اسب به انتهای چرخه صبر کنیم و سپس عمل گذار را انجام دهیم.
در یک نگاه کلی این دو مسئله درکنار یکدیگر منجر به ایجاد سیستمی شده بودند که در آن پیشبینی خروجی نهایی همانند تعیین زمان مورد نیاز حالت گذار، از قبل میسر نبود و هر گاه سیستمی از وضعیت قابلپیشبینی بودن خارج شود، ریسک سرمایهگذاری روی آن بالا میرود.
در قدم بعدی آنها سعی کردند با درنظرگرفتن سرعت میانگین در لحظه، تغییرات را بهصورت فریمبهفریم روی حرکت اسب اعمال کرده و وضعیت دستوپاها را تنظیم کنند. خروجی سیستم جدید این شده بود که در موقع مورد نیاز سرعت اجرای یکسری از انیمیشنها یا باید تندتر از حد معمول یا کندتر از آن صورت میگرفت و در عمل ما شاهد یکسری حرکات اسلوموشن یا برعکس با سرعت بالا در لحظه گذار بودیم.
هر گاه سیستمی از وضعیت قابلپیشبینی بودن خارج شود، ریسک سرمایهگذاری روی آن بالا میرود
تنها راه برطرف کردن چنین چیزی هم آمادهسازی حجم زیادی از اقلامی بود که باید جایگزین وضعیتهای نامناسب میشدند و این آن چیزی نبود که تیم بهدنبال آن میگشت. برخلاف تمامی تلاشهایی که شده بود، باز هم مسئله غیرقابل پیشبینی بودن هم همچنان تیم را آزار میداد چرا که سیستم همچنان به شکلی وابسته به این بود که پای مورد نظری از اسب حتما باید روی زمین قرار بگیرد.
چیزی که درنهایت روی آن توافق شد این بود که سرعت حرکت اسب را بهکلی از حرکات چهارگانه آن جدا کرده و دراینمیان سعی کنیم، انیمیشنها را متناسب با سرعت هماهنگ کنیم. در وضعیتهای قبلی افزایش سرعت متاثر از اجرای عمل گذار و وارد شدن اسب به وضعیت حرکتی بعدی بود. در سیستم جدید مستقل از حرکتی که در حال نمایش آن هستیم سرعت میتواند بهطور پیوسته کم یا زیاد شود.
بهعنوان مثال در ویدیوی زیر به نمودار سمت راست و بالای تصویر دقت کنید. اسبی در وضعیت یورتمه سرعت خود را افزایش میدهد و با گذر از وضعیت ایدهآل، به انتهای سرعت مجاز در این حالت میرسد. در این وضعیت بدون اینکه مسئله افزایش سرعت متوقف شود، همچنان میتوانیم سرعت اسب را افزایش دهیم با این تفاوت که در اولین فرصت ممکن نیز، وضعیت ظاهری اسب را از حالت یورتمه رفتن به تاخت ملایم تغییر میدهیم.
تغییر سرعت مستقل از نوع حرکت، نهتنها مشکل حرکت نرم و پیوسته را برطرف کرد، بلکه این فرصت را مهیا کرد که تیم توسعه بتواند بسته بهدلیل و وضعیتی که بازیکن در آن سرعت اسب را کم یا زیاد میکند، حالتهای گذار متنوعی را از لحاظ زمانی تعریف کنند و کنترل کاملی روی مقولهی زمان داشته باشد و اینگونه از غیرقابل پیشبینی بودن فرایند جلوگیری کنند.
البته با کمی دقت در صورت مسئله میتوانیم به این نکته پی ببریم که در این مرحله از ساخت بازی اعضا کمی از ایدهآل گرایی خود کوتاه آمدند و بهجای بازتولید واقعیت بهدنبال تولید نزدیکترین چیز ممکن به آن رفتند. یادمان نرود که در دنیای واقعی سرعت اسب بهطور کامل به شکل حرکتی آن وابسته است و مثلا تا اسب از یورتمه به تاخت ملایم تغییر وضعیت ندهد نمیتواند سرعتش را بیشتر از حد مشخصی افزایش دهد. بااینحال اعضای تیم در آن برهه از ساخت بازی به این نتیجه رسیدند که زمان و مهارت و منابع کافی برای پیادهسازی با ظرافت آن چیزی که اسب در واقعیت انجام میدهد را ندارد و برای همین از پیادهسازی آن کوتاه آمدند.
سرانجام اعضا کمی از ایدهآلگرایی خود کوتاه آمدند و بهجای بازتولید واقعیت بهدنبال تولید نزدیکترین چیز ممکن به آن رفتند
به هر جهت با اینکه تغییرات بالا و کاستن از پیچیدگیها کاملا به نفع اعضای فنی و برنامهنویسی تیم بود اما بدون شک کار اعضای ساخت انیمیشنهای بازی بیشتر شده بود. آنها برای کاملکردن این سیستم مجبور شدند که آنالیز خیلی دقیقتری از آناتومی اسبها در وضعیتهای مختلف آماده کنند و بر مبنای آنها انیمیشنهای مورد نیاز را تولید کنند. وقتی سرعت آزادانه تغییر میکند، مجبور هستیم که متناسب با اینکه سرعت در حال کاهش یا افزایش است و اینکه در چه وضعیت حرکتی قرار داریم، وضعیت بدن اسب یا همان آناتومی مناسب آن را بهتصویر بکشیم. بهعنوان نمونه در تصویر زیر میتوانید یک آنالیز ساده از وضعیت بدنی یک اسب در سه وضعیت ممکن در حالت تاخت ملایم را مشاهد کنید. چنین چیزی برای تمامی حالات حرکتی توسط بخش انیمیشنها آماده شد.
همانند تصویر بالا، اسبها در کاهش سرعت، پاها و دستهای خود را در وضعیتی جمعوجورتر و نزدیک به هم قرار میدهند و همزمان سر خود را بالا و عقب میبرند تا انرژی حاصل از کاهش سرعت را جذب کنند. در نقطه مقابل در افزایش سرعت شاهد پاها و دستهای کشیدهتری هستیم و البته اسب سر خود را جلو و پایین نگه میدارد.
ازبینرفتن پیچیدگیهای روشهای قبلی این ظرفیت را در اختیار قرار داد که بهراحتی با جایگزین کردن انواع ژستهای حرکتی اسب در زمانهای کاهش یا افزایش سرعت، حرکتهای اضافهتری را پیادهسازی کند که یکی از آنها سرخوردن اسب بهمنظور توقف سریع آن است که در ویدیو زیر میتوانید آن را مشاهده کنید.
در این نقطه اعضای تیم دوباره متوجه شدند که روی مسئله توقف و نبودن حرکت و همچنین حالتهای گذار از آن کمکاری کردهاند. اینکه شما درحالیکه همچنان سوار اسب خود هستید ولی ایستادهاید و دستوری به آن نمیدهید، اسب را در وضعیت اجرای یکسری از رفتارهای حالت بیکاری قرار میدهد. حال اگر شما مثلا به محض ایستادن دوباره دستور حرکت بدهید، حالت گذار مناسبی بین کاهش سرعت و توقف و سپس حرکت دوباره دریافت نمیکردید چرا که اسب در یک بازهی کوتاه تحت کنترل هوش مصنوعی و سپس دوباره تحت کنترل بازیکن درمیآمد.
بهطور کلی برای حلکردن این مسئله، نوعی از حس عدمکنترل به اسبها اضافه شد با این هدف که در چنین شرایطی این احساس به بازیکن منتقل شود که اسب در قامت یک موجود زنده و نه یک ربات بهترین کاری که در آن هنگام از پس انجام آن برمیآید را انجام میدهد. رفتاری که کموبیش نمونهی پیادهسازی شدهی آن را قبلا مشاهده کرده بودیم.
سوارکار و هماهنگی با اسب
باتوجهبه مشکلاتی که در مسیر هماهنگکردن اجزای بازی با یکدیگر تا به این نقطه وجود داشت، تیم توسعه بهخوبی میدانست که برای هماهنگکردن اسبسوار با حرکتهای اسبی که سوار آن است، نمیتوانند به قدمهای اسب که بسته به نوع حرکت آن نیز بسیار متغیر است دل ببندند. در عوض آنها به این سمت رفتند که صرفا یکسری از نقاط حساس و مهم در حرکت اسب را استخراج کنند و برمبنای آنها این مسئله را پیش ببرند.
در این نقطه مفهومی به نام «ضرب هماهنگی» ایجاد شد که کموبیش برگرفته شده از حرکات چندضربی اسب در مثلا تاخت ملایم و چهارنعل است. این مفهوم بهجای توجه به وضعیت دقیق پاها و برخورد آنها با زمین، به کشیدگی و فشردگی بدن اسب توجه میکند. در ویدیو زیر میتوانید دو نوع نشانهگذاری وضعیت یک اسب را مشاهده کنید.
در ابتدای ویدیوی بالا نشانهگذاری قدمهای اسب را میبینید که بهمنظور ارسال برای اعضای مثلا تیم صدای بازی مناسب هستند و در بخش دوم نشانهگذاری وضعیت کشیدگی یا فشردگی بدن اسب را مشاهده میکنید که تحت نام «ضربه هماهنگی» اطلاعات آن ذخیره میشود تا بهوسیله آن بتوانند بخشی از حرکت اسبسوار و مسافرش را با اسب هماهنگ کنند.
بهطور کلی بخشی از حرکات اسبسوار و البته مسافر همراه آن، توسط اسبی که سوار آن هستند کنترل میشوند. از دیدگاه فنی و برنامهنویسی اگر دستور حرکتکردن به اسب داده شود، اسب ضمن اجرا این دستور، دستور اجرای انیمیشنهای مرتبط با حرکتکردن را به اسبسوار و همراهش منتقل میکند و مثلا مسافر همراه اقدام به گرفتن اسبسوار میکند. بااینحال در بخش بزرگی از حرکات، اسبسوار و همراهش کاملا مستقل عمل میکنند و اینگونه نیست که تکتک اعمال آنها به عملی در رفتار اسبی که سوارش هستند وابسته باشد.
اشاره کردیم که با ایجاد مفهومی به نام «ضربه هماهنگی» بخشی از اعمال وابسته به حرکت اسب با مسافرانش هماهنگ میشد اما این تمامی ماجرا نیست و در قالب مفهوم دیگری به نام «ریتم» اطلاعات مرتبط با بالاترین و پایینترین وضعیتی که اسب در هنگام حرکت در آن قرار میگیرد نیز ذخیره میگردد. این دو وضعیت که در ویدیو زیر قابل مشاهده هستند از این جهت اهمیت دارد که بهوسیله آن ریتم حرکتی سوارکاران قابل تنظیم است که باتوجهبه ویدیو زیر نیاز به توضیح بیشتری ندارد.
هشیاری محیطی
قبلا هم اشاره کردیم که دنیای RDR II بزرگترین دنیای بازیهای راکاستار را در دل خود داشت. این پهنهی گسترده دربرگیرندهی تنوعی بالایی از ناهمواریها بود و باتوجهبه استانداردهای تیم توسعه غیرممکن بود که شاهد پیادهسازی رفتارهای متفاوت جانداران درون بازی در مواجه با این ناهمواریهای طبیعی نباشیم.
از مواردی همچون بالارفتن از شیبها گرفته تا گذر از رودخانهها و مناطق برفی، بدون شک کمیت و کیفیت حرکت جانداران از جمله اسبها همانند حالتی نخواهد بود که در آن صرفا روی یک زمین صاف در حال راهرفتن هستند. همچنین این مسئله که ماهیت جانداران متفاوت از رباتهای برنامهنویسیشده است هم بیانگر این مسئله بود که بازیکن نباید بتواند بدون مواجه با هیچ مقاومتی مثلا بتواند با اسب خودش کارهای دیوانهواری همچون پریدن از یک دره به پایین را انجام بدهد. به خاطر همین موارد کمکم مفهومی به نام «هشیاری محیطی» برای جانداران درون بازی تعریف شد.
بازیکن نباید بدون مواجه با هیچ مقاومتی از طرف اسب مثلا بتواند کارهای دیوانهواری همچون پریدن از یک دره به پایین را انجام بدهد. هر موجود زندهای برای جانش ارزش قائل است
این مفهوم دربرداندهی این مسئله بود که بازیکن یگانه مرجع اعطای دستورها درون بازی نیست و موجودات دیگر نیز این ظرفیت را دارند که تا حدودی برای جانشان ارزش قائل باشند و بدون ذرهای مقاومت و با سرعت سر خود را به درختها نکوبند، از درهها به پایین نپرند و در یک کلام به بازیکن بفهمانند که کنترل تمامی امور در دستان آنها نیست. با تمامی اینها در انتها اجرای محدود برخی از همین کارها آن هم بیشتر با هدف سرگرمشدن هرچه بیشتر بازیکنان مجاز شمرده شد. بالاخره این یک بازی است و رضایت بیشتر گیمرها منجر به سود بیشتر شرکت خواهد شد!
از موارد ساده شروع میکنیم. ما درون بازی بهطور پیوسته با مسئله عبور از شیبهای محیطی درون بازی مواجه هستیم. از دامنهی تپهای بالا یا پایین میرویم. در ویدیو زیر این مسئله قبل و بعد از پیادهسازی اصلاحات مورد نیاز این بخش نشانداده شده است.
در حالت عادی و در بسیاری از استودیوها، برای پوششدادن چنین مسئلهای از مفهومی به نام Inverse kinematics یا به اختصار IK در بخش انیمیشنها استفاده میشود. در یک تعریف ساده شده میتوانیم اینگونه در نظر بگیرید که مثلا وضعیت تمامی استخوانهای پای شما را میتوان با دانستن وضعیت کف پا و البته محل قرارگیری لگن شما تشخیص داد. بد نیست خودتان هم این مسئله را امتحان کنید و سعی کنید با قراردادن پای خود روی اشیا و ناهمواریهای مختلف، این مسئله را بررسی کنید.
اعضای تیم در قدم اول از این روش رایج برای هماهنگ کردن وضعیت پاها و بدن اسب استفاده کردند اما نتیجه همانند آن چیزی که در ابتدای ویدیو بالا نشانداده شد جالب نبود. این روش بیشتر از هر چیزی کمک به این میکرد که کف پای اسب را به بهترین شکل ممکن روی سطوح تنظیمکرد و در سایر موارد همچون وضعیت کلی بدن یا حتی تنظیم وضعیت بدن سوارکار با اسب نتیجهی مطلوبی را تحویل نمیداد.
به همین خاطر آن یک قدم جلو رفتنند و آن فضای سهبعدی تعریف شدهی خودشان را به چهاربعد محاسباتی افزایش دادند. حال ما درکنار مولفههای سرعت زاویهای، خطی و جانبی شاهد مولفهی چهارمی در راستای عمودی بودیم که وضعیت زاویه سطحی که روی آن قرار داریم را پوشش میداد.
با اضافهشدن بعدهای چهارم و پنجم به محاسبات حرکتی اسبها، بهدلیل محدود بودن منابع و عدم نیاز به دقت بالا در این ابعاد هر دوی این موارد بهصورت تقریبی شبیهسازی شدند
بااینحال انجام این کار بدون مشکل نبود و بررسیها نشاندهندهی افزایش پیچیدگیها محاسباتی وضعیت نهایی بود و باتوجهبه میزان اهمیت نهچندان زیاد صورت مسئله و البته محدودیت منابع فنی، تیم به این نتیجه رسید که بهجای اضافهکردن کاملا دقیق بعد چهارم همانند دیگر ابعاد، آن را بهصورت تخمینی و بدون نیاز به انجام محاسبات خاصی وارد کار کند.
در این وضعیت آنها صرفا برای سه وضعیت زمین صاف، بالارفتن و پایینرفتن سه عددثابت را درنظرگرفتن و دیگر خبری از انجام محاسبات پیشرفته برای هر زاویه و شرایطی نبود. این مسئله دوباره تیم را با این وضعیت مواجهکرد که بازتولید واقعیت همیشه بهترین راه پیش روی آنها نخواهد بود.
با تمامی اینها دانستن این موضوع که درنهایت تیم مجبور شد بعد پنجمی را هم به مسئله اضافه کند شاید کمی تعجب برانگیز باشد. آنها در بررسیها عملی خود دریافتند که اسبها در واقعیت مفهومی به نام «پای پیشتاز» را در بعضی شرایط بهخصوص در تاخت ملایم بهتصویر میکشند. در چنین وضعیتی آنها همیشه برای گردش به جهت مشخصی، فرایند را با پای مشخصی شروع میکنند و اعضای تیم هم مشتاقانه بدنبال پیادهسازی چنین چیزی درون بازی بودند. البته همانند بعد چهارم در این بخش نیز بهدلیل عدم نیاز به دقت بالا و کنترل نرخ رو به رشد پیچیدگی، از اعداد ثابت و تقریبی در این بخش استفاده شد و خبری از محاسبههای پیچیده ریاضی نبود.
تجزیه و تحلیل زمین
پیچیدگیهای ساخت یک اسب واقعی صرفا متوجه خود اسب نیست. بخشی بزرگی از ماجرا به زمینی که روی آن قدم میگذاریم وابسته است. هنگامی که شما در قامت یک سوارکار و آزادانه در حال گشتوگذار هستید، بازی بهصورت پیشدستانه محیط پیش روی شما را تجزیه و تحلیل میکند و بر مبنای دستورها شما، تمایل اسب و همچنین وضعیت زمین پیشرو، مسیری که اسب باید از آن عبور کند را درکنار چگونگی انجام آن را مشخص میکند.
بهعنوان مثال وضعیت عمق آب، برف و حتی گلولای رصد شده و برای انجام واکنشهای دقیق در جای مناسب ذخیره میشود. حتی پیشرفتهتر از آن وضعیت آبوهوایی از جمله سرعت وزش باد و حتی تودههای حشرات نیز جزو مواردی تأثیرگذار در نوع حرکت شما و اسب خواهند بود.
بازی بهصورت پیشدستانه محیط پیش روی بازیکن را بررسی میکند و بر مبنای دستورها او، تمایل اسب و همچنین وضعیت زمین، مسیری که اسب باید از آن عبور کند را درکنار چگونگی انجام آن مشخص میکند.
درنظرگرفتن این حجم بالای از جزییات، یکی از آن چالشهای اساسی تیم توسعه بود. قبلا اشاره کردیم که آنها با گذر از ساخت بازی GTA V تغییرات بزرگی در سیستمهای حرکتی استودیو ایجاد کردند. عمدهی این کارها در جهت کاهش پیچیدگی نهایی بود و اتفاقی که برای سیستم درخت انیمیشنهای بازی رخ داد، یکی از این موارد بود. با تمامی اینها حجم نهایی کاری که باید انجام میگرفت همچنان بسیار زیاد بود.
آنها درنهایت، در حدود ۶۳۰۰ حرکت متفاوت را آماده کردند. حرکاتی که از راهرفتن و دویدن گرفته تا صرفا حرکت دم برای دورکردن حشرات را شامل میشدند.
در یک پله بالاتر چیزی در حدود ۲۵۰۰ مجموعه از اشکال حرکتی تعریف شده بود. بهعنوان نمونه تمامی اشکال حرکتی یک اسب از جمله راهرفتن درون آب یا یک برف عمیق در یک زیرمجموعه قرار میگرفتند.
درنهایت در یک لایه بالاتر این ۲۵۰۰ مجموعه تحت عنوان مفهومی به نام «Archetypes» به ۲۱۰ دستهی بزرگ تقسیم میشدند. مثلا شخصیت داچ یا نوع خاصی از نژاد اسب هر کدام یکی از این ۲۱۰ دستهی بزرگ را تشکیل میدادند. این تمامی ماجرا نبود و در گوشهای دیگری از کار، آنها درنهایت دریافتند که چیزی در حدود ۱۸۰۰ موقعیت تعریف شده را درون بازی داشتند که باید در موقع لزوم اطلاعات لازم را از آنها استخراج میکردند و در اختیار مثلا سیستم حرکتی بازی قرار میدادند.
شخصیت اسبها
برای ترسیم مفهوم شخصیت برای اسبها، اعضای تیم در قالب مفاهیم «آشفتگی و بیقراری» یکی از سیستمهای جالب بازی را طراحی کردند. در این سیستم اسبها در قامت موجوداتی زنده، متناسب با شرایط و پدیدههای محیطی و همچنین نوع رفتار بازیکن توانایی این را دارند که کلافه شوند و واکنشی از خود بروز دهند. مثلا در ویدیو زیر مشاهده میکنید که تیراندازیهای پیوسته درکنار سوارکاری ناخوشایند با اسب درنهایت میزان آشفتگی اسب را به قدری بالا میبرد که بازیکن را به زمین میزند و اینگونه خودش را خالی میکند.
ویژگی آشفتگی و بیقراری در مواجه با موجودات شکارچی، شلیک اسلحهها، سبک سوارکاری بازیکن و مواردی از این قبیل بالا میرود و البته در مقابل با مواردی از قبیل نوازش کردن هم افت خواهد کرد. تمامی اسبها یک حالت پایه از این مسئله را دربردارند بااینحال این مسئله در میان نژادهای مختلف متفاوت است و تمامی آنها در مواجه با یک پدیده، تغییر یکسانی را در میزان بیقراری خود مشاهده نخواهند کرد و شما در قامت یک بازیکن میتوانید این مسئله را در یک پدیده مشخص و در میزان کنترلی که روی نژادهای مختلف خواهید داشت مشاهده کنید.
تیم توسعه با درنظرگرفتن میزان بیقراری فعلی اسب، سه سطح کلی از انیمیشنها را برای آنها آماده کرد. مثلا در ویدیو زیر که یک نمونه ایزوله برای بررسی است، بهصورت دستی میزان آشفتگی و بیقراری اسب افزایش پیدا میکند و در مقابل شما میتوانید ببینید که چگونه اسب با اجرای انیمیشنهای جدید این مسئله را بهتصویر میکشد.
البته همانگونه که در انتهای ویدیو نیز مشخص است، حتی موردی همانند خالیکردن شکم نیز یکی از آن مواردی است که تاثیر مثبتی روی میزان بیقراری اسبها و حتی دیگر موجودات درون بازی دارد!
در یک مثال عملی همانند مواجه با یک خرس، بهتر است بدانید که معمولا اسب حضور یک شکارچی را زودتر از شما احساس خواهد کرد و قبل از این شما حتی بتوانید خرس را مشاهده کنید، سطح آشفتگی و بیقراری آن شروع به افزایش میکند. به همین خاطر در نقطهی مشخصی اسب از پیشروی باز میایستد و حتی اگر همانند ویدیو زیر کاری در جهت دوری از خرس صورت نگیرد، اسب وارد یک حالت خودآگاهی میشود و برای حفظ جان خودش و بدون توجه به بازیکن اقدام به دوری از شرایط استرسزای فعلی میکند.
البته جزییات مرتبط با رفتارهای اسبها به این موارد خلاصه نمیشود و برای موارد دیگری از قبیل میزان سلامتی پایین یا حتی خستگی زیاد هم حالتهایی درنظرگرفته شده است که در ویدیو زیر قابل مشاهده است.
نژادها
تا قبل از تعریف مسئلهی نژاد برای اسبها در فرایند توسعه بازی، چیزی در حدود ۳۰۰۰ انیمیشن برای ۲۳ نوع سبک منحصربفرد حرکتی اسبها آماده شده بود که بخش زیادی از منابع فنی بازی در زمان اجرا را بهخود اختصاص داده بود. در یک نگاه ساده هرچه میزان مصرف منابع فنی بازی بیشتر شود، در مقابل به سختافزار قویتری برای اجرای آن نیاز خواهید داشت.
بااینحال اعضای تیم در قدم بعدی باید این سبکهای حرکتی را برای نژادهایی که درون بازی تعریف کرده بودند نیز شخصیسازی میکردند و در بهترین حالت چنین کاری نباید روی مصرف منابع نیز تاثیر بهخصوصی میگذاشت.
در زمان انتشار بازی، ۱۹ نژاد مختلف در قالب ۴ دستهی کلی برای اسبها آماده شده بود. دستهی اسبهای استاندارد/کاری، سنگین/جنگی/بارکش، مسابقهای و ممتاز همانند نژاد عربی این طبقهبندی را تشکیل میدادند.
ویدیو بالا مقایسه تعدادی از اسبها از ۴ دستهی کلی را در انجام تعدادی از حرکتها نشان میدهد. هر نژادی سرعت شتابگیری و کاهش سرعت مخصوص خودش را دارد، با سرعت متفاوتی میتواند بهچرخد و سرعتی که در آن مثلا از تاخت ملایم به چهارنعل تغییر وضعیت میدهد متفاوت از نژاد دیگر است.
حتی چنین مسئلهای در شرایط اعمال جریمه سرعت تأثیرگذار است و گذاشتن یک گوزن شکارشده روی هر اسبی تاثیر متفاوتی روی آن خواهد گذاشت. با تمامی اینها اعضای تیم همیشه متعهد به این مسئله بودند که مفهوم «بهترین اسب» جای در بازی ندارد و همیشه در مقابل چیزهایی که در یک نژاد بهدست میآورید، چیزهایی را هم از دست خواهید داد.
نکات جانبی
با اینکه تا به اینجا بیشتر از سیستمها و ساختارهای بزرگ و تاثیری گذاری در رابطه با پیادهسازی اسبهای درون بازی گفتهایم اما در این نقطه به سه مورد از جزییات مرتبط با آنها نیز اشاره خواهیم کرد.
اولین مورد مسئله مدیریت عدم برخورد با درختان و ناهمواریهای زمینی همانند صخرهها است و اگر از سوارکاری راحت میان درختان یک جنگل لذت میبرید بدانید که این مسئله بهخاطر توجه دقیق توسعهدهندگان بازی به این مسئله بوده است. مسئلهی عدم برخورد با موانع در ابتدا برای هوشهای مصنوعی درون بازی و سپس با کمی توسعه بیشتر برای بازیکنان پیادهسازی شد. بااینحال هدف نهایی صرفا اضافهکردن یک سیستم به موارد موجود نبود و اعضای تیم اینگونه درنظر گرفته بودند که خروجی نهایی باید بهگونهای جلوه کند که بازیکن متوجه رفتار خودمراقبتی اسب شود. در یک کلام اسب تمایلی به مستقیم رفتن به سمت یک درخت و برخورد با آن را ندارد که قبلا اشارهای به آن کرده بودیم.
هدف نهایی این بود که بازیکن متوجه رفتار خودمراقبتی اسبها بهشود و توقع انجام هر کاری را از آنها را نداشته باشد
قبلتر گفته بودیم که سیستم حرکتی بازی پیوسته مسیر پیش روی بازیکن را پیشبینی کرده و اطلاعات مورد نیاز را استخراج میکند. یکی از بخشهای جمعآوری اطلاعات در رابطه با درختان و صخرههای احتمالی است که ممکن است بازیکن در حرکت خود با آن برخورد داشته باشد. تمامی این موانع احتمالی بر مبنای شاخصهایی از جمله ابعاد خود و البته سرعت بازیکن، مورد تحلیل قرار میگیرند و با این فرض که ممکن است بازیکن به سمت آنها برود، این محاسبه را انجام میدهند که میزان اصلاح مسیر نهایی چه خواهد بود و این مسئله را درون خود ذخیره میکنند. تیم توسعهدهنده این مجموعهی کوچک از محاسبات و اطلاعات را «موانع سرعتی» نامگذاری کرده بودند.
پس از شناسایی و انجام تمامی این موارد، سیستم تصمیم میگیرد که بهترین اصلاح مسیر ممکن چه خواهد بود و سعی خواهد کرد که با دستکاری سرعت جانبی اسبی که سوار آن هستید مسیر حرکتی آن را اصلاح کرده و از مانع فعلی عبور کند و البته بعد دوباره اصلاح صورت گرفته را تا حد ممکن بازگرداند. البته گاهی شرایط بهگونهای خواهد بود که اسب با فهم اینکه نمیتواند مسیر فعلی را ادامه دهد، بهکلی از حرکت بازخواهد ایستاد و واکنشی بهدستور حرکتی بازیکن نخواهد داشت. اولویت انتخاب مسیر احتمالی هم با این مسئله است که کمترین میزان دخالت در دستور حرکتی فعلی بازیکن اعمال شود. در ویدیو زیر میتوانید بخشی از لایههای فنی این سیستم را در مراحل توسعه مشاهده کنید.
بااینحال همانند آن چیزی که در انتهای ویدیو قرار دارد، سازندگان در انتها از این مسئله مطمئن شدند که اگر بازیکنی در هنگام چهارنعل رفتن بهطور مستقیم به سمت درختی حرکت کند، دخالتی از طرف سیستم اصلاح حرکت صورت نگیرد و او حتما با آن برخورد کند. با کمی فکر میتوانیم اینگونه نتیجه بگیریم در چنین وضعیتهایی عمل برخورد با درخت تصمیمی از جانب خود بازیکن است و ما نباید در آن دخالت کنیم. به هر جهت این یک بازی است و نباید سختگیرانه حتی با اعمال غیرمنطقی بازیکنان برخورد کرد.
از جزییات دیگری که در رابطه با اسبها مورد توجه قرار گرفت، مفهومی به نام «جریمه سرعت» بود. بدون شک حرکت در برف عمیق و آب همانند یکدیگر یا حتی همانند وضعیت حرکت عادی روی زمین صاف نیست. در ویدیو زیر نمونه اولیه حرکت درون آب را درکنار نمونهای که در آن مفهوم جریمه سرعت در آن پیادهسازی شده است را مشاهده میکنید.
ناحیههایی که شامل چنین مفهومی میشدند، نهتنها روی نمودارهای شتابگیری و کاهش سرعت تاثیرگذارند، بلکه روی حالات ظاهری حرکت، استقامت و شاخص کلافگی و بیقراری نیز تاثیر میگذارند.
آخرین مسئلهی مورد بحث ما مفهوم توقف در پرتگاه است. این سیستم را میتوانیم کموبیش یکی از سرهمبندی شدهترین سیستمهای درون بازی بدانیم که خود سازندهها هم امیدوارند در آینده آن را به شکل بهتری پیادهسازی کنند.
صرفا برای پیادهسازی این بخش همانند آنچه در بخش ابتدایی ویدیو زیر نشان داده میشود، بهصورت دستی تمام دنیای بازی علامتگذاری شد و تمام پرتگاههای احتمالی مشخص شدند. سپس بدون توجه خاصی به آنچه در واقعیت سوارکاری رخ میدهد یا حتی اینکه سیستمهای حرکتی خود بازی برای اسبها چگونه وضعیت او را برای سرعتهای مختلف مدیریت میکند، راهکاری دمدستی برای پیادهسازی این مفهوم آماده شد.
با شناسایی مسئلهی برخورد با یک پرتگاه، نقطهای که باید در آن توقف نهایی صورت میگرفت بدین شکل مشخص میشد که به مقدار اندازه بدن اسب و شکلی که بهخود خواهد گرفت، از لبه فاصله میگرفتیم.
بعد از آن نوبت به مشخص کردن مکانی بود که باید عمل توقف در آن شروع میشد. برای اینکار در یک فاصلهی مشخصی از پرتگاه سعی در پیداکردن وضعیت مناسبی در حالت فعلی پاهای اسب یا حتی بیتهای هماهنگی آن بودند تا بفهمند بهترین موقع برای انتقال نرم بین مثلا چهارنعل رفتن و ترمز کشیدن کدام خواهد بود.
بااینحال باتوجهبه مبنای غیرمقعول و نهچندان ظریف این سیستم که اسب باید در فلان نقطه حتما بایستد و حتی اینکه دادههای اولیهای ما کاملا محصول اقدامات دستی پرخطا بود، شاهد خروجی آنچنان جالبی در این بخش نیستیم و بیشتر توقف در پرتگاهها حس کاملا مصنوعی را به مخاطب منتقل میکنند. به هر جهت محدودیتها و فشارهای زمان توسعه و وجود بخشهای بهمراتب مهمتر درنهایت منجر به سرهم بندیهایی همانند سیستم توقف آن هم در بازی همانند RDR II میشود و دیدن این موارد آنچنان غافلگیر کننده نیست.
جمعبندی
مسئلهی اسبها در بازی RDR II چیزی فراتر از ترکیب چند انیمیشن است. سیستمهای تولیدشده در این بخش در بخشهای دیگر نیز مورد استفاده قرار میگرفت و پربیراه نیست که بگوییم موتور محرک فرایند ساخت بازی را اسبها و سیستمهای مرتبط با آنها تشکیل میدادند. با تمامی جزییاتی که به آنها اشاره کردیم اعضای تیم بعد از اتمام ساخت بازی RDR II برای پروژهی بعدی خود بهدنبال جاهطلبیهای بیشتری هستند.
اعضای ارشد استودیو بهطور ضمنی وعده استفاده از تکنیکهای پیشرفته دنیای هوشمصنوعی همانند «یادگیری ماشینی» را در بازیهای آینده خود دادهاند
آنها نهتنها برای پیادهسازی تنوع بیشتری از حالات حرکتی اقدام خواهند کرد، بلکه میخواهند تقریبا در تمامی بخشهایی که در آن از پیادهسازی واقعیت کوتاه آمدهاند، با رعایت جوانب فنی، سیستمهای خود را بهبود ببخشند.
آنها بهدنبال افزایش کیفیت و کمیت واکنشهای بین انسانها و جانوران درون بازی خواهند بود و میخواهند چنین مسئلهای نهتنها برای بازیکنان که برای هوش مصنوعی بازی نیز بهطور کامل پیاده شود. همچنین آنها وعدههایی برای استفاده از تکنیکهای پیشرفته دنیای هوشمصنوعی همانند «یادگیری ماشینی» را در بازیهای آینده خود دادهاند.
نظر شما در رابطه با آینده بازیهای راکاستار چیست و چه سطحی از جزییات را برای آنها تصویر میکنید؟ ما و دوستانتان مشتاق شنیدن نظرات شما هستیم.