Почему я пишу игры на Unity
Здравствуйте. Меня зовут Валентин, мне 14 лет и я являюсь разработчиком игр. В рамках этой статьи хотелось бы рассказать о том, как молодой человек может начать, продолжить и достичь некоторых результатов в разработке игр с использованием движка Unity.
Поскольку у меня есть только мой собственный опыт, то о нём я и расскажу. Живу я в небольшом подмосковном городе и учусь в обычной средней школе. Ну как, средней, близость к Москве вымывает весь золотой песок преподавательского состава, оставляя нам лишь легкие фракции мутного потока отечественной педагогики. Так что, учусь я в школе ниже средней. Настолько, что биологию и химию нам преподает физрук (хотя видно, что он готовится и достаточно неплох), а за полгода учёбы мы прошли только первые 4 параграфа физики, но что-то я отвлёкся.
Впервые в удивительный мир программирования я окунулся в 10 лет. Начал я со Scratch, и сначала было всё отлично — я делал мини игры, даже рисовалку полноценную создал. Но потом, из-за долгого «сидения» на Scratch я побоялся переходить на «нормальные» языки программирования — я не понимал, как я смогу выучить все те строки кода, которые писали люди на Youtube, и просто забивал на это, смотря в сторону красочного и такого лёгкого в своём понимании Scratch. Одно дело цеплять друг к другу разноцветные блоки и совсем другое — в темно-сером окне писать белые буквы. Длилось это больше года, пока на новый год родители не подарили мне книгу «Программирование на Python», иллюстрированное руководство для детей. Тогда я собрал всю свою волю в кулак и решил сделать следующий шаг в познании огромного мира Gamdev’а. Замечу, что мне тогда уже было 12 лет, и как по мне именно 12 лет — идеальный возраст чтобы начать изучать программирование, ведь у ребёнка к этому возраста уже есть самые базовые знания для старта. А пока я учил Python, я смотрел ролики на YouTube, которые рассказывали о Unity, и о том, как легко делать игры на этом движке. Кому не хотелось бы сделать свою игру за 5 минут по ролику с YouTube?
Игра на Scratch
И тут всё завертелось. Коротко об аппаратно-программном обеспечении. В самом начале моей стремительной карьеры игродела, использовался китайский Windows-планшет, купленный в ближайшем магазине бытовой техники — два ядра, два гига ram, 32 гига flash. Хватило его на два года, при очередном обновлении Windows стал занимать всё доступное место и система грузиться перестала. Потом отец, из неведомых закромов, достал рабочую станцию Lenovo — Core i5, 8 Гб RAM. Но, с целью воспитания духа самурая, в качестве операционной системы был установлен дистрибутив Ubuntu. В дальнейшем это привело как к необходимости решать специфические проблемы, так и возможности небрежно бросить в кругу общения: «Линукс это совсем не сложно…». Конечно, это сложно! Когда разработкой в Unity из Linux занято полтора землекопа, и никто не может тебе помочь разобраться, почему не компилируется проект с рекламным блоком от Google!
Конечно, хотелось и поиграть. Спасибо огромное Steam, за то, что дал такую возможность. На имеющейся видеокарте Nvidia Quadro fx580 игра Worlds of Warships шла на 17 fps в оконном режиме, так что со временем, сугубо для целей разработки, была приобретена видеокарта NVidia GTX 1050Ti и fps поднялись до комфортных 60. Но потом и так слабо замечаемая linux-аудитория этой игры стала вовсе игнорироваться, работала только под proton 3 (это эмулятор от Steam), что несколько досадовало. Но я не заядлый игрок, в отличие от многих моих сверстников и мой уровень в Steam равняется нулю. Для меня поиграть в игру — это просто поиск вдохновения, поиск новых идей.
И вот, так совпало, что когда я «добил» книгу по Python, в нашу школу пришел новый математик. Он не был простым математиком, он также был программистом, и собирался открыть кружок по разработке игр в школе. Узнав об этом, я сразу же оповестил его о моих маленьких успехах и достижениях в программировании, после чего он охотно меня записал в кружок. На первом уроке было человек 20, и там он нам рассказал, что же мы будем изучать. Преподаватель собирался обучить нас сначала языку программирования C++, а потом уже C# — потому что языки схожие, и, как предполагалось, будет легко переходить с одного языка на другой. Меня и моего отца выбор такой тактики обучения немного смутил, но мы смирились с этим. На второй урок пришло всего лишь двое — я и ещё один паренёк, с которым я, конечно, сдружился. Мы изучали C++ на stepik.org по курсу от Академии Яндекса (он, кстати, бесплатный, можете сами пройти, если хотите). Я помню, как с моим приятелем мы расставляли кубы и цилиндры в Unity, а потом летали по этому «миру». Спустя пару месяцев преподавания, учитель покинул нашу школу, чему я был, конечно, совсем не рад, но я остаюсь ему крайне благодарен за финальный толчок к реальному знакомству с Unity.
С# я стал учить не один. В Instagram я познакомился с одним пацаном моего возраста, и мы решили учиться вместе, смотря курс на Youtube — «C# для маленьких и тупых». Мне казались тогда очень смешными шутки про стринги, но, если серьёзно, курс очень лёгок в понимании, поэтому моё почтение авторам этого курса. В дальнейшем я познакомился ещё с некоторыми людьми, и мы образовали группу единомышленников, но у всех появились свои дела и мы разошлись.
Happy Piggy Bank
Делался этот проект как-раз под впечатлением просмотра одного ролика на Youtube, при этом я копировал весь код, не понимая того, что я делаю. Игра так и осталась просто наброском, единственное, я смог научиться работать с виртуальным джойстиком и понял, как работают анимации в Unity.
Скриншот из игры
Кстати, графику для всех своих игр я рисую сам. Ещё с детства я любил рисовать различные образы персонажей, локации. Для этого мне служит графический планшет ugee m708 и замечательная программа Krita. Раньше, когда у меня ещё был китайский windows-планшет, я рисовал в SAI мышкой, и даже получались комиксы, но время идёт, и меняются интересы. Ещё умею моделировать в 3D, даже свой планшет смоделировал.
Мой графический планшет в 3D
Look Out, Monsters!
Моя первая симфония, проект, который я делал чуть меньше полугода. Этот проект дал мне понимание того, что и как работает в Unity, я стал понимать структуру кода, его логику. С ним я прошёл от пустого проекта до публикации его на полке Google Play, а потом и блокировки за несоответствие рейтингу, однако потом я смог его разблокировать (и получил опыт общения с техподдержкой Goggle).
Главное меню игрыГеймплэй из игры
Суть игры — бегать по карте и, убивая монстров, получать монеты, тратя их на прокачку оружия. Игра супер сложная, о балансе я тогда не подумал, из-за чего у игроков неплохо так горело в задней точке.
Наверное, главной проблемой при разработке этой игры была ошибка при компиляции проекта на Android. Из-за этого релиз игры отодвинулся на пару месяцев, а ошибка нашлась совсем случайно: я сидел как-то вечером и смотрел ролики на Youtube, и в одном из роликов ютубер перед билдом игры удалил API Vulkan (который нужен для повышения fps в 3D играх), и я решил сделать также. И, о чудо! Честно, для меня до сих пор остаётся загадкой, почему так произошло, ведь в других 2D проектах всё было хорошо, даже с Vulkan, но это работало — и уже радует. Тогда я радовался со своим другом, как в американских фильмах, но при подаче документов для Google Play Console схватил блокировку, потерял 25$, да и вообще упал духом. Но потом, по совету отца, я решил сделать вторую попытку и Google подтвердил документы, спустя всего пару дней :/
Да, истинная правда, что все люди делятся на тех, кто не делает бэкапы и тех, кто уже делает. Look Out, Monsters пришлось переделывать с нуля из-за пары неверных движений. Зато теперь у меня есть rsync для копий системы на резервный HDD и репозитории на github.com.
Ссылка на игру
Также в это время в сети интернет я стал узнаваем (условно) под ником Valter41, но потом изменил его на ValterGames. У меня появился логотип, который претерпел ряд изменений:
Развитие моего логотипа
Arena of the Died — мой следующий проект
Этот проект не смог дойти до конца, но я думаю, что его еще можно будет доделать. Задумка заключалась в том, что есть поле, два игрока и одна цель — убить противника. Сложности пошли на этапе рисования — уж слишком много надо было рисовать, а также создание персонажа в Unity. Каждый персонаж должен был иметь разные уникальные навыки и умения, что для меня стало непосильной задачей.
Арена для игрыПервый прототип
Protect the Princess
Из-за этого проекта у меня и появилась идея написать эту статью. Эта игра в жанре tower defence, где главная цель — защитить принцессу. Разрабатывал эту игру 4 месяца, но это с учётом различных поездок то в лагерь, то к бабушкам, то на дачу. В этом проекте сначала была похожая графика с Arena of the Died, но потом я решил рисовать в векторе для сокращение затрат времени на рисование графики. С разработкой игры тоже были некоторые проблемы: в моей игре есть реклама, но, чтобы её подключить, мне пришлось нехило так помучиться, разбираясь, почему не компилируется проект. Проблему с AdMob я смог решить, установив другие версии SDK и JDK, отличные от тех, что шли в комплекте с движком, и подправить пару строк в файлах игры. Также проблемы были и с плагином Google Play Games, но всё обошлось обычной переустановкой плагина и теперь игра есть в Google Play и регулярно обновляется!
Баннер игрыГеймплэй игры
Ссылка на игру
Dead fight
Этот проект создавался в рамках одного GameJam’а, темой которого была «одна кнопка», а в качестве ограничения 2 дня на работу. Получился пост-апокалиптический мир, где игроку нужно отстреливаться от всяких монстров (да, у меня почти во всех играх монстры, не знаю почему). Я смог занять 1 место и получить небольшую награду, что очень приятно.
Геймплэй игры
Ссылка на игру
У меня были и другие проекты, не получившие дальнейшего развития. Но я покажу вам несколько наработок и скетчей:
РоботЖивой цветокПиксельное оружие для обновления Look Out, Monsters!
Коротко поделюсь своими планами: заработать миллион долларов, купить взаправдашнюю саблю, красный галстук, чёткий костюм, бульдога-щенка и править галактикой со своим отцом. А на самом деле, мне еще предстоит закончить школу, получить высшее образование и найти работу. Очень хотелось бы, чтобы она заключалась в разработке игр, так как создавать новые миры — это возможность выпустить свою фантазию наружу! Встретимся в новых статьях!
Мои контакты: Discord Server, ВК группа, Instagram