Gamedev chelovekbeznika
4 603

«Объясняю каждую строчку»: разработка игры в прямом эфире

Черновой вариант логотипа шоу.
Интернеты
В закладки
Аудио

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

TL;DR - Буду на стримах делать простую двухмерную игру, попутно обучая всех зрителей искусству программирования. И обучаясь ему, конечно же. Будет образовательно-развлекательное шоу, где я попытаюсь донести до людей доброе, разумное, вечное по заветам Стива Макконнела и Роберта Мартина. За деталями следуйте в полную статью.

Канал на ютубе

Дискорд сервер, где я вместе со зрителями буду всё согласовывать.

Если у вас в голове возникли некоторые закономерные вопросы, читайте дальше.

WTF?

Да, я действительно собираюсь делать видеоигру на стримах.

Кто?

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

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

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

Если кому интересно по языкам: сишарпист, немножко эрлангист и, в домашнее время, немножко пайтонист.

Почему?

С чего меня вообще дёрнуло податься в стримеры? Вопрос стоит ставить по-другому: как так получилось, что я до сих пор не стримлю? Объясню почему. Те, кому вся эта предыстория как зайцу стоп-сигнал, смело проматывайте до следующего заголовка.

Когда-то я купил себе микрофон. Мне почему-то стрельнуло в голову, что я должен сделать аудио-версии нескольких любимых статей из ЖЖ. Зачем? Я предпочитаю даже не искать ответа на подобные вопросы. Скажем так, те самые аудиоверсии я сделал, но позже это дело подзабросил. А микрофон остался. На данный момент аккуратно пестую мечту сделать полную аудиоверсию великой книги Сорокина "Норма", но это так, лирика.

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

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

Ещё задолго до этого я "приобрёл" несколько гнусавый голос и привычку очень громко разговаривать. Ещё я считаю себя умным и харизматичным. Что? Мне это говорили не только мама и бабушка.

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

Первое. Я вспомнил, что когда-то хотел делать игры.

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

Второе. Я вспомнил, что люблю учить людей программированию.

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

Третье. Я расстался со значительной суммой денег.

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

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

Что?

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

Кстати, результат будет храниться в открытом репозитории на гитхабе, чуть что. Можно "форкать себе", скачивать и играться. Там, правда, только код. Ассеты (господи, да какие там ассеты, с моими навыками), возможно, выложу куда-нибудь на облачко. Вот ссылка на репозиторий:

Там пока пусто, конечно.

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

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

Что до жанра, то тут ещё могут быть варианты. Я по этому случаю даже опрос сделаю. Чисто консультативный. Да, вы всё правильно поняли, я даже с жанром специально определятся не стал. Будем решать вместе.

Какую по жанру игру начать делать на стримах?
Top-down шутер.
Платформер.
Run'n'gun.
Tower defense - сравнительно скучный вариант, но пусть. Возможно, меня понесёт и я чуть попозже вколхожу туда элементы RTS.
Другое (нет, не метроидвания, пожалуйста, я хочу сделать хоть что-то до пенсии).
Показать результаты
Переголосовать
Проголосовать

Как?

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

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

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

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

Где?

Ютуб. Уже успел проверить, что при качестве 1080p можно рассмотреть исходный код. Как и на 720p. Тем, у кого дно-интернет или экранчик телефона, мои соболезнования. Я постараюсь всё озвучить, а код потом можно будет почитать на гит-хабе.

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

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

Когда?

Чем чаще смогу, тем лучше. Думаю, надо проводить хотя бы два стрима в неделю по два часа.

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

Когда вы готовы смотреть меня в будние дни? (мой часовой пояс: +3, чуть что)
18-20
20-22
22-24
00-02 (послушать меня на ночь)
Показать результаты
Переголосовать
Проголосовать

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

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

Остальные вопросы:

Будем решать в комментариях.

Ещё раз все нужные ссылки:

UPDATE:

Был проведён тестовый нулевой стрим. Там я рассказал о том, что мы используем VS2017 Community Mode, Monogame, поставленный на него и git.

Так же я рассказал о том, что я буду делать top-down shooter. Или, правильнее, twin-stick shooter. В любом случае, там будет вид сверху и много стрельбы. Ссылка на полутестовый эфир:

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

Написать
{ "author_name": "chelovekbeznika", "author_type": "self", "tags": [], "comments": 51, "likes": 115, "favorites": 200, "is_advertisement": false, "subsite_label": "gamedev", "id": 40428, "is_wide": false, "is_ugc": true, "date": "Sun, 03 Mar 2019 14:29:13 +0300" }
{ "id": 40428, "author_id": 105160, "diff_limit": 1000, "urls": {"diff":"\/comments\/40428\/get","add":"\/comments\/40428\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/40428"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954 }

51 комментарий 51 комм.

Популярные

По порядку

Написать комментарий...
10

НЕЕЕЕТ! Только не платформер! Top-Down шутер гораздо более интересен и информативен в плане взаимодействий между игроком и противниками. И вообще сам контроллер Top-Down гораздо более вариативный, нежели платформер. Если будут еще и подтягивания на препятствия и прочие лазательные штуки, то вообще цены не будет. Всё это потом легко, кому надо, можно будет и в платформерное измерение перевести.

Ответить
7

Автор конечно неприкрытый графоман, но такие статьи в рубрике геймдев меня радуют больше, нежели что-то типа... ну вы сами поняли 90% контента этой рубрики (яростно послан случайным читателем на более технические ресурсы типа девелоперских форумов), когда в ней не то что каких-то листингов кода не видно, не видно даже попыток обсосать теорию, того или иного механизма на котором строится какой-либо аспект игры, и идет подмена понятий и замещение личными ощущениями от "физики@геймлея", того как на самом деле это было реализовано. Мои слова не в коем случае не укор, просто хотелось бы видеть больше именно технической части с пруфами, а не рассуждений "это работает вот так имхо". Закидывайте ваши статьи кодом, пусть всем будет так же плохо как и вам смайлик_садистской_содомии.

Ответить
1

Батенька, да вы тоже графоман ;)

Ответить
0

Присоединяюсь к тому, чтобы такого было побольше. Я попытался сделать так же как автор, но задумка была в том, чтобы делать всё без фреймворков - вдохновленный Hommade Hero. Фейл. Слишком много работы на работе, а там делаются не игры, скиллы не реюзаются. Непонятно, как совмещать такой объем работы с дневными задачами. Если такого будет больше здесь на ДТФ, это хотя бы будет что-то вроде сообщества анонимных разработчиков-стримеров :)

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

Ответить
2

Интересненько!

Ответить
1

Так, раз уж спросили:
Ютуб просит один день выждать, поэтому стрим завтра. В 22 часа по Москве. Ссылка на ютуб канал в статье, в начале и в конце.
Если вдруг случится чудо, и они разрешает сегодня до вечера, проведём сегодня в 22 часа.

Ответить
1

Тогда я очень заинтересован. Всегда лучше схватывал, когда объясняют "вживую", учебники как то мне совсем не заходят, даже самые хваленые. Я щас программирую всякую элементарщину в Visual Basic. Спасибо за ваши будущие старания)

Ответить
1

В тот момент, когда я уже перестал надеяться, мне удалось прорваться обходными путями! Спасибо всем, кто пришёл. Следующий в среду в 21:30 по Москве.
Ссылка на первый стрим с кучей вкусных тайм-кодов в описании.
https://www.youtube.com/watch?v=yLBIvYNZcLE

Ответить
0

Я так понимаю это совсем не для новичков?) Хватит ли знаний первого курса общих сведений по ООП, что бы понимать хоть что то?)

Ответить
4

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

Ответить
0

"по заветам Стива Макконнела и Роберта Мартина"
Я так понял, автор будет не просто что-то тяпляпать, а стараться сделать правильную (но сложную) программную архитектуру , но при этом всё разъяснять, что и как?
Я бы послушал и посмотрел на программиста с опытом :)

Ответить
3

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

Ответить
0

Движок? Язык?

Ответить
0

Когда вы готовы смотреть меня в будние дни?

Часовой пояс не указан.
Неужто часовой пояс Дефолт Сити?

Ответить
0

Минск. +3. Да, дефолт-сити.

Ответить
0

Я, видимо, все еще живу в 2014, потому что думал, что разница с Москвой один час)

Ответить
1

Хотел бы я туда -_- Наш часовой пояс по всем законам здравого смысла +2, но после медведевских свистоплясок с поясами мы перешли на +3 на постоянной основе и так там и остались.

Ответить
0

Сегодня первый стрим?

Ответить
0

Было бы классно, но я вчера ночью только канал создал. А они требуют выждать около суток, прежде чем разрешат прямые эфиры проводить.

Ответить
0

Я через Дискорд-сервер планирую это согласовать.

Ответить
0

записи же будут на ютубе?

Ответить
0

Само собой.

Ответить
0

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

Ответить
0

спросонья пропустил что будет ютуб

Ответить
0

Странно, что в комментариях пока нет ни одного Кирилла

Ответить
0

Ты мог бы договорится с дтф и стримить и на их канале на твиче/юутб/вк, они вроде искали стримеров, вот тебе и аудитория, они уже пишут музыку и "учат" пиксель арту в прямом эфире

Ответить
0

Там просили примеры стримов =)
А если серьёзно, перед тем, как идти на поклон к DTF надо из себя хоть что-то представлять. Вот над этим и буду работать.

Ответить
0

Блин, нет времени читать. Когда стрим и по какой ссылке?)

Ответить
0

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

Ответить
0

Сложная - я имел ввиду - с наследованием классов, абстрактными классами, интерфейсами и прочие. :)

Я, если что - уже подписался на ютуб канал ^_^

Ответить
0

Где ты там в Минске обитаешь?)

Ответить
0

Уже собираетесь бить разработчика за плохую игру? )

Ответить
0

Нит, может я учителя по программированию ищу =)

Ответить
0

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

Ответить
0

А почему не на Твиче?

Ответить
0

Проголосовал за top-down шутер, но было бы интересно увидеть изометрический рогалик)
А платформеры... ну хз, на ютубе и так бесконечная куча уроков по ним.

Ответить
0

Вот это планы на жизнь у человека!

Ответить
0

Профессиональный программист, который стал программистом.

А ты хорош!

Ответить
0

ЯП C# будет?

Ответить
0

Ждём, держите в курсе, но с тех точки, действительно интереснее топ-даун шутер.

Ответить
0

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

Что же до самого "мяса", то бишь непосредственно до разработки, то тут без изменений. Понедельник, 22:00.
https://www.youtube.com/channel/UC90GNOUDTklc8gUUxRY4nGw/live

Ответить
0

Стрим прошёл относительно успешно. Спасибо всем, кто поучаствовал.

Ответить
0

Может через рестрим и на твич запустить стрим?

Ответить
0

Если честно, так себе идея вести запись и стрим в принципе на фоне "бегущего человека") Шум как от стиральной машины

Ответить
0

Идея теста была спонтанной и наши планы из-за этого наслоились. Сегодня все в доме знают, что в 22:00 у меня стрим, а значит я имею моральное право отгонять людей от беговой дорожки. И когда я возьмусь за свой спортинвентарь (гантеля на 10 кг) тренировки на дорожке кое-кому пригодятся.

Ответить
0

Увы, опаздываю. Прямо сейчас страница начала эфира выпадает у меня с 500-ой ошибкой. И это пиздец, товарищи =(

Ответить
0

Хм... Оставлю тут комментарий о том, что скоро начну второй эфир. В 21:30, как и обещал.
https://www.youtube.com/channel/UC90GNOUDTklc8gUUxRY4nGw/live

Ответить
0

Провёл второй эфир. Не скажу, что очень успешно, но сдаваться не планирую. МЮ смог, и у меня получится.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Игру с лучшим стелсом никто не заметил
Подписаться на push-уведомления