Unity. Совиные думки от журавля.
Почему возникла эта статья?
Я, Журкин Никита Владимирович, автор этого текста, хочу разрабатывать игры. Чтобы не лениться и каждый день двигаться к своей цели, я выпускаю такие статьи, в которых объясняю на максимально простом уровне о изученном мной материале в сфере разработок игр. Таким образом весь материал будет надежно закреплен в моей голове, и, в конце концов, я стану профессионалом. Свой путь я начинаю с Unity и в будущем планирую именно с помощью него воплощать свои задумки. Буду очень рад, если таким образом я помогу не только вопреки своей человеческой природе ленивости достичь своих целей, но и помочь таким же новичкам, как я на данный момент. Так же хочу добавить, то, что у меня нет 7-ми пядей во лбу. Я не считаю себя гением. Я простой мальчишка, который хочет себя реализовать и которым могли бы гордиться его родители, а в далеком будущем хвастаться им его потомки. 27.12.2023
Почему статья именно такая, какая она есть - https://vk.com/zhurk1n?w=wall-180431430_291 Моя страница ВК - https://vk.com/nikitosich2003 Мое сообщество ВК - https://vk.com/zhurk1n
Цель
1) Должна получится коллекция статей, в которых максимально понятно и простым языком будет описана работа с Unity и С#. Термины будут использоваться, но для того, чтобы читатель был в курсе о их существовании.
2) В ходе составления статей я сам закреплю весь материал, о котором будет идти речь на очень хорошем уровне. Если о чем-то рассказывать, то это должно интуитивно понятно мне самому.
Думаю, этого достаточно.
Для какой аудитории?
Данные статьи предназначены для подписчиков моего сообщества. В нем большая часть людей можно описать словом «пользователь». Пользуются ИТ (Информационными Технологиями) и не задумываются о том, как это работает.
Статьи будут сейчас и будущем нацелены на такую аудиторию, чтобы им было интересно и понятно. В ходе их чтения простые пользователи встретят много терминов и моментов из разработки ПО (Программного обеспечения). Этим самым они смогут подтянуть свои познания в этой сфере.
В конце каждой статьи можете найти словарь сокращений и их обозначений. Полезные ссылки и материалы для дальнейшего своего изучения!
Начинаем!
Перед дальнейшей реализацией своей игры нужно твердо решить том, какой будет ее архитектура. А именно как лучше реализовать окна в игре и разделы с инвентарем, открытием кейсов и тд. Поэтому сейчас будем говорить о сценах в Unity.
Что такое сцена?
Сцена в Unity - это фундаментальный элемент твоего проекта, играющий ключевую роль в построении твоей игре. Можно рассмотреть сцену как отдельный уровень игры, виртуальный мир, в котором будут происходить основные события:
● Содержимое сцены: В ней расположено всё, что игрок может видеть и с чем взаимодействовать: объекты окружения, игровые персонажи, интерфейс, освещение, звуковые эффекты, физические свойства - всё то, из чего складывается геймплей и атмосфера.
● Независимость сцен: Одна сцена может существовать автономно, но обычно их объединяют в проект, организуя переходы между ними. Вы можете создать отдельные сцены для уровней, меню, заставок и т.д.
● Редактирование сцены: В редакторе Unity вы можете визуально размещать объекты, настраивать их свойства, задавать освещение, камеры, физику и прочие параметры, создавая желаемый игровой опыт.
● Иерархия и префабы: Внутри сцены объекты организованы в иерархию, позволяющую управлять их взаимоотношениями. Префабы, повторно используемые объекты, упрощают создание однотипных элементов вроде стен, деревьев или врагов.
Что такое объекты?
GameObject (Объект) – строительный блок из которых мы будем делать игру. Компоненты – то, что характеризует наши строительные объекты и делает их тем кем они должны быть в нашей игре.
Что такое префабы?
Префаб — это специальный тип GameObject в Unity, содержащий в себе полностью настроенный объект со всеми его компонентами, свойствами и значениями. Этот объект можно многократно использовать и размещать в своей сцене, не создавая каждый раз с нуля.
Они имеют большое влияние на размер твоей игры. Большое количество сцен в Unity может повлиять на размер игры в нескольких аспектах:
● Размер файлов игры: Каждая сцена в Unity хранится в отдельном файле. Чем больше сцен в игре, тем больше будет размер файлов игры. Это может привести к увеличению времени загрузки игры и потреблению большего количества памяти.
● Производительность игры: Unity загружает сцены во время игры. Чем больше сцен в игре, тем больше будет времени, необходимого для загрузки игры. Это может привести к снижению производительности игры, особенно на устройствах с ограниченными ресурсами.
● Оптимизация игры: Оптимизация игры - это процесс повышения производительности игры за счет уменьшения ее размера и уменьшения требований к ресурсам. Большое количество сцен может затруднить оптимизацию игры, поскольку может потребоваться оптимизировать каждую сцену отдельно.
Но при этом разбиение на сцены может быть полезным!
● Производительность: если вы загружаете все объекты и ресурсы в одной сцене, то это может повлиять на производительность игры. Разделение на несколько сцен может уменьшить количество ресурсов, которые должны быть загружены в память, что может повысить производительность.
● Удобство разработки: если вы работаете с одной большой сценой, то может быть сложнее управлять объектами и ресурсами. Разделение на несколько сцен может упростить разработку и управление проектом.
● Размер игры: если вы хотите, чтобы ваша игра занимала меньше места, то лучше сделать несколько сцен, вместо одной большой
В Desktop приложениях используется память устройства, а в Web?
Браузерные игры выполняются в браузере, а браузер загружает файлы игры в веб-сервера. Его возможности ограничены и рассчитаны не только на твою игру. Так же на этой основе производительность игры зависит от скорости интернета. Маленькие или небольшое количество файлов даже с плохим соединением загрузятся быстро.
Desktop приложения (или приложения для настольных компьютеров) - это программы, которые устанавливаются и работают на персональных компьютерах или ноутбуках. В отличие от web-приложений, которые запускаются в браузере, desktop приложения не зависят от интернет-соединения и работают непосредственно на самом устройстве.
Я нацелился работать на платформу Яндекс Игры. По критерию этой платформы игры необходимо делать не больше 100 Мб при загрузке архивом. Часть 1 пункт 21 требования к игре.
Так как же все-таки стоит действовать?
“Все есть лекарство и все есть яд” Парацельс.
Это я к чему. Сцены нужно использовать разумно. Их использование стоит на основе работы памяти устройства, на котором будет работать игра.
- Если у вас одна сцена с большим количеством объектов, то в память будет одновременно загружаться много объектов этой сцены.
Но как делают игры с открытым миром?
Игру с открытым миром не будут делать для Web. Оптимизация в виде разбиения сцен не единственный метод оптимизации. Например можно не выводить на экран объекты, которые не попадают в зону экрана игрока, или отключать у них ненужные компоненты (например анимацию, которую игрок не видит) и так далее. Оптимизация под Desktop устройства другой разговор.
Оптимизация в целом большой вопрос, решение которого зависит от типа твоего проекта.
- Если у тебя куча бесполезных сцен это тоже вредно. Ты просто так гоняешь загрузку и выгрузку памяти под твою игру. Это тоже влияет на производительность!
- Тщательней продумай архитектуру игры. Порядок в проекте игры поможет тебе самому же.
Что такое архитектура?
Архитектура - это набор принципов и решений, которые определяют структуру и организацию игры. Она определяет, как игра будет работать, как она будет взаимодействовать с пользователем и как она будет выглядеть.
Простыми словами это палка с двумя концами. Одна сцена со всем, что есть в твоей игре – большой файл, который загружает кучу данных. Кучу мелких сцен будет неудобно редактировать и так же можно упереться в проблему ограниченных ресурсов.
Если будет информация которой можно дополнить статью пишите мне лично или в комментариях. На этом у меня все.
Пылайте сердцем, друзья.
Источники
1) https://yandex.ru/dev/games/doc/ru/concepts/requirements
2) https://docs.unity3d.com/2023.3/Documentation/Manual/
Словарь
Сцена в Unity - это фундаментальный элемент твоего проекта, играющий ключевую роль в построении твоей игре.
GameObject (Объект) – строительный блок из которых мы будем делать игру. Компоненты – то, что характеризует наши строительные объекты и делает их тем кем они должны быть в нашей игре.
Префаб — это специальный тип GameObject в Unity, содержащий в себе полностью настроенный объект со всеми его компонентами, свойствами и значениями. Этот объект можно многократно использовать и размещать в своей сцене, не создавая каждый раз с нуля.
Desktop приложения (или приложения для настольных компьютеров) - это программы, которые устанавливаются и работают на персональных компьютерах или ноутбуках. В отличие от web-приложений, которые запускаются в браузере, desktop приложения не зависят от интернет-соединения и работают непосредственно на самом устройстве.
Архитектура - это набор принципов и решений, которые определяют структуру и организацию игры. Она определяет, как игра будет работать, как она будет взаимодействовать с пользователем и как она будет выглядеть.