GameDev: разработка на Unity3D
446 subscribers
6 photos
2 videos
7 files
40 links
Все для успешного развития разработчика в геймдев: от junior до CTO. SOLID на практике, IOC, DI. Новые паттерны для gamedev. Личный опыт.

Заявка на разбор тестовых https://forms.gle/kqVPv1jWT97Bkps9A
Download Telegram
#Unity3D #тестирование

Тестирование в Unity 3D на платформах Windows, Android и iOS: что, как и какими инструментами?


Тестирование - часть разработки игр, одна из важных составляющих фундамента, на котором строится всё здание вашего проекта.
Оно позволяет выявить узкие места, которые могут возникнуть после выхода продукта в мир, понять, насколько он стабилен и соответствует заявленным критериям по производительности, обеспечивая высокое качество на различных платформах: Windows, Android и iOS.
Особое внимание стоит уделять аспектам, связанным с монетизацией, ведь от их работы напрямую зависит прибыльность и успех игры.
Рассмотрим, что именно следует проверять, какими методами и инструментами это делать и на какие подводные камни обратить внимание.

Что тестировать?

🟢 Функциональность
Здесь мы погружаемся в саму суть игры: игровые механики, логику, взаимодействие пользователя с приложением.
Каждая кнопка, каждый жест должны работать безупречно, чтобы игроки могли полностью окунуться в созданный вами мир.

🟢 Производительность
Высокий FPS, быстрое время загрузки, оптимальное использование памяти и ресурсов процессора - всё это критически важно, особенно на мобильных устройствах с ограниченными ресурсами.
Игра должна не только выглядеть красиво, но и работать плавно.

🟢 Совместимость
Мир мобильных устройств разнообразен: разные модели, разрешения экранов, версии операционных систем.
Убедитесь, что игра корректно функционирует на всевозможных устройствах, чтобы охватить максимально широкую аудиторию.

🟢 Стабильность
Нет ничего хуже, чем игра, которая внезапно вылетает или зависает.
Выявление сбоев, критических ошибок и ситуаций, когда приложение может быть принудительно закрыто системой, должно быть в списке приоритетных задач.

🟢 Пользовательский интерфейс (UI/UX)
Интерфейс - лицо вашей игры.
Он должен быть не только красивым, но и интуитивно понятным и отзывчивым.
Тестируйте отображение и отклик элементов интерфейса на различных платформах и разрешениях экранов.

🟢 Сетевые функции
Если ваша игра включает мультиплеер или другие сетевые взаимодействия, убедитесь в безупречной работе этих функций.
Синхронизация, задержки, соединение с сервером - всё это влияет на впечатление игрока.

🟢 Тестирование локализаций
Ваша игра может достичь игроков из разных стран.
Различные языковые локали могут содержать специфичные символы или использовать различные форматы данных.

‼️Например, отличие в десятичных разделителях ("." и ",") может привести к неправильной работе приложения.

🟢 Монетизация
Монетизация - финансовый показатель востребованности вашего проекта, её проверка становится первоочерёдной задачей на этапе выхода продукта в мир.
Тестирование монетизации заключается в проверке корректной работы встроенных покупок, рекламы и других механизмов.
Без стабильной и надёжной системы монетизации даже самая увлекательная игра может не оправдать ожиданий разработчиков.

Продолжение 🔽
🔥5👍3
#Unity3D #тестирование

Что еще нельзя оставлять без внимания в процессе тестирования игр:

🟢 Шейдеры

Речь о проверке шейдеров для различных графических архитектур в Unity, особенно при ориентации приложения на широкий спектр устройств на платформах Windows, Android и iOS.
Графические процессоры Adreno и Mali охватывают большую часть Android-устройств, в то время как Metal используется на устройствах Apple.

Особенности тестирования шейдеров:
Adreno: Известен своей эффективностью при работе с некоторыми типами вычислений, но может сталкиваться с проблемами при работе со сложными шейдерами, содержащими динамическое ветвление.
Проверять необходимо на различных моделях Adreno (например, серии Adreno 600), чтобы выявить узкие места.

Mali: Шейдеры для этих GPU иногда демонстрируют пониженную производительность при использовании сложных текстурных операций и большого количества инструкций ALU.
Для выявления проблем с производительностью используйте Mali Offline Compiler.

Metal: На iOS-устройствах необходимо удостовериться, что шейдеры работают корректно и оптимизированы для архитектуры Metal.

‼️Важно тестировать шейдеры на реальных устройствах, чтобы проверить, как они обрабатываются на уровне компиляции Metal и избежать потенциальных ошибок рендеринга.
Оптимизируйте ресурсы: старайтесь минимизировать количество draw call'ов и сложность шейдеров, чтобы избежать перегрузки GPU.

🟢 Тестирование нативных окон запроса разрешений
Речь про проверку системы при наличие/отсутствии пользовательских разрешений, таких как запросы на трекинг IDFA и push-уведомления.
Ошибки при реализации данных запросов могут привести к проблемам при модерации приложения в сторе.

Рекомендации по проверке:
- Избегать блокировки логики игры: никогда не делайте так, чтобы игра не могла продолжить работу, если пользователь отклоняет запрос разрешений. Например, если игрок не принял трекинг IDFA, интерфейс должен корректно обрабатывать это событие и не блокировать дальнейший прогресс.
- Тестирование на отказ: проверяйте, что приложение корректно реагирует на случаи, когда разрешение не принято.
Это поможет избежать ситуаций, когда ревьюер App Store или Google Play не может протестировать приложение должным образом, что приводит к отклонению.

🟢 FTUE и воронки игроков
FTUE (First Time User Experience) играет ключевую роль в удержании пользователей.
Анализ воронки игроков позволяет понять, насколько хорошо новая аудитория воспринимает ваш проект.

Рекомендации по тестированию FTUE:
Анализ цепочки действий игроков: аналитическая система должна отслеживать каждый шаг пользователя после первого запуска игры.
Сколько пользователей запустило игру, сколько прошло туториал, сколько достигло первого уровня и т.д.

‼️Метрики удержания: собирайте данные о количестве пользователей, покинувших игру на разных этапах. Это поможет выявить проблемные зоны и улучшить ранний игровой опыт.

Продолжение 🔽
2🔥2👍1
#Unity3D #тестирование

Также не забываем про потенциально узкие места 🔽

🟢 Папки Resources

Часто разработчики для хранения ассетов используют папку Resources в Unity, это может казаться удобным способом хранения для загрузки во время выполнения.
‼️Однако её чрезмерное использование может привести к проблемам с производительностью и управлением памятью:

Загрузка всех ассетов: При старте Unity загружает все файлы в папке Resources в память, что увеличивает время загрузки и потребление ресурсов.
Сложность управления: ассеты, загруженные через Resources.Load, не могут быть легко управляемы или обновляемы при выпуске патчей.

Рекомендации:
Используйте Addressables - это более гибкий и оптимизированный подход к управлению ассетами, позволяющий загружать их по запросу и лучше контролировать использование памяти.
Addressables поддерживает загрузку ассетов из разных источников, включая удалённые серверы, что значительно улучшает производительность.

🟢 Папка StreamingAssets

StreamingAssets - специальная папка, где можно хранить файлы, которые нужно загружать в неизменённом виде во время выполнения (например, видео, звуковые файлы и другие данные).
Файлы из этой папки не упаковываются в игровые сборки и могут быть загружены напрямую с диска.

Рекомендации по использованию StreamingAssets:
Медиафайлы и конфигурации: используйте эту папку для хранения больших файлов или конфигурационных данных, которые не нуждаются в обработке Unity.
Платформенные особенности: учтите, что на разных платформах пути доступа к этой папке могут отличаться, поэтому важно протестировать корректность загрузки файлов на Windows, Android и iOS.

‼️Вложенные усилия в тестирование помогут создать высококачественный продукт, способный конкурировать на рынке и завоевывать доверие игроков.

В рамках текущей публикации я рассмотрел какие акценты необходимо расставлять в процессе тестирования.
В рамках следующей публикации разберем набор инструментов для тестирования.

Хорошего дня! 👋
Вопросы жду в комментариях!
👍116🔥4