گزیده ای از سخنرانی مهندس احمدرضا نظامی در مورد کنسول Xbox 360 مایکروسافت
نخستین همایش ملی بازی های رایانه ای دانشگاه صنعتی شریف
تدوین گزارش : مریم ثابت قدم اصفهان
ناظر و ویراستار علمی : مهدی صنعت جو
حقوق این گزارش برای سایت انیمیشن دیتا محفوظ است.
مهندس احمد رضا نظامی ، پس از دریافت مدرک کارشناسی از دانشگاه صنعتی شریف به آمریکا رفته و در رشته کاربرد ریاضیات در علوم کامپیوتر مدرک کارشناسی ارشد خود را اخذ کردند.. ایشان دارای ده سال سابقه فعالیت در شرکتهای معروف و در زمینه برنامه نویسی هستند که به ویژه در ساخت بازی استراتژیک Wrahmmer 40,000: Space Marine شرکت Relic و برنامه نویسی درایور کارت های گرافیک Matrox Parhelia و برنامه نویسی بازی رایانه ایfifa 2006 -2007 - 2008 حضوری فعال داشته اند.

مهندس نظامی در نخستین همایش ملی بازی های رایانه ای دانشگاه صنعتی شریف
دوستان از من خواسته اند تا به اجمال در مورد Xbox 360 مطالبی ارائه دهم. من نیز با یک مقدمه در مورد کنسولها آغاز کرده و سپس به جزئیات ساخت بازی رایانه ای می پردازم.
PC ویژگی خاصی را دارا است که آن را از کنسول (Console ) متمایز می سازد. نمی دانم شما اولین بازی های کنسول را که مشاهده کرده اید چه بوده است؟ اما من به خاطر دارم که سی سال پیش از این ، به هنگام مشاهده یک بازی ساده کنسول تا چه حد شیفته کنسولها شده بودم. بنابراین کنسول ها ، حتی قبل از ورود رایانه ها به منازل ، آمدند و به عنوان یک سخت افزار بازی مطرح شدند. اما پیشرفت های اخیر در حوزه رایانه ، باعث شد که ایندو به هم بپیوندند . هم اکنون یک کنسول با یک PC ، اختلاف ساختاری و ماژولی چندانی ندارد ؛ ولی هنوز کنسول ها ، ویژگی هایی برای سازندگان بازی در اختیار دارد که فعالیت بازیکنان را تسهیل می بخشد. ویژگی های کنسول ها مشخص است . بدین معنی که شما در زمان ساخت بازی ،می دانید چه قدر حافظه دارد؟ و چه قدر Register (ثبات ) داراست و از چه Review (منطقی )استفاده می کند؟ . اما در مبحث PC ،بازی ساز با توجه به میزان توانمندی آن ، خود را باید هماهنگ کند. لذا چنین امری ساده نیست. اما در زمانی که برای کنسول ، گیم می زنید ؛ چنین نیست و کاملاً به روند کار واقف هستید و می دانید تا هشت سال آینده ، این سیستم پا برجا است و دغدغه های تغییر مجدد آن را به سبب توسعه سخت افزاری ندارید.
نسل کنونی کنسول ها 360 PS3, Wii , Xbox است که حتی نمونه های قابل حمل آنها( بطور مثال در تلفن های همراه ) نظیر DS ( از شرکت نینتندو ) و psp ( از شرکت سونی )نیز وجود دارند .البته کنسولهای PS3 و Xbox 360 در بازی های جدی Hardcore بکار می روند ؛ حال آنکه Wii در بازی های سرگرم کننده منازل استفاده می شود ( پی نوشت 1 ) . من تجربه فعالیت در Xbox 360 و PS3 را داشته ام. خوشبختانه زمانی به گیم پیوستم که شرکت های زیادی در این دو عرصه فعالیت می کردند. آنزمان در مورد EA اطلاعاتی نداشتم و تنها ، یکی از دوستانم مرا به یکی از شرکت های وابسته معرفی کرد. وقتی وارد این محیط شدم ؛ حقیقتاً جذب آن محیط و وسعت گروه ها و روند کار شدم. وقتی شما وارد سایت EA می شوید ؛ در می یابید که که شرکت بسیار بزرگ و توسعه مندی نظیر شرکت فورد General Motors است که در آن ، تیم ها در یک فرایند بسیار پیچیده مشغول به فعالیت هستند. بنابراین ، در صنعت بازی ،شرکت های مختلف کوچک و بزرگی متناسب با نوع بازی ارائه شده ؛ وجود دارند. . به هر حال من وارد این عرصه شده و با هر دوی این کنسولها کار کردم. در همان دوران ، 360 Xbox یکسال زودتر از کنسول PS3 پا به عرصه وجود نهاده بود و لذا برتری داشت. اما مایکروسافت ، سنگ تمام گذاشت تا کنسول Xbox360 را ثبت کرده و به خوبی سازندگان بازی را تحت حمایت فنی خود قرار دهد. در حقیقت از همان ابتدا یک (SDK ) سرنام Software Development Kit ارائه داد که سازندگان بازی را تحت پشتیبانی فنی خود قرار می داد .در ساخت بازی رایانه ای بطور جدی ، مسئله این نیست که شما کدهایی را بنویسید ؛ بلکه یک پروسه و فرایند بسیار طولانی در پیش رو دارید ؛ به ویژه اگر بازی کنسول باشد. از آنجهت که اگر مایکروسافت بخواهد نام خود را روی آن قرار دهد ؛ نمی توانید صرف اینکه یک بازی خوب است ،ساخت بازی را محقق نمایید؛ بلکه در هر مرحله از ساخت بازی باید مایکروسافت دخیل باشد. لذا اساس نامه ای نظیر کتاب قانون مدون شده تحت عنوان TRC را در اختیار دارند که باید تحت آن عمل کنید.بطور مثال بازی رایانه در هنگام بوت شدن , نباید بیش از بیست ثانیه در حالت غیر فعال باقی بماند . همه تیم ها چنین قواعدی را پذیرفته و طی این شرایط به جدیت عمل می کنند. و در صورت هر گونه اشتباه و عملکردی مغایر با این اساس نامه، حتی شرکتی نظیر EA که چندین سال با مایکروسافت کار می کند ؛ باید چندین ماه را به برطرف شدن این خطاها اختصاص دهد. اینچنین مایکروسافت، تجربه های حاصل از Xbox قبلی خود را به SDK کنونی منتقل نمود ؛ به نحوی که اکنون بازی سازان شرکت های کوچکتر را نیز به ارائه بازی Xbox توانمند ساخته است. گرچه مشکلاتی در بخش هنری بازی در این نوع شرکت ها قابل مشاهده است. ولی تمام فرایند Submit ، Live و انتشار آن توسط مایکروسافت فراهم آمده است. لذا سونی به جهاتی از مایکروسافت عقب مانده است. گرچه تمام تلاش خود را می کند . اما Platform ( زیر ساخت ) اش ، آن همه گرایی و در دسترس بودن مایکروسافت در یک پکیج را در اختیار ندارد.

کنسول Xbox 360 ،دارای CPU با سیستمی مبتنی بر Power pc ( مبتنی بر معماری RISC که بطور انحصاری برای استفاده در کنسول طراحی شده ) و دارای سه هسته قدرتمند است که در سال 2005 توسط IBM ( یک نسخه را به طور انحصاری برای این کنسول و نسخه دیگر ( Cell ) را برای کنسول PS3 شرکت سونی تولید کرد ) ارائه شد . هر کدام از این هسته ها قادرند که دو Hardware Threads را پشتیبانی کند. در واقع ، شما بطور همزمان ؛حقیقتاً همزمان و نه مشابه آنچه که در Hyper Thread موجود در PC معمولی می بینید ؛ از شش Hardware Threads برخوردار هستید که اینچنین می توانید نرم افزار خود را مبتنی بر این قابلیت بنویسید. بعلاوه، هر کدام از این Thread ها دارای VMXRegister 128 است. روی این مبحث خیلی دقت کنید. کنسول بازی رایانه ای ، سیستمی است که مقدار زیادی کارهای Streaming ( انتقال جریان وار ) را انجام می دهد و لذا طی آن، نباید هیچ تداخلی در فرایند پردازش موازی ایجاد شود.پردازش موازی به ویژه در فرایند Texturing یک کنسول بسیار کاربرد دارد ؛ بطوری که رجیستر های موجود در این کنسولها باعث می شود که Vector های چهار بعدی 128 گیگ را پردازش کنید. این مسئله باعث می شود که به ویژه در فرایندی که در یک PC معمولی ساعت ها وقت گیر است ؛در ساخت بازی کنسول ، فرایندی چند ثانیه ای باشد. این حتی برای خود ما نیز بسیار هیجان انگیز بود.
هر کدام از این SMT ها ، 32 کیلو بایت کش سطح یک (L1 Cache ) دارند که همگی یک مگا بایت کش سطح دو ( L2 Cache ) را بین هسته ها به اشتراک می گذارند . حتی می توانید هر قسمت از این یک مگا بایت را تفکیک کرده و هر یک را به Thread های مختلف بدهید.بعلاوه؛ CPU آن دارای 512 مگابایت رم است. گرچه شاید درحال حاضر وجود 512 مگابایت RAM، حجم زیادی نیست ؛ اما در سال 2005 این حجم قابل ملاحظه ای بود. یکی از ویژگی های خاص این است که این رم ، بوسیله CPU و GPU استفاده می شود و اینچنین به آن Unified Ram گویند. در حالی که RAM سونی اینگونه نیست و با هر بار ارسال اطلاعات باید بدانیم که کدام یک به CPU و کدام یک به GPU اختصاص می یابد.

زمانی که شما می خواهید کاراکتر خود را Skin کنید؛ یعنی بر اساس بن های استخوان و محل قرار گیری ورتکس ، روی بدن این کاراکتر ،Mesh ایجاد کنید؛ بهتر آن است که فرایند Optimize ( بهینه سازی )کدها روی Gpu انجام گیرد ؛ لذا هر دوی کنسول ها به شما اجازه می دهد که تکسچر را با Texture Fetch فرمت کنید. پیش می آید که Shader ،تکسچر را لود کرده و ضمن گرفتن دیتا ، آنرا مورد استفاده قرار دهد. لذا این Texture Processing و Vertex Processing با هم زیاد در حال رقابت نیستند ؛آنطور که یکی به دیگری نیازمند بوده و قابل دسترسی نباشد.
یک ویژگی دیگر ، وجود 10 مگا بایت EDRAM بروی GPU این کنسول است . این RAM فوق العاده قوی است و متناسب با bus ( گذرگاه ) روی CPU ؛ می تواند براحتی 22 گیگ در ثانیه با RAM صحبت کرده و همه کارهای Processing ( پردازشی ) را به سهولت انجام دهد.اینچنین همه دیتا ها به قسمتی از RAM مورد استفاده ی Frame buffer ارسال می شود و از آنجا که Memory Controller روی GPU قرار دارد ؛ این فرایند را تسریع می بخشد . این یک مزیت انقلابی است که Xbox 360 را از سایر کنسول ها متمایز می سازد.

معمولاً مایکروسافت برایXbox 360 Development ، به شما یکسری باکس های Kit با نام Retail kit ) ارسال می کند که با آن بازی کنید . یک ورژن مشابه این هم هست که گاهی مشکی یا خاکستری رنگ است و به آن Development kit گویند. اینها ، پلاگین های جدید سخت افزاری و پشتیبانی از کارهای Debugging(اشکال زدایی ) هستند .
پس به یک معنی دو نوع کیت موجود است : Retail kit و Development kit
Development kitبه دو نوع Development kit ( کیت توسعه ) و Test kit ( کیت تست ) تفکیک می شود. (Test kit که به تست کننده بازی تعلق دارد ؛ از ویژگی های کمتری نسبت به Development kit برخوردار است).
خوب ، شیوه کار به این صورت است که برای Development ، شما باید یک SDK را روی کامپیوتر نصب کرده و آن را از طریق شبکه با کیت ( همان دستگاه ویژه سیاه یا خاکستری ) مرتبط کنید . سپس کیت را به تلوزیون وصل می کنیم. روی کیت ، چیزی به نام External Launcher نصب است که برای Xbox Live Development قابل استفاده است. وقتی External Launcher را باز می کنید؛ به شما نشان می دهد که چه بازی هایی در آن موجود است. و از آنجا می توانید کاملاً کنترل نمایید که آیا می خواهید Launch کنید و یا Test کنید.و مهمتر اینکه تمام executable ها ی 360 به صورت xex است. در حالی که تمام Extension ها در PCبه صورت exe است ، این باعث می شود که ایندو با هم تداخل نیابند.اینچنین است که در می یابید مایکروسافت اقداماتی را مهیا کرده که تولید بازی را بسیار تسهیل بخشیده است.

SDK بعد از نصب به طور جالبی با Visual Studio ؛Integrate ( تلفیق ) می شود. بدین معنی که دیگر تولید بازی مبحث آرامش بخشی است و به همان آسانی که برای یک PC کد می نویسید و تست می کنید و یا دیباگ می کنید ؛ Visual Studio نیز به شما این امکان را می دهد که بعد از نصب SDK؛در Xboxبه تولید بازی بپردازید و یا آن را تست کنید . و اینچنین نیازمند به هیچ نرم افزار دیگری برای دیباگ نیستید.اقسام مختلف پشتیبانی ها را نیز در اختیار دارید که اینگونه می توانید انواع متفاوتی از Dump ( رو برداری ) ها را از آن اتخاذ نمایید. و یا برای Kernel debugging انواع پشتیبانی را در اختیار بگیرید .این برای pc developer امر مهمی بشمار می آید که با موجود بودن نسخه windows آن ؛ به شما یک User Interface ( رابط کاربری ) نیز می دهد.
روی PC چیزی به اسم xbox360 Neighborhood قابل مشاهده است که می توانید آن را باز کرده و هر کاری انجام دهید.می توانید فایل اضافه کنید یا فایل کم کنیدو یا هر فایلی را حذف کنید.گویی که روی PC شما نشسته است.

Xbox 360 دارای زیر مجموعه( Subset ) و بالا مجموعه ( Superset ) ای از پشتیبان های D3D9 است . بالا مجموعه یعنی یک سری Extension هایی که به D3D9 اضافه شده و یا چیزهایی از آن کم شده است. مثلاً گزینه ای تحت عنوان hardware abstraction layer نداریم ؛ زیرا ما فقط یک جور سخت افزار در اختیار داریم و دیگر نیازمند abstract ( انتزاع) سخت افزار خود نیستیم و یا مانند PC نیست که بی نهایت Configuration را در آن ایجاد کنیم.
یک مورد کاسته شده در آن ،عبارت است از Fixed function pipeline .این چیزی بود که کارتهای گرافیک در این چهار - پنج سال اخیر آن را پشتیبانی می کردند. اخیرا ًکار Shading با Programming shading طی مراحلی انجام می شود ؛ اما پیش از این چنین نبود و شما قادر به تغییر دستورالعمل ها نبودید. بطور مثال ؛Lighting از فرمول خاص خود برخوردار بود. اما اکنون با Shader هر آنچه مایل به انجام هستید ؛ می توانید عملی سازید و هرجور Lighting را بنویسید.کاری که مایکروسافت انجام داده؛حذف این گزینه( Fixed function pipeline ) بود که باعث سادگی و سهولت کار شده است.
این را مد نظر نیز قرار دهید که Power PC یک Big Endian Chip است . تفاوت آن با Little Endian· در اینجاست که در Little Endian ، روی Memory· نخستین دستورالعملی که اهمیت کمتری دارد ؛نوشته می شود. در Big Endian این برعکس است. هر Content یا هر نوع art که شما می سازید و برای گیم لازم است ؛ بایدExport شده و کنسول قادر به لود آن باشد. در هر مرحله Exporting ( انتقال اطلاعات ) شما باید Endianness را تغییر دهید تا شاهد چیزهای عجیب· و غریب نباشید( پی نوشت 2 ).

در این بخش شما شاهد افزودن گزینه هایی هستید. خوب کنسول از Unified shader model استفاده می کند . چیزی که به آن اضافه کرده ؛Predicated tiling است .گاهی لازم است در هنگام· نوشتن یک صحنه ( Screen) ،یک Output بزرگتری بنویسید . لذا این گزینه به شما اجازه نوشتن یک صحنه بزرگتری را می دهد و آن را Tile ( بخش) بندی می کند و قسمت اعظم کار را نیز خودش به عهده می گیرد.و این صحنه را، به 1و0 Tile تقسیم· می کند. این در حالی است که کاملاً تشخیص می دهد که کدام Mesh و کدام Geometry در Tile شماره 1 یا شماره صفر· قرار دارد. در نهایت آن را روی Frame buffer می نویسد ( پی نوشت 3 ).

Visibility testing از دیگر گزینه هایی است که به خوبی پشتیبانی می شود. کسانی که در تیم رندرینگ مشغول به فعالیت هستند ؛ وقتی می خواهند از صحنه های گیم رندر بگیرند ؛ با مقدار زیادی محتوا سر و کار دارند و لذا یکی از مشکلات عمده بشمار می آید.خوب تعداد زیادی از این صحنه ها قابل مشاهده نیست و این باید درک شود که چه چیز دیده شده و چه چیز دیده نمی شود و در نتیجه نیازی به رندرگیری آنها نیست. یکی از ابزارهای GPU ، آن است که یک تست انجام داده و آنچه که شما می خواهید رندر کنید را برایتان قابل تعریف می سازد ؛ مبنی بر آنکه آیا برای بیننده قابل مشاهده است یا خیر؟و اینچنین مقدار زیادی از کار توسط این ابزار انجام می گیرد.

با استفاده از Extension که ما حدود یک ماه بر آن کار کردیم ؛GPU به شما اجازه Tessellate (مفروش سازی ) را می دهد. بدین معنی که بین ورتکس ها و متناسب با فاصله موجود ، خودش چند ورتکس اضافه کرده و آن را نرم می سازد. و دوباره مقدار زیادی از اینکار بر عهده GPU است.
وقتی شیدر می نویسید ؛ به نحوی که در GPU اجرا می شود ؛Effects Framework مایکروسافت شما را قادر می سازد تا افکت هایتان را مدیریت کنید. دوباره در اینجا چیزی قابل توجه است ؛ اینکه علی رغم وجود این افکت ها در PC ،این قابلیت در 360··· Xboxبسیار ساده تر است ؛ زیرا GPU می داند که چه کارهایی انجام دهد.

پس از آنکه executable· برای بازی رایانه ای ساختید ؛ باید آن را به 360· Xboxبفرستید و تست کنید. Xbox 360· روشهای مختلفی را به شما ارائه می دهد. و همه اینها در ویژوال استودیو Integrate(یکپارچه سازی ) شده است. یعنی در هنگام setup ، یکی از آپشن ها نحوه Deployment است و لذا لیستی به شما می دهد.
در هنگام تست لازم است که جوری آن را تست کنید که گویی DVD اجرا می کنید. لذا چنین پشتیبانی پیش از این وجود نداشت. در حالی که هم اکنون Visual Studio شبیه سازی اجرا را DVD را تحقق می بخشد. وقتی DVD اجرا می شود ؛ بسته به اینکه کد کجای DVD قرار دارد ؛Latency متفاوت است ؛ یعنی دانلود شدن آن ، کند یا تند است . این روش به شما اجازه می دهد که Latency· های مختلف را شبیه سازی نمایید.
روش دیگر File sharing است.· در واقع فیچری است که حداقل PS3 بطور ساده در اختیار ندارد ( گرچه اخیراً تلاش کرده تا چیزی شبیه آن را بسازد ) این به شما امکان می دهد که یک فلدر روی PC انتخاب کرده و آن را روی کیت به اشتراک گذارید؛ به نحوی که گویی روی· کیت XBOX نشسته است ؛ یعنی زمانی که Launcher را می آورید ؛ این فلدر را مشاهده می کنید. خوبی این مسئله در این است که ده نفر که روی گیم کار می کنند ؛ دیگر لازم نیست که هر آنچه انجام می شود را از طریق کد به دیگران ارسال نموده و آنان نیز این فرایند را تست کنند. لذا هر تغییر دیتا را در داخل فلدر خودمان قرار می دهیم . و فلدر را در حالت شبکه انتخاب می کنیم. در اینصورت اگر360 Xbox را setup (تنظیم· ) کنید؛· این فلدر ،به اشتراک گذاشته· شده و اینچنین آن را روی XBOX مشاهده می کنید. این مسئله به تست بازی بسیار کمک می کند. تمام تست کننده ها می توانند تغییرات شما را مشاهده کنند. و این مسئله حجم انبوهی از کارها را برای سازندگان بازی راحت تر کرده است.

یکی از مسائل قابل تأمل چه در کنسول و چه در pc ؛ مبحث Multi Threading است. اینکه چطور برای CPU به طور مؤثری برنامه نویسی کنیم که قادر به پردازش همزمان چندین Thread باشد؟ کسی هم هنوز راه حل مناسبی ارائه نداده است. روشهایی هست که این روش را تسهیل می بخشد:
A) روشی که برای 360 در بازی فیفا و توسط مهندسان ارشد ارائه شد این بود که ماژول های مختلف گیم را روی Thread· های مختلفی قرار دادند. به طور مثال ، شبیه سازی دارای Thread· خاص خود است . Decompression (رفع فشردگی )که حجم زیادی از کار را به خود اختصاص می دهد نیز دارای Thread خاص خود است ( زیرا دیتاها را روی DVD به طور فشرده لود کرده و هنگامی که در حال بازی هستید ؛· Decompression همچنان در حال فعالیت است ).
این روش از یک نظر ساده و از نظر دیگر ، روش چندان خوبی بشمار نمی آید. زیرا چنان این تقسیم بندی باید انجام گیرد که چندان ارتباطی میان قسمت های مختلف گیم نباشد ؛ در غیر اینصورت بطور مثال اگر Audio خیلی زیاد در ارتباط با· Simulation (شبیه سازی ) باشد تا یک دیتا را دریافت کند ؛مزیتی از Multi Threading نمی یابد. زیرا زمان زیادی بطول می انجامد تا هر یک از آن ها در یک فریم منتظر پاسخ دیگری باشد. پس به نحوی باید این Break up را انجام گیرد که بیش تر از دو یا سه بار در یک فریم ، نیازی نباشد که آن ها با یکدیگر حرف بزنند.
مشکل دیگر این روش آن است که به سهولت قادر به انتقال آن به یک Platform (زیر ساخت) دیگر نیستید. زیرا اگر تقسیم بندی شما بگونه ای باشد که 6 Hardware Thread داشته باشید ؛ در صورتی که در جای متفاوت دیگری قرار بگیرید قادر به هیچ ارسالی نبوده و کار را باید مجدداً از سر بگیرید.
B) روش دیگر Job –based Multi Threading است که مناسب تر از روش پیشین می باشد. به هر یک از فایلها ؛Job· گویند . یعنی آنچه که باید انجام گیرد. در اینصورت یک Job manager وجود دارد که بر این Job· ها مدیریت می کند. و آن است که تصمیم می گیرد که به هر Thread آزاد شده ، یک Job ارسال نماید.
C) روش بهتر از این ، Fibers Subdivision است که اخیراً رواج یافته است. اگر Job را به بخش های کوچکتر تقسیم کنیم ؛ و هر کدام از این قسمت ها را Fiber گوییم ؛ در واقع Fiber یک کد کوچک است که از ابتدا تا انتها می رود. تفاوت آن با Multi Threading معمولی در این است که Fiber هیچگاه متوقف نمی شود.
بطور مثال ، در Multi Threading شاهد این هستیم که CPU تصمیم می گیرد که هر Thread· m/s 20باید برود ، سپس بایستد و دوباره ادامه دهد.ولی Fiber ها به نحوی سازماندهی شده اند که به محض اتمام کارشان ، خارج شوند. بطور مثال یک وکتوری از 20 – 30 Fiber در حال انتظار دارید که مزیت این عملکرد ، تسهیل در انتقال آن به Platform ( زیر ساخت )های دیگر است. این مورد در کارهای گرافیکی نیز کاربرد زیادی دارد.

مرحله Optimization ( بهینه سازی )در ساخت بازی بسیار قابل توجه است. به قول انگلیسی ها ، مرحله ای سرنوشت ساز در اجراء یا عدم اجرای یک بازی است. ممکن است شما چیزهای زیبایی را در بازی خود Implement ( پیاده سازی )کرده باشید ؛ اما به Frame rate ( سرعت انتقال تصویر ) که مایکروسافت مد نظر داشته (frame/second 30) نرسد. این است که هر چه قدر هم خوب باشد ؛ مورد پذیرش نخواهد بود. بنابراین Optimization از این رویکرد بسیار مهم است. چند Tool ( ابزار )مختلف در Xbox 360 موجود است که کد شما را· بهینه سازی می کند. یکی از آن ها که در یکی دو سال اخیر به این مجموعه پیوسته ؛( Profile – Guided Optimization ( PGO· است : یعنی "گیم را تست کن و ببر آنجا که در هنگام بازی سناریو ها انجام می گردد . سپس من می آیم و با استفاده از دیتاهای جمع آوری شده ، بازی را بهینه سازی می کنم.".
این مرحله ای است که پس از پایان کار که مایل به بهینه سازی هستید؛ معمولاً ، Source code خود را Instrument (سنجش ) می کنید . یعنی مراحل مختلف را در کدهای خود قرار می دهید. سپس آن سناریو را به تست کننده می دهید تا بر روی هر نقشه بازی کند. و مجدداً بازی را لینک کرده و اینبار آپشن ها را به Linker می دهید تا از دیتاهای جمع آوری شده استفاده کند و کد شما را Optimize· نماید.
این روش با اخذ داده های موجود ، تشخیص می دهد که کدام Function ( عملکرد ) بعد از عملکرد های دیگر بیاید.

یکی از ابزارهای مهم در 360 ،PIX است.هر آنچه که در گیم به وقوع می پیوندد توسط این ابزار قابل مشاهده است.شما گیم را بطور معمولی Launch ( راه اندازی )می کنید و بعد از آن می خواهید که برایتان Record کند. طی 5 تا 10 ثانیه اطلاعات را حین انجام بازی جمع آوری کرده و در PIX لود می کند. که از آنجا قادر به مدیریت هستید. بطور مثال ، نشان می دهد که شیدر شما چه اشکالاتی را داراست؟و در کجا ها سرعت کاهش یافته است. و حتی پیشنهاد می دهد چه نوع شیدرهایی بسازیم.
یکی دیگر از ابزارها ، PerfView ( مشابه Vtune ) است.اصولاً کسانی که در PC ، کار Optimization ( بهینه سازی ) انجام می دهند ؛ با Vtune آشنایی دارند. شما در هنگامی که کدی را می نویسید ؛ باید این کد را Optimize نمایید تا قادر باشید از CPU و GPU خود استفاده کنید. قابلیت این ابزار ( CPU ) به نحوی Vectorize بوده و مایل است شما اعداد را به چشم یک Vector بنگرید. تا اینچنین اطلاعات را به رجیسترهای VMX ارسال کند و اینچین طی مدت کوتاهی این فرایند انجام گیرد. در غیر اینصورت زمان زیادی بطول می انجامد.و اینچنین است که Performance ( کارایی ) شما افزایش می یابد.


ابزار دیگری که مایکروسافت به شما ارائه داده است ؛این است که چگونه User Interface ( رابط کاربر ) به بازی خود اضافه کنید. یا چگونه پس از ساخت بازی ،Submit ( تصویب) نمایید. بطوری که با ارائه ابزاری به نام XLAST ؛ کار شما را مجدداً Optimize کند.در واقع ، بیشترین Testing توسط این ابزار انجام می شود.

Xbox Live برای بسیاری از افراد ، چه برای بازی کنان و چه برای تولید کنندگان بازی بسیار مفید است. یک پکیج به نام XLPS وجود دارد که برای سازندگان بازی ، همه آنچیزها را مهیا کرده است ؛ بطوری که 95% کدینگ در Live انجام می گیرد.
پی نوشت 1 :
همیشه از Wii به عنوان کنسول causal gamer ها نام برده می شود در مقابل PS3 و Xbox 360 که کنسول· hardcore gamerها است - مهدی صنعت جو
پی نوشت 2 :
Little Endian· و Big Endian :
این دو اصطلاح· به نحوه نوشتن اطلاعات ( بایتها ) روی حافظه اشاره دارند.
در شیوه Little Endian ، بایت پائین رتبه ( یا کم اهمیت ) پیش از بایت بالارتبه بر روی حافظه نوشته می شود· . بطور مثال در کلمه 3457 ( مبنای شانزده ) ، 34 ، بایت بالا رتبه بوده و 57 بایت پایین رتبه . در روش Little Endian ابتدا 57 ذخیره شده ( مثلاً در آدرس 2000 حافظه) و بایت بالارتبه یعنی 34 در آدرس بعدی حافظه ( 2001 ) ذخیره می گردد. برای ذخیره همین کلمه در حالت Big Endian ابتدا 34 در آدرس 2000 ذخیره می شود و سپس 57 در آدرس 2001 .- مهدی صنعت جو
پی نوشت 3 :
Predicated tiling :
از آنجائیکه Xbox 360· از حافظه EDRAM ( سرنام embedded dynamic RAM ) ده مگابایتی بهره می برد ،· بسته به اندازه و نوع render targetهای مورد استفاده ( انواع بافرها ) و سطح antialiasing این امکان وجود دارد که نتوان در آنِ واحد همه targetها را در EDRAM· گنجاند.از این رو با کمک Predicated tiling و بخش بندی فضا به tileهای مختلف ،· امکان رندر سطوحی بزرگتر از حد مجاز EDRAM فراهم می گرددبرای مطالعه بیشتر به آدرس http://msdn.microsoft.com/en-us/library/bb464139.aspx مراجعه فرمایید - مهدی صنعت جو
پیشنهاد سایت انیمیشن دیتا برای مطالعه بیشتر :
دستاورد ناتال در XBox 360 جدید·
دانشنامه :
Multi threading:
انجام سریع چند عملیات بطور متوالی در یک برنامه
Dump:
نوشتن محتویات محلهای خاصی از حافظه داخلی بروی حافظه پشتیبان
ارائه لیستی از محتوای جاری بخشی از حافظه
Executable file:
فایل اجرایی حاوی راهنمایی هایی که کامپیوتر را به مرحله اجرا در آورد تا کار خاصی را انجام دهد. یک فایل اجرایی ممکن است یک برنامه کاربردی ،یک فرمان خارجی و یا یک فایل متنی باشد.
User interface :
بخشی از برنامه که کاربر با آن ارتباط برقرار می کند.
Frame rate :
تعداد تصاویر به نمایش گذاشته شده در هر ثانیه
پایان سمینار
©·Copyright 2009 - 2011/ Animationdata.org & Partners