با بازی سازی در Unity شروع کنید

این راهنما یک چرخه معمولی توسعه بازی را تشریح می کند. پس از خواندن این راهنما، ممکن است استفاده از آن به عنوان مرجع نیز برای شما مفید باشد.

وقتی با Unity کار می کنید، چرخه عمر توسعه شامل سه مرحله است:

  • برنامه ریزی و طراحی
  • توسعه و آزمایش کنید
  • انتشار و نگهداری کنید

برنامه ریزی و طراحی

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

از همه اعضای تیم نظر بگیرید

با تیم های هنری، مهندسی، طراحی، صدا و تولید خود برای شناسایی و ضبط وظایف اجرایی کار کنید. به عنوان مثال:

  • تیم های هنری ممکن است بافت دارایی و بودجه مشبک برای شخصیت ها و محیط ها ایجاد کنند.
  • مهندسی ممکن است نقاط بازرسی حافظه و عملکرد را برای پروفایل در برابر هر پلتفرم تعیین کند.
  • طراحی ممکن است مکانیک های بازی را برنامه ریزی کند که تجربه را امکان پذیر می کند.
  • کارشناسان صدا ممکن است الزامات تداوم صدا بین صداهای فضایی UI، 2D و 3D را بررسی کنند.
  • تولید ممکن است با الزامات راه اندازی ارتباط برقرار کند و تیم را در یک راستا و در مسیر نگه دارد.

طراحی برای موبایل

توسعه اپلیکیشن برای پلتفرم های موبایل شامل ملاحظات خاصی است، مانند:

  • نسبت ابعاد صفحه نمایش متغیر
  • مصرف برق
  • دریچه گاز حرارتی و پردازنده
  • ورودی را لمس کنید
  • توسعه بین پلتفرمی
  • APIهای گرافیکی (Vulkan یا OpenGL ES)

برای جزئیات در مورد ملاحظات منحصر به فرد طراحی برای تلفن همراه، به توسعه Android در Unity از Unity و Google Play Academy مراجعه کنید.

توسعه و آزمایش کنید

در مرحله توسعه و آزمایش، شما بازی خود را می سازید و تست و آماده سازی قبل از راه اندازی را انجام می دهید. شما چند آزمایش داخلی محدود در Google Play انجام می دهید تا شما را برای برآورده کردن الزامات راه اندازی آماده کند. شما استراتژی استقرار خود را اصلاح می کنید و دارایی ها را در Unity بر اساس سیستم Play Asset Delivery و Unity Addressables سازماندهی می کنید.

بخش‌های زیر ابزارها و تکنیک‌های Unity را توضیح می‌دهند که برای کمک به شما در توسعه اندروید طراحی شده‌اند.

رندر کنید

رندر فرآیند ترسیم دارایی های سه بعدی و دو بعدی از صحنه یونیتی شما روی صفحه است. در حالی که موتور Unity رندر را مدیریت می کند، مهم است که چند فاکتور را برای پلتفرم اندروید در نظر بگیرید.

بافت ها

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

زمان قاب

برای جلوگیری از داغ شدن بیش از حد در دستگاه‌های Android، مقادیر زمان فریم را به طور متوسط ​​کمتر از 21 میلی‌ثانیه هدف قرار دهید. گاهی اوقات، مانند هنگام بارگذاری یا تجربه های کوتاه سینمایی، زمان فریم شما می تواند از 21 میلی ثانیه فراتر رود، اما برای تجربه اصلی بازی باید زیر آستانه 21 میلی ثانیه بمانید.

در پلتفرم‌های موبایل، VSync اجباری در صورت نرسیدن به حداقل هدف، نرخ فریم را کاهش می‌دهد. به عنوان مثال، در یک به روز رسانی صفحه نمایش 60 هرتز، اگر سرعت 60 فریم در ثانیه را نزنید، بازی شما به 30 کاهش می یابد. اگر 30 را نزنید به 15 کاهش می دهید.

بسیاری از دستگاه های اندرویدی با نرخ تازه سازی نمایشگر 60 هرتز و 120 هرتز عرضه می شوند. مزایای هدف‌گیری زمان‌های فریم بسیار کوچک‌تر (هدف ۱۰ میلی‌ثانیه برای به‌روزرسانی ۶۰ هرتز و ۵ میلی‌ثانیه برای ۱۲۰ هرتز) را بدون به خطر انداختن فشار حرارتی و تخلیه باتری برای نرخ‌های رندر بالاتر بسنجید.

برای تنظیم نرخ فریم خاص در بازی خود در Unity، از Application.targetFrameRate استفاده کنید.

کتابخانه Android Frame Pacing به شما کمک می‌کند زمانی که برنامه شما برای ارائه فریم بعدی بیشتر از میزان درخواست نرخ به‌روزرسانی صفحه طول می‌کشد، به راحتی رندر کنید. برای نسخه‌های یونیتی ۲۰۲۱ و جدیدتر، فعال کردن سرعت فریم اندروید، نرخ تازه‌سازی نمایشگر را در بهترین حالت برای نرخ فریم هدف تعیین می‌کند. این تضمین می‌کند که بازی انرژی باتری را برای به‌روزرسانی‌های نمایشگر غیرضروری هدر نمی‌دهد.

برای فعال کردن کتابخانه، در تنظیمات پروژه > پخش‌کننده ، در قسمت تنظیمات برای Android ، کادر بهینه‌سازی فریم را علامت بزنید.

کادر گفتگو که تنظیمات پروژه > تنظیمات پخش کننده > سرعت شهرت بهینه را نشان می دهد
شکل 1. سرعت فریم بهینه شده در بخش تنظیمات پخش کننده در Unity 2019.2 و بالاتر موجود است.

Vulkan API

Vulkan یک API گرافیکی سه بعدی با کارایی بالا است که در مقایسه با OpenGL ES سربار پایینی دارد. Unity می تواند از Vulkan به دو روش مختلف استفاده کند.

Auto Graphics API

می‌توانید از Auto Graphics API با Vulkan استفاده کنید، اما بسته به نسخه Unity که نصب کرده‌اید، این می‌تواند رفتارهای متفاوتی داشته باشد. می توانید با رفتن به تنظیمات پروژه > پخش کننده > رندر این مورد را انتخاب کنید.

هنگام انتخاب نسخه یونیتی برای استفاده، ملاحظات زیر را در نظر داشته باشید:

  • Unity 2021.1 و نسخه های قبلی از Vulkan با API خودکار گرافیک پشتیبانی نمی کنند. یونیتی سعی می کند از OpenGL ES 3.2 استفاده کند. اگر دستگاه از OpenGL ES 3.2 پشتیبانی نمی کند، Unity به ترتیب به OpenGL ES 3.1، 3.0 یا 2.0 برمی گردد.
  • Unity 2021.2 و نسخه های بعدی ابتدا از Vulkan استفاده می کنند. اگر دستگاه از Vulkan پشتیبانی نمی کند، Unity به OpenGL ES 3.2، 3.1، 3.0 یا 2.0 برمی گردد.
Project Settings > Player Settings > Rendering > Auto Graphics API
شکل 2. تنظیم خودکار گرافیک API.

APIهای گرافیکی دستی

همچنین، می‌توانید Vulkan را با غیرفعال کردن Auto Graphics API به صورت دستی فعال کنید. اگر از Unity 2021.1 یا نسخه قبلی استفاده می کنید، این تنها راه استفاده از Vulkan است.

اگر Vulkan در این لیست بالاتر از OpenGL ES سفارش داده شده باشد، Unity ابتدا سعی می کند از Vulkan استفاده کند. اگر دستگاه از Vulkan پشتیبانی نمی کند، Unity با OpenGL ES اجرا می شود. برای اطلاعات دقیق درباره Vulkan در Android، مانند نحوه استفاده از APIهای گرافیکی مدرن و بهینه سازی عملکرد بازی، به شروع با Vulkan مراجعه کنید.

Project Settings > Player Settings > Rendering > Graphics APIs
شکل 3. هنگامی که Auto Graphics API غیرفعال است، APIهای گرافیکی را به صورت دستی تنظیم کنید. ولکان گزینه اول است. Unity به OpenGL ES 3.0 برمی گردد.

رسم تماس ها

هر چیزی که روی صفحه نمایش داده می شود با یک یا چند تماس قرعه کشی مرتبط است. در پلتفرم‌های موبایل، باید تعداد تماس‌هایی را که به واحد پردازش گرافیکی (GPU) ارسال می‌کنید، بهینه کرده و کاهش دهید.

تماس‌های قرعه‌کشی را شبیه به ماشین‌هایی در نظر بگیرید که پشت چراغ راهنمایی هستند. پس از سبز شدن چراغ، تعداد معینی ماشین می توانند قبل از تغییر چراغ از آنجا عبور کنند. هنگامی که نور زرد می شود، به زمان فریم هدف ایده آل خود (21 میلی ثانیه) رسیده اید، و هنگامی که نور قرمز می شود، به محدودیت زمانی فریم 33 میلی ثانیه رسیده اید. هر چیزی که گذشته بر فریم رندر بعدی تأثیر بگذارد، بنابراین نرخ فریم حاصل از 30 فریم بر ثانیه هدف شما کمتر است.

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

سایه ها

تماس‌های Shadow casting می‌توانند بیشترین پردازنده گرافیکی را داشته باشند و بیشترین زمان GPU را حتی برای محیط‌های ساده مصرف کنند. برای کاهش هزینه تماس‌های طراحی سایه، استفاده از سایه‌های سخت به جای نرم را آزمایش کنید. اگر هنوز هم در GPU برای دستگاه‌های ارزان قیمت بسیار پرهزینه است، به جای سایه‌های سخت، از سایه‌های blob shadows استفاده کنید.

بافت

فرمت فشرده سازی بافت توصیه شده برای بافت های RGB و RGBA در اندروید ASTC است. در یونیتی، حداقل گزینه فشرده سازی بافت که باید در اندروید استفاده کنید ETC2 است. می توانید به عنوان پشتیبان خود از ASTC تحت تنظیمات Unity Build به ETC2 برگردید.

فهرست کاملی از قالب‌های پشتیبانی شده بر اساس پلتفرم را در مستندات Unity در Manual بیابید: قالب‌های بافت پیشنهادی، پیش‌فرض و پشتیبانی‌شده، بر اساس پلتفرم .

رابط کاربری و نسبت ابعاد

می‌توانید از ابزار Unity Device Simulator برای پیش‌نمایش رزولوشن‌ها، جهت‌گیری‌ها و نسبت‌های ابعاد مختلف دستگاه به‌طور مستقیم در ویرایشگر Unity استفاده کنید. می‌توانید بین نمای بازی و نمای شبیه‌ساز دستگاه جابه‌جا شوید.

پیش نمایش ابزار را در Simulate Game with Device Simulator در Unity ببینید! .

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

می توانید کد منبع Trivial Kart را در مخزن نمونه بازی ها در Github بیابید.

با انتخاب گزینه‌های دستگاه در منوی کشویی، می‌توانید به سرعت طرح‌بندی و صحت عناصر بوم رابط کاربری را در نمای Device Simulator تأیید کنید:

تنظیمات پروژه > تنظیمات پخش کننده > سرعت فریم بهینه
شکل 5. Device Simulator از تغییر دستگاه ها در ویرایشگر پشتیبانی می کند، بنابراین می توانید مشکلات طراحی را زودتر تشخیص دهید.
تنظیمات پروژه > تنظیمات پخش کننده > سرعت شهرت بهینه
شکل 6. قبل از دانلود بسته Device Simulator ، گزینه Enable Pre-release Packages را علامت بزنید.

برای بیشتر تکنیک‌های بهینه‌سازی UI برای Unity، به آموزش زیر از Unity مراجعه کنید: Optimizing Unity UI .

فیزیک

موتور Nvidia PhysX در Unity تعبیه شده است. تنظیمات پیش‌فرض در موبایل ممکن است گران باشد، بنابراین ملاحظات زیر را در نظر داشته باشید:

  • نرخ فریم هدف خود را در نظر بگیرید و بر اساس آن گام زمانی ثابت را تنظیم کنید. پیش فرض روی 0.02 میلی ثانیه یا 50 هرتز تنظیم شده است. برای هدف 30 فریم بر ثانیه می توانید آن را به 0.03 یا بالاتر افزایش دهید.
  • برای تعیین تعاملات بین اشیاء بازی از انواع لایه های خاص، برخورد دهنده های مش را ساده کنید و ماتریس برخورد لایه ها را به حداقل برسانید.

برای کسب اطلاعات در مورد تنظیمات فیزیک و بهینه سازی بازی های موبایل، به کتاب الکترونیکی بهینه سازی بازی های موبایل خود از Unity مراجعه کنید.

نمایه

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

  • نقاط کلیدی را در طول توسعه شناسایی کنید، زمانی که می توانید زمان پروفایل را اختصاص دهید، نه اینکه آن را به صورت تصادفی در آن قرار دهید.
  • برای استفاده با Unity Profile Analyzer ، عکس‌های فوری نمایه را ذخیره کنید.
  • نمایه بازی خود را در دستگاه های مورد نظر ایجاد کنید تا تصویر دقیقی از عملکرد بازی خود در مرحله فعلی توسعه به دست آورید.
  • قسمت های مختلف بازی خود را نمایه کنید.
  • نحوه بازی بازیکنان خود را مشخص کنید. (بازی خود را فقط زمانی که در حالت بیکار یا در یک صفحه مکث است، نمایه نکنید.)
  • پس از مدتی که بازی در حال اجرا بود، در حالت پایدار نمایه کنید تا به پیدا کردن مشکلاتی که ممکن است در هنگام داغ بودن دستگاه‌های تلفن همراه با آن‌ها مواجه شوید، کمک کنید.

می توانید از ابزارهای نمایه سازی زیر به صورت جداگانه یا ترکیبی استفاده کنید.

  • Unity Profiler Unity Profiler یک ابزار تجزیه و تحلیل عملکرد کاملاً یکپارچه است که می تواند در برابر کد شما در ویرایشگر یونیتی اجرا شود و به دستگاه اندرویدی مستقل شما متصل شود که در حال اجرا در حالت توسعه است.

  • بازرس GPU Android با بازرس GPU Android ( AGI ) می توانید اشکال زدایی در سطح فریم را انجام دهید. AGI همچنین خدمات سیستم از جمله GPU، CPU، حافظه، باتری و شمارنده های GPU را تجزیه و تحلیل می کند.

برای جزئیات بیشتر در مورد نمایه سازی بازی خود در یونیتی، ویدیوی مقدمه ای بر پروفایل سازی در یونیتی را تماشا کنید یا راهنمای نهایی برای پروفایل سازی بازی های یونیتی ، هر دو از Unity را بخوانید.

مدیریت حافظه

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

هنگامی که روی اسکریپت های نوشته شده در C# کار می کنید، در استفاده از رشته ها، مقایسه رشته ها و تخصیص اشیاء مرتبط با رشته (مانند فایل های JSON برای تنظیمات بازی) محتاط باشید. اینها تخصیص حافظه مکرر ایجاد می کنند و می توانند به تکه تکه شدن کمک کنند.

استفاده از کلاس StringBuilder را برای توالی های بزرگ دستکاری رشته ها، بیش از الحاق رشته ها در محل (مانند "this" + "is" + "a" + "bad" + "idea" در مقابل فراخوانی تابع StringBuilder.Concat() در نظر بگیرید. .

برای اطلاعات بیشتر در مورد رشته ها، رشته ها و متن را در مستندات Unity ببینید.

منابع متنی TextAsset و JSON را با نوع ترجیحی ScriptableObject ارزیابی کنید. ScriptableObjects ذخیره‌سازی داده‌های بین صحنه را به طور موثر مدیریت می‌کند و امکان تغییرات زمان ویرایشگر به بازی را می‌دهد.

برای بحث در مورد استفاده از جایگزین‌های دسته پیش‌فرض JSON برای بهینه‌سازی موبایل، به مقاله بهینه‌سازی پنهان در بازی‌های شبکه در Hutch مراجعه کنید.

از Memory Advice API برای تعیین نحوه استفاده از حافظه در زمان اجرا استفاده کنید. API یک نشانگر Stoplight را برای استفاده زیاد، معمولی و کم حافظه نشان می دهد. می‌توانید برای به‌روزرسانی در شاخص مشترک شوید یا برای وضعیت فعلی آن را مستقیماً نظرسنجی کنید. هنگامی که سیگنال قرمز دریافت می کنید، به فکر کاهش استخر یا حافظه پنهان اشیاء بازی خود باشید. این زمینه را در تله متری بازی خود در طول عملیات زنده و بررسی معیارهای عملکرد پس از راه اندازی قرار دهید.

برای بررسی عمیق‌تر سازمان‌دهی حافظه در دستگاه‌های Android و نحوه کار یونیتی با آن، درک میزان استفاده از حافظه Android (از Google I/O '18) را تماشا کنید. این ویدئو انواع مشکلات حافظه و زمانی که قاتل حافظه کم اثر می‌شود را بررسی می‌کند.

جمع آوری زباله

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

به عنوان مثال، به‌جای استفاده از تخصیص‌های درخواستی، یک استخر شی بازی ایجاد کنید ( GameObject.Instantiate ). برای استخرهای بزرگ، برای کاهش خطر عدم پاسخگویی بازی‌تان در دستگاه‌های Android سطح پایه، فریم‌های متعددی را تخصیص دهید.

قطعه کد زیر را برای یک کوروتین ساده که از ابتدای یک MonoBehaviour فراخوانی می شود، در نظر بگیرید:

// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
  while (enabled) {
    yield return new WaitForSeconds(1.0f);
    // Some intermittent function check
  }
}

// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
  while (enabled) {
    yield return waitForSecond;
    // Some other intermittent function
  }
}

می‌توانید فایل الگوی MonoBehaviour را ویرایش کنید تا توابع خرد پیش‌فرض Start() و Update() حذف کنید تا ناخواسته هنگام توسعه، توابع خالی باقی نمانید.

برای نمای کلی از ترتیب اجرای رویدادهای MonoBehaviour، به ترتیب اجرای توابع رویداد در مستندات Unity مراجعه کنید. برای کسب اطلاعات بیشتر در مورد مدیریت حافظه، دوره مدیریت حافظه در یونیتی را ببینید.

برای نکات بهینه‌سازی عملکرد بازی‌های تلفن همراه، به بهینه‌سازی عملکرد بازی‌های موبایلی خود مراجعه کنید: نکاتی درباره نمایه‌سازی، حافظه و معماری کد از مهندسان برتر Unity .

استخر پیش ساخته

افزایش زمان فریم پردازنده تقریباً به طور کامل ناشی از نمونه سازی Prefab در طول بازی است. قبل از ورود به گیم پلی، برای کاهش یا حذف نوک های CPU راه اندازی، استخرهای اشیاء را برای پرتابه ها، دشمنان قابل تخم ریزی و جلوه های بصری پیش گرم کنید. می‌توانید بهینه‌سازی‌های اضافی را در طول بارگذاری یا توالی‌های معرفی در صحنه خود روی چندین «فریم اولیه‌سازی» پخش کنید.

شما می توانید بسیاری از دارایی های ادغام شخص ثالث را در فروشگاه Unity Asset مربوط به مدیریت ادغام شی بازی پیدا کنید. شما همچنین می توانید خود را ایجاد کنید. به مقدمه Object Pooling در Unity Learn مراجعه کنید.

تحویل دارایی

زمانی که برنامه شما برای اولین بار در Google Play استقرار می‌کند، محدودیت‌هایی برای بزرگی آن وجود دارد. بسته به اندازه و ماهیت بازی خود، ممکن است به برخی یا همه منابع بازی خود (مدل شخصیت ها، محیط ها، عناصر رابط کاربری و غیره) نیاز داشته باشید تا بازیکنان تجربه مورد نظر شما را داشته باشند.

می‌توانید از سرویس Play Asset Delivery (PAD) برای مدیریت دارایی‌هایی که بازی شما به آن نیاز دارد در زمان نصب، پیگیری سریع یا درخواستی استفاده کنید. بسته‌های Unity Asset برای پشتیبانی از PAD یکپارچه شده‌اند و می‌توانید از ابزار برای تعیین اینکه کدام عناصر تحویل داده می‌شوند استفاده کنید.

آدرس پذیرها

اگر سیستم نام‌گذاری Addressables را آماده و بازبینی کنید، تنظیم منابع پویا - مانند پیش ساخته‌ها، بافت‌ها و فایل‌های صوتی - در زمان اجرا دیگر عملیات پیچیده‌ای نیست. دارایی های آدرس پذیر نحوه چیدمان محتوای خود را از نحوه ساخت و بارگذاری محتوای خود جدا می کند. سیستم Addressables جایگزین پوشه‌های Resources و Asset Bundles می‌شود تا نحوه ارجاع به دارایی‌ها و بارگذاری آن‌ها در زمان اجرا را ساده‌تر کند.

برای مثال، پروژه Demo با استفاده از بسته Addressables در GitHub را ببینید. برای جزئیات در مورد توسعه Addressables، به سیستم دارایی آدرس پذیر در وبلاگ Unity مراجعه کنید.

با طرح دارایی Addressable، مزایا و معایبی برای بسته‌بندی دارایی‌های بسیار کم یا بیش از حد در بسته‌های رایج وجود دارد. برای کسب اطلاعات بیشتر در مورد مدیریت محتوا با Addressables، به ساده کردن مدیریت محتوای خود با Addressables مراجعه کنید.

می توانید یک نسخه نمایشی مستقل راه اندازی کنید و حالت های دسترسی را آزمایش کنید تا با سیستم Addressables راحت شوید. همچنین می توانید پروژه منبع باز BuildLayout Explorer را برای Unity 2019.3 و جدیدتر ببینید و گزارش buildlayout.txt تولید شده توسط Addressables را بررسی کنید.

دارایی های Chop Chop، یک پروژه Unity Open، با استفاده از سیستم Addressables برای همه بارگیری و تخلیه بسته بندی شدند. مشاهده محتوای بسته بندی با دارایی های آدرس پذیر | Projects Devlog را برای بررسی ساختار و تنظیمات پیکربندی بسته‌های Addressables باز کنید .

در پروژه Chop Chop، تنها صحنه‌ای که به‌طور پیش‌فرض بارگذاری شده بود، صحنه Initialization، برای استفاده از AssetReferences به‌جای پیوندهای مستقیم به دارایی‌های پروژه (صحنه‌ها، پیش ساخته‌ها و غیره) پیکربندی شد.

کد منبع پروژه Unity Open: Chop Chop در GitHub موجود است. اگرچه پروژه دیگر در حال توسعه نیست، اما git repo و مستندات آن هنوز در دسترس است.

پلاگین های شخص ثالث

اگر از افزونه‌های شخص ثالث، مانند افزونه‌های Unity Asset Store استفاده می‌کنید، مطمئن شوید که پوشه‌ها را بررسی کرده و دارایی‌های غیر ضروری را از پوشه‌های Resources حذف کرده‌اید. در طول فرآیند ساخت، یونیتی تمام دارایی‌هایی را که در پوشه‌های Resources گنجانده شده‌اند جمع‌آوری می‌کند و آنها را در یک بسته واحد که در زمان اجرا قابل دسترسی است، بسته‌بندی می‌کند. این می تواند نفخ را به بسته نهایی اضافه کند و اغلب مورد نیاز نیست.

برای یافتن سریع همه پوشه های منابع، منابع را در پانل پروژه جستجو کنید. سپس می توانید هر کدام را انتخاب کنید تا مشخص کنید چه چیزی در آن وجود دارد و آیا برای بازی شما ضروری است یا خیر.

شکل 7. ممکن است چندین پوشه Resources در پوشه های دانلود شده از Unity Asset Store در کمین باشد. آنها را تمیز کنید تا از بسته بندی آنها در بسته نرم افزاری خود جلوگیری کنید.

انتشار و نگهداری کنید

وقتی آماده راه‌اندازی بازی موبایل خود هستید، تصمیم بگیرید که می‌خواهید برای چه کسی عرضه کنید، چگونه تست آلفا و بتا را انجام دهید و چگونه عملکرد را پس از راه‌اندازی نظارت و پیگیری کنید.

بازخورد یک نسخه محدود را تجزیه و تحلیل کنید

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

برای مثال، می‌توانید از Android Performance Tuner برای Unity و Google Analytics for Unity برای دریافت اطلاعاتی درباره عملکرد برنامه‌تان و روند بازیکنان استفاده کنید، که تیم توسعه‌دهنده شما می‌تواند از طریق آن‌ها به‌روزرسانی‌ها را تنظیم و اجرا کند. همچنین می‌توانید از داده‌های تحلیلی خود برای برنامه‌ریزی دنباله‌ها یا بازی‌های مرتبط در ژانر مشابه استفاده کنید.

تست آلفا و بتا

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

بیلدهای Unity شما از طریق Android App Bundles توزیع می شوند. برای اطلاعات، به Manual: Delivering to Google Play from Unity مراجعه کنید، که همچنین تغییرات فایل‌های APK به فرمت AAB را توضیح می‌دهد.

نظارت و پیگیری

در طول مرحله پخش و پخش بازی خود، می‌توانید از Android Vitals برای ردیابی مشکلات عملکرد دستگاه‌هایی که ممکن است در طول توسعه و آزمایش به آنها دسترسی نداشته باشید، استفاده کنید. برای جزئیات، موارد جدید بازی‌ها را در Reach و دستگاه‌ها و Android vitals تماشا کنید.

اغلب تیم های توسعه بزرگتر خطوط لوله تله متری بازی منحصر به فرد و سفارشی دارند که معیارهای مربوط به عملکرد دستگاه را ارائه می دهند. به یاد داشته باشید که از مزایای تیونر عملکرد Android (APT) و افزونه Unity مربوطه برای معیارهای شماره گیری مربوط به نرخ فریم، وفاداری گرافیکی، زمان بارگذاری و رها شدن بارگذاری استفاده کنید. راهنمای گام به گام ادغام Android Performance Tuner در بازی Unity خود را دنبال کنید.

چرخه حیات بازی شما پس از پخش زنده متوقف نمی شود. نظارت، نگهداری و پاسخ به عملکرد و بازخورد برای کاربران خوشحال، بررسی‌های مثبت و پذیرش نهایی بازی شما در همه بازارها بسیار مهم است.