«Один в поле геймдев». Делая игру в соло. Часть 1

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

«Один в поле геймдев». Делая игру в соло. Часть 1
Если у вас наблюдается нарушение водного баланса, то эта статья или поможет его исправить или усугубит. Я предупредил.
Вместо эпиграфа

Вместо введения

👋

Эххх, Комитет, как же я по вам скучал, педики!

Ну, а если серьёзно, то всем привет, зовут меня Виталий, мне 34 года, моя нервная система ушатана десятилетием в сфере разработки того, что сложно назвать программным обеспечением, а в узких кругах ныне покойного TJ я был известен тем, что потратил два года и 50 статей на россказни о том, как хорошо живётся на Западе (если точнее, о переезде в шведский Гётеборг, а потом в славный город Вильнюс). Так что если среди вас есть те, кто меня узнал — жму руку — я же обещал, что вернусь.

По крайней мере Ивахнова я точно видел.

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

Впрочем, за это я был бы спокоен: местные пирожочки не то что бдительность не дадут потерять, но и заботливо будут напоминать о том, кто я есть на самом деле.

Помните, кто вы есть
Помните, кто вы есть

В конце-концов, информационный фундамент в такого рода предприятии стоит конструировать заранее. За отсутствие оного, кстати, не так давно журили одного совершенно ультимативного соло разраба.

Товарищ, кстати, исправился и я очень надеюсь, что у него всё получится.

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

В начале было слово

Если ты устал перекладывать JSON'ы — иди в геймдев.

Не отказывать же себе в удовольствии усложнить свою жизнь, ударившись в сольную разработку игры, попутно перестав работать и перебросив свою тушку из одной части света в другую, правильно?

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

Причём среди причин любовь, собственно, к играм, как ни странно, не стоит на первом месте, так как эта самая любовь мало чем помогает игры разрабатывать.

Собственно, их вообще можно делать без особого понимания вопроса. Спросите Ubisoft.

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

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

Виталий. Пытается поймать чужие яйки

Зато хорошо помогала скрашивать серые будни вашего покорного слуги, по какой-то совсем откровенной ошибке родившегося в жопе нашей прекрасный Родины — городе Усинске, в котором выбор юношеских активностей ограничивался, в основном, получением в табло.

Я <a href="https://www.tripadvisor.ru/Attraction_Review-g2387292-d6694396-Reviews-Monument_Mosquito_Oilman-Usinsk_Komi_Republic_Northwestern_District.html" rel="nofollow noreferrer noopener" target="_blank">не шучу</a>. Можете брать как референс для босса. Декорации там тоже соответствующие
Я не шучу. Можете брать как референс для босса. Декорации там тоже соответствующие

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

Хоть это и не сильно помогло мне в принципе остаться нормальным человеком.

Виталий. В принципе, нормальный человек

Было много других игр, компьютерные клубы, «Атлоны» с рейтингом вместо гигагерц, интернеты, аппаратные шейдеры, форумы, TES Construction Set, «Фаргус», перепрошивки мобильников, спрятанный кабель питания и всё то, о чём вам хорошо известно, если вы моего возраста или старше.

Само собой дальнейшая судьба этого задрота была предопределена: нужно было валить из этой дыры и вламываться с двух ног в тогда ещё только набиравшее обороты, миленькое IT. Чем я и занялся, поступив в «Ухтинский Государственный Технический Университет» (годное заведение, кстати), откуда после трёх лет обучения меня весело попёрли за феерически заваленную сессию. Примерно в то же время я трудился над своим проектом, зарядившись мотивацией от просмотра фильма Дэвида Финчера «Социальная сеть».

Правда, сессию я завалил не поэтому, а потому что решил посмотреть все сезоны «Доктора Хауса» вместо учёбы.

Да уж.

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

Точнее он в меня.

Виталий. Любит по-жёстче

А дальше жизнь программиста, обычно, развивается по одному и тому же сценарию:

  • Дольше работаешь — больше учишь
  • Больше учишь — сильнее устаёшь
  • Сильнее устаёшь... сильнее устаёшь

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

Если желаете, то я всё подробно описывал в соответствующих сериях статей, веб-архив всё помнит, извольте.

Первая причина — это ты...

Здравствуйте. Меня зовут Владимир. Стартапами я никогда не занимался, поэтому решил изначально делать социально значимый сервис.

Некогда тоненькая шутейка с просторов «Трибуны» на VC

Проблема программистов вроде меня, которая потом перетекает в не очень-то обдуманные решения, заключается в том, что после определённого времени они (программисты) начинают считать себя дофига стартаперами и обзаводятся навязчивой идеей сделать «что-то своё».

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

И в равной степени унылыми, само собой.

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

Это потом я узнал, что эта штука называется «терпение». Надо же.

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

Ещё к сколиозу.

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

Review and provide feedback on designs. Takes ownership of the design and development of features within their component. Recognizes and practically solves for anti-patterns. Good understanding of how his/her work aligns with high-level use cases and team deliverables. Define (more than a feature, less than a product) a component that fits into an architecture. Describe and defend design decisions for components owned by the team. Optimize software design to leverage platform capabilities. Acts as the technical subject matter expert for a product domain. Quantify and communicate work estimates and risks to direct management. Handle multiple competing priorities with minimal help. Understand features as a whole and able to break down larger stories and features into tasks. Familiar with most of the technologies we focus on and what markets they target. Takes ownership of customer issues and effectively communicates with Support/SEs to resolve field questions/issues. Discuss with customers what larger concerns and problems they are trying to solve, over and above the immediate technical concerns. Willingness to teach and grow junior team members. Excellent listening skills. Effectively works within the team and across teams. Ensures all tasks are completed thoroughly and that any work done is tested, unit-tested, documented, and ready for customers. Takes identified problems and concerns and creates a plan to fix the problem and prevent it from occurring again. Follows through on all tasks. Reliably delivers expected work products and outcomes. Imparts a sense of urgency on junior team members. Able to write high-quality code rapidly. Able to present track record of solving problems of increasing complexity. Good understanding of trade-offs in solving problems that have variable levels of complexity.

If you like wild growth and working with happy, enthusiastic over-achievers, you'll enjoy your career with us!

Типикал вакансия. Если вы вдруг вопрошались, откуда эта дрянь в отечественном IT

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

Добро пожаловать в IT, сучары!

Всё равно что марафонить без специальных людей с водой и сэндвичами по дороге.

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

Можно совместить — так даже лучше. Правда алкоголь я не употребляю ни в каком виде... к сожалению, наверное.

Всё на зеро

Лежал Иванушка на печи и размышлял над извечными русскими вопросами: «Как быть?», «Что делать?» и «Как бы никогда не работать?»

Из выступления Михаила Николаевича Задорнова

В такие моменты ты, обычно, ловишь пресловутый «кризис идентичности» и начинаешь рефлексировать:

  • Кто ты есть?
  • Чем ты по-настоящему хочешь заниматься?
  • Где на самом деле ты хочешь быть?

Особенно остро это ощущается в эмиграции.

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

Красотенюшка. Заморские капиталисты разбирают такое как горячие пирожки, я гарантирую это
Красотенюшка. Заморские капиталисты разбирают такое как горячие пирожки, я гарантирую это

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

Романтика.

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

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

Наверное поэтому меня сначала занесло в Скандинавию, а потом в одну из стран Балтии.

Виталий. Человек со специфическим чувством юмора

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

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

Рассказать потом?
Мы тут про игры или где? Конечно рассказывай.
Не.
А вот винишка я бы хлопнул.

Кто о чём

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

Так что когда я решил делать игру, я уже примерно понимал о чём она будет.

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

Смелой идее нужна форма.

Виталий. Любит хорошие формы

На таковой я позвал наших хороших знакомых, которых я заимел ещё во времена (и благодаря которому) моего блога на TJ. Идея была скооперироваться, так как ребята обладали навыками работы в 3D + имели непосредственное отношение к игрострою.

На состряпанном ватмане для бедных при участии одного арбуза и пачки хот-догов, мы набросали грандиозный по своей масштабности план:

Рождение. Два склеенных скотчем листа А3, потому что я у мамы инженер
Рождение. Два склеенных скотчем листа А3, потому что я у мамы инженер

Забегая вперёд скажу, что командной работы не сложилось.

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

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

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

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

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

Если хочешь сделать что-то хорошо, сделай это сам.

Интернет говорит, что это сказал Фердинанд Порше

Короче говоря, проводя всё больше времени с проектом один на один, я стал лучше понимать каким на самом деле я хочу его видеть и как он должен работать.

Ровно как то, что легко точно не будет.

Сложный медиум

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

В «обычной» жизни я могу прыгать между разработкой бэкенда, фронтенда и баз данных без особых проблем, так как, фундаментально, всё это держится на одних и тех же принципах, а остальное добивается практикой.

С играми такое не прокатывает.

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

Медиум — средство познания мира.

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

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

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

Зоопарк

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

Поэтому нужно было поставить рамки и постараться держать себя в них как можно дольше:

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

Ровно как нужно было трезво оценить что я могу, а чему придётся учиться:

  • Нарратив: с выражением мыслей проблем, вроде бы, нет, как и с текстовой частью (спасибо, TJ). Проблемы есть с фантазией, тут уж попробую сообразить на двоих с нейросеткой. Или на троих.
  • Графика: не умею, этому придётся учиться, кое-где можно срезать углы с помощью готовых ассетов.
  • Звук: в школьные годы ударно сидел в Logic Pro на предварительно поставленном «хакинтоше». Даже удалось замутить кринжовенький школьный концерт на пару с другом-гитаристом. Короче говоря, основные концепции понятны, слух есть, было бы здорово вспомнить былое в виде нескольких композиций собственного сочинения. Общие же звуки можно найти даже среди бесплатных, а озвучку персонажей можно попробовать сгенерить через нейросети.
  • Программирование: что-то знакомое. Нужно учить игровую математику 😬 и API движка.
  • Игровой дизайн: не умею. Что-то новое — не придумаю (для этого надо быть умненьким). Будем копировать с затеями.

Банально, вроде, но соотносить желаемое и действительное — процесс полезный.

Что касается выбора движка, то маркетинговые слоганы и прочие «наниты» не сильно мне интересны, ровно как не интересны срачи на тему какой движок лучше. Если движок выполняет поставленную задачу и вам удобно им пользоваться, то это и должно определять ваш выбор. Остальное к реальной разработке не имеет никакого отношения.

Хоть и тыкаясь в Megascans радуешься как школьник.

... это нихуя не заслуга разработчиков игры, а заслуга разработчиков Unreal Engine, который даже говно может заставить выглядеть как конфетка в пару кликов.

Один из местных комментаторов, не помню кто

Короче говоря, отличные игры можно делать на любом движке.

Именно поэтому я потестировал наиболее популярные в реальных условиях, не зажав денег даже на платные курсы.

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

Ситуация с выбором движка сложилась вообще интересная. Во многом из-за того, что я его так и не выбрал, так как нравится мне Unreal Engine, Unity находится в процессе перехода на CoreCLR (а трогать Mono я не хочу), GODOT не зашёл, а потом во всё это вмешался UPBGE.

О трудностях выбора я расскажу в следующий раз, тем более что C# разработчику вроде меня можно было бы просто идти проторённой дорожкой и лишний раз не париться, что, в общем-то, и определяет мой выбор на данный момент.

Тем не менее, вот что могу посоветовать в плане материалов для изучения:

  • Unreal Engine

Само собой в вашем распоряжении всегда доступны соответствующая секция на официальном сайте «Эпиков», документация и канал на YouTube.

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

Лично я учился по великолепным курсам от Стивена Улибарри на Udemy — шикарный автор, затрагивающий множество аспектов использования движка в рамках разработки игр с использованием С++ и Blueprints.

Пока вы затачиваете вилы, скажу, что некоторые из его курсов есть в альтернативных источниках, так что поднимайте чёрный флаг и вперёд.

В целом соориентироваться и потрогать движок можно здесь и здесь. Одним глазком заглянуть под капот игрового фреймворка — тут, углубиться в С++ можно в рамках годного семинара, а узнать больше о многопоточности и прочих делегатах — тут.

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

Может вам зайдёт.

Что касается страха использования С++ в Unreal Engine, то я бы не стал делать из этого проблему, так как товарищи из Epic Games постарались завернуть чуть ли не каждую конструкцию этого языка в собственные решения, совокупность которых чем-то напоминает .NET — таки удобнее, чем голые «плюсы». В конце-концов никто не мешает балансировать между использованием С++ и Blueprints в ту или иную сторону.

Хоть всю игру на «принтах» делайте, никто вас не остановит. Кроме воющих видеокарт ваших пользователей.

  • Unity

Касаемо платных курсов, есть неплохие от Джонатана Уэйнбергера, Пита Джепсона и Awesome Tuts. Можно ли найти их в сети — не знаю.

Говоря о Unity можно даже не упоминать слово «платный», просто потому что движок настолько популярен, что бесплатного обучающего материала по нему создано какое-то неимоверное количество на любом языке. Поэтому я даже не знаю что конкретно вам рекомендовать. Просто задайтесь поиском по сети и вы даже специально не промахнётесь.

Довольно неплохо рассказывает Code Monkey (у него же есть вполне годный платный курс), а Tarodev интересно рассказывает о нюансах. Если преисполнились уверенностью в себе, то товарищ Turbo хорошо раскладывает про DOTS.

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

Виталий. Has absolutely no life

Что-то мне подсказывает, что на Unity я, в итоге, и остановлюсь.

  • GODOT

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

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

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

Лично я работать с этим движком не стал. Помимо своеобразного личного отношения к инструментам, я не вижу для себя никакого смысла учить специализированный для конкретного движка язык. Да, там есть C#, и он там хорош, но с самого начала использования движка как будто всё говорит тебе о том, что ты будешь находиться на вторых ролях и никого, особо, это не волнует. Даже «анриаловский» диалект «плюсов» выглядит перспективнее.

  • UPBGE

Максимально тёмная лошадка, которая манит одной единственной вещью (помимо Python, который многим нравится) — возможностью использовать Blender в разработке игры от начала до конца. На деле, правда, всё не так радужно, но об этом в следующий раз.

Царица наук

Не могу точно сказать что из игровой математики нужно вам, потому как пока не ясно, даже, что из этого нужно будет мне.

Я учился по платным курсам от Бена Тристема, бывшего графического инженера из Google по имени Саймон и одной очень умной барышни со звучным именем Пенни де Бил. Пенни, кстати, ведёт курс в рамках Unity, так что если вы выбрали этот движок, то можно совместить приятное с полезным.

Из бесплатного есть мощные курсы от Джорджа Родригеса и Фреи Холмер.

Визуализировал, визуализировал, да не...

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

Человеку, который с графикой никогда не работал, кажется, что 2D проще, чем 3D. В каком-то смысле так и есть. Однако когда начинаешь изучать вопрос детальнее выясняется, что неплохо было бы иметь талант.

Как вы понимаете, сложно найти талант у человека, который из «творческого» написал только пару кривых репозиториев на «Гитхабе».

Виталий. Талантлив

В общем, осознав сложность создания хорошей 2D графики и какого-то совсем неприличного количества усилий по её утилизации непосредственно в игровом движке (особенно при изометрической камере, которая казалась мне хорошей идеей), я решил, что сегодняшний инструментарий для 3D моделирования скроет отсутствие таланта гораздо лучше.

  • Blender

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

Кстати насчёт денег (и об этом тоже в следующий раз):

Истинная стоимость бесплатного ПО — нихуя не «бесплатно».

Виталий. Потратился на бесплатное ПО

Шикарным вводным курсом оказался таковой от CrossMind — интенсивно, безжалостно и очень эффективно — настоящая находка, пересматривал три раза. Очень здорово помогли бесплатные ламповые уроки от Polygon Runway. C уверенностью могу порекомендовать платные версии курсов от него же.

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

Любопытно, что именно работа с 3D графикой оказала самое большое влияние на игру как в визуальном смысле, так и в плане её вселенной.

Видимо, сказалась ещё и профессиональная деформация:

Это не ассет для игры, ровно как не то чтобы гармонично сделанная, прости Господи, боевая машина, которая сложится от первого же удара из рогатки, а, просто, начало моего пути в 3D моделировании.

В этом смысле есть два попсовых человека: Джош Гамбрелл и Рию Понте — эдакий Hard Surface для бедных. Они также ведут проект BlenderBros, заслуживающий отдельной рекомендации (удалось выцепить набор курсов на «Чёрную пятницу» — не пожалел ни разу). Стоит, правда, уточнить, что они делают большой акцент на использовании аддонов HardOps и BoxCutter, но «ванильные» версии тоже есть, в том числе бесплатный вводный курс.

Как бонус на эту тему было интересно посмотреть доклад Тора Фрика — одного из разработчиков The Ascent, которую лично я считаю одной из самых детализированных игр на Unreal Engine 4:

Может и вам будет интересно. Сам Тор использует Modo.

Ну и обсосанный уже всеми — пончик. Лично я его так и не посмотрел.

  • Substance Painter

Индустриальный стандарт для текстурирования. Так говорят, по крайней мере.

К сожалению, инструмент платный и входит в подписку от компании Adobe (как бесплатную альтернативу рекомендуют Quixel Mixer, но, судя по всему, он медленно умирает... хотя есть слухи, что «Эпики» готовят большое обновление). Есть отдельная версия в Steam с единовременным платежом и без привязки к Adobe.

Для изучения можно нырнуть в официальный канал. Есть неплохие вводные курсы от ProductionCrate и Йонаса Ронненгарда. Из платного есть фантастический курс от 3DRedBox (который тоже есть на известных ресурсах), впрочем большую часть знаний можно покрыть просто нырнув в их YouTube-канал.

Кстати контент, который предоставляет Quixel Mixer бесплатно, в лицензионном смысле является таким же, как и контент непосредственно от Epic Games, размещённый в Unreal Marketplace, так что или покупайте лицензию или же используйте упомянутый контент только в связке с Unreal Engine.

  • Marmoset Toolbag

Мощный набор инструментов для рендеринга, текстурирования и запекания.

Знающие люди говорят, что инструменты запекания у Marmoset — лучшее, что есть на рынке. Следующей по качеству альтернативой является, собственно, Substance Painter, а замыкает троицу xNormal (о котором я ничего не знаю).

Стоимость — немалая если покупать единоразово и вполне посильная если оформить ежемесячную подписку. С бутылкой рома так и вообще бесплатно.

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

  • RizomUV Virtual Spaces

Очень годный набор инструментов для UV-развёртки. Есть официальный обучающий материал, подготовленный Джоном Дикинсоном, и пар-очка вполне себе на русском языке.

А шейдеры как же?

Виталий. Не умеет себя контролировать

Затерянный в астрале

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

Это если заметят, а если нет?

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

Ещё о том, что меня неплохо было бы показать специалисту.

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

  • Имя

Может и придёт время, когда моё имя будет ассоциироваться с годным геймдизайном (смешно), но до того момента я решил спрятаться за ширмой «студии», пускай даже эта самая «студия» представляет из себя одного человека. К тому же, работая над игрой и её вселенной, я стал понимать, что, так или иначе, тащить всё в одиночку — в перспективе не то чтобы самый лучший вариант (хоть и единственный пока).

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

Ну, а, когда мне ещё мечтать? В ипотеке мы и так все будем.

Виталий. Мечтает об ипотеке

В общем, я не стал особо мудрствовать в этом смысле и решил использовать свой никнейм. Так появилась «студия» Codedius Games.

Звучит.

  • Площадки

Для аудитории, основной язык которой — русский, ничего лучше DTF для ведения блога пока ещё не придумали. Как бы там ни было, но по степени вовлечённости подобной площадки в рунете нет (по степени пидерастии тоже, но что тут поделать). Да и редактор здесь удобный, привык к нему ещё со времён TJ.

Касаемо тематических площадок мне видится неплохой идея написать статью о расходах на разработку на Т—Ж, раз уж там любят «про деньги».

О доходах, кстати, тоже, когда таковые будут.

От всеобщего приглашения инди-разработчиков от двух беларусов с камерой, как мне кажется, отказываться не стоит. Относиться к ним можно как угодно, но аудитория у них преданная и активная. Я и сам как-то обнаружил пару годных игр (Dredge и House Flipper) на их стримах. Ровно как есть мысли постучаться к Виталику за интервью, когда накопится достаточное количество материала для показа (интервью с дизайнером серии «Механоиды» и разрабом из Норвегии были душевными).

С англоязычными товарищами я решил действовать несколько иначе.

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

Да и подходящей площадки я не нашёл.

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

К тому же наличие «витрины» в сети, вроде как, должно прибавить «веса» её создателю. Во всяком случае хочется в это верить.

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

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

  • Издатели

Честно говоря, я не обладаю большими знаниями в этом вопросе, поэтому приходилось руководствоваться простой логикой:

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

Виталик. Обиватель порогов

Таковые на момент написания: Devolver Digital, Coffee Stain, Chucklefish, Team17, Curve Games, Hypetrain, tinyBuild.

  • Инвестиции

Об этом я знаю ещё меньше.

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

Бэкап

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

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

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

А если нет — чёрт с ним. Упускать такую возможность я не намерен, да и как перекладывать джейсоны я ещё не разучился.

Вместо заключения

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

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

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

Тем не менее, закрою статью на нескольких тезисных пунктах:

  • Целевые платформы: ПК под управлением Windows и macOS. Скорее всего и Linux тоже, во всяком случае я точно буду оптимизировать игру под Steam Deck (пойдёт на Steam Deck — пойдёт везде).
  • Игра будет локализирована на русский и английский языки как минимум, и на любые другие, если найдутся те, кто сможет мне в этом помочь.
  • Где публиковаться: Steam, Epic Games Store, GOG, VK Play — везде, где примут. Ещё б я тут носом вертел.
  • Как источники вдохновения я использовал Europa 1400: The Guild и горстку так называемых «cozy sim».
  • Трудно подобрать правильные жанры, но наиболее близкие это: «экономический симулятор», «симулятор жизни», «приключение». Не «выживач» — и слава Богу. Хотя и такое люди по 6 лет делают.

Если у вас есть возможность приобретать платные курсы, в том числе те, что я перечислил выше, то никогда ничего не покупайте за полную стоимость. Ждите распродаж. На Udemy они проходят постоянно. Более того, можно в принципе ничего не покупать (возможности или желание есть далеко не у всех), так как весь нужный инструментарий существует и в бесплатном виде, а тот же YouTube вполне себе закрывает существенную часть потребностей в обучении.

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

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

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

Впрочем, заиметь иллюстратора было бы и правда неплохо...

...и знатока китайского.

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

Писалось под:

P.S. На заглавной картинке — кадр из прототипа одного из игровых уровней. Отрендерено в «Блендере» на движке EEVEE.

4444
25 комментариев

От брошенной работы и переезда из Европы в Таиланд,

Очередная история от мужика с кучей денег, который как герой делает очередную инди?

4
Ответить

Ну не то чтобы героизм, да и кучи денег у меня нет...

2
Ответить
3
Ответить

Так даже лучше 👍

1
Ответить

как же некоторые индивиды любят купаться в водоёмах собственного словоблудия
при том, что вся писанина пустая для инди
скрины, хоть, собственные или из чужих игр?

3
Ответить

Комментарий недоступен

Ответить

отличный лонг! даже добавил в закладки, потому что есть список источников для изучения 3дшки))
такой вопрос по выбору движка, как относишься к тому микро скандалу с лицензией юнити? не пугает ли что в дальнейшем, когда твой проект разрастется и будет близок к релизу, они снова поменяют лицензию задним число? я сам релизнул игру на юнити, и думаю что делать дальше, не хотелось бы рисковать в будущем с ним, но с другой стороны, какие альтернативы есть для 3д?

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

годот пока что убог в 3д, на нем можно делать только около лоу-поли графику и ретро хорроры, с пикселизацией)) хотя сам движок мне очень понравился, но отсутствие уроков по тому же стим апи, или нормальных ассетов, смущает

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

1
Ответить