tonykot

tonykot

Пикабушник
2659 рейтинг 920 подписчиков 16 подписок 18 постов 7 в горячем
Награды:
10 лет на Пикабуболее 1000 подписчиков
20

Как мы создали фан-игру по мотивам сериала «Разделение»

Привет, Пикабу! Мы с ребятами сделали фанатскую мини-игру по сериалу «Разделение» с блекджеком лабиринтом и козликами. Проект реализован без бюджета, за 5 дней четырьмя энтузиастами. А реплики Милчика озвучил его официальный голос в дубляже, Михаил Хрусталёв! Как это было, зачем всё это и куда идти, чтобы поиграть – описал в этом посте. Букв много, но будет интересно, обещаю)

Примечание для ЛЛ: ссылка на вход в игру в самом низу поста. Доступна с компьютера (через браузер) и на мобилках в виде приложения для iOS/Android.

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

Предыстория

Мы с женой фанатеем по сериалу «Разделение». Каждую среду смотрим серию в дубляже, а после Анастасия идёт в паблик по сериалу, впитывать фанатские теории и выискивать зацепки, которые мы могли упустить) Так, 20 марта мы увидели в паблике комментарий «Вот было бы классно, если бы по сериалу игру сделали ... ». А вечером того же дня пришло осознание «так мы же можем») Так было положено начало этому проекту.

Концепция

В качестве основной идеи взяли «побег с разделённого этажа». Узкие запутанные коридоры Lumon к этому располагают. Стартовая точка, конечно же, антуражный офис отдела обработки макроданных) Готовых ассетов в сети не нашлось, поэтому подключили к проекту ребят из нашей команды. А в качестве платформы – Pixity. Здесь долго думать не пришлось, мы с женой её основатели) К тому же, на платформе уже есть весь необходимый для любой игры функционал (создание персонажа, мультиплеерные функции, инструменты для создания своих пространств и т.п.), и доступна она практически с любого устройства.

В игре мы постарались сохранить всё, за что фанаты любят сериал: минимализм, гнетущую приверженность порядку и абсурдную доброжелательность системы. Чтобы не попасть на авторские, мы не могли делать прямых отсылок к сериалу (поэтому, например, на столе стоит фотография не героев сериала, а аватаров с платформы), но мы всё же заморочились и сделали несколько пасхалок.

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

Фишки, отсылки и пасхалки

Онбординг

При входе в пространство игрок видит несколько окошек в стиле ламинированных карточек (которые несколько раз встречались во втором сезоне). Карточки коротко введут вас в курс дела короткими указаниями, в духе инструкций Lumon.

Звуки и голос Милчика

Первое, что встречает игрока на разделённом этаже – доброжелательное, но настойчивое пожелание хорошего дня от голоса за кадром. Уверен, вам знаком этот бархатный тембр) Это голос безумно полюбившегося фанатам сериала – диктора Михаила Хрусталёва! А точнее Милчик в его исполнении. Мы придумали 10 реплик в его стиле (они будут рандомно воспроизводиться каждый новый уровень) и попросили Михаила поучаствовать в проекте. Мы боялись отказа, но Михаил сказал, что озвучит реплики и это его подарок фанатам! Мы крайне благодарны Михаилу за участие, его голос на все 100% погружает в атмосферу сериала.

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

Сам лабиринт

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

Чтобы добавить соревновательный момент, мы внедрили лидерборд. В нашем случае это плакат в ретро-стиле (отчёт о сотрудниках, склонных к побегу) со счётчиком побегов. На плакате игроки могут увидеть общий топ и своё место в нём.

Терминал (компьютер)

Герои сериала работали за очень антуражными компьютерами, и мы не могли обойти их стороной) Мы, естественно, постарались повторить и рабочие места и сами терминалы. Здесь важно упомянуть, что терминал – не просто украшение. При входе в пространство коллега тонко намекнёт, что на экране компьютера можно посмотреть план этажа. И действительно, вы можете подойти к своему рабочему месту и «заглянуть в экран», чтобы посмотреть карту лабиринта. План можно заскринить или записать путь на бумажке, как делали герои сериала).

Финиш

Выход из лабиринта – это лифт, ведущий наверх (с зелёным треугольником). Его тяжело не заметить, потому что кроме самого лифта мы воспроизвели небольшую лаунж-зону с креслами и журнальным столиком. Кстати, на креслах (как и на своём рабочем месте) можно сидеть. Для этого нужно кликнуть/тапнуть на поверхность, на которую хотите сесть.

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

Козлята

Капелька милоты в давящем пространстве бесконечных коридоров. Одна из дверей в лабиринте открыта и ведёт в комнату с козлятами. Найти её можно по правому краю лабиринта, для удобства комната обозначена на плане этажа. Здесь вы найдёте небольшой луг с тремя козлятами. Одного из них (Эмиля) можно даже погладить ^_^

Пожарный выход

Маленькая деталь, от которой я лично в восторге) Мы добавили в лабиринт ложный финиш в виде пожарного выхода на лестницу. Дверь на лестницу открыта, сквозь неё можно пройти… Но ваш экстра вернётся на работу, что заставит вас снова оказаться перед дверью внутри разделённого этажа! (прямо как в сериале)

И прочие пасхалочки

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

Оптимизация

Небольшое пояснение, почему в игре графика не AAA уровня. Как я уже упомянул, платформа работает в браузере и на мобилках. Это накладывает некоторые ограничения из-за производительности устройств (например, технология WebGL не позволяет использовать видеокарту устройства), поэтому мы не можем использовать реалтайм освещение, отражения и продвинутые материалы для поверхностей. Но есть и плюсы: вся сцена весит около 50Мб (что очень здорово для такой игры).

Как войти в игру

Зайти поиграть можно с любого устройства по единой ссылке:

https://pixity.ru/deep/svr

На компьютерах приложение откроется прямо в браузере. На мобилках потребуется установить приложение Pixity.

В заключение

Спасибо, что дочитали до конца! Мы невероятно кайфанули, работая над этим проектом. Надеюсь, что вам тоже понравилось! Пожалуйста, поддержите пост плюсиком, а если интересно читать о подобных проектах – подписывайтесь. Я очень давно не писал на Пикабу, но если есть спрос – буду постить чаще) Все анонсы и новости Pixity вы можете найти в нашей телеге. Если вам интересны подобные проекты – пожалуйста, подпишитесь. Мы с женой тянем этот стартап своими силами, без пап, мам, инвестиций, спонсоров и т.д. Поэтому ваша поддержка невероятно важна для нас!

Показать полностью 9
38

Исходники мини-игры (вдруг кому пригодится)

Привет, друзья! Наконец дошли руки опубликовать исходники мини-игрушки, которую я собирал в качестве тестового задания для одной компании. На проект потрачено два вечера. Плюс вечер на рефакторинг. Поэтому есть множество багов, сильно за них не бейте =)

Весь код лежит на Bicbucket, а описание, что и как работает - под катом.

И да, в репозитории лежит не проект, а только папка Assets. Поэтому не забудьте назначить объектам теги. Какие? Напишу ниже. Поехали!

Вот так выглядит игра. Просто и скромно. Фичи:

1 - Генерация карты при загрузке уровня. Вообще, карта собирается по словарю. Поэтому массив с объектами с карты можно хранить как угодно. Хоть в текстовом документе. Но в моём случае карта заполняется рандомными объектами.

2 - 6 видов объектов на карте: кирпичные блоки (можно разрушить, но нельзя проехать), бетонные блоки (ни разрушить, не проехать), вода (не разрушается, по ней нельзя ездить, но через неё можно стрелять), кусты/трава (не разрушаемые объекты, в которых можно прятаться. Турельки вас в кустах не видят и перестают стрелять. Из кустов можно успешно вести огонь). Плюс два вида турелек.

3 - Два вида турелей. Одни - направленные и стреляют строго прямо. Вторые - направляют башню на игрока и ведут прицельный огонь.

4 - Система бонусов. Рандомно выпадает 3 вида бонусов: взрывающий окружающие турели, увеличивающий скорость танка и увеличивающий скорострельность танка.


Что касается самого танка - он умеет крутить башней и стрелять в сторону курсора.

Управление: WASD или стрелки - движение танка.

Мышь - направление стрельбы. Стреляем на левую клавишу мыши.

Кстати. На главном экране (сцена Main) есть белый квадрат. Это как бы кнопка "Play".


Внимание! Теги! Если не дать объектам теги - вы не сможете никого убить и ничего разрушить. А поскольку стрелялки в принципе не для пацифистов - давайте исправлять.


Тег Block - требуется всем не разрушаемым объектам. Обратите внимание, что на сцене имеется объект floor и в нём четыре куба. Это ненавистные всеми игроками невидимые стены, которые в моём случае не только не дают танку свалиться с платформы, но и уничтожают объекты пуль, чтобы они не захламляли сцену и не занимали память.

Тег Bullet - вешаем на префаб Bullet (в папке Resources).

Тег Turret - вешаем на оба вида турелей (всё в той же папке).

Тег Grass - вешаем на одноимённый префаб (угадайте, где?).


И напоследок поясню назначение скриптов.

Класс AudioManager - подписывается на все события, при которых должны воспроизводиться звуки. И, соответственно, когда это событие происходит - воспроизводят соответствующий звук.

Класс BonusController - вращает объект (да, лень было возиться с анимацией, реализовал вращение из кода) и при столкновении с объектом "Player" - вызывает соответствующее событие.

Класс BonusSystem - рандомно создаёт бонусы и раскидывает их по карте.

Класс BulletController - рассчитывает баллистику толкает снаряд вперёд.

Класс DestroyableObj - даёт объектам здоровье и возможность умирать.

Класс GameManager - управляет игровым процессом.

Класс MainScreenManager - нужен исключительно для запуска игры.

Класс MapGenerator - отвечает за сборку карты. В моём случае - её генерирует.

Класс Messenger - это система событий.

Классы TankController и TurretController - управляют танком и турельками, соответственно.


На этом всё. Если будут вопросы - пишите в комментариях. Постараюсь ответить.

Ссылка на исходники: bitbucket.org/TonyKOT/tanks-demo


Подписывайтесь, чтобы не пропустить что нибудь новенькое. И не забывайте ставить плюсы, это лучшая награда для автора. Спасибо!

Показать полностью 1
22

GTO-R StarterKit: Шаг 2 (Введение в графический интерфейс)

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


Внимание!!! Длиннопост!


Для начала сделаю небольшое отступление. Я снова отстаю от графика, который вам пообещал. А всё потому, что написание поста занимает очень продолжительное время =) Для примера, на написание предыдущего я потратил 4 часа. И речь сейчас идёт не о работе в юнити, а исключительно о подготовке скринов и гифок, о написании текста и т.п. И дело в том, что всё, что мы будем сегодня рассматривать я сделал уже через день после написания предыдущего поста. ПОЭТОМУ! Я буду думать над упрощением подачи информации. Скорее всего буду дробить всё на маленькие темы, чтобы успевать давать эту информацию.

В общем, не обессудьте. Я готов делиться информацией. Но слишком мало свободного времени на это. Вероятно, я буду кодить и публиковать всё в репозитории на Bitbucket. А уже когда будет время, самое интересное из этого буду описывать здесь, на пикабу.


И так, начнём...

(Не ищите сакрального смысла в этой картинке, это лишь пример из интернетов.)


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


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

Но у вас это может выглядеть как угодно. Данное окошко состоит аж из семи элементов. Я не буду рассказывать обо всех, но акцентирую ваше внимание на необходимых.


Итак. Чтобы создать подложку для нашего окна - щёлкаем правой кнопкой мыши по окну иерархии и создаём UI -> Image. Давайте сразу назовём этот объект "StartWindow", чтобы потом нам было проще ориентироваться в сцене. В сцене вы, возможно, не заметите изменений. Поэтому давайте перейдём в окно Game, в котором у нас появился белый квадрат. Он и будет нашей подложкой. Сразу скажу, что верхнюю и нижнюю полосы я делал точно так же. Давайте кликнем на созданный нами объект в окне иерархии и посмотрим, что там у нас есть на нем в инспекторе и...


О боже! Где наш любимый трансформ?! А хотя нет. Вот он. Только называется он теперь Rect Transform и имеет уже несколько другой функционал. Давайте коротко его рассмотрим.

Первое, что бросается в глаза - непонятный квадрат слева. Спешу вас обрадовать. Это очень важный квадрат. Он позволяет задать выравнивание объекта, относительно экрана. Думаю вы уже догадались, что в отличие от нашего игрового пространства, которое везде будет выглядеть одинаково, экраны пользователей имеют ОЧЕНЬ разнящиеся параметры. Поэтому мы должны дать знать нашему элементу, как себя вести, если экран игрока будет отличаться от окна, в котором мы настраиваем положение элементов UI. В нашем случае всё просто - наше окно должно быть всегда центрировано. Поэтому тыкаем в середину.


Далее - справа от квадрата, который нам уже знаком, красуются две строки, которые тоже нам будут нужны. Первая - позволяет задать смещение элемента относительно той позиции, которую вы выбрали для него "ориентиром". Вторая - отвечает за размер окна. Поиграйтесь с этими значениями. Сделайте красиво и пойдём дальше. Начнём в нашем окне писать.


Для того, чтобы разместить надпись в нашем свеженьком окошке - жмём правую клавишу мыши и создаём UI -> Text. Не торопитесь настраивать его положение. Чуть ниже, в компоненте Text, вы сможете указать сам текст, подгрузить кастомные шрифты и даже помучать их параметры, включая цвет и размер (привет лиге веб дизайнеров, вы не одни играетесь со шрифтами). Настраиваем всё на свой вкус и только теперь задаём положение.


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

Обратите внимание на на пункты Horizontal Overflow и Vertical Overflow. У обоих есть выпадающие списки и если у обоих выбрать Overflow - ваша проблема решится. Теперь, с этими знаниями, сделайте так же все надписи, которые посчитаете нужными.


Поехали дальше. Давайте сделаем что-то более интерактивное, чем простой текст и создадим элемент UI -> InputField. Как можно понять из названия - это поле для ввода (ваш КЭП). Это более сложный элемент уже за счёт того, что при его создании он притянул к себе дочерними ещё аж два объекта. Все они позволяют настроить это поле так, как вы посчитаете нужным. Но я хочу обратить ваше внимание на поле OnEndEdit, которое находится в инспекторе у объекта InputField. Именно оно позволяет создать весь интерактив, но мы вернёмся к нему чуть позже. А сейчас - время кодить!


Прошло уже много времени и я не совсем помню, на чём мы остановились. Поэтому буду повествовать в режиме "что вижу, о том и пою". Для начала давайте создадим скрипт GameManager. Угадайте в какой папке =) Класс GameManager, в последующем, будет управлять игровым процессом. И не пугайтесь тому, что я пишу в коде сейчас (я в тот раз получил претензию на глупый контроллер). Мы начинаем с простого и будем двигаться к сложному. Поэтому ещё сотни раз всё будем усложнять и, как следствие, рефакторить.


И так, вот содержание класса:

Я не буду описывать переменные, а что делают методы - скажу. Самое первое, что у нас выполняется при старте - метод старт (хейтеры и умники, спокойнее, я имею в виду конкретный класс). В нём мы получаем компонент, управляющий нашим игроком и отключаем его. Это сделано для того, чтобы до входа в игру мы не могли крутить игроком и тем более бегать. Далее идёт публичный класс JoinGame, который принимает один параметр - строку name. Обращаю ваше внимание на то, что метод должен быть именно публичным, ибо мы будем обращаться к нему извне. Данный класс сразу же хватает переданное имя пользователя и записывает его в переменную playerName. Откуда метод её получает - пусть пока останется загадкой. Далее мы возвращаем контроль над персонажем в руки нашему пользователю и выключаем окошко авторизации. Всё, мы вошли в игру.


Теперь к вопросу об имени пользователя. Давайте вернёмся в Unity и снова тыкнем на InputField, который мы создали. Там, в инспекторе, у него есть поле On End Edit, которое я уже упоминал. Нажимаем плюсик под ним и в левое поле перетаскиваем объект GameManager из иерархии. А в выпадающем меню, из списка методов выбираем наш JoinGame.


Что же мы сейчас сделали? Всё просто. Когда пользователь завершит ввод и нажмёт Enter, наше поле для ввода самостоятельно оповестит GameManager о том, что ник введён. Сделает он это, обратившись к методу JoinGame и передав ему строку, введённую пользователем.


Чудесно. С этим разобрались. Мы научились выводить экранный интерфейс и даже передавать с его помощью данные в наш код. Но вот мы представились, а как узнать, как зовут остальных игроков? Здесь тоже всё достаточно просто. Давайте знакомиться с интерфейсом, размещаемым в мировом пространстве!


Давайте создадим объект в сцене. Простой шарик. И назовём его Opponent. Этот шарик будет символизировать какого-то другого игрока, играющего с нами по сети. Теперь создадим ещё один объект. UI-> Canvas. Этот объект является своего рода полотном, на котором отрисовываются все элементы UI. И вы можете увидеть, что один такой объект у нас уже есть. Его нам добавила Unity, когда мы создавали фон для нашего окна. Но этот нам так же необходим. Потому, что он будет отрисовывать графику не в окне, а в игровом пространстве.


Для того, чтобы иметь возможность перемещать этот объект по сцене, нам необходимо найти компонент Canvas в инспекторе и в RenderMode изменить ScreenSpace на WorldSpace. Теперь давайте сделаем ему дочерним объект UI -> Text, который будет выводить имя игрока. Теперь вам необходимо установить эти объекты в удобное для вас положение.

У меня это выглядит вот так. И, как только мы всё разместили, давайте сделаем из нашего Canvas-а префаб, перетащив его левой кнопкой мыши в папку Resources. Удалим его со сцены и потом создадим ещё один C# скрипт. Назовём его NetworkPlayerManager. Данный класс будет отвечать за поведение всех игроков, которыми не управляет наш пользователь. То есть за всех оппонентов, играющих с нами по сети. И что же делает наш код...

Для начала (21 строка) мы создаём на сцене копию префаба с Canvas-ом, который мы только что создали. И следующей строкой помещаем его дочерним к нашему интернет-игроку. Далее (24 строка) мы получаем ссылку на компонент текст, который будет выводить ник и присваиваем её переменной labelName. И далее просто ищем в сцене камеру и берём ссылку на её трансформ.


В апдейте мы задаём позицию нашего лейбла и вращаем его в сторону ПРОТИВОПОЛОЖНУЮ игроку. Почему так? Потому, что ось Z у графических элементов направлена от взгляда пользователя в глубину. И если повернуть эту ось на игрока, мы увидим обратную сторону нашего текста. Чтобы этого избежать, давайте сразу вращать правильно.


И далее. В методе FixedUpdate мы обновляем текст надписи. Зачем мы её обновляем? Ну... Пользователь может захотеть сменить ник (когда мы дадим ему такую возможность) и тогда мы не будем наблюдать старый ник до конца сессии. А вот так часто ник обновлять действительно не имеет смысла. И потом мы приурочим это дело к какому нибудь более редкому игровому событию.



Ну вот и всё! Если вы дочитали до этого места, значит вы научились работать с новым графическим интерфейсом в Unity. А так же узнали, как с помощью интерактивных элементов UI передавать параметры в игровые скрипты. В будущем это ещё не раз пригодится.


Спасибо, что дочитали этот пост. И отдельное спасибо, что остаётесь на связи. У меня уже более 1000 подписчиков и я знаю, что вы ждёте новых постов. Но... Работа не даёт публиковаться часто =) Для тех, кто хочет видеть обновления чаще - есть группа в контакте. Созданная специально для того, чтобы держать в курсе особо интересующихся. Я стараюсь делиться там всякими плюшками. А теперь, поскольку код будет опережать посты, там будет информации немного больше.


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

Показать полностью 7
73

GTO-R StarterKit: Шаг 1 (Собираем сцену и простой контроллер персонажа)

Привет, друзья! В прошлом посте я спрашивал, есть ли интерес к пошаговому описанию создания своей мультиплеерной игры на Unity. Вы дали добро... Поэтому - поехали =)

Ах, да. Внимание! Очень длиннопост! + гифки и картинки.

Сразу хочу сказать, что посты будут ориентированы на новичков в геймдеве и программировании. В том числе новичков в Unity. Я буду стараться пояснять многое, но пожалуйста, не ленитесь пользоваться гуглом. Иначе придётся растягивать на очень уж длиннопосты. Все исходники я буду выкладывать в опенсорс и прикреплять unitypack-и. Чуть позже, когда мы с вами прикрутим мультиплеер, сделаю и онлайн демо.


Господа опытные разработчики. Очень прошу вас. Не проходите мимо. Мы собираем OpenSource проект. Своего рода StarterKit для TPS Action. Уверен, такие штуки будут полезны очень многим разработчикам. А особенно - разработчикам начинающим. Давайте сделаем мир чуточку лучше. Давайте учиться сами и помогать учиться начинающим. Предлагайте свои доработки. Не бойтесь исправлять меня. Я сам в Unity относительно новичок.


И для затравки то, что у нас сегодня получится в итоге:

Кто-то, возможно, заметил, что на гифке представленны ассеты из бесплатного набора Unity. Не бойтесь, я буду использовать только готовые модели. Потому, что это быстро. И потому, что это бесплатно. Весь код в проекте будет либо мой. Либо, в последствии, ваш. Я искренне верю и надеюсь, что опытных разработчиков наш скромный проект со временем заинтересует. А пока будем набирать массу, чтобы можно было чем-то удивить.


Итак. Первое, что нам нужно будет сделать - это скачать и установить Unity5. По ссылке это можно сделать абсолютно бесплатно. Затем - найти какой нибудь содержательный видео гайд по интерфейсу Unity, горячим клавишам и прочему-прочему. Я не буду об этом рассказывать, ибо этой информации уже слишком много в сети (кто не умеет делать игры на Unity - пишет об этом уроки. И да, я знаю, что говорю, возможно, в том числе и о себе).


Когда вы уже уверенно чувствуете себя в куче каких-то непонятных окон - давайте начнём собирать сцену. Для этого нам понадобятся бесплатные ассеты от Unity Technologies. Найти их можно в Asset Store на сайте, или прямо в редакторе, по комбинации клавиш Ctrl+9.

Там вам нужно будет найти вот этот вот демонстрационный проект (на картинке выше). И нет, мы не будем работать с VR. Просто визуально эта сцена мне показалась наиболее подходящей. Да и там есть бесплатный персонаж... Ну просто чудо, а не ассет. Качаем и распаковываем. У вас для этой демки создастся отдельная папке в окне project. Загляните в неё. По открывайте там вложенные папки. Посмотрите, где что лежит. И подумайте, почему оно так. Потому, что сейчас мы приступим к созданию собственной структуры проекта.


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


1 Animations - будет содержать анимации и контроллеры анимации. Позже мы разобьём эту папку ещё на несколько, но это будет очень не скоро. Когда наши анимашки начнут накапливаться.

2 GUI - будет содержать файлы, которыми мы будем оформлять наш интерфейс. В ней:

2.1 Fonts - шрифты. Чтобы было, с чем поиграться (да, я веб разработчик, это больное).

2.2 Images - изображения. Тут будут находиться различные барчики и иконки.

3 Models - Понятно из названия. 3D модели, текстуры и материалы. Куда будем девать шейдеры пока не решил, нам с вами до них ещё долго. В ней создайте следующие папки:

Enviorments, Players, Vehicles, Weapons и Small objects. Окружение (игровой мир), модельки персонажей (мы их чаще будем называть аватарами, хотя как пойдёт), транспорт, оружие и различные маленькие объекты, которые, возможно, не относятся к окружению и с которыми мы будем взаимодействовать. Поехали дальше.

4 Resources - здесь будут располагаться префабы. Это тоже что-то вроде моделей, но не модели. Это их экземпляры, уже имеющие какие-то компоненты и... Ай, ладно. Не забивайте голову. Более подробно о префабах я расскажу, когда мы будем делать мультиплеер. Это уже очень скоро. Главное - создайте здесь подпапки:

Players (персонажи), Points (префабы различных чекпоинтов) и Vehicles (транспорт).

5 Scenes - здесь будут находиться наши игровые сцены. Своего рода виртуальные миры. Их будет не много. А мир, так вообще один (скорее всего). Но сцены достойны иметь свой каталог, ибо к ним мы будем часто обращаться. И последнее:

6 Scripts - это наши скрипты. Здесь будет два вложенных каталога:

6.1 Controllers - контроллеры.

6.2 Managers - менеджеры.


Вот тут я немного боюсь породить небольшой холивар. Но в программировании без этого никуда. И так, Unity - компонентно-ориентированный движок, скрипты (даже это слово многим не нравится, но сам редактор предлагает создать скрипт) в котором пишутся на объектно-ориентированном языке C#. UnityScript в топку, ибо это даже не Js, это разработанный под Unity язык с Js подобным синтаксисом. Да, я морально готов к гневным комментариям =)


К чему я это всё. Мы с вами будем создавать отдельные контроллеры. Такие, как PlayerController, WeaponController и им подобные. Это и есть компоненты, которые мы будем "вешать" на наши игровые объекты и эти компоненты будут позволять нам стрелять (если это WeaponController), бегать (если это PlayerController) и так далее. А менеджеры, это какие-то общие скрипты, которые будут управлять не игровыми объектами, а целыми процессами. Например GameManager у нас будет отвечать за игровую логику. А NetworkManager позволит управлять процессами сетевого взаимодействия.


Ладно, с этим разобрались. Сильно не забивайте голову. Всё будет понятно, когда мы начнём с этим работать. Теперь у нас есть готовые ассеты, в которых вы уже ковырялись. И структура проекта. Давайте соберём сцену. На самом деле, я дам ссылку на скачивание исходников. Поэтому моё описание сборки сцены будет походить на гайды "как нарисовать кота". Ну вы поняли. Смотрим скрин ниже:

Во первых по нему вы можете перепроверить свою структуру папок. Во вторых - посмотреть, что вы сейчас будете делать. И в третьих удостовериться, что средствами Unity у вас это сделать не получится потому, что в скачанном вами ассете есть лишняя стена, которую я убрал в Blender-e. Но всё же. Перед тем, как тупо качать unitypack с исходниками, включающими сцену - постарайтесь максимально воссоздать то же самое в ручную.


Посмотрите видео гайды о том, как работать с файлами в Unity и как создавать сцены из примитивов. Потратьте на это день - два или даже три. Посты я буду публиковать со средней периодичностью - один пост по GTO-R StarterKit в неделю. У вас будет время поковыряться самостоятельно. А чем больше вы сделаете руками, тем больше получите опыта. Это правда.


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

Поехали. Для начала - создайте в сцене пустой (Empty) объект. Он и будет нашим игроком, но на уровне абстракции. Назовём его Player. Далее, перетащите в него объект Main Camera. Это можно сделать в инспекторе. Теперь - кликните правой кнопкой мыши по нашему объекту Player и выберите создать -> капсулу. Назовите её Avatar. Это будет телом нашего игрока. Удалите коллайдер с этого объекта. Столкновения у нас должны будут обрабатываться игроком. И теперь примените материал MazeLowMan, который можно достать из скаченного нами ассета. Замечательно! Персонаж уже на 80% готов. Выберите объект Player и посмотрите на сцену. Если вы его ещё не достали, скорее всего он у вас находится ниже уровня пола. Достаньте его за видимые контроллеры (стрелочки) и установите так, чтобы цилиндр еле касался пола.


Теперь займёмся камерой. Заходим в окно Game и в иерархии выбираем объект Main Camera.

Теперь нам необходимо настроить удобный вид из неё. Чтобы картинка подходила для пикабу, мне приходится снимать в окне, шириной 800px. Поэтому я не буду выставлять точные значения. Сделайте так, как вам будет удобно наблюдать за персонажем от третьего лица. Желательно, чтобы камера была смещена не только назад и вверх. Но и немного вправо. Так, в последующем, будет удобнее целиться. Кстати, если камера вначале у вас вообще не рядом с персонажем - поставьте в Transform Position все нули. Так она переместится в самый центр персонажа.


Последние 10% в настройке нашего персонажа - это сделать его твёрдым телом имеющим свою массу. Делается это путём настройки двух компонентов:

И так. Выделяем персонажа Player в иерархии. Добавляем компонент Physics->Capsule Collider. Далее нам необходимо только настроить высоту зелёной капсулы, которая будет являться нашей физической оболочкой. Далее добавляем компонет Rigidbody. Из того же пункта Physics. Этот компонент отвечает за обработку взаимодействия физического объекта с окружением. В нём мы добавляем вес и устанавливаем галочки во всех трёх осях Freeze Rotation.


Для чего это нужно? Риджидбади, при запуске игры, обрабатывает все столкновения и делает просчёт, как повело бы это тело при столкновении. Обратите внимание, что наша капсула (как минимум) вертикальная и с очень неустойчивым основанием. Что бы случилось с такой двухметровой капсулой, стой она у вас без опоры? Она бы рухнула. То же самое сделает и Unity. Это физически корректно, но в данном случае нам это не нужно.


Всё, персонаж готов. Всё, что нам осталось - научить его ходить. Для этого нам необходимо создать новый скрипт. Скрипт у нас будет называться Player Controller и, соответственно, создать его необходимо в папке Scripts->Controllers. Возьмите этот скрипт и перетащите мышью на объект Player. Он добавится к нему, как компонент. Это потом позволит вам управлять нашим персонажем.


Далее - скрин исходника. Огромная просьба. Если вы хотите научиться программировать - набирайте ручками. Это полезно. Если не хотите... То почему вы читаете пост про геймдев? =)

Я не буду пояснять каждую строку. Поясню большую часть моментов, но думаю, описывать переменные (тем более, что они хорошо закомментированы) - не имеет смысла.


Кстати, пока не забыл. Я допустил ошибку по невнимательности. Точнее просто забыл сделать, как надо. Мы создаём переменную avatar. Это единственная переменная объекта, которую необходимо задавать в ручную. Просто захватите объект Avatar в иерархии и перетащите в поле Avatar на компоненте PlayerController. Но только после того, как мы его напишем.


И так самое интересное:

Строка 7 и 11. Такие элементы позволяют выводить заголовки для групп настроек в инспектор. Удобно, если настроек планируется много.

Строка 31. Метод поиска объекта по типу. По всей сцене мы ищем объект типа "камера". Благо он у нас такой один.

Строки 47 и 48. Методы Transform.Translate и Transform.Rotate. Давайте на секунду заглянем в юнити. Выделите в иерархии любой объект и посмотрите в инспектор. Самым первым компонентом везде (кроме элементов UI, но их у нас в сцене и нет) стоит компонент Transform. Он отвечает за положение объекта в пространстве, его размер и направление. Так вот транслейт - двигает объект. Ротейт - вращает. Они оба делают это, используя компонет трансформ.

Строка 51. Тут всё немного сложнее. Да, мы тоже вращаем объект. Но как видно из названия метода - вращаем вокруг чего-то. То, вокруг чего мы вращаем задаётся первым значением. Это позиция игрока. Вторым - ось, вокруг которой вращаем. А третьим - мы должны указать, на сколько собственно вращать.

С 55 по 60 строку мы просто получаем данные ввода. И если с осями мыши ещё понятно, то почему клавиши W A S D тоже считаются осями? Всё просто. Unity - кросплатформенный движок. Чтобы не мучать себя с программированием каждой клавиши на каждом устройстве, в PlayerSettings можно задать настройки осей управления. Оси для мышей и клавиатур работают по умолчанию.

Вот и всё. Очень простой и элегантный скрипт. Я немного поленился и не доделал ограничения по высоте наклона вверх и вниз. Точнее я удалил этот метод при дебаге и поленился восстанавливать =) Поэтому не пугайтесь, что у нас есть незадействованные переменные. Мы их обязательно используем в следующий раз. А теперь заходите в редактор, убедитесь, что вы повесили PlayerController на своего Player-a, установите следующие настройки:

И можете побегать по нашей карте. Там есть один небольшой баг с проваливанием сквозь текстуры. Разберётесь сами, как его исправить?) Если нет - покажу в комментариях.

Спасибо, что дочитали до конца. Отдельное спасибо, если честно выполняли мои рекомендации =) Это пойдёт вам на пользу в будущем. Если вам понравилось - подписывайтесь на меня и следите за новостями. Не забывайте ставить плюсы, это лучшая благодарность для автора )


Самая актуальная информация по проектам нашей команды постится в группу в контакте: vk.com/gtogamedev. Подписывайтесь, там я выкладываю исходники ещё до публикации поста (ибо на написание поста у меня ушло 4 часа). Если есть вопросы лично ко мне - добро пожаловать! Пишите мне на vk.com/tonykotdev, буду рад видеть пикабушников)


И, конечно, ссылка на исходники на Google Drive.

Показать полностью 8
52

И снова, после долгого отсутствия...

Привет, друзья! Я уже успел по вам соскучиться. Правда-правда. Но не хватает времени на написание поста. Спасибо всем, кто остаётся на связи и иногда тыкает меня палочкой, чтобы удостовериться, что я ещё не умер. Да, проект всё ещё жив, и в том числе - благодаря вам!


Заранее предупрежу тех, кто дорожит своим временем. Внимание! Будет много букв. И будет мало конкретики. Пишу пока что по вашим просьбам. Поэтому если ждёте эпичных новостей - можете не читать. И да, в шапке появились две ссылки... По одной я буду публиковать самые актуальные новости, а по второй вы можете постучаться ко мне в друзья или задать вопрос. В любом случае - Welcome!


И так. Как же дела с GTA Vice City?
Честно, не так радужно, как бы мне хотелось. Я растерял бОльшую часть нашей команды и именно по своей вине. Но об этом чуть позже. Времени на проект у меня лично остаётся достаточно мало, но вот с середины июля я решил все выходные (ну или большую их часть) посвещать игре. Сильно не ругайтесь. Я предупреждал, что для меня это - хобби.

Есть ли, что показать? К сожалению, нет. Я, в основном, если и кодил, то занимался скорее исследованиями в сфере создания универсального контроллера персонажа, для таких игр, как наша. С автоматическими просчётами окружения для более реалистичного взаимодействия. Но есть и хорошие новости.


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

Во вторых... Я всё таки решился на опенсорс. Не поверите, но меня наоборот отговаривают открывать исходники. Но... Я всё таки думаю, что будь побольше таких проектов, как наш и делись мы все исходниками... Мы бы сделали огромный вклад в развитие инди игростроя в России. Да, я немножко патриот и хочу добавить свою капельку в это дело.

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


С какими проблемами мы уже столкнулись?

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

Занятость. Это основная проблема для любых добровольных начал. Попробуйте собрать большую группу хоты бы друзей хотя бы на шашлыки и поймёте о чём я =) Не хватает времени у меня, не хватает времени у других ребят и девчат, что сильно тормозит процесс, но это было ожидаемо и с этим мы справляемся.

Работа с командой. Добровольцы - это хорошо. Ещё раз хочу поблагодарить КАЖДОГО кто откликнулся на моё предложение принять участие в проекте. Но чем больше людей работает над проектом, тем меньше времени остаётся на разработку лично у меня. Это не помешает всяким там там "идейным вдохновителям", но для меня это было и остаётся проблемой. Ставить задачи, принимать участие в обсуждениях... При большой занятости (я фрилансер, у меня не нормированный рабочий день) - это съедает львиную долю времени.

Отсутствие профессионалов. Опытный человек вряд ли будет тратить время на такую ерунду. В конце концов, если ты на работе, допустим, делаешь модели - делать то же самое дома, да ещё и бесплатно, вряд ли будет интересно. Поэтому... Мало, у кого можно спросить совета. Но всё же могу выразить отдельную и огромную благодарность Саше. Не буду называть его фамилию, но Саша активно помогал нам советами. Делился своим опытом и дал много ценного команде.

Проблемы импорта. На самом деле проблема гораздо шире, но так будет короче. Суть в том, что ребята работают в разных редакторах. И даже если в одинаковых - они отличаются версиями. А ещё мы экспортируем некоторые ресурсы, с которыми тоже потом приходится долго возиться, чтобы привести их к приемлемому виду... В общем, для подобной работы желательно иметь чёткий Workflow. Но мы не компания и переучивать людей ради этого...


Что-то ещё? Да, конечно. Но это, наверное, основное.


Покажи хоть что нибудь!

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

Для тех кто не помнит (или даже не знает) - это остров морской звезды. На скрине просто экспортированная из оригинальной игры моделька. Её мы и переделываем.

Так на данный момент выглядит мультиплеер. Специально "для друзей" могу сказать, что это бесплатная моделька из Unity Asset Store и используется она исключительно в демонстрационных целях. Кстати. Мультиплеер, пока что, строится на фотоне. Потому, что нет времени писать ещё и серверную часть... Так, что, как бы печально это не звучало, мы можем поднять не более 20 человек одновременного онлайна. Ограничения Free версии.

Вот так вот мы проектируем дома. Они почти полностью похожи на оригинальные. Единственное отличие - мы стараемся сделать архитектуру реалистичнее. Это, кстати, промежуточный результат. Модель ещё не оптимизирована и содержит родные текстуры.

На этом пока всё. Следите за новостями =)



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


P.S. Ещё раз прошу написать в комментариях, нужно ли поэтапно расписывать создание игры? Показывать ли, как самим с нуля написать то, что мы делаем?

Показать полностью 3
190

Мы сделаем свою GTA! Ответы на вопросы.

Привет, пикабу! Пишу вам под впечатлением от реакции сообщества на предыдущий пост =)
Хочу сказать спасибо всем, кому понравилась наша идея. Не ожидал на данном этапе привлечь внимание такого количества людей! А так же огромное спасибо всем тем, кто откликнулся на моё скромное предложение и захотел принять участие в проекте. Ребята (и девчата), вы разбудили во мне веру в человечество! ))

Честно, не ожидал, что столько хороших людей согласится тратить своё личное время на достаточно тяжёлую работу. Я до сих пор не успел всем ответить, на данный момент у меня висит 20 непрочитанных. Не обижайтесь, ребят, я всем отвечу!


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

Расскажу, к чему мы стремимся...

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

Всё я тут не перечислю, но опишу основные онлайновые фишки:

1 - Банды. Собирайте с друзьями (и не только) банды и принимайте участие в погонях, перестрелках и войнах кланов за территории.
2 - Гонки. Каждый перекрёсток - старт для одной из гонок на сервере. Делайте ставки, господа, банк сорвёт быстрейший! И, да... Помните... Никаких правил.
3 - Дезматчи. У вас есть неограниченное количество жизней и оружия. Цель - уничтожить как можно большее количество противников и постараться не умереть!
4 - Разнообразные мини миссии. Ну как мини? Представьте себе ограбление колонны инкассаторов, принадлежащих фракции федералов, ордой игроков с сервера? Чей клан сможет доставить груз до своего дома - тот и сорвёт куш! А может быть победит одиночка?))

А так же множество приятностей в виде покупки недвижимости, бизнеса, эксклюзивного транспорта и широких возможностей кастомизации персонажа (одежда, цвета) и транспорта (цвета, узоры, логотипы).

Теперь интереснее?) Ну и да. Главное - никакого доната!

Абсолютно новая графика. И когда я говорю абсолютно новая, я имею ввиду - никаких старых квадратных машин и персонажей. Никаких серых улиц и блёклых текстур. Да, теперь у нас 100% есть такая возможность. Спасибо за это всем пикабушникам, кто откликнулся на моё предложение!
Но тут стоит предупредить. Не ждите GTA V. Мы - не профессионалы. И если сделаем игру такого качества, попросту не сможем её оптимизировать. Но да! Мы постараемся выжать из движка максимум, на что он способен =)

В общем... Игра задумывается как хорошая возможность отдохнуть вечером с друзьями в мультиплеере. Мы будем всеми силами стараться не испортить атмосферу оригинала, но привнести в неё всё лучшее из современных игр. Получится ли у нас это? Не сомневайтесь =) Единственное, я не устаю повторять - проект это потенциальный долгострой. Возможно, через года полтора мы с вами сможем поиграть в какую нибудь сырую бета версию. Но когда игра дойдёт до релиза - этого вам не скажет никто

У нас впереди очень много работы, но теперь нас больше! Ещё раз спасибо всем, кто уже откликнулся на моё предложение! И по прежнему мы будем рады видеть в наших рядах добровольцев! Контакты я выложу в комментарии под постом.

Спасибо, что следите за обновлениями!

Показать полностью 3
1416

Мы сделаем свою GTA... [продолжение, после ОГРОМНОЙ паузы]

Привет, пикабу! Я уже очень давно публиковал информацию о том, что начал разработку GTA VC на движке Unity. И не один, а с небольшой командой. К нам постепенно присоединялись пикабушники... Но по моей вине многие ушли. 


Ребята, я публично прошу прощения за долгое отсутствие. Очень много работы, я часто работаю до пяти утра, потом встаю в 10 и снова за работу. Но проект я не забыл. Более того, есть ребята, которые проект не бросили и успешно работают. В этом посте я покажу, что за это время было сделано. Увы, без меня.


Начнём с самого главного. Пикабушник с ником @Sarokuzo, в одного (!!!) всё это время собирает карту. Всё начиналось с экспорта родных моделей из VC. Сейчас мы уже готовим всё это дело к использованию в движке Unity. @Sarokuzo, спасибо тебе большое за то, что откликнулся на моё скромное предложение и со всей ответственностью подошел к делу.

Так же огромное спасибо пикабушнику @MichanIV. Он помогает делать красиво =) Благодаря ему у нас потихоньку появляется пользовательский интерфейс (фоновая картинка найдена в интернетах, у нас, пока ещё, не так красиво).

Ещё, некоторое время, с нами работал пикабушник по имени Юра. Я не брал разрешения на деанонимизацию его профиля, поэтому будет просто имя. Главное, чтобы он себя узнал =)
Благодаря Юре я сильно продвинулся в понимании работы с анимацией в Unity. Точнее говоря с конвертацией анимации из GTA IV в Unity. Поверьте мне, это очень непростой процесс и до конца мы разобраться так и не смогли, но без него я бы так не продвинулся.


В общем... Ребят, огромное спасибо всем, кто откликался на моё приглашение к сотрудничеству. Вы взяли на себя смелость помочь в создании такого непростого долгостроя =) И ещё раз прошу прощения. Особенно у программистов. Они так и не начали работать из-за того, что я так и не подготовил базовые классы.


А тем, кто меня читает и хочет попрактиковаться в работе с 3D (или 2D) графикой - я буду рад видеть вас в команде разработчиков нашей GTA! Благодаря пикабу мы доведём проект до конца. Я вам обещаю =) А напоследок - мейн скрин:

Показать полностью 3
107

Разработка 2D игры на Unity (5/5) "Сборка проекта"

Привет, пикабу! Спасибо, что проявляете интерес к моему далеко не профессиональному творчеству =) И спасибо знатокам - за замечания строго по делу. Этот пост будет крайним в этой серии, но если вам будет интересно узнать, как портировать проект на мобильные устройства - я напишу ещё один, бонусный пост по этой игре.


Хронология постов:

1 - Знакомство с редактором.

2 - Подготовка сцены.

3 - Основы скриптинга в Unity.

4 - Логика игры. И продолжение поста о логике.

А так же ссылка на исходники, расположенные на гуглодиске. По прежнему без кода.


Начать хотелось бы с того, что я вспомнил об одной ошибке. Я забыл добавить в пост проверку нажатия клавиши пробел. Как следствие - игра бы не запускалась =) Но это даже хорошо. Будет возможность сразу столкнуться с ежедневной рутинной задачей программиста - поиском багов. Будем считать, что эта ложка дёгтя для того, чтобы не очаровываться.

Но, всё равно прошу у вас прощения за допущенную оплошность.


В этом посте я расскажу, как делается сборка проекта под ОС Windows. Задача эта неимоверно проста, поэтому букв тут будет не так много. Для начала, открываем меню File, выбираем пункт Build Settings, и в открывшемся окошке (в самом низу) ищем кнопочку Player 

Settings. Нажимаем её, и нам откроется вот такой чудесный вид:

Сегодня всё, что нам понадобится - поместилось на одном скрине. Но, обо всём по порядку.


Окно Build Settings содержит в себе минимальные настройки, необходимые для сборки проекта. Первое, что необходимо сделать - добавить в проект нашу сцену. Делается это одним из двух способов, либо нажимаем кнопочку Ad Current, либо перетаскиваем файл сцены из окна проекта и бросаем его в поле Scenes In Build.


Обратите внимание на цифру ноль, справа от названия файла сцены. Это её порядковый номер. Если сцен в вашем проекте несколько - помните. Та сцена, что должна будет грузиться первой - должна получить идентификатор ноль. Иначе - случится ужасное. Unity автоматически подгрузит вместо вашего чудесного вступительного ролика - сцену, что случайно получила главный идентификатор.


Далее - нам необходимо выбрать, под какую платформу мы будем делать сборку. Тут сразу оговорюсь, что для сборки под Android, вам необходимо будет установить дополнительное ПО. Самое важное - Android SDK. Без него Unity откажется производить сборку. А без остального софта - откажется вставать сама SDK. Поэтому закатываем губу и выбираем пункт PC, Mac & Linux Standalone. Справа - выбираем платформу Windows и поддерживаемую архитектуру. Фактически - готово. Чтобы показать игру маме и бабушке - нам достаточно того, что мы уже сделали и можно смело нажимать кнопочку Build And Run.

Ну а для тех, кто всё таки хочет учиться - расскажу ещё о нескольких настройках, необходимых для того, чтобы сборка выглядела прилично. Обратите внимание на инспектор. Если там ничего нет, ещё раз нажмите кнопочку Player Settings в окне сборки.


Здесь нам понадобится всего несколько пунктов:

Поля Company Name и Product Name - позволят указать название игры и разработчика.

Default Icon - это иконка нашей игры. Можете нарисовать что нибудь более красивое, я просто поставил один из спрайтов нашего волка.

В окне Resolution & Presentation в пункте Resolution снимаем галочку с Default Is Full Screen. Во первых потому, что графика игры - не торт. А во вторых, чтобы избежать конфуза с выдёргиванием компьютера из розетки, ибо мы с вами не предусмотрели кнопку выхода.

В той же вкладке, но в пункте Stanalone Player Options, необходимо выбрать Disabled в пункте Display Resolution Dialog. Этот пункт позволяет отключить окошко, выводящее настройки управления в игре, перед запуском приложения.


Ну вот и всё. Теперь можно нажать Build And Run в окне сборки и наслаждаться игрой. Напомню, что моя цель - не научить вас, как НАДО делать игры. А помочь сделать первые шаги в сторону игровой индустрии. Поэтому, у вас остался простор для доработки игры. Сделайте увеличение скорости игры, по мере её прохождения. Выводите экран победы или поражения. Экспериментируйте, друзья! Это интересно!


Спасибо, что дочитали серею до конца. Огромное спасибо всем, кто на меня подписался. Очень надеюсь, что вам было интересно. Пожалуйста, напишите в комментариях, будет ли вам интересна серия постов по созданию трёхмерной игры? Это будет шутер от третьего лица, наподобие игры Alien Shooter. А главным героем станет - Марио =)


Не забывайте ставить плюсы, чтобы поблагодарить автора. Это лучшая мотивация, чтобы сидеть ночью и писать. А так же подписывайтесь, чтобы не пропустить новые посты! ;)

Показать полностью 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества