December 1, 2019

Стример-разработчик: Титаник в пустыне

Расскажите о том, как вы вообще решили связать себя с геймдевом. — Мне было лет 7-8, мне купили китайский клон NES (Nintendo Entertainment System) в форме клавиатуры (там были ещё обучающие игры, связанные с печатью), я полюбил видеоигры, решил, что вырасту и буду делать видеоигры. Родители надеялись, что обучающие игры компенсируют вред от приставки.

Какие игры тогда вас особенно впечатлили? — Да практически все, что мне попадались под руки. «Денди» через два месяца сломалась, потом была «Сега». И знакомство с половиной игр оттуда заканчивалось тем, что я брал общую тетрадь в клеточку и рисовал продолжение.

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

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

Кстати, пример выше — третьи «Черепашки» с «Денди», которые у нас между собой назывались «по пляжу» в честь первой локации — один из лучших beat them up'ов на платформе.

В какой момент детское увлечение переросло во что-то более осознанное? И в чём это проявлялось? — Ну, оно никуда не перерастало. Оно просто там сидело, как осознание того, что я буду делать видеоигры. Не сейчас, не сразу, но когда-нибудь точно. В 13 лет начал пытаться что-то программировать. Потом сказал родителям, что буду программистом. Поступил. Была курсовая в виде видеоигры.

Но там вылезла другая проблема.

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

Сейчас я себя нагрузил выше крыши, но когда доделаю «Explaining every string» (стрим-проект героя интервью — о нём позже. — Изнанка) придётся три освободившихся вечера выделить на то, чтобы удариться в живопись. Учиться, потому что мои художественные навыки остались на уровне четырёхлетнего ребёнка. Будет очень весело.

Какие ещё подводные камни стоит ожидать человеку, который хочет работать в геймдеве и идёт учиться на программиста? Так ли просто попасть в игровую индустрию, если ты хороший программист? — От неё я пока предпочитаю держаться подальше. Моя основная работа с геймдевом никаким боком не связана.

Какой у вас опыт разработки игр? Сколько играбельных экземпляров есть в вашей практике? — Как я и говорил, была курсовая. Это один, единственный. Несколько раз пробовал поиграться с разными движками, всё никак не мог что-то начать, чтобы это ушло дальше сотни строк кода. Потом стал откладывать до того момента, пока не найду время и силы на то, чтобы научиться рисовать. Полгода назад, в марте 2019 откладывать перестал.

Как пришли к идее стримов формата своеобразной открытой разработки? Вы изначально хотели именно в таком формате делать игру или позже решили? — Хотел озвучить свои любимые статьи из ЖЖ — купил микрофон. Хотел попробовать вести канал на ютубе о баттл-рэпе — купил вебку. Захотелось удобной мебели — купил кресло. Не стримерское, но похожего формата. Да и идея стримить где-то сидела в подкорке. А потом решил, что буду делать видеоигру. И буду рассказывать о том, как буду её делать. То есть у меня сошлись возможности, желание (стримить и заниматься геймдевом) и необходимость.

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

Какой должна быть итоговая игра? В каком жанре она будет, и когда, предположительно, может закончиться разработка? — Ну, жанр этот называется twin-stick shooter. И посреди разработки я его менять не буду. Там уже есть четыре уровня. Исходя из того, что я успел за сто стримов, думаю, в пятьсот могу уложиться. Буду чередовать добавление уровней и других вещей, вроде геймплейных фич, настройки через главное меню.

В итоге хочу сделать около двадцати уровней. 1-1, 1-2, 1-3, 1-4 (босс), 2-1, 2-2, 2-3, 2-4 (опять босс), и так до 5-4. Ну, и ещё, может быть, 6-1 для последнего босса. Я всё-таки детскую мечту исполняю, а эта система нумерации уровней меня почему-то тогда очаровывала.

Расскажите немного о том, как работает выбранный вами жанр. Чем он отличается от, например, Shoot 'em up'а? — Twin-stick — это из-за схемы управления — один стик отвечает за движение, а второй за стрельбу. Обычно в играх этого жанра ещё идёт очень сильный упор на очки. Их набор, множители, комбо различные. Тут вы меня подловили, конечно. По форме это Twin-stick, но то, как игра работает, у меня ближе к «шмапу». У меня это полоса препятствий с «убей их всех», где из соревновательного я пока добавил только таймер.

На какие уже вышедшие игры ориентируетесь при разработке? — Очень сильно ориентируюсь на эстетику старых игр. Палитра от NES при рисовании спрайтов, например. А сейчас занялся тем, что пишу эмулятор звукового чипа NES для своей игры, чтобы создавать музыку с его помощью. То есть буду использовать те же инструменты, что и разработчики на NES, по сути. Ну, если рисовать не умеешь, то какие ещё варианты? Ну, и мне повезло, что звуковые эффекты, которые у меня получаются с помощью Bxfr, похожи на то, что делает очень старое железо.

Super Meat Boy — пытаюсь воссоздать ощущения оттуда. Но я и близко не Эдмунд Макмиллен, так что вряд ли оно так выйдет. Танчики на «Денди» ещё. Не сказать, чтобы я их любил в детстве, так что тут игра на ностальгии.

Расскажите о программном обеспечении, используемом вами при разработке, чтоб я, человек далёкий от технической части производства игр, понял, зачем вам нужны те или иные инструменты. — Самое основное и необходимое, наверное, — это движок. То, что я использую, называется Monogame, и это не движок, а фреймворк. Это такой набор библиотек, который отличается от просто библиотек тем, что определяет, как твоя программа будет выглядеть архитектурно, то есть даёт некоторый каркас, поверх которого ты делаешь своё. Например, есть фреймворк ASP.NET, поверх которого ты делаешь свои сайт, так и Monogame — ты поверх каркаса, который он предлагает, делаешь игры. Чем фреймворк отличается от обычного движка? Тем, что это именно набор библиотек, предлагающий каркас, но там, например, нет своей среды разработки. Кстати, про Monogame я даже писал статью на DTF ещё незадолго до того, как решил, что буду делать видеоигру.

Так как у нас есть только фреймворк, нужна какая-то IDE (Integrated Development Environment — это набор программ для создания программ), чтобы с ним работать. Для этого я использую Visual Studio 2017 Community Edition, так как я шарпист и имею уже лет пять профессионального опыта. Это программа, которая позволяет тебе собрать игру из исходников. Там используются и другие инструменты, но я настроил Visual Studio так, чтобы после того, как я нажимаю кнопочку «собрать», у меня в папку вкладывалась уже собранная игра с ассетами, законфигуренная как надо, чтоб её после сборки можно было запустить и играть.

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

Ещё бы я хотел рассказать про Tiled. Вы, наверное, можете заметить, что никто в здравом уме и доброй памяти не будет рисовать разные куски травяного дёрна, например, и хранить их в памяти. Очень многие элементы переиспользуются в двухмерных играх и особенно в старых. Там берётся tile set (набор кубиков, из которых строится уровень, строятся фоны уровня, платформы и т. д.) и потом из всего этого счастья, как из конструктора, составляется tile map. Если говорить совсем просто, Tiled — это редактор уровней. Полезная в хозяйстве вещь, у многих движков написаны библиотеки, чтобы с ним интегрироваться, там в принципе открытый формат. Рекомендую ознакомиться, хотя я его использую, к сожалению, не на полную катушку. Кое-какую информацию об уровнях я храню в прилагающемся JSON файле (JavaScript Object Notation) — любимом теперь в индустрии формате передачи информации так, чтобы её понимал и человек, и компьютер.

Ещё один инструмент — Bfxr. Это такой сайтик, с которого в качестве отдельного приложения можно выкачать или использовать прямо в браузере простенький инструмент для создания звуковых эффектов. Он хорош тем, что не требует от тебя разбираться особо — ты просто жмёшь на кнопку «сделай мне звук взрыва», и он делает звук взрыва, а ты дальше можешь почитать, что какой ползунок значит, немножко их подвигать или перемешать рандомом. У меня получается только рандомом, если честно. Очень полезная вещь, если вы хотите какие-то звуковые спецэффекты. Если вас не смущает, что звучат они, мягко говоря, старомодно, зайдите попробуйте.

Notepad++. Это любый текстовый редактор многих программистов. Если ты не редактируешь текст, связанный с программированием, в специальной IDE (Интегрированная среда разработки), то ты, скорее всего, будешь использовать Notepad++, он для этого очень удобен. Например, те же JSON файлы, в которых я храню очень много информации, там практически весь баланс, информация об уровнях, где какой враг стоит, я радактирую с помощью Notepad++. И он идеален, чтобы делать заметки. Даже если не сохранишь, все эти вкладки останутся, когда ты закроешь программу.

Есть ещё Git, который позволяет хостить свой исходный код на GitHub, например. А вообще, Git — это система контроля версий, то есть это что-то вроде машины времени, которая позволяет возвращаться в прошлое, хранит всю историю, помогает вести разработку совместно. Когда два человека сделали изменения одного программного кода и их надо как-то совместить, это превращается в боль и страдания. Когда программистов больше двух, как говорится, земля вам пухом. Как раз тут и нужна система контроля версий.

А индустриальный стандарт на данный момент — это Git. Он помогает делать ветки с разными изменениями, помогает относительно безболезненно их сливать вместе. В связке с ним я и использую GitHub, где вы можете все мои исходники посмотреть.

Расскажите о самом принципе ваших стримов. Установили ли вы для себя какие-либо строгие правила или всё идёт так, как идёт? — Стараюсь делать это три раза в неделю.

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

Хотя некоторые принципы есть. К любому видео таймкоды, где как минимум зафиксировано время, когда я вносил определённые изменения. Ссылка на эти изменения в GitHub. И под каждым коммитом (набор изменений в Git) ссылка на видео. А после этого выкладка видео в паблик и на сервер в Дискорде. Вот от этого я никогда не отступаю.

Вы ожидаете, что эта игра будет самодостаточным продуктом, который можно будет без стыда показать тем, кто совсем не знаком с вашими стримами? Или же это, в большей степени, делается ради самого процесса производства во время стрима? — 50/50. Я делаю всё, что могу, и я буду делать не демку, а полноценную игру, которую можно пройти от начала до конца, но то, что у меня из необходимых для геймдева навыков только программирование и ещё, быть может, работа с текстом (ещё одно моё хобби подсобило), не даёт мне развернуться. Больше всего мешает отсутствие художественных навыков.

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

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

Один из аргументов в пользу открытого ПО — не нравится, переделай под себя. Кстати! Я принимаю на стримах идеи и просьбы. Правда на их исполнении может уйти много времени. Где-то в районе 20-30 стрима меня попросили добавить «какого-нибудь трансформера». Я решил, что это будет первый босс. И чтобы вы думали? 99-ый стрим — первый босс торжественно обзаводится своей отдельной полоской здоровья вверху экрана. Уровни 2-X будут пустыней, насколько я смогу её изобразить, потому что мне это предложили на стриме. Я уже не помню, когда, и не уверен, что помню кто именно, но тем не менее.

Допускаете, что постепенно благодаря просьбам на стримах игра станет чем-то совершенно отличным от того, что вы представляли себе сами? — Вряд ли. 6-7 часов в неделю тоже не дадут развернуться. Да и некоторые вещи добавлять не захочется, даже если очень сильно попросят.

Что самое странное просили добавить? — Босс — «Титаник». Это очень странно. Но это и близко не дотягивает до того, что бывало в старых играх порой. Меня до сих пор впечатляют осьминоги с балалайками, которые закидывали нотами ниндзя-котов в старой игре по мультику на NES.

Причём откладывать просьбу не хочется. Поэтому босс «Титаник» будет у меня в пустыне. Даже не спрашивайте как

А вы сами хотите сделать эту игру в каком-то привычном массовому игроку сеттинге или же что-то совсем необычное придумали? Над сеттингом особо не задумывался. Просто какой-то робот уничтожает других роботов. Потому что роботов проще рисовать.

Зрители вам помогают советом во время трансляций? Может, иногда, наоборот, вводят вас в заблуждение? — Ни то, ни другое. Мои стримы чаще интересуют таких же детей, каким и я был когда-то. Один из моих постоянных зрителей пилит потихоньку свою версию Hotline Miami. Потому что эта игра его так впечатлила. В начале меня смотрели начинающие программисты, которым я сам, скорее, что-то объяснял. Потом, правда, образовательная составляющая отвалилась. Тупо кончились вещи, которые надо объяснять. Правда в ближайшие стримов 10 мне будет что рассказать.

НЕпрограммист сможет хотя бы в общих чертах понять, о чём речь на ваших эфирах? — Если будет смотреть с самого начала, однозначно да. Если спросит на стриме, однозначно да, потому что я люблю объяснять всякое разное. Если откуда-то с середины, увы, вряд ли. Первый стрим я начал с того, что попытался в общих чертах объяснить, что такое ООП. Я вообще надеялся, что смогу сделать так, что не программист сможет легко пойти моей дорогой, следом за мной. Не скажу, чтобы получилось на 100%.

Но, в целом, вам нравится вектор проекта? — Нравится сам процесс. Нравится результат. По крайней мере, то, что касается геймдева. Образовательная часть мне даётся чуть хуже. Но кое-что хорошее вышло и на этом фронте. Например: https://habr.com/ru/post/446816/ С точки зрения популярности — ну, такое себе, иначе бы не заказывал рекламное интервью. С одной стороны, я рад, что я этим занялся. С другой стороны, я понимаю, почему этим никто больше не занялся.

А какое среднее количество зрителей на одном эфире? — В начале 2-3 человека. Теперь два человека одновременно — нечастое явление. Но в записи меня продолжают смотреть. Лайки ставят. Да эфира в полном одиночестве пока на моей памяти не было.

Какие элементы разработки больше всего выводят вас из себя, а какие, наоборот, доставляют удовольствие? — Меня очень тяжело вывести из себя. А удовольствие распределено поровну. Думаю, что тут ещё можно уточнить, но понимаю, что мне нравятся все аспекты этого процесса. Но самое приятное — это режим работы, при котором я не останавливаюсь. Ты не забьёшь, не отложишь, у тебя ведь стрим завтра в восемь вечера.

Один ваш стрим обычно длится не менее двух часов, а выпусков уже чуть больше сотни (это уже более 200 часов разработки). Без объяснения каждой строчки кода данную игру можно было бы полностью сделать за данное время или нет? — Однозначно нет. Но 200 часов — это чуть больше одного человекомесяца. Хоть это единица, как мы знаем из классики, и мифическая.

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

Подобные стримы с «живой» разработкой игр — это редкость? У вас есть «конкуренты»? — Точно знаю, что есть туториалы. Знаю, что есть люди, которые программируют на стримах. Хоть их и мало. А вот о том, чтобы игры от начала до конца разрабатывали в кадре, не слышал об этом.

Что по поводу донатов? Удаётся как-то заработать на стримах? — О-о-о-о-о. Мне донатили, кажется, 4 раза. Собралось аж 568 рублей. Но благодаря стримам, меня взяли на нынешнюю работу. Так что я даже хз, что тут отвечать.

Упрощается ли процесс разработки игр? То есть, грубо говоря, сможет ли случайный гуманитарий, у которого в голове возникла игровая механика и сюжет, без знания программирования сделать нечто играбельное в ближайшее десятилетие? — Просто посмотрите, что сделал один упоротый художник-аниматор, используя тот же фреймворк, что и я, в 2012-ом году: https://store.steampowered.com/app/236090/Dust_An_Elysian_Tail/ И да, инструменты упрощаются. Есть движки, которые упрощают создание игр именно определённого жанра: MUGEN, RPG Maker.

Есть вещи, рассчитанные на тех, кто программирования не знает вообще. Но я бы советовал чуть-чуть программирование изучить, а потом освоится с чем-то промежуточным между «для детей без знания программирования» и «профессиональным инструментом». Если ВН-ку с помощью Ren'py можно сообразить вообще программирования не знаю и не умея, то Factorio без ХОРОШЕГО умения работать с абстракцией и реализовывать какую-то модель игры вы точно не сделаете.

У вас есть планы/мечты по работе в игровой индустрии? Если бы собрались там работать, то какая бы студия была для вас идеалом? — Что-то небольшое, где я буду если не создавать ту игру, что я хочу, то как минимум сильно влиять. Планы если и есть, то очень далёкие. Я, кажется, знаю, как я буду связан с геймдевом в ближайшие года два .

Когда разработка игры подойдёт к завершению, планируете её распространение? Будет ли это платное или бесплатное распространение? — Если вдруг кто-то захочет мне занести денег, останавливать не буду. А что до распространения, то начиная с 100-го стрима я наладил процесс выкладки на itch.io. Одна консольная команда и результат моей работы заливается на сайт, где тусуется мелкое инди с моделью оплаты «сколько не жалко». Платное распространение, кстати, в моём случае абсолютно бессмысленно. Я полностью открыт. Каждая строчка создаётся на видео, и заливается на гитхаб. Любой может скачать мои труды и использовать их.

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

На стримах возникали какие-либо неожиданные, выбивающиеся из всего происходящего, ситуации? — Кроме «ой, что это такое, придётся лезть в гугл, чтобы выяснить, что я понял или сделал не так», редко. Но однажды была на удивление идиотская ситуация. Совсем недавно. Я включил вебку на весь экран, и так её и оставил. На все полтора часа. К счастью, на том стриме я просто рисовал спрайты. Так что в начале следующего я просто продемонстрировал нарисованное.

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

Паблик

Канал на YouTube

Игра (обновляется после каждого стрима)

Исходный код

Дискорд-сервер

Плейлист и навигация по нему (комментарии к изменениям содержат ссылку на видео).