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

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

Как избежать отрицания знаний?

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

Непрерывное обучение: игровая индустрия быстро развивается, важно постоянно обновлять свои знания, изучая новые технологии и подходы.

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

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

Пример:
Есть команду разработчиков, которая привыкла использовать готовые решения и плагины для реализации игровых механик.
Они редко углубляются в код или пытаются понять, как работают эти инструменты.
И вот перед ними встает задача создать уникальную функцию, требующую нескольких этапов планирования и реализации.

Например, разработка сложной системы ИИ для NPC, которая должна учитывать различные параметры окружающей среды и действий игрока.

Для решения этой задачи необходимо:
Спланировать архитектуру системы, определить основные компоненты и их взаимодействие.
Реализовать базовые алгоритмы поведения, учитывая возможные сценарии.
Оптимизировать производительность, чтобы система не нагружала ресурсы игры.
Провести тестирование и отладку, выявляя и исправляя ошибки в логике.

Без навыков планирования и логического мышления на два и более шагов вперед команда не сможет эффективно пройти через эти этапы.

Проект застопорится, сроки будут сорваны, а качество игры пострадает.

Продолжение 👇
❤‍🔥7🤣1
#тренды #мнение

Последствия для разработки.

Снижение качества продуктов: неспособность решать сложные задачи приводит к упрощению игровых механик, что делает игры менее интересными и конкурентоспособными.

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

Профессиональная стагнация: разработчики перестают развиваться, их навыки не улучшаются, что ограничивает карьерные возможности.

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

Как противостоять атрофии логического мышления.
Практиковаться в решении сложных задач: постоянно ставить перед собой вызовы, требующие многократного планирования и последовательных действий.

Изучение алгоритмов и структур данных: укрепит базовые навыки программирования и логического мышления.

Участие в профессиональных сообществах: обмен опытом с коллегами стимулирует развитие и позволяет взглянуть на проблемы с разных сторон.

Рефлексия и анализ своих решений: после завершения проекта полезно проанализировать, какие шаги были предприняты, что можно улучшить в будущем.

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

Атрофия логического мышления затрудняет решение многоходовых задач, что критически важно в разработке современных игр.

Для сохранения конкурентоспособности и профессионального роста необходимо осознанно подходить к своему развитию, постоянно обучаться и практиковаться в решении сложных задач.


Всем хороших выходных 💪.
❤‍🔥10👍5💯4🥴1
Всем привет 👋, пока я готовлю статью про тестирование, предлагаю принять участие в опросе. Вы включили dynamic batching и заметили, что на некоторых мобильных устройствах производительность ухудшилась. Из-за чего такое могло произойти?
Final Results
43%
Повышенная нагрузка на CPU
10%
Ограничения по вершинным атрибутам
15%
Проблемы с шейдерами
32%
Все варианты верные
Всем привет 👋, опрос закрыт.
Подводя итог, примерно 30% дали правильный ответ.

ℹ️ Правильный ответ: "Все варианты верные".

Даю разъяснения почему при включении dynamic batching может наблюдаться ухудшение производительности.

👇

Причины могут быть следующими:

- Повышенная нагрузка на CPU.
Dynamic batching выполняется на CPU, где объекты объединяются в один батч перед отправкой на GPU.
Процесс объединения геометрии и перерасчетов требует дополнительных ресурсов CPU.
На мобильных устройствах, где CPU менее мощные, чем на десктопе, эта дополнительная нагрузка может привести к снижению производительности.

- Ограничения по вершинным атрибутам:
Dynamic batching работает только с объектами, у которых количество вершин меньше 300 (для каждого объекта).
Если объекты превышают это ограничение, они не будут объединены, но процесс проверки все равно займет ресурсы.

- Перемещение данных между CPU и GPU:
Частые обновления и пересоздание батчей могут привести к увеличению объема данных, передаваемых между CPU и GPU, что особенно критично на мобильных устройствах с ограниченной пропускной способностью памяти.

- Совместимость материалов и шейдеров:
Объекты должны использовать один и тот же материал и шейдер.

- Transform объектов:
Объекты должны иметь одинаковые параметры Scale в своих transform'ах.

- Не поддерживаются некоторые функции:
Шейдеры с мультипассами или использующие определенные функции могут препятствовать батчингу.

- Dynamic batching не бесплатен:

Процесс батчинга сам по себе требует ресурсов CPU для подготовки данных.

Всем хороших выходных ✌️
👍10🔥52
#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