اخبارمقالات

تکنولوژی ساخت بازی Assassin’s Creed 3

7.04Kviews
۳
(۲)

Assassin's Creed 3

Assassin’s Creed 3 یا  AC III داستان ئزموند مایلز را دنبال میکند. او از طبیعت دژخیمانه اش استفاده میکند تا خاطره ی نسل مبارزش را در زمان مبارزه با شوالیه های صلیبی زنده کند. در Assassin’s Creed 3 ماجراجویی به اقیانوس هم کشیده میشود. در اولین بازی از این سری ساخت یو.بی.سافت (Ubisoft) بازیگر قادر به شنا هم نبود اما در این نسخه استاد نبردهای دریایی است. بهر حال ساخت اقیانوس در این نسخه اصلاً آسان نبود.

جرج تورس کارگردان فنی ارشد Assassin’s Creed 3 توضیح میدهد که بخشی از زمان آنها صرف رندر کردن ۲۰۰ فریم در ثانیه در زمانی بود که در صحنه آب بود. در فیلمهای واقعی حدود ۱۰ سال پیش رندر کردن اقیانوس میتوانست آنقدر شهرت برای فیلم به ارمغان بیاورد که جلوه های ویژه ی آن را کاندید اسکار کند. امروز یو.بی.سافت به صورت بلادرنگ میتواند به رندر اقیانوسهای پیچیده بپردازد و آنها را واقعی جلوه دهد. تورس میگوید آنها باید آب، کشتی و حرکتهای داخل بازی را رندر کنند و برای اینکه موتور رندر آنویلدکست (AnvilNext) بتواند کاراکترها، کشتیها و بادبانها را رندر کند ناچار بودند سرعت رندر آب را بسیار سریعتر از رندر زمان واقعی در بیاورند.

Georges Torresمدتها پیش از مجموعه ی Assassin’s Creed وارد صحنه شود زمانی که بازیکنان در دریا به سمت آمریکا حرکت میکردند دنیای اقیانوسها تنها زیبایی ضاهری بود اما در حال حاضر صحنه ی نبردهای دریایی هم به این زیبایی ها افزوده شده است. کاری که یو.بی.سافت در Assassin’s Creed 3 انجام داه تا به حال با توجه به عمق آب، کشتی های شکسته شده و غیره نظیر نداشته است. در موتور جدید بازی سیستم آب کاملاً جدیدی در بازی گنجانده شده است.

هندلینگ (کنترل) بازی نه فقط نرم تر از قبل شده بلکه در اقیانوسهای بسیار شلوغ و پر از امواج هم بازی بسیار نرم پیش میرود. موتور آنویل نکست (AnvilNext) انعکاس آبها و قطه های آب را به خوبی نشان میدهد و شرایط طوفانی را هم به خوبی منعکس میکند.

دنیای Assassin’s Creed 3 واقعاً خارق العاده است و باعث شده بازیگر با سناریویی بسیار جذاب روبرو شود. کشتی هایی هستند که باید در آبها شلیک کنند، دکلهایی هستند که به پایین سقوط میکنند، توپهایی که شلیک کرده و کشتی ها را خراب میکنند، بالارفتن بازیگر از دکل کشتی ها و نبردهای دریایی دیگر از جمله موارد جالب توجه اند.

Assassin’s Creed 3 یک بازی فوق العاده برای یو.بی سافت است و از کنسولهای بیشتری استفاده برده و بازی را برای آنها بهینه کرده است. با وجود آنکه بعضی میگویند فاصله ی زمانی بین نسخه های دو و سه زیاد بوده اما تیم فنی این اعتقاد را دارد کاری که در این نسخه انجام شده به قدری مشکل است که تنها باید تکنولوژی به این حد پیشرفت میکرد تا امکان انجام آن وجود داشت.

یو.بی. سافت یکی از موفقترین شرکتهای تولید بازیست و تیم سازنده ی بازی در توازن برقرار کردن بین هنر و فن بسیار موفق بوده و توانسته در طراحی وسایل درون بازی و خلق دنیا بسیار موفق باشد. یو.بی.سافت در بازیهای دیگرش هم به همین صورت موفق بوده است. یکی از کارهایی که یو.بی.سافت انجام میدهد دقت در روایت تاریخی رویدادهاست که در Assassin’s Creed 3 تاریخ بازی قرن ۱۸ است که با دقت نشان داده شده است البته می توان کفت بزرگترین بازی شرکت یو.بی.سافت تا به حال همین بازی بوده است.

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

شبیه سازی آب توسط دفتر سنگاپور یو.بی.سافت انجام شد که هماهنگ با تیم کانادایی یو.بی.سافت که در مونرئال و کبک بودند کار میکرد. یو.بی.سافت سومین شرکت بزرگ تولید بازی در اروپا و سومین شرکت بزرگ در ایالات متحده میباشد. بزرگترین استودیوی یو.بی.سافت در مونرئال کانادا است و ۲۱۰۰ نفر در آنجا کار میکنند.

مطالعه کنید:  GPU جدید NVIDIA به نام Quadro K6000

چگونگی ساخت بازی

جرج تورس مسئول گروه شبیه سازی نبردهای دریایی بود. افرادی نظیر اندرو الم برای شبیه سازی آب و حرکتهای آن مسئولیت را پذیرفته بود و دنی سوسیلو هم مدیریت گروهی از هنرمندان نظیر اولف دال و ویرجینیا رومانقسکا را برای شبیه سازی قایقها به عهده داشت. و هنرمندان فنی کار هم ویشانگ شاه،  یان گنگ و کریس کرکپاتریک بودند.

شبیه سازی اقیانوس نیازمند رعایت موارد  زیر در ساخت موجها بود :

•    واقعی جلوه کردن (realistic)
•    قابلیت مقیاس بندی (scalable)
•    بلادرنگ بودن (realtime)

برای حل این مسائل تیم نیازمند تکنولوژی جدیدی در شبیه سازی اقیانوس داشت و بر مبنای فیزیکی کشتیها سبک بازی تغییراتی کرد که در داخل موتور بازی چیزی در مورد آن پیشبینی نشده بود. تیم به سختی تغییراتی در موتور آنویل نکست داد تا این موتور که خود بخود شبیه سازی آب و هوش مصنوعی را به خوبی انجام میداد برای کار بهینه شود تا در صحنه هایی که ۲۰۰۰ سیاهی لشکر در صحنه بودند امکان رندر وجود داشته باشد. در مقاله ای در CVG UK در ماه مارس یو.بی.سافت اعلام کرد هدف از ساخت بازی Assassin’s Creed 3 تولید بازی ای برای نسل آینده با استفاده از امکانات کنسولهای حاضر بوده است.

یک رفرنس واقعی مربوط به خدمات ملی آب و هوادر Assassin’s Creed 3 سواحل شرقی آمریکا منطقه ی بازی است و ماموریتها، نبردهای فرعی و جستجوی گنج کاپیتان کید در آن اتفاق میافتد. شما به عنوان شخصیت کانر میتوانید ناخدای کشتی آکیلا شوید و در نبردها شرکت کنید. کنترل کشتی به عوامل زیادی نظیر شرایط آب و هوایی، شرلیط صخره ها و جهت و سرعت باد و امواج بستگی دارد.

چون در این بازی از اقیانوس بسیار استفاده شده بود باید آن را مقیاس پذیر و قابل تغییر میساختند. برای کنترل کردن شرایط اقیانوسها در بازی هنرمندان از مقیاس بوفورت (Beaufort) استفاده کردند. این مقیاس از عدد صفر به معنای حالت بی باد و آرام تا عدد ۶ که نسیم قوی را نشان میدهد و سرعت امواج را ۲۲ تا ۲۷ گره دریایی نشان میدهد و نهایتاً تا عدد ۱۲ که گردبادی کامل با بادهای با سرعت ۶۳ گره دریایی نشان میدهد را شامل میشود که در آن موجها ۱۶ متر یا ۵۲ فوت ارتفاع دارند و بسیار مخرب میباشند. در بازی از مقیاس ۱۲ زیاد استفاده شد. طراحان بازی میتوانستند با تغییر اعداد بوفورت قدرت امواج را عوض کنند. تنها مساله ی بزرگ برای واقعی شدن موجها این بود که جهت باد نمیتوانست روی امواج اثر مستقیم بگذارد بلکه روی کنترل بازی موثر بود.

مقیاس بوفورت (Beaufort)

موجها ترکیبی از لایه هایی نظیر کف ، نقشه ای معمولی، الگوهای امواج با فرکانسهای بالا و پایین و اطلاعات شفافیت و رنگ می باشند. همانطور که قبلاً هم اشاره شد سازندگان بازی از مقیاس ۰ تا ۱۲ استفاده کردند که قدرت و شرایط باد را نشان میداد. برای هر مرحله همانطور که در مقیاس واقعی بوفورت هم موزد استفاده است یو.بی.سافت امواج را به صورت زیر دسته بندی کرد:

•    اندازه ی (مقیاس) سطحی (surface scale)
•    اندازه ی ارتفاع (height scale)
•    تلاطم امواج (choppyness)
•    میزان میرایی کف (foam decay)

برای مثال با توجه به اینکه برای کف از اعداد کلیدی ۰، ۳، ۷ و ۱۲ استفاده شده بود اگر طراح میخواست عددی بین این اعداد داشته باشد موتور بازی میتوانست به راحتی درونیابی را انجام دهد :

B_scale

برای تولید امواجی که به عنوان مدل آماری تبدیل fourier استفاده میشدند بر مبنای کارهای جری تسندورف (Jerry Tessendorf’s) مدلی فراهم شد. تیم سازنده ی بازی دو مجموعه از تغییر شکل موجها را از پیش مورد محاسبه قرار داده و در بازی به صورت RGB گنجاند. بافتهای آبها از موقعیت دوربینها دریافت و تفسیر می شد بنابراین موجهای دورتر را کوچکتر و موجهای نزدیکتر را بزرگتر در نظر گرفتند. موجهای حاصل ورودی بافرهای grid یا ورتکس (vertex) در نظر گرفته شدند.

نمایش فضای صفحه به صورت مشبک در یک صفحه ی مسطح در نظر گرفته شد. هر grid vertex با تغییر بافتها تغییر میکرد و موج تغییر مکان میداد. به گفته ی تورس : “ما جزئیات بیشتری را با کنترل پروژکتورهای دوربین بدست آوردیم.”

مطالعه کنید:  مدیریت رندرفارم 10 Deadline منتشر شد

سطوح کف موجها هم برای هر فریم در گوشه های موجها از پیش محاسبه شدند. راه حل افکتی بود که ترکیبی از پیش پردازش و محاسبات بلادرنگ (realtime) باشد. البته باید میزان از بین رفتن کف ها و برخی پارامترهای دیگر هم درنظر گرفته شود.

این کار مشکل بازی بازیگران را هم حل میکرد و با توجه به پروژکتورهای روی دوربین و پیش پردازشها سازندگان توانستند آب را به صورت لایه هایی در آورند که حرکت کشتیها روی آنها انجام میشد. تیم نیاز به چیزهایی بیشتری در زمان نزدیک شدن به ساحل داشت. زیرا آب در زمان نزدیک شدن به ساحل تصویری کاملاً متفاوت پیدا میکرد.

foam render کفهای کنار ساحل : برای مثال زمانی که آبها به صخره ها برخورد میکردند کفهایی باید تولید میشد. این کار با نمونه برداری توپولوژی سواحل در فواصل زمانی مشخص انجام گرفت و سپس نتایج را وارد موتور بازی کردند. پردازش آفلاین شامل نمونه برداری توپولوژی زمینها با  فواصل مشخص بود که با توجه به نقشه ی بازی انجام میشد.

معمولاً دقت کار در نقشه های ۴kmx4km به اندازه ی معمولی ۵۱۲×۵۱۲ بود که دقت حدود ۸ متر را به ما میداد. همچنین نقشه های دو بعدی هم برای نشان دادن سطح زمین و آبهای سطحی استفاده شد. تیم برای نشان دادن کف طبیعی تر از نویزهای پرلین (Perlin noise) و گاوسی (Gaussian blurs) هم استفاده کرد

زمانی که کف آب سفید بود، سه نقشه ی مقیاس خاکستری در هر یک از کانالهای قرمز، سبز و آبی قرار داده شد و یک رمپ (ramp) رنگ ترکیب بین این سه را به ما میداد و نتیجتا نقشه ی کف حاصل میشد. برای تغییر کف هنرمند تنها باید رنگ رمپ را تغییر میداد.

foam texture

برای مثال :

•    عدد ۰٫۱ در رمپ رنگ کف بیشتر شبیه کفهای قرمزرنگی میشد که کمی هم رنگ سبز و آبی داشت.
•    عدد ۰٫۸ هم نشان میداد که رنگ قرمز در کف کم و رنگ آبی زیاد بود و سبز هم پراکنده به چشم میخورد(عمق بیشتر آب).

شفافیت : آبهای کم عمق کمی شفاف و کم رنگترند. آب بر مبنای رمپ بافت که به صورت rgb بود رنگ زده شده بودند. همچنین کدر بودن آب هم با یک رمپ رنگ مشابه کنترل میشد و دو رمپ اشاره شده تمام کنترلهای مورد نظر را میپوشاندند. این کار با توجه به فاصله از ساحل انجام میشد اما در آبهای عمیق هم برای تولید SSS مصنوعی از آن استفاده میشد.

شبیه سازی آبآبهای اقیانوس به صورت معمولی مقداری پخش زیر سطحی یا SSS دارند اما رندر آنها بسیار وقت گیر است برای همین برای نشان دادن این افکت تیم از یک آزمون SSS ساده با توجه به موقعیت دوربین، موقعیت خورشید و همچنین شیب کف اقیانوس استفاده کرد. در واقع تیم به این نتیجه رسید که بلا تغییر تنها بخشی از اعداد rgb مربوط به آبهای کم عمق میتوان پراکنش نور به صورت زیر سطحی را نشان دهد.

عمق : با کم شدن عمق اب رنگ آن هم تغییر میکرد به صورتی که در جاهایی بازیکن میتواند کف اقیانوس را هم ببینید. مدل اینکار با استفاده از دو سطح سایه زن آبها LOD انجام گرفت.

به گفته ی تورس : ” ما از دو سطح LOD استفاده کردیم. LOD صفر مربوط به آبهای کم عمق بود و LOD یک که در آنها انعکاس آب وجود نداشت برای آبهای عمیق استفاده میشد تا نشان دهیم جنگ در وسط اقیانوس انجام گرفته است.”

برای نشان دادن حرکت از آبهای کم عمق به عمیق به صورتی که بازیگر متوجه اینکار نشود از پچ ها یا وصله هایی استفاده شد. هر پچ یا LOD 0  بود یا LOD 1. بعد برای اینکه بتوان اعدادی را بین انها بدست آورد از یک رمپ رنگ آب استفاده شد. فاصله ی ۴۰۰ متر فاصله ای در نظر گرفته شد که LOD 0  به LOD 1  تبدیل شود.

در پایان آبها با توجه به موارد زیر رندر شدند :

مطالعه کنید:  نور (قسمت پنجم)

•    پراکنش
•    انعکاش یا آیینه وار بودن آب
•    نقشه معمولی
•    انعکاس معمولی آب
•    عمق و رنگ آب
•    شکست نور در آب و SSS
•    کف های پیچیده

آب آینه ای آب معمولی

تصویر نهایی همراه با کف شفافیت، عمق SSS و رنگ آب انعکاس آب

شکل و حرکت کشتیها

تیم یو.بی.سافت باید زمانی که کشتی ها در آب حرکت میکردند هم مشکلاتی راحل میکرد. مشکلات شامل شناور بودن، تکانهای انها و میزان لایروبی و حرکت آبها میشدند.

انیمیت کشتیروی عرشه کشتی بادبانها میتوانستند جمع شوند و یا کاملاً باز شده و سرعت بیشتر و قدرت مانور کمتری به آن بدهند. برای نمایش تغییر محل آبهای زیر کشتی یا شناوری کشتی بررسیهای زیادی انجام شد. تیم به این نتیجه رسید که مثلاً زمانی که کشتی در آب غرق میشود موج کاملاً از میان میرود و دو تکه نمیشود. در واقع زمانی که موج به کشتی برخورد میکند به صورت خم شده در آمده و از بین میرود. به این صورت کشتی هم در آب فرو میرود. با توجه به این موصوع تیم شبیه سازیهایی برای واقعی کردن کار انجام داد.

برای نمایش برخورد کشتی یا از بین رفتن کشتی به صورت دقیق و تعامل آن با امواج امکان شبیه سازی بلادرنگ وجود نداشت. اما با بخش بندی کشتی به شکل کره های شناور در آب توانستند شبیه سازی بلادرنگ را انحام دهند. برای یک کشتی جنگی معمولاً از چهار کره ی عظیم که در فضای زیر کشتی به صورت سه بعدی قرار گرفته بودند استفاد هشده و رندر جداگانه روی آنها انجام میگرفت. تورس : “برای اینکه بتوانیم کشتی ها را بصورت بلادرنگ پردازش و رندر کنیم باید کره های شناور عظیمی در نظر می گرفتیم.”

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

دیگر مورد حرکت کشتی ها و مقاومت آب در برابر آنها بود. حرکت کشتی تابع ضریب لایروبی انها، تکانه خوردن و تغییر مکانی کشتی و شتاب آنها میباشد. ضریب لایروبی زاویه ی بین شتاب و سطح کشتی را نشان میداد. برای شبیه سازی این مورد نقطه های نمونه ای در کشتی در نظر گرفته شد که نیروی لایروبی و نیروی کشش کشتی را در خود داشتند. این نقاط ساده درونیابی شدند و نتیجتاً بینابین این نقاط هم به خوبی پردازش میشد و رندر خوبی حاصل میشد. در Assassin’s Creed 3 به گفته ی تورس کار پردازش به دلیل کمبود وقت باید سریع انجام میشد. بنابراین تیم یو.بی.سافت با استفاده از بخش بندی کردن کار سرعت را بالا برد. مثلاً کشتی ها را همانطور که اشاره شد به کره هایی تقسیم کردند و هرکدام را جداگانه پردازش کردند.

در زمانهایی که نبردهایی با گلوله مهای توپ صورت میگرفت و یا از توپهای دیگر و رگبارها استفاده میشد باید کار بلادرنگ رندر میشد. در طی بازی میتوانیم کشتی اکیلا را ارتقا داده و تجهیزات بیشتری روی ان بگنجانیم. مثلاً میتوانیم آنها را همراه با منجنیقها و کشتی کوبها کنیم. در زمانی که شلیک انجام میشد کشتی ها تکانی میخوردند و زمانی که کشتی ها به ساحل نزدیکتر میشدند باید موجها تغییر شکل میدادند.

نتیجه نهایی بسیار جالب بود و دنیایی را پدید آورد که بسیار دیدنی بود و در دریا ساخته شده بود. کل بازی تکنولوزی ساخت بازیها را به جلو برده است و از نظر تصویری فوق العاده در زمینه ی نمایش دنیای اقیانوسها و دریاها Assassin’s Creed 3 بسیار موفق بوده است.

بازی Assassin’s Creed 3 ترکیبی از مجموعه ی عظیمی از هنرمندان و طراحان بازی است. همانطور که تورس اشاره میکند کارهای بزرگ نظیر نبرذهای دریایی با طراحی بازی، صدا، انیمیشن، مدلسازی، بافت سازی، طراحی مرحله ی بازی، کارگردانی هنری، تحقیقات، نورپردازی تبدیل به واقعیت میشوند.

این مطلب چقدر مفید بود؟

به این پست امتیاز دهید!

متوسط آرا ۳ / ۵٫ ۲

اولین نفری باشید که به این پست رای می دهید!

1 Comment

Leave a Response

11 + = 13

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.