چگونه سونی API مخصوص به خود را با معماری سخت افزاری کنسول خود تطبیق میدهد.
مقدمه :
سال ۲۰۱۳ مقاله جالبی از سوی Digital Foundry و همین طور در بازه زمانی گوناگون بسیاری از سایت ها و فروم های گوناگون دیگر منتشر شده بود که صحبت ها و تجزیه ، تحلیل های آن ها درباره API کنسول سونی بسیار جالب توجه بود و می شود از صحبت های آنها به درک درستی از نحوه تولید و توسعه بازی های مولتی پلتفرم و انحصاری دو کنسول پلی استیشن و ایکس باکس رسید . مقاله برای دوره های زمانی مختلف می باشدو رفته رفته کمی در مقاله به زمان های نزدیک تر سوق داده خواهید شد . وقتی به صحبت های مقاله نگاه اجمالی می کنیم نحوه کار ، تولید ، توسعه بازی های این دو کنسول فرق چندانی نکرده و با اینکه هر دو تولید کننده API های مخصوص خودشان را در این سال ها توسعه داده و به روز کردن ولی راه و روشی که برای تولید API هاش خودشان برگزیده اند فرق بزرگی نکرده و هر دو کمپانی راه و روش مخصوص به خودشون را در پیش گرفته اند.

Chris Norden
مهندس ارشد کارکنان SCEA ، آقای Chris Norden در سال ۲۰۱۳ صحبت هایی درباره API کنسول سونی با توسعه دهندگان بازی در مورد معماری اصلی که کنسول جدید را تأمین می کند صحبت هایی کرده بود که بخش های مهمی از صحبت های وی را با تحلیل برای شما بازگو می کنم و در ادامه به سراغ مهندسین دیگر کمپانی های بازیسازی و سخت افزاری هم خواهیم رفت :
از دیدگاه ارائه دو API کنسول های مایکروسافت و سونی رویکرد های مختلفی وجود دارد . Norden به یکی از نقاط ضعف اصلی DirectX 11 و OpenGL اشاره کرده و گفته : تیم مایکروسافت نیاز به سرویس دهی به مجموعه گسترده ای از سخت افزارهای مختلف دارند. در آن سو ، مزیت PlayStation 4 این است که یک پلتفرم سخت افزاری ثابت است . به این معنی که می توان تماما به مشخصات سخت افزاری پلی استیشن ۴ پرداخت و بر روی آن کار کرد ( باید این نکته را به شما بگویم که کنسول نسل بعدی Xbox دارای پسوندهای خاص سخت افزاری در با API استاندارد DX11 است.)آقای Norden می گوید: ما توانایی این کار را داریم که با دور زدن بسیاری از محدودیت هایی که DirectX و گلوگاه های تحمیل شده ای که برای ما ایجاد میکند آن را دور زده و عملکرد کنسول پلی استیشن ۴ را به طور چشمگیری افزایش دهیم. محیط توسعه به گونه ای طراحی شده است که به اندازه کافی انعطاف پذیر باشد تا بتواند به سرعت کد را دریافت و راه اندازی کند ، اما این امکان را برای توسعه دهندگان ماجراجو فراهم می کند تا از پلتفرم بیشتر استفاده کنند. به همین منظور ما برای کنسول PlayStation 4 از دو API جداگانه برای رندر گرفتن استفاده کرده ایم .
Norden در ادامه توضیح داد : یکی از آنها API سطح پایین مطلق است ( در این رابطه و معنای سطح پایین اصلا به چه منظور هست بیشتر توضیح خواهم داد ) شما مستقیماً با سخت افزار صحبت می کنید و تا عمیق ترین بخش های سخت افزاری کنسول دسترسی دارید . این API پایین برای کشیدن بافرهای استاتیک RAM و تغذیه مستقیم آنها با پردازنده گرافیکی استفاده می شود. این API سطح بسیار پایین تر ( در اینجا سطح پایین به معنای ضعیف تر نیست). این جا منظور به نوعی کاربرد این API هست که سونی طراحی کرده و با API سطح پایین ارائه شده سونی کاوش در عمیق ترین و ریشه ای ترین بخش های سخت افزاری کنسول میسر می شود ) از API هایی همانند با DirectX یا OpenGL استفاده می شود. این نوع API مخصوص شما اگر PS3 یا PS Vita را برنامه نویسی کرده باشید بسیار شبیه آن مجموعه های گرافیکی است که با آن کار کرده اید . به نوعی بازی های فیرست پارتی سونی از این بخش API استفاده میکنند که ویژگی ها و راز ها و رمز های مخصوص به خود را دارد . سونی کم تر شده که به صورت عمومی API سطح پایین خود را در همایش ها به نمایش بگذارد .

اما علاوه بر این سونی آنچه را API سطح بالا می نامد نیز ارائه می دهد که بیشتر شبیه API هایی است که برای رندر کرددن پی سی های استاندارد مورد استفاده قرار میگیرد. نکته اصلی این است که این API سطح بالا ، کارایی API سطح پایین را فدا نمی کند. در واقع یک بسته بندی در محل قرار گیری بالای API سطح پایین است که بسیاری از کارهای معمولی را انجام می دهد که شما نمی خواهید بیش از این انجام دهید و تمام . این بخش API سونی برای بازی های مولتی پلتفرم و همین طور بازی های ایندی مورد استفاده قرار میگیرد . البته بخش هایی از API سطح پایین هم سازنده های بازی های تیرد پارتی اگر بخواهند میتوانند از آن استفاده کنند ، اگر به آن نیاز داشته باشند .
نکته جالب در مورد API سطح بالا این است که در حالی که وظیفه آن ساده سازی توسعه در بازی ها است ، سونی در واقع کد منبع آن را در اختیار سازنده ها قرار میدهد می دهد بنابراین اگر موردی وجود دارد که توسعه دهندگان از پس آن بر نمی آیند ، آنها می توانند خود را متناسب با پروژه خود سازگار کنند.
آقای Don Williamson بنیانگذار Celtoys و کسی که در سری بازی های Fable مسئول توسعه بخش گرافیکی این سری از بازی بود و تجربه بهینه سازی موتور و ساختار لوله ای جی چی یو های گرافیکی در رزومه های کاری او دیده میشود وقتی Directx 12 در حال انتشار بود و پرسش هایی از او شده بود آیا میتواند Dirext X 12 بر کنسول پلی استیشن ۴ برتری داشته باشد در پاسخ گفته : اگرچه با API کنسول پلی استیشن ۴ کار نکرده ام اما بر اساس بسیاری از عوامل حداقل باید قدرت خود را حفط کند و در مقابل Direct X میتواند قدرت و ثبات خود را حفظ کند و با آن به رقابت بپردازد .

Don Williamson همین طور گفت : کنسول PS4 یک کنسول ثابت است و تا آنجا که PlayStation یک برند ثابت و بسیار مهم برای سونی است این کمپانی در حال نوشتن کتاب قانون نحوه کارآمدترین API بر روی این کنسول بوده است و همین طور به مرور زمان آن را توسعه میدهد و به روز رسانی میکند . لازم به ذکر است که سونی از مجموعه ای از راه حل ها و مجموعه ابزارهای سفارشی کاملا مخصوص (PlayStation Shader Language) برای PS4 API استفاده می کند. این کنسول دارای دو API گرافیکی است ، یک API سطح پایین به نام GNM و یک API سطح بالا به نام GNMX. گزارش شده است که PSSL مشابه استانداردهای موجود در DX11 است ، نیازی به گفتن نیست که GNMX به توسعه دهندگان این امکان را می دهد تا با GPU به روشی شبیه DX11 بازی ها را توسعه دهند که من در اوایل پست توضیحات مربوطه را به دوستان دادم و API های سطح بالا از لحاظ کد نویسی به Direct X کمپانی مایکرو شباهت هایی دارند ، چون سازندگان تیرد پارتی دچار مشکلاتی برای توسعه بازی های تیرد پارتی نشن و توسعه این نوع بازی ها بر روی هر دو کنسول به سرعت پیش بره . ( GNMX بعد ها بار ها و بارها توسعه پیدا کرده و این صحبت هایی که اشاره کرده مال سال ۲۰۱۶ هستش )
جالب است بدانید که با توجه به رویکرد مشابه دو API در بازی های مولتی پلتفرم در PS4 و Xbox One در سال ۲۰۱۶ توسعه دهندگان در واقع برای شروع باید از DX12 در نسخه های Xbox One خود استفاده میکردند و سونی در همان سال ها مشغول به کار برای ارائه جدید ترین ورژن از API کنسول پلی استیشن ۴ بود که بتواند با API کمپانی مایکرو گام به گام حرکت کند .

Wolfgang Engel
آقای Wolfgang Engel که به دلیل کار در گروه اصلی فناوری Rockstar به عنوان برنامه نویس اصلی گرافیک شهرت دارد در مصاحبه ای گفته بود که چگونه API سفارشی کنسول پلی استیشن ۴ سونی در برابر DirectX 12 که برای آینده Xbox در حل توسعه است ، مقاومت می کند . API سفارشی خود سونی سطح پایین تری دارد ( توضیح در رابطه به واژه سطج پایین رو بهش اشاره کردم ) و قطعاً چیزی است که برنامه نویسان و توسعه دهندگان گرافیکی آن را دوست دارند. این به شما کنترل زیادی می دهد. DirectX 12 کمی انتزاعی تر و عمومی تر خواهد بود زیرا باید با GPU های مختلف کار کند ، در حالی که API کنسول پلی استیشن ۴ می تواند تا پایین سطح معماری سخت افزاری کاوش کرده و سازندگان دسترسی بسیار بالایی به سخت افزار تا عمیق ترین بخش های آن ها را دارند . مهم است که در اینجا توضیح بدم توجه داشته باشیم که این گفته Wolfgang Engel به این معنی نیست که DirectX 12 مایکروسافت هیچ فایده ای ندارد و این جا صحبت بیشتر در رابطه با API کنسول سونی و فوکوس بر روی این موضوع است . در واقع او معتقد هم بود که API کمپانی مایکرو هم بسیار قدرتمند در حیطه کاری خودش خواهد بود ولی به صورت کلی این API همیشه عمومی تر توسعه داده میشه به خاطر کار بر روی سخت افزار ها و GPU های گوناگون پی سی و …
Wolfgang Engel ، سال ۲۰۱۴ در کنفرانس توسعه دهندگان بازی در آنجا فرصتی پیدا کرد تا در مورد بهینه سازی shader optimizations در سه واحد پردازش گرافیکی AMD صحبت کند که Radeon 6770 ، Radeon 7750 ، Radeon 7850 صحبت های بسیار جالبی کرده بود . با در نظر داشتن این بهینه سازی ها ، در مصاحبه از Wolfgang Engel سوال شد که آیا آنها در کنسول PS4 نیز قابل استفاده خواهند بود ( منظور API کمپانی مایکروسافت یعنی Direct X هستش که آیا میشه از بهینه سازی های به روز این API بر روی کنسول پلی استیشن ۴ استفاده کرد یا خیر ؟! ) زیرا این کنسول همچنین دارای پردازنده گرافیکی AMD Radeon نیمه سفارشی است.
Wolfgang Engel در پاسخ به این پرسش گفته بود : بله ، اما بهینه سازی های خاص دیگری در کنسول پلی استیشن ۴ نیز وجود دارد که در رایانه های شخصی وجود ندارد و همین عامل باعث میشود به افزایش عملکردی حتی بیشتر ، کمک شایانی کند.
نتیجه گیری :
در پایان این مقاله باید به شما دوستان بگم سونی همیشه API سطح پایین GNM خودش رو به صورت کلی مراحل توسعه ای که روش انجام میده به صورت عمومی زیاد منتشر نمیکنه . در کنفرانس ها و همایش ها بیشتر API سطح بالای خودش یعنی GNMX رو دربارش صحبت میکنه که برای بازی های تیرد پارتی و ایندی به کار گرفته میشه و API سطح پایین خودش یعنی GNM راز ها و رمز هاش رو به صورت خصوصی نگه میداره ( یک دلیل بسیار مهم اصلا به همین خاطر هستش که شما با وجود این سخت افزار های به ظاهر ضعیف کنسول ها در مقایسه با همان سخت افزار موجود در پی سی به یک باره با بازی هایی همانند TLOU 2 و God Of War و … مواجه میشید و برای شما جای سوال میمونه که چگونه این سخت افزار ها در شکل ظاهری اعداد و ارقام خامی که ضعیف هستن به ظاهر چرا چنین بازی هایی با گرافیک باور نکردنی خروجی ازشون گرفته میشه ) و دربارش زیاد صحبت نمیکنه . همین طور در هر نسل سخت افزار های این کنسول با API های کنسول مورد نظر در نسلی که پیش رو هست این دو رو در کنار هم توسعه میده . یعنی معماری سخت افزاری این کنسول دقیقا بر اساس دو API ویژه خودش توسعه پیدا میکنه و تولید میشه .
سونی به همین خاطر همیشه سخت افزار مناسب و معقول خودش رو در هر نسل معرفی میکنه و میزان قدرت خام سخت افزاری که در نظر میگیره ، میدونه که به طور مثال ۵ سال ، ۶ سال و … کشش داره برای توسعه بازی های تیرد پارتی و به خصوص بازی های فیرست پارتی ( در طراحی کنسول پلی استیشن اشتباهات محاسباتی داشتن ، هم در قیمت ، هم در پیچیدگی بیش از حد کار با این کنسول و همین طور سی پی یوی به شدت قدرتمند پلی استیشن به نام Cell که در عین قدرتمندی کار باهاش بسیار سخت و پیچیده بود ) مهندسین سونی با بازیساز های تیرد پارتی و به خصوص فیرست پارتی صحبت میکنن و میزان سخت افزار و میانگین سخت افزاری که برای توسعه این بازی در دوره نسلی که میگذره رو براورد میکنن و شروع به تولید کنسول ها میکنن . این طوری نیست که مثلا سونی ببینه مایکرو چی کار کرده و یا برعکس و به طور مثال صحبت هایی شده بود که سونی معماری کنسول و کلاک کنسول خودش رو تغییر داده آخر نسل و حتی طراحی ظاهری کنسول خودش رو تغییر داده !!! ( مایکروسافت هم همین داستان ها رو داره . فقط رویکرد های این دو کمپانی با هم فرق هایی داره . موضوع و نکته اصلی این هستش )
این مباحث تولید پروسه کاریشون بسیار بلند مدت و پیچیده هستش و کمپانی ها باید تست ها ، تحقیقات و … بسیار زیادی رو بگذرونن تا به تولید نهایی برسن . این داستان حتی برای مایکروسافت هم صدق میکنه و موضوعی دو طرفه هستش . به هر حال اشتباهاتی هم در توسعه سخت افزار هاشون داشتن . سونی در نسل هفتم اشتباهاتی داشت و همین طور در نسل هشتم هم کنسول ایکس باکس وان بی جهت فدای کینکت اجباری شد .
باری ، با هم منتظر نسل نهم خواهیم ماند و تماشا میکنیم که خروجی تمامی برنامه ریزی های سران این دو کمپانی در عمل به چه صورت خواهد بود .
فرقی نمیکند چه کمپانی ، چه برند و چه گذشته پرباری داشته باشید . قانون نانوشته ای وجود دارد که میگوید : همیشه از تئوری تا عمل فرسنگ ها فاصله وجود دارد .