باحاله:

بازی gta iv  از جمله بازیهاییه که هر گیمری حداقل 1 بار اونرو تجربه کرده...در طول بازی  gta iv یه موضوع توجه اکثر مارو به خودش جلب میکنه و اونم view distance فوق العاده ایه که این بازی داره.البته بازی gta iv زمانی که برای pc پورت شد دارای باگهای فراوان گرافیکی بود ولی با عرضه نسخه ی جدید این بازی یعنی: gta iv: Episodes From Liberty City نسبتا باگهای گرافیکی برطرف شدند. من قصد دارم یکسری عوامل رو برسی کنم که باعث میشه ما شاهد این view distance بالا بدون افت performance  باشیم.

وقتی با یک هلیکوپتر  از بالا به شهر liberty city نگاه میکنیم نکته های بسیار ریزی توجه مارو جلب میکنه از جمله چراغهای اتومبلیها و خیابانهای شهر و آسمان خراشهای بلند شهر که با وجود این جزییات بالا و حجم وسیعی که داره به صورت real time رندر میشه این performance یکم عجیب به نظر میاد(که عملا با وجود چنین میدان دیدی دیگه تکنولوژی culling کاربرد خودش رو از دست میده و همه ی جزییات باید رندر بشه-مخصوصا زمانی که از دور یک view بزرگ از شهر رو میبینیم)

یکی از تکنولوژی های مورد استفاده در رندر ساختمانهای بلند شهر تکنولوژی LOD ( (Level of detailهست که به افزایش این performace خیلی کمک میکنه.اساس کار این تکنیک استفاده از الگوریتمی  هست که جزییات آبجکتهای دورتر از یک میزان معین رو کاهش میده و با نزدیک شدن دوربین و در حقیقت کم شدن همان فاصله ی تعریف شده قبلی جزییات به تدریج افزایش پیدا میکنه این در حالی که وقتی دوربین به آبجکتها (مثلا ساختمانها نزدیک میشه) تکنولوژی culling میتونه کاره خودش رو شروع کنه و با افزایش جزییات اینبار culling باعث جلوگیری از افت performance بشه(چون میدان دید کاهش پیدا میکنه).با توجه به عکس زیر میتونید منظور من رو بهتر متوجه بشید که چطوری جزییات به تدریج کاهش پیدا میکنن:

با توجه به شکل بالا متوجه میشید که وقتی دوربین از آبجکت دور میشه ورتکسها و poly ها کاهش پیدا میکنه...شاید بگید این کاهش چشمگیر poly باعث کاهش کیفیت بافتها و تکچیرینگ میشه ولی در جواب شما باید بگم که وقتی آبجکت به مرحله 5 میرسه آنقدر از دوربین دور هست که این کاهش کیفیت به چشم نیاد و تنظیم این دو متغیر یعنی میزان فاصله و درصد رندر جزییات به عهده سازندگان بازیه.

موردی که توجه منو خیلی به خودش جلب کرد این بود که وقتی view distance بازی روی آخرین حد ممکن یعنی 100 تنظیم میکنیم میتونیم اتومبیلها و چراغهای خیابونها رو تا نهایت فاصله ی ممکن ببینیم.نکته ای که برای رندر اونها میتونیم بهش اشاره کنیم استفاده از همون تکنیک lod اینبار برای اتومبیلهاست به این ترتیب که وقتی از یک حد مشخص از خیابونها فاصله میگیرید اتومبیلهای پر جزییات تنها به یک cube یا مکعب تبدیل میشن که از 6 poly تشکیل شدن و عملا چنین چیزی در کارت گرافیکهای امروزی جایی برای محاسبه پیدا نمیکنه چون حجمه بسیار بسیار پایینی از مموری کارت گرافیک رو برای محاسبه اشغال میکنه و حتی میشه از اون صرف نظر کرد.برای چراغهای خیابونها و اتومبیلها هم از یک تصویر alpha استفاده میشه و چیزی به اسم light وجود نداره ولی از اون بالا ما همه چیزو  light میبینیم.

نکته بعدی که میشه بهش اشاره کرد  فیزیک بازی هست که عملا وقتی view distance افزایش پیدا میکنه در نماهای دور خبری از فیزیک و محاسباتش نیست و البته نیازیم به اینکار نیست...وقتی توی خیابونهای بازی gta iv حرکت میکنید مطمئنا متوجه فیزیک فوق العاده اتومبیلها و handling اونها شدید ولی وقتی از فاصله ی خیلی دور به اتومبیلها یا همون مکعبهای 6 poly نگاه میکنید متوجه میشید که اتومبیلها فاقد هرگونه فیزیک یا handling بوده و تنها روی یک سری path از پیش تعریف شده حرکت میکنند.

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

با وجود همه ی این تکنیکهای خلاقانه فکر میکنم حالا عدم کاهش performance دیگه خیلیم عجیب به نظر نیاد.!

موفق باشید.

مشخصات سیستمی كه باهاش عكسهای بالارو تهیه كردم: 

كارت گرافیك: nvidia 9800gtx 1g

نوشته شده در تاریخ سه شنبه 28 دی 1389    | توسط: amir mahdipoor    | طبقه بندی: اطلاعات در مورد بازی های غیره!،     نظرات()