ایـــکســـــ پــــــــــی

فرهنگ گیم و زندگی

ایـــکســـــ پــــــــــی

ساختار بازی ها _ ای وای ای وای به من !

اول از همه توجه داشته باشید ، قانونی وجود داره که میگه :

هیچ الگوریتمی کامل و بدون نقص نیست.


به طور کل ، اشکال ها سه منشا دارن :

  • تناقض یا کافی نبودن کد های موتور بازی سازی
  • تناقض یا کافی نبودن کد های بازی
  • بی دقتی

منظورم از تناقض کد ها ، اینه که کدنویس به دلیل بی دقتی یا حالا هر دلیل دیگه، کد ها رو جوری بنویسه که بر ضد هم باشن و اثر همدیگه از بین ببرن ، که در اکثر برنامه ها همچین چیزی مطلوب نیست و سعی میشه از این حالت دوری بشه ، چون عملکرد برنامه رو هم سنگین و هم خراب میکنه . خلاصه چیز بدبختی ایه و بدیش بیشتر از خوبیشه. ( خوبیش اینه شاید برنامه نویس ، گشاد باشه و حال نکنه بین کد ها بگرده و درستشون کنه ، میاد یه چیز دیگه مینویسه که کد خراب ، اخلال در کارش ایجاد بشه )

مورد اول رو در آنریل انجین خیلی میبینیم ، موتور قدرتمندی که به خاطر برخی اشکالات ، نمیتونه بعضی وقت ها تکسچر ها رو اجرا کنه. یعنی ممکنه توی بازی ، چیزی براتون نامرئی یا مات و تار بشه ، در حالی که قرار نبوده همچین اتفاقی بیوفته :/ و موقع انتشار اساسین کرید یونیتی ، موتور یوبیسافت هم "احتمالا" همچین مشکلی داشته و بعضی چهره ها صورت نداشتن که خب ترسناک به نظر میرسید. (البته اون بازی شاید یکی از باگ دار ترین بازی های تاریخ بود :/ )

در هر صورت ، استودیو بازی سازی کار خاصی در این حوزه نمیتونه انجام بده و باید منتظر باشه که شرکت سازنده موتور واسش آپدیت بده؛ هر چند خیلی از موتور ها منبع بازن و بعضی از استودیو ها موتور ها رو طبق سلیقه خودشون تغییر میدن و یا موتور خودشونو میسازن . ( مثل سازنده بازی Animal well)

البته استودیو ها اینقدرم معصوم نیستن هیچ مشکلی گردنشون نباشه

در حقیقت اکثر باگ ها و بهینه نبودن ها تقصیر استودیو بازی سازیه.

در کد نویسی ، باز ممکنه همون قضیه تناقض پیش بیاد ، یا گروه برنامه نویسا یادشون بره چیزی رو توی بازی بزارن ( مثلا اساسینز کرید یک ، کات سین هاش دکمه اسکیپ نداشتن) و یا تعداد زیادی از کد ها رو بندازن روی یکی از قسمت های کامپیوتر ( مثلا پارتیکل ها ، که توی نمایش بازی ها توضیحی درباره شون دادیم ، هم به وسیله cpu (پردازنده)و هم به وسیله gpu (کارت گرافیک) میتونن اجرا بشن ) و یا کد ها رو بهینه نکنن .

البته باز همه چیز تقصیر برنامه نویس ها نیست ،

انیمیشن ساز ها ممکنه یکی از کلید های انیمیشن رو توی زمان بدی بزارن ، یا مدل ساز ها در جایی اشتباه کنن ، و یا طراحان مراحل با بی دقتی بعضی اجسام رو داخل هم بزارن و در انتخاب لایه های برخورد اشتباه بشه ( در موتور بازی سازی ، 16 تا 32 لایه برخورد وجود داره و هر نوع جسم (body) رو توی یک لایه منحصر بفرد فرار میدن. مثلا فرض میکنیم کاراکتر اصلی توی لایه یکه ، همه دشمنا توی لایه 2 ، سکه ها و امتیازاتی که میشه گرفتشون توی لایه 3. اینطوری میتونیم براش تعریف کنیم لایه یک با لایه 3 میتونه برخورد کنه ، اما لایه 2 نمیتونه . اینطوری دشمنا توی بازی نمیتونن امتیازا رو بخورن ) ، و یا محدوده موانع رو بیش از حد بزرگ کنن یا در جای نادرستی بزارن ، دیوار هایی که جسم ندارن و میتونید ازشون رد شید ، یا برعکس یک توده غشای هوای سفت که جلوتونو میگیره :/

اینا نمونه هایی از باگه ، که تقصیر برنامه نویسا نیست . (البته همونطور که میدونید دیوار های نامرئی بعضی وقتا مپ بازی رو محدود میکنن و باگ نیستن ، بلکه به صورت عمدی توی بازی گذاشته شدن )

در کل ، هر اشکالی نهایتا به بی دقتی ( بعضی وقتا تنبلی ) ختم میشه . خیلی جاها ، باگ ها جایی به وجود میان که به ذهن سازنده نمیرسه و فقط با تست کردن چند باره بازی میشه دیدشون و اون ها رو از بین برد.

ممکنه مشکل از دستگاه اجرا کننده بازی هم باشه

البته در اکثر مواقع اینطور نیست و به طور کل تصور میشه دستگاه ها بی گناهن ،

اما این امکان هم وجود داره که باگی که شما درون بازی میبینید ، بر اثر اتفاقی باشه که در اون لحظه در سیستمتون افتاده و مانع لود شدن صحیح عناصر بازی شده باشه ؛ اگه بازی رو دوباره از اول اجرا کنید و این بار اون باگ رو نبینید ، یعنی همین فرضیه درسته و مشکل باگ از دستگاه شما بوده.


همیشه هم باگا بد نیستن ! مثلا شخصیت رپتایل در مورتال کامبت بر اثر یک باگ به وجود اومد !

توی بازی اسکاریم ، غول ها میتونن شخصیت بازی رو به کیلومتر ها دور تر پرتاب کنن ؛ چون این باگ باحال بود ، درستش نکردن

یا توی یکی از بازی های ورزشی راگبی ، یکی از بازیکن ها کوچولو موچولو میشد و با این حال ، به راحتی از پس بازیکنان غول پیکر برمیومد !

***

بعد از بررسی باگ ها : حالا نوبت به لگ ، و انیمیشن های لگ نما میرسه !

از نظر خارجیا ، دو نوع لگ وجود داره : stutter و jitter . این اسامی معنی لغوی خاصی ندارن ولی به دو حالت مهم و متفاوت از لگ اشاره میکنن :

stutter اینه :

[این توضیحات از وبسایت گودوت برداشته ، خلاصه و ترجمه شده ] استاتر به دو دلیل اتفاق میوفته :

اولین و متداول ترین دلیل اینه که بازی نمیتونه عملکرد رو به خوبی حفظ کنه و فریم ها رو کامل کنه . این مشکل تقصیر استودیو بازی سازیه و با بهینه سازی درست میشه .

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

اگه استاتر به این دلیل به وجود اومده باشه ، میشه با غیرفعال کردن قابلیت V_sync [ (همگام سازی عمودی ) ] ، میزان لگ رو کاهش داد ، که البته این باعث پارگی صفحه میشه . [ پایین تر پارگی صفحه رو توضیح میدم ]

و با مجبور کردن کارت گرافیک به این که با بالاترین قدرت خودش کار کنه هم این نوع لگ رو از بین میبره ؛ هر چند باعث میشه GPU بیشتر انرژی مصرف کنه.

jitter اینه :

[اینکی توضیحات هم از وبسایت گودوت برداشته ، خلاصه و ترجمه شده ] دلایل خیلی زیادی در اتفاق افتادن جیتر نقش دارن . مهم ترین و متداول ترین دلیل اینه که فرکانس فیزیک بازی [ تقریبا میشه گفت همون fps ] با fps مانیتور نمیخونه . برای حل این مشکل باید نرخ فریم بازی رو با مانیتور هماهنگ کرد.

بعضی وقتا هم هست که بازی روونه ، ولی فقط یکی از چیز های تو بازی ، jitter داره و دلیلشم اینه که موتور بازی سازی ، اون شی رو با چند فرایند پردازش میکنه که باید توسط بازی ساز تصحیح بشه .

***

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

عمودی بودنش به خاطر اینه که نوری که لامپ های مانیتور ها و تلویزیون ها تولید میکنن ، در هر ردیف از لامپ ها ، از بالای صفحه به پایین ، در کسری از ثانیه به روز میشه و تغییر میکنه.

حالا میریم سراغ انیمیشن های لگ نما !

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

یعنی انگار فیزیک بازی داره سریع تر از انیمیشن ها فعالیت میکنه . این ، لگ محسوب نمیشه ، بلکه تیم انیمیشن سازی فریم های کمی درست کرده و اونها رو با فاصله زمانی نسبتا زیاد از هم گذاشته . ( توی انیمیشن سازی ، نیم ثانیه زمان زیادی محسوب میشه :/ ) .

ممکنه این حالت رو با جیتر اشتباه بگیرید و سعی کنید که به عنوان گیمر حلش کنید ، اما زهی خیال باطل ! نمیتونید چون که بازی همینجوریه ! . این انیمیشن ها به دلیل سبک بازی ، عدم بودجه ، گشادی انیمیشن ساز ها و... اینطوری درست میشن.

#

#

#

به پایان آمد این دفتر و حکایت ظاهرا باقی نیست ،

به قول گیمفایی ها ، دوستان نظر شما چیست ؟

راستی ! روز تولد مهر ، یلدا مبارکتون باشه ! 🌹

سوشیانس
پنجشنبه بیست و نهم آذر ۱۴۰۳
23:9
دندان روی جگر بگذار.