unity на практике создаем 3d игры и 3d миры
Первая игра на unity или на что у меня ушло полгода
Привет, Хабр. Я разработчик игр на Unity (как-то низко прозвучало) и хотел бы рассказать об этапах разработки моей первой игры. История берёт начало 2 года назад, когда я решил попробовать делать игры. Начинал с гайдов на ютубе. После, создав пару примеров, приложений и мини-игр, я решил создать полноценную игру. Естественно я представлял настоящий эпик, сюжет и настоящие 10 из 10. Мои амбиции были безграничны, но я не знал, что ждёт меня впереди.
Самый первый вопрос, который я задал себе это выбор платформы публикации. Выбор платформы я делал по ценам или методом исключения: в Steam 100$ за игру, на IOS 100$ в год, выбор пал на Android. Заплатил 25$ в Google Play, получил аккаунт и началась разработка.
Я решил опираться на самые сильные и простые стороны движка. Лучше всего для этого подходила 2D физика, на её основе я и решил построить игру.
Но что это будет, в чём концепция? Я решил пойти за вдохновением на ютуб и нашёл ролик о том, как сделать генерацию уровней из пиксельных картинок. Я захотел так же.
То, что я переписал
Переписал систему, нарисовал уровень и протестировал генерацию. Подумал: «А что дальше?». И вдруг — озарение. Идея пришла мгновенно и пазл сложился воедино. Почему бы игроку не быть шариком, а управлять дать ему гравитацией? «Отличная идея» — подумал я и начал творить геймплей.
После передо мною встала задача: каким образом игрок будет управлять красным шариком. Вариантов за всё время разработки я напридумывал всего 4:
Игрок касался бы экрана, ставя точку отсчёта, относительно дальнейшего движения пальца гравитация менялась. Сила зависила от дальности точки отсчёта, а направление от угла между ними.
2) Фиксированный радиусный
То же, что и Радиусный, только точка отсчёта находилась бы строго в центре экрана
3) Двухсторонний (нажатие)
При нажатии на левую или правую часть экрана можно было повернуть «гравитацию» вместе с камерой на определённое количество градусов влево или вправо соответственно.
4) Двусторонний (зажатие)
Тот же принцип что и у Двустроннего (нажатие), только необходимо было зажимать и вращение происходило с фиксированной скоростью.
1 и 2 я сразу же отмёл из-за их сложности понимания и неинтуитивно понятного управления. Для мобильной игры не подходило. Но, к сожалению, 4 мне пришёл в голову на этапе постпродакшна, пришлось брать 3. Скажу честно, очень плохое решение (серьёзно, не надо так). У этого управления было два катастрофических недостатка.
Да и сейчас бы исправить так просто не получилось бы, не переполошив форумы и документацию. Когда я захотел хотя бы попробовать исправить баг, я не стал, так как менять гемплей было нельзя. Переделка управления под 4 тип испортило бы готовые 80% контента, заточенные под 3 тип управления.
Ещё из-за этого 1 проблема резко обострилась, теперь даже меня начало укачивать. Видимо я постарался на славу, правда не в том чего хотел. «Ну да ладно» — подумал я и продолжил продакшн дальше.
Я начал программировать ассеты головоломок, и на это у меня ушло немало времени. Целых 2 месяца я потратил на разного рода объекты и скрипты для их взаимодействия. Уровни представляли из себя простые bit-map текстуры с отчётливыми пикселями, цвет которых обозначал свой блок.
Белый — Фоновый блок
Чёрный — Простой блок
Красный — Игрок
Голубой — Финиш
Оттенки жёлтого — Телепорт
Тёмно-красный — Красный шар
Зелёный — Зелёный шар
Просто жёлтый — Звезда
Светлый оттенок серого — Блоки-прямоугольники
Тёмный оттенок серого — Фальшивые блоки
Оттенок жёлтого потемнее — Фальшивые телепорты
Оттенок жёлтого средней тёмности — Фальшивые звёзды
Тёмно-голубой — Фальшивый финиш
(Многовато фальши)
В основном все ассеты контактировали через OnTriggerEnter2D и теги. Даже сейчас догадаться не могу, на что ушло у меня около месяца. Меню заняло второй месяц от части из-за того, что я не использовал циклы, а активность всех 500 объектов регулировал через Awake, из-за этого я наплодил более 2500 строк кода.
«Твоя игра уже надоела, сделай другую» — говорили друзья, но я всё равно продолжал. Я запланировал 100 уровней. На их создание ушло 4 месяца. Создавал я их параллельно вместе с технической частью. В итоге мой план по уровням «заставляющие думать» получился почти никак. Я таких уровней могу назвать от силы штук 10 — 15, остальные были сложны другим. Они были сложны наличием узких коридоров, сложностью ориентации в пространстве, абсолютно мазахисткими дизайнерскими решениями и, конечно же, минами с лабиринтами. Но за их создание отвечал уже не я. Мои «наёмные работники» создали в общем около 60% контента игры.
Из-за того что уровни мы проектировали по правилам, уровни вышли проходимыми в теории, но на практике теория не проверялась. Сделав все уровни, я понимал, что может произойти со моей игрой, а именно абсолютный диссонанс от лагающих до непроходимых уровней, из-за которых не получилось бы пройти игру. Так и осталось.
Также я не забыл про графику, но над ней я работал 2 часа, затем больше вообще не прикасался. Поскольку я криворукий и лучшее что я рисовал в Photoshop это большие круги вместо глаз, я решил что пусть игрок управляет шариком красным, а текстуры взял из первого попавшегося текстур-пака по майнкрафту (халтурил как умел).
В игре есть подсказки, но сделаны они были очень быстро, а следственно некачественно. В начале уровня появляется текст с моим комментарием по типу «Сложно?», или «Подумай!».
Программировал я игру на Unity 2017.1. Тогда на дворе был уже 2018 год и версию Unity 2018.2 я мог бы скачать, но не стал. Ведь я просто не хотел мучаться с переносом игры и возможными багами. Когда пришло время финальной компиляции, я этого сделать не смог. Причина тому — отсутствие Android sdk. Я на поиски потратил неделю, экспериментировал сочетанием новых версий движка (только 2017 года), изменением их настроек и бесчисленно огромным количеством sdk (300 гб для 24 разных одинаковых sdk). В итоге остановился на сторонней программе по установке sdk, версией движка 2017.3 и типом предложения Intent. Как же я был счастлив когда скомпилировал игру.
На её публикацию у меня ушло 3 дня.
Сложность заключалась в заполнении анкеты и необходимости заполнять описание на 18 языках (не слишком интересное занятие). Локализовывал я всё это через google translate. На создание обложки и скриншотов ушло не так много времени.
Несмотря на полное отсутствие пиара (кроме личной рекомендации) у игры в целом стабильные значения. Каждый месяц в среднем 4-7 установок.
В первый месяц трафик я подогнал, рассказав неравнодушным.
В последующие полгода прирост был ощутимее. Пик установок произошёл в конце лета и осени.
Даже сейчас, спустя год после релиза установки стабильны.
Изначально главной мотивация разработки было саморазвитие, никаких целей заработка я не приследовал. Отчасти из-за этого мой авторский проект просто пропал в небытие, в остальном из-за всех вышеперечисленных минусом. Но главное — в неё просто скучно играть. Ведь если бы я ввёл рекламу, я ответственнее отнёсся бы к пиару, качеству финального продукта и его презентабельности. А так — такое себе развлечение.
Но, в принципе, я доволен своей игрой. Её размер с неплохими уровнями даёт понять, что для первой игры моя является не такой уж и плохой. Из всего времени разработки я узнал многое о программировании и маркетинге, об игростроении и смежных вещях, но самое что я понял это то, куда я попал, в какую индустрию я начал идти.
Кстати, я как раз разрабатываю сиквел, авось что получится…
🎮 Разработка игр на Unity: 10 важных советов для начинающих
1. Освойте необходимые для старта навыки
2. Изучите основы дизайна
Отличный пользовательский опыт (UX) невероятно важен для создания приятного геймплея. Игроков могут расстроить меню и интерфейсы, которые слишком сложны для навигации, а также чрезмерно или недостаточно проработаны. Лучше всего, чтобы все было просто, интуитивно понятно и соответствовало внешнему виду вашей игры.
3. Освойте инструменты (плагины) для разработки игр
Для себя я выделил ТОП-3 полезных каждому разработчику инструмента:
4. Освойте Blender и Maya
Blender и Maya – наиболее мощные из доступных инструментов. Они занимают ведущие позиции в графике и анимации. Эти приложения повышают гибкость игровой разработки и в конечном итоге помогают сделать игру качественнее. Для самого движка Unity эти приложения очень важны.
5. Подучите терминологию
Индустрия игр достаточно быстро развивается, и в сфере их разработки давно появилась собственная терминология. Например, retargeting – это применение созданной для одной модели анимации к другой модели, а rigging – процесс построения скелетной иерархии сочленений костей для вашего меша (что такое «меш», попробуйте узнать сами). Для ознакомления с профессиональным жаргоном стоит прочесть «Unity Руководство: Словарь терминов анимации и Mecanim».
6. Учтите распространенные ошибки новичков
Даже у самых опытных разработчиков случаются ошибки. Выделим несколько из них:
Чтобы таких проблем не возникало, воспользуйтесь советами одной из наших статей.
7. Используйте обучающие материалы для новичков
Из обучающих материалов по Unity я порекомендую книгу «Unity 3.x Game Development Essentials». В ней вы найдете нужную для создания игры с нуля информацию.
8. Подумайте о маркетинге и рекламе
Обойтись без этого невозможно: маркетинг очень важен. Чтобы люди играли в вашу игру, они должны знать о существовании продукта. К счастью, есть много простых способов продать свою разработку. Использование социальных сетей – один из способов, и он может быть абсолютно бесплатным. Публикуйте скриншоты и видео, используйте соответствующие хэштеги и проявите себя в качестве дизайнера видеоигр. Если вы связаны с людьми, которые активно продвигают игры или участвуют в их разработке, и у вас есть значительная база подписчиков, вы можете получить много инсталляций.
9. Изучите мнения экспертов
Александр Саваткин, Senior Developer в компании Alawar
10. Пройдите обучение на курсах
Если вы только начинаете путь в профессии, обратите внимание на курс факультета разработки игр на Unity образовательной онлайн-платформы GeekBrains. В нем уделяется большое внимание практике, а студенты в процессе обучения реализуют 2D- и 3D-игры разных жанров для ПК и смартфонов. С таким багажом можно идти на собеседование с потенциальным работодателем, тем более платформа предлагает студентам бесплатные карьерные консультации и помогает подобрать соответствующие их навыкам вакансии.
Как создать игру на Unity
Эксперт в медицинских тренажерах VR на Unity, физических симуляциях и сетевых играх.
Сделать игру на Unity сможет даже начинающий кодер, который не знает С#. Большое количество обучающих материалов и активное комьюнити значительно облегчают первые этапы знакомства с движком и создание первого проекта. Вместе с ведущим разработчиком Unity Владимиром Филимоновым и преподавателем на курсе «Разработчик игр» разбираемся, почему писать код — не главное в геймдеве и какие базовые инструменты нужно освоить, чтобы соорудить свою первую игру.
Что такое Unity
Unity — это и среда разработки, и игровой движок, с помощью которого создаются проекты для разных платформ: ПК, мобильных устройств, игровых консолей и интернет-платформ, — поэтому он называется кроссплатформенным. В Unity есть инструменты для создания объектов, их перемещения, работы с графикой, текстурами и звуком, поэтому сделать полноценную игру с его помощью можно даже в одиночку.
Наглядный пример игры, созданной на Unity, которая поддерживает разные устройства, — Genshin Impact, успешный мультиплатформенный проект китайской студии miHoYo Limited. Более популярной стала ее мобильная версия, но пользователи могут войти в аккаунт, например, с компьютера и продолжить играть с того же момента, на котором остановились в мобильной версии. Кроме Genshin Impact, на Unity созданы такие известные проекты, как Hearthstone, Outlast, Cuphead, Pokemon GO и многие другие.
В игровой индустрии существуют десятки разных движков. Одни разработаны под конкретную игру, на других можно делать игры конкретного жанра (шутеры от первого лица, платформеры, гонки), а есть универсальные, вроде Unity, которые открывают разработчикам больше возможностей. Уникальность Unity заключается в сочетании нескольких факторов. Кроме того, что этот движок позволяет создавать проекты под разные устройства и не ограничивает разработчика конкретным жанром, он:
Как создать простую игру
При создании собственного проекта важно помнить, что разработка кода — это примерно 20% игры; гораздо большее значение в ней имеют другие аспекты:
Разработчик игр на Unity
Освойте C#, Unity и основы гейм-дизайна и начните делать собственные игры. Дополнительная скидка 5% по промокоду BLOG.
Перед созданием игры важно продумать все эти моменты и представить общую картину, а также найти референсы, на которые можно ориентироваться, продумать опорные точки сюжета и механики. Для создания игры именно на Unity также пригодится понимание некоторых базовых терминов, с которыми постоянно придется сталкиваться в процессе разработки:
Установка Unity занимает 5–10 минут. Для этого нужно зайти на официальный сайт проекта и выбрать бесплатный тариф для физических лиц — Personal. Его будет достаточно для самостоятельного изучения Unity и создания первой игры. Еще один бесплатный тариф — студенческий, но он подойдет тем, кто зарегистрирован на GitHub и может подтвердить свой ученический статус.
После нажатия кнопки «Начать» откроется Unity Store. Для новых пользователей в нем есть вариант установки движка с обучающим руководством. С помощью кнопки «Начните здесь» скачивается установщик UnityHubSetup.exe, который запускается как любой другой установщик: нужно просто открыть файл, принять условия пользовательского соглашения и нажать кнопку «Установить».
Русского языка в настройках нет, так что придется совершенствовать технический английский. Всего Unity занимает 11,3 Гб,поэтому перед установкой лучше проверить свободное место на диске и почистить его при необходимости.
Следующий шаг — создание Unity ID. Можно регистрироваться с помощью почты или использовать предложенные аккаунты, например Google, Facebook или Apple. Важно поставить первые две галочки: согласие с условиями использования Unity и признание политики конфиденциальности. Третья галочка — это согласие на маркетинговые рассылки, ее ставить не обязательно.
После регистрации Unity предложит создать тестовый проект Microgame. На выбор предлагается пять шаблонов:
Можно выбрать любой из них и посмотреть, как работает создание игры в конкретном жанре. Обучающий материал пошагово демонстрирует назначение различных окон в интерфейсе и принцип работы с элементами игры: как заставить двигаться персонажей, поменять текстуру объекта или его форму. В обучении окно Scene, в котором происходит вся работа с элементами, уже заполнено различными объектами, но при создании проекта с нуля оно будет пустым.
Создание проекта
После обучения можно перейти к созданию своей первой игры на Unity с помощью кнопки NEW в меню проектов.
Новому проекту присваивается имя, выбираются место хранения на диске и темплейт — то есть шаблон для разработки, внешний вид и функционал которого зависит от количества измерений в игре. Проще начинать с 2D-проектов, так как для этого формата создано больше готовых ассетов. Конечно, можно сразу начать делать 3D-игры, но в этом случае многие элементы и анимации придется самостоятельно создавать с нуля или выделять бюджет на то, чтобы делегировать эту часть работы другим специалистам.
Настройка интерфейса
В стандартном интерфейсе проекта шесть элементов рабочей области:
Добавление объекта
Объекты на экран Scene можно добавить из Asset Store. Для этого на панели инструментов нужно кликнуть на вкладку Window –> General –> Asset Store.
В строке поиска можно по названиям найти нужные компоненты, например, сет Free Platform Game Assets.
Как и другие ассеты, он загружается с помощью кнопки Import.
Перед загрузкой появится список всех компонентов, которые содержит этот пакет; некоторые из них можно исключить. Если в списке есть персонажи, текстуры или другие элементы, которые вам не нужны, можно просто снять галочки, и пакет загрузится без них.
После установки все ассеты будут доступны в окне Project. Теперь можно комбинировать и перемещать эти объекты, менять их форму, причем сделать это можно с помощью мыши или горячих клавиш, не написав ни одной строчки кода. Например, из перечня платформ самых разных видов можно выбрать одну и мышкой перетащить ее в рабочую область.
Шаг 2. Перенести в область Scene
Работа со скриптами
За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.
Создать новый скрипт можно в окне Project, кликнув мышкой на Assets –> Create –> C# Script.
Двойным кликом мыши скрипт открывается в текстовом редакторе. Скрипты, как и все остальное в Unity, прописываются на С#, так что для создания сложных проектов разработчикам все же придется освоить этот язык.
Базовые элементы скриптов — это:
Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).
И можно заметить, что в консоли это слово выводится один раз.
Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.
В консоли можно будет заметить, что апдейт действительно срабатывает каждый фрейм и объект, к которому применен этот скрипт, плавно движется.
Настройка триггеров
Для понимания сути триггеров важно усвоить, что такое коллайдер (Collider). Это компонент, который присваивается объекту в пространстве игры, задает форму и делает его твердым, недоступным для прохождения сквозь него. Например, если мы разместим монетку в 2D-пространстве и захотим сделать так, чтобы она упала на платформу, то без использования компонента Collider ничего не получится — монетка пролетит сквозь платформу.
Поэтому обоим объектам необходимо присвоить компонент Box Collider 2D — это тонкая зеленая линия, которая обводит элементы по контуру, и за счет этой рамки они становятся твердыми, то есть один не может пройти сквозь другой.
Так объекты обязательно соприкоснутся и монета встанет на платформу.
Триггер (Trigger) — это пространство на карте, при попадании объекта в которое происходит действие; он тоже обводит объект или область в пространстве по краям. По сути, это тот же коллайдер, только триггер позволяет объектам проходить внутрь этой области. Представьте, что на ту же самую платформу вместе с коллайдером наброшен триггер, и при попадании персонажа внутрь триггерной области активируется телепорт — персонажа перебрасывает в другую точку карты.
Чтобы создать триггер, нужно накинуть тот же самый компонент коллайдера, но поставить галочку Is Trigger.
Триггеры распознают три варианта взаимодействия области на карте и объекта:
Что дальше?
Освоить интерфейс Unity довольно легко, в интернете есть разные гайды на тему того, как сделать это действительно быстро. Например, видео «Я сделал игру на Unity за неделю» или обучающий мини-курс «Как создать RPG за час». Можно изучать геймдев самостоятельно или начать обучение на курсе — это ускорит процесс и даст более заметные результаты.
Для работы со скриптами и создания более сложных механик разработчикам в любом случае понадобится С#, так что к его изучению вы тоже рано или поздно придете. Но в отличие от Unity, по C# нет в свободном доступе такого большого количества актуальных и понятных гайдов, так что в целях экономии времени и сил лучше записаться на курс «Разработчик игр на Unity», где все знания упакованы в структурированные блоки и сбалансированы с практикой на тренажерах.
Разработчик игр на Unity
Уже во время обучения вы создадите себе портфолио, сможете брать подработки и откликаться на вакансии.
Unity3d. Начало работы, практические советы. Рецензия
Доброго времени суток. Данная статья посвящена мультиплатформенному инструменту Unity3d. В статье рассмотрены оптимальные, по моему мнению, способы работы с движком, даны практические советы по эксплуатации и дополнительные (общие) сведения; рассмотрены перспективы развития Unity3d.
Содержание:
Раздел 1. Введение
Unity3d является современным кросс-платформенным движком для создания игр и приложений, разработанный Unity Technologies. С помощью данного движка можно разрабатывать не только приложения для компьютеров, но и для мобильных устройств (например, на базе Android), игровых приставок и других девайсов.
Поговорим немного о характеристиках движка. Во-первых, стоит отметить то, что в среду разработки Unity интегрирован игровой движок, иными словами, вы можете протестировать свою игру не выходя из редактора. Во-вторых, Unity поддерживает импорт огромного количества различных форматов, что позволяет разработчику игры конструировать сами модели в более удобном приложении, а Unity использовать по прямому назначению — разработки продукта. В-третьих, написание сценариев (скриптов) осуществляется на наиболее популярных языках программирования — C# и JavaScript [1].
Таким образом, Unity3d является актуальной платформой, с помощью которой вы можете создавать свои собственные приложения и экспортировать их на различные устройства, будь то мобильный телефон или приставка Nintendo Wii.
Для того чтобы создать свою игру, вам, как минимум, нужно владеть одним из доступных (на Unity) языков программирования: C#, JavaScript или Boo.
Будет прекрасно, если вы владеете, например, 3Ds max’ом, это вам сильно поможет при создании игры. Что касается меня, то мне пришлось освоить 3Ds max на базовом уровне, ибо нигде не мог найти нужную мне модель дома [3]. В любом случае вам понадобится установленный 3Ds max на ваш компьютер, если вы собираетесь импортировать готовые 3D модели. Ибо, в большинстве своем, необходимые модели имеют формат проекта, т.е. необходимо будет зарендерить их в соответствующий для Unity3d формат, например, в *.3DS, и только после этого делать импорт в Unity, в противном случае последний выдаст ошибку.
Раздел 2. Начало работы
Вспомогательная литература
Обратимся к литературе, которая поможет нам изучить Unity3d, а именно, к Unity 3.x Game Development Essentials [2]. Книгу в свободном доступе можно найти в гугле, если вы предпочитаете бесплатный контент.
О чем книга? Пожалуй, обо всем, что только нужно для создания полноценной игры. Настоятельно рекомендую приобрести данную книгу и изучить самостоятельно.
Пару слов об игре и содержании книги. Ваш игрок оказывается на необитаемом острове, ему необходимо спастись, для этого он выполняет различные задания и, будем надеяться, спасается. Игру можно пройти за пару минут, однако создание игры занимает далеко не пару минут, даже не пару часов, пожалуй.
Книга содержит очень подробное руководство по созданию игры «с нуля». В ней описано многое, что вам, скорее всего, понадобится для создания вашей игры.
Книга написана на английском языке; тем, кто не знает английский, будет не сложно интуитивно догадаться о чем идет речь, ибо написана книга без особых премудростей.
На это стоит обратить внимание
Приведу несколько советов при создании игры в Unity3d.
º Коллайдеры
Что это такое — коллайдер? Коллайдер — это область пространства, при взаимодействии с которой выполняются те или иные скрипты, действия. Чтобы лучше понять что это такое, представьте, что вы подходите к автоматически открывающимся дверям универмага. За пару метров от дверей, срабатывает датчик и двери распахиваются перед вами, но если вы пройдете за три метра, то ничего не произойдет. Как раз та зона, в которой действует датчик движения, отвечающий за открывание дверей, и есть коллайдер. Вы входите в зону — двери открываются, выходите из зоны — и датчик уже никак не будет реагировать на ваше присутствие. Точно так же и в игре.
Так вот, о коллайдерах. Предположим, мы импортировали в наш проект автомобиль и хотим сгенерировать для него коллайдер. Можно сгенерировать автоматически коллайдер для всего автомобиля, но тогда для каждой детали автомобиля — фары, уплотнителя, зеркала, покрышки — будет сгенерирован свой коллайдер.
Это абсолютно не оптимально. Безусловно, нам не нужно генерировать столь большое количество коллайдеров, достаточно ограничиться одним!
Обратите внимание, что это не тонкость. Стараться сэкономить память нужно везде. У вас есть какое-то место в игре, куда игрок не сможет попасть? Не генерируйте никакие коллайдеры для этого места вообще. У вас есть дверь, которую вы импортировали в проект из 3Ds max’а? Небось, она очень хорошо прорисована (сам сталкивался с тем, что у двери даже шурупы были прорисованы отдельным объектом), значит, создайте один box-коллайдер для всей двери — вы сэкономите много памяти! Поверьте, что вам эта сэкономленная память еще очень и очень пригодится.
º Оптимальная работа со сценами
Поговорим об оптимизации сцен, о самих же сценах будет речь вестись далее.
Представьте следующую ситуацию: у нас есть сцена «home» — когда игрок находится в здании и сцена «street» — когда игрок выходит из здания на улицу. Естественно, из второй сцены мы можем видеть дом, т.е. часть первой сцены, и наоборот (если, конечно, у здания есть окна). В таком случае оптимально следующее построение сцен. В первой сцене все, что касается улицы (т.е. того места, куда мы не можем попасть без перехода на другую сцену) надо максимально упростить. Иными словами, нам нужно оставить только внешний вид вида из окна, а всю начинку — распотрошить. Т.е. все коллайдеры удалить, разрешение и т.п. свести к минимуму. Действительно, зачем процессору напрягаться с обработкой той местности, которую мы не можем посетить? Аналогичным образом поступаем со второй сценой («street»). В данном случае мы можем вообще все удалить из дома и оставить только его «коробку».
Вы хотите создать minimap? Пожалуйста, только избавьтесь от всех коллайдеров и снизьте разрешение, в таком случае ваша игра будет оптимальна.
Именно таким образом работа со сценами становится оптимальной. Еще раз отмечу, что это не тонкости, это серьезные вещи, которые требуют внимания создателя.
Сцены
Готовая игра — это набор сцен, соединенных между собой (точно так же, как и жизнь — это набор дней). Об оптимальном проектировании игры мы сейчас и поговорим.
Прежде чем создать свой проект — подумайте, что он должен в себя включать (какие сцены). Составьте список сцен (на листочке), обдумайте, что каждая сцена будет в себе содержать. Теперь постарайтесь каждую сцену разбить на подсцены, чем больше их будет, тем легче будет вашему ЦП. Конечно, не стоит перебарщивать с количеством сцен. Предположим, что ваш игрок находится в здании и из него никогда не выходит, в здании есть, например, пару этажей, крыша, а на каждом этаже имеется три комнаты. В данном случае, по моему мнению, было бы оптимально «разбить» здание на две сцены — два этажа и крыша. Дробление же каждого этажа на сцены с комнатами — не оптимально. Это просто не нужно, если каждая из комнат слабо загружена. Иными словами, надо грамотно расходовать память процессора, но и забывать о получении удовольствия от игры тоже не стоит.
Отладка
Помните, что хороший создатель должен учитывать то, что его игра, либо приложение, будет использоваться на различных ЭВМ, а это означает, что свой контент необходимо отладить так, чтобы он мог использоваться на различных устройствах. Самый очевидный и важный момент отладки — оптимизация приложения под различные разрешения экранов. Это важный момент и создатель игры обязательно должен обратить на него свое внимание, в противном случае, результатом своей работы сможет быть доволен только он один.
Структурирование
Раздел 3. Практические советы
Помните золотое правило: хорошая программа не та, которая написана тяп-ляп и отлажена до предела, хорошая программа та, которая пишется сразу правильно и требует минимальных «затрат» на отладку. Если вы будете пользоваться этим правилом, то у вас все будет намного лучше чем у тех, кто этим правилом не пользуется.
Написание скриптов
Увы, этот подраздел будет совсем короткий. Просто старайтесь сначала представить то, что вы хотите реализовать, затем попробуйте описать словами алгоритм, а далее — преобразовать слова в работающий код. Используя книгу, о которой речь шла выше, вам навряд ли придется сильно потеть над разработкой кодов и других вещей, повторюсь, что в книге описано практически все, что только может понадобиться, а все, что не описано — легко додумать самому.
Видеоуроки
К счастью, программный продукт Unity обновляется постоянно, но, увы, видеоуроки сами это делать не могут. Получается так, что огромное количество видеороликов, актуальных год назад, теряют свою актуальность и становятся, попросту, бесполезными.
1 — здесь вы всегда найдете актуальные видеоуроки, понятное объяснение, детальный разбор скриптов и всех действий. Лучше этого канала пока что ничего не нашел. Если вы не имеете вообще никакого представления о создании игры, то вам однозначно нужно заглянуть на данный канал. 2 — серьезная команда, видеоуроков только, жаль, меньше, чем у 1. 3 — есть полезные вещи, жаль только, что видеоуроки стали почти неактуальными.
Устранение ошибок
Unity3d — такой движок, что если у вас имеются ошибки в написании скриптов, то игра ваша не запустится. Если же нет явных ошибок, то игра запускается, если что-то идет не так, то консоль вам об этом обязательно сообщит.
Это предупреждения, они просто говорят вам о возможных недочетах, недоработках:
Это ошибки, если такие имеются, то игра не запустится:
Раздел 4. Завершение работы
Выводы
Unity3d — очень гибкий движок, предоставляющий большую свободу действий пользователю. Чтобы упростить жизнь разработчику и потребителю, можно предпринять некоторые шаги для оптимизации своего проекта.
Теперь мы, с заложенной базой знаний, можем спокойно приступать к созданию своего ультра-популярного приложения!
Публикация игры
Свою готовую игру можно опубликовать на одном из игровых сервисов, например, на www.kongregate.com
*Оптимизация
Если вы читаете данный подраздел, то либо вам просто интересно, что здесь написано, либо вы не прочитали NB! из раздела 2. Будем надеяться, что вы относитесь к первой категории. В данном подразделе еще раз хочется отметить то, что нужно сразу писать игру оптимальной, а не писать ее хоть как-то, и только затем отлаживать — это гиблый путь и поступать так не стоит. По поводу оптимизации — еще раз обратитесь ко второму разделу.
Раздел 5. Дополнительная информация
Теория графики
Практика без теории бывает не очень уж и интересной, поэтому советую ознакомиться с теорией компьютерной графики. www.intuit.ru/department/graphics/graphalg/lit.html
Протестировать свои теоретические знания можно тут www.intuit.ru/department/graphics/graphalg
Полезные ссылки
Мнение
Unity3d действительно мощный движок [4], с помощью которого можно создавать настоящие, работающие игры. Однако, как и у любого программного продукта, у него есть, по моему мнению, свои недостатки.
º 2D графика
Считаю, что это самый главный провал Unity. Полное отсутствие нормальной, адекватной работы с 2D графикой. Имеется ввиду создание 2D-игр. Создать такую игру можно, но придется сильно напрягаться и извращаться. Если разработчики Unity смогут доработать этот недостаток, то, это будет очень и очень хорошо.
º Префабы
Хотелось бы видеть больше префабов, каких-то готовых вещей, объектов, например, домов, предметов элементарного интерьера — столов, стульев. Да, это все есть в магазине Unity[5], но, увы, многие вещи там платны, а бесплатные продукты лишь изредка достойны внимания. Отдельный разговор про 3rd person controller — извините, но это просто неприемлемо:
º Оптимизация изображения
Хотелось бы, чтобы работа с оптимизацией изображения под различные разрешения экрана была проще. Ведь достаточно чуть-чуть поработать с преобразованием координат и тогда не надо будет задумываться о том, что надо вычислять размеры, координаты через размер (разрешение) экрана.