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


به طور کلی بهینه سازی یا Optimization به تغییر دادن برنامه در راستای اجرای سریعتر و استفاده بهتر از منابع گفته می شود. بازی سازی از کارهایی است که نیاز دارد برنامه نویس همواره هنگام نوشتن کد این مساله را مد نظر قرار دهد. بهینه سازی به دو دسته macro optimization و Micro optimization تقسیم می شود. دسته اول استفاده از الگوریتم ها و ساختار داده های مناسب برای حل مساله را شامل می شود و دسته دوم به تغییر توابع و عملگر ها و خط های کوچکی از کد و تغییر محاسبات کوچک به شکل بهینه گفته می شود. مثلا استفاده از ساختار آرایه به جای درخت برای استفاده بهتر از cache پردازنده و استفاده از Dictionary در صورت نیاز به یافتن مقادیر مختلف با سرعت بالا به جای آرایه و لیست از نوع macro optimizaiton و انجام تقسیم با استفاده از ضرب و یا استفاده از اعداد صحیح به جای اعداد اعشاری و انجام shift به جای اعمال ریاضی micro optimizaiton هستند.




هدف شما از بهینه سازی در Unity معمولا بالا بردن FPS و قابل اجرا کردن یک الگوریتم و پایین آوردن زمان انتظار کاربر می باشد. همچنین ممکن است برای اجرای بازی روی دستگاه های ضعیفتر نیز به این کار نیاز داشته باشید. اگر بازی را برای اجرا روی سرور بنویسید هم برای مصرف بهتر منابع سرور نیاز به Optimization دارید. برای داشتن یک بازی بهینه باید اولا هنگام نوشتن برنامه با آگاهی از میزان کار انجام شده و مصرف منابع هر عملیات کدی بهینه بنویسید و دوما هنگام مشاهده مشکل با استفاده از ابزار های اندازه گیری مثل profiler ها گلوگاه های سیستم یا همان bottle neck ها را پیدا کنید و آن ها را بهینه کنید. گلوگاه به بخش هایی گفته می شود که تغییر آن ها و سرعت بخشیدن به آن ها تاثیر زیادی بر روی بهینه شدن کل سیستم می گذارد و در حال حاضر منابع زیادی را به شکل غیر بهینه مصرف می کنند. ابتدا مواردی که باید بدانید تا کد بهینه بنویسید را بررسی می کنیم و سپس به روش های اندازه گیری و بهینه سازی می پردازیم.






ادامه مطلب در وبسایت آپادانا