Антон, ты куда пропадал!?

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

Не смотря на необходимость работать — этим летом я все же решил устроить себе небольшой отпуск. Но отпуск был необычным, так как необходимость в работе и следование рабочему графику никто не отменял. Отпуск заключался в том, что я работал расслаблено, много проводил времени над изучением различных материалов и подводных камней: как в плане Unity, так и в плане будущей игры, а так же перестал готовить и публиковать материалы для блога. Следующим летом у меня не будет возможности сделать себе отпуск, потому что это будет самая жаркая пора разработки Zombotron — завершение игры и подготовка к релизу. Да-да, на вторую половину 2017 года запланирован релиз игры! Успею ли я, или это будет очередной долгострой? Скоро узнаем, ждать осталось не долго.

Что было сделано за лето?

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

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

Немного о Unity

После многомесячной «боли» и радости с Unity мне довелось сделать много различных открытий. Но я не буду сейчас все подробно описывать, расскажу кратко о сути.

Если заглянуть на несколько лет назад, то можно понять что Unity родился и начал развиваться, как альтернатива или даже «убийца» Flash технологии. Хотя, практически сразу пути Unity и Flash начали расходиться (платформы почти не конкурировали), но даже сейчас можно выявить некоторые общие черты между ними.

Может быть кто-то помнит, как появился и развивался Flash? Первая версия языка ActionScript очень проста и была рассчитана для использования художниками и аниматорами, которые без специальных знаний программирования могли бы создавать интерактивные мультики, презентации и даже веб-сайты. Вот с тех самых пор и появилось понятие «код в кадрах» — это когда на любой момент (кадр) анимации можно было вписать какой-то код и он мог что-то делать — это позволило добавить интерактив в анимации. Этот подход во Flash прошел через всю его жизнь и для больших проектов (если кто-то использовал код в кадрах) — мог становиться настоящей проблемой! Я не буду сейчас рассказывать о том, почему код в кадрах - это плохо. Суть лишь в том, что разработчики Unity позаимствовали эту идею и развили. Как результат: игровой разработчик на любой игровой объект в Unity может повесить сколько угодно разных скриптов с разным функционалом или игровой логикой — это безусловно удобно, но и вместе с тем опасно, как для производительности, так и для стабильности всей программы в целом. ? причин тому может быть много. Как итог: произвольные скрипты с произвольной игровой логикой на произвольных игровых объектах — рано или поздно приведут к полнейшему хаосу в архитектуре игры, как и в случае с «кодом в кадрах».

Кто хоть как-то уже сталкивался с игровой разработкой, знает, что каждый игровой объект не может взаимодействовать один ко всем — так как это сложная для производительности процедура (проверять каждый игровой объект на возможное взаимодействие с каждым другим игровым объектом). Поэтому должна быть какая-то система (ядро/движок), которая решает поставленные ей задачи, например разбивает пространство на сектора и проверяет взаимодействие объектов друг с другом только в пределах своего сектора (очевидно же, что объект находящийся на одном конце карты не может взаимодействовать с объектом на другом конце — значит им не требуется дорогостоящая проверка). ? тут возникает резонный вопрос: как правильно все это организовать в Unity!? Какой он «путь использования Unity»?

К сожалению, однозначного ответа на этот вопрос не существует. Каждый делает так, как ему кажется правильным или удобным — хочешь проверяй все объекты ко всем, или придумывай какую-то свою архитектуру и механизм. ? вот отсутствие какого-то верного подхода к организации архитектуры игры — это минус. Хотя с другой стороны, удобно что Unity не ограничивает своими шаблонами и позволяет проектировать игру так, как нравится разработчику — это плюс, но только не для начинающих разработчиков.

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

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

Стоит ли выбрать Unity для разработки именно вам? Возможно, но прежде оцените удобство и доступность других движков — не нужно поддаваться рекламе, найдите то, что подходит именно вам!

Ранее я не раз отзывался о Unity крайне положительно. ? тут я хочу признаться, что в некоторых вещах в отношении Unity я сильно ошибался! Причиной тому, хорошая рекламная компания Unity и моя неосведомленность в данном инструменте. В любом случае, я рад, что выбирая между AIR и Unity я все же выбрал Unity, но я не очень рад тому, что прежде я не попробовал и другие движки.

На текущий момент, я придерживаюсь мнения, что игровой разработчик не должен прирастать к одной платформе или к какому-то единственному инструменту и строго следовать этому «культу». ?гровая разработка — это не культ игровых движков и инструментов, это искусство создания интерактивных развлечений. ? успех игрового разработчика зависит далеко не от используемой им технологии и/или движка, а от его креативности и навыков в игровом дизайне. Поэтому…

Об инструментах

Когда я начал свой переход на Unity я думал о том, что вместо уроков о ActionScript я начну писать о Unity — о том, как «правильно его готовить», где брать полезные инструменты или как что-то сделать самостоятельно. Но, поняв всю суть Unity, стало очевидно, что нет «правильного использования», что очередная находка или решение какой-то задачи — это очередной никому не нужный костыль или велосипед. Да и информации о Unity в сети очень много. К тому же вся эта информация устаревает очень быстро — буквально с каждым обновлением Unity.

А еще, я давно заметил, что аудитория моего блога разделилась на две условные группы: «разработчики» и «игроки» — первым интересно почитать про разработку, но тонкости и подводные камни уже не так интересны, так как большинство читателей-разработчиков уже опытные и состоявшиеся разработчики игр. А вот вторые, игроки — им интересно непосредственно про ход разработки, как игра меняется, что появляется, как рисуется, но при этом совершенно не интересны технические подробности в виде кода, исходников инструментов и других мало понятных терминов. В итоге, я регулярно возвращался к мыслям об этом и думал, что же делать с разделившимися аудиториями. В итоге, наконец-то все встало на свои места!

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

Таким образом, новых записей о разработке на Unity с кодом и библиотеками от меня ожидать не стоит, за исключением редких картинок в Twitter ;)

О разработке Zombotron

Что до самой игры, то, со всей ответственностью заявляю: разработка игры идет полным ходом! Фундамент для проекта готов, а значит пора начинать работу непосредственно над контентом для игры. А где контент — там больше скриншотов, интересных историй и даже видео-роликов!

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