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

Будучи раздосадованным полным (почти) отсутствием каких-либо ресурсов с игровой тематикой, будь то youtube каналы или же блоги в соц. сетях, мне захотелось поделиться парой мыслей, которые я приобрел за столь короткое времяпрепровождение в сфере геймдева. Не поймите меня неправильно, информации по игровой сфере как таковой в русскоязычном сегменте интернета полным-полно, но довольно посредственного качества. С большим трудом можно найти те крупицы, которые натолкнут абсолютных новичков на какую-либо тропу, всё приходится приобретать в процессе, что довольно сложно. Данная статья призвана, пусть и немного, но всё же осветить путь геймдева для абсолютных новичков.

Возможно, для кого-то данные мысли не будут откровением, моё почтение. Вы могли бы также добавить в комментарии и свои мысли, я с интересом почитаю (всё-таки, я тоже начинающий).
Думаю, для тех, кто просто хотя бы задумывался о том, чтобы увязнуть в этой прекрасной индустрии, разработка игр представляет собой нечто загадочное, особенно для тех, кто ни разу не пересекался с программированием. Начнём с рассмотрения вопроса: что из себя представляет создание игры? Кратко: 10-20% времени — разработка механики (написание кода), остальное – создание контента. Под созданием контента подразумевается визуальный и музыкальный аспекты игры, также создание уровней, продумывание сюжета (это, конечно же, индивидуально) и т.п. То есть игра – это не столько написание кода, сколько сама идея, которую вы вкладываете в своё детище. Отсюда исходит одна из ключевых мыслей: код – второстепенное. Без сомнения, он является неотъемлемой частью разработки игры, но каким бы хорошим он ни был, безыдейная игра — не более чем пустышка.

Немножко вспомогательной теории (только для тех, кто в принципе «не в теме»):
Как заставить двигаться квадратик на экране? Ваш экран – это координатная плоскость (вспоминаем школу), горизонталь – ось Ох, вертикаль – ось Оу. Квадратик имеет свои координаты, соответствующие его позиции на экране, допустим (4, 2) (х = 4, у = 2). Формально, двигать квадрат – просто изменять его координаты. Чтобы двигать его вверх(вниз), нам необходимо прибавлять(отнимать) какое-то число при нажатии соответствующей клавиши, которое назовём вертикальной скоростью передвижения, к его второй координате, то есть у. Таким образом мы будем поднимать и опускать квадрат. С горизонтальным передвижением всё аналогично, прибавляем(отнимаем) некоторое число при нажатии соответствующей клавиши, которое назовём горизонтальной скоростью, к первой координате, то есть х. Поздравляю, вы двигаете квадратик по экрану! Всё довольно просто. Но при создании более сложных вещей вам, соответственно, понадобятся более продвинутые знания математики.

Попытаюсь ответить на довольно популярный вопрос: какой игровой движок стоит выбрать? И одновременно свяжу это с первым советом:

  • определитесь с игровой нишей, в которой хотите работать

В это предложение я вкладываю довольно широкий смысл. Но для начала стоит определиться с технологической составляющей вашей игры: 2D или 3D? Ответив на этот довольно простой вопрос, вы резко упростите себе жизнь с выбором вектора игровой разработки. Лично я тяготею к разработке 2D игр в стиле пиксель арт, посему в качестве движка я выбрал Game Maker Studio 2. На мой взгляд, это лучший представитель для разработки 2D игр. В качестве движка для 3D проектов я могу посоветовать всем уже известный Unity. Думаю, эта пара идеально подходит для начинающих разработчиков, поскольку они просты в освоении относительно других своих собратьев и одновременно располагают мощнейшим инструментарием для разработки соответствующих им игр.

Почему именно этому я придал такое внимание, а не, например, жанру? Здесь я плавно веду ко второму совету:

  • создавайте то, что можете создать, а не то, что хотелось бы

На данном этапе вы подобны ученику младших классов, который стремится найти корни некоторого квадратного уравнения, но при этом вы не умеете даже приводить дроби к общему знаменателю. Стремление достойно похвалы, но в данный момент вам необходимо разобраться с жизненно важными основами. Копируйте несложные игрушки, экспериментируйте, банально «набивайте руку». Любая собранная вами игра, какой бы она ни была, — это ценнейший опыт для вас. Заставить двигаться квадратик на экране – уже хорошо. Старайтесь постоянно лепить что-то самостоятельно, параллельно приобретая новые навыки. Не пытайтесь с самого начала впитать в себя максимум теории, а после приступить к делу – начинайте прямо сейчас. Впитав в себя тонну информации, вы, скорее всего, не будете знать, что с ней делать и с чего стоит начать (я уже испытал на себе подобное). Голая информация, не закрепленная практикой, ничего из себя не представляет. Всего понемногу, и спустя непродолжительный промежуток времени вы будете чувствовать себя как рыба в воде. В какой-то момент с пониманием процесса разработки игр к вам придёт понимание того, какую именно игру вы хотели бы создать. Именно этот момент будет отправной точкой, поскольку ваша деятельность будет уже осознанной, а не простой поступью в кромешной тьме.

Небольшая ремарка по поводу кода — учитесь писать код (неожиданно, не правда ли?). Не стоит пугаться и представлять себе, что написание кода подобно магии, требует особых навыков и тому подобное — нет. Вот пример кода Game Maker Language:

///@param direction

var _direction = argument0;
//Записываем переданное значение
direction_facing_ = round(_direction/90);
//Делим на 90 и округляем при помощи функции round()
//Пример: round(4.5) равносильно 5, round(4.45) равносильно 4.
if(direction_facing_ == 4) {
//Небольшая проверка на корректность значения
	direction_facing_ = 0;	
}

Примерно так выглядит код одного из скриптов в моём проекте. Попытаемся разобраться, что тут происходит. Данный скрипт определяет направление «взгляда» объекта в игре(равносильно тому, как вы смотрите направо или налево). В качестве аргумента он принимает градусную меру «направления взгляда» и записывает её в локальную переменную _direction. После мы делим — таким образом мы фрагментируем воображаемую тригонометрическую окружность на четыре кусочка — четыре направления — записанное значение на 90 (градусов), округляем (функция round()) и записываем в переменную direction_facing_. Каждому из направлений соответствует своё число: 0 — право, 1 — верх, 2 — лево, 3 — низ. Может быть такая ситуация, что угол будет больше 215 градусов, из-за чего в direction_facing_ запишется число 4, но нас такая ситуация не устраивает, поскольку 4 в нашем случае равносильно 0.



Решаем данную проблему при помощи оператора if: если direction_facing_ равно 4, то записываем в него 0. Готово! Капля математики и небольшая доля кода, никакой магии. Для чего это? Данный код полезен для того, что понимать, какую именно анимацию отрисовывать во время движения (бег вправо, бег вверх и тому подобное).



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

«Плавно» переходим к следующей рекомендации — капелька кэпа:

  • занимайтесь регулярно

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



У многих возникнет резонный вопрос: где брать нужный материал для этого дела? Как начать обучаться? Самый просто ответ – гайды на youtube, коих бесчисленное множество. И это всё? В общем плане – да, но отчасти. Спустя некоторое время, когда вы минимально освоите выбранную вами среду разработки, нужда в прямых наставлениях отпадёт, поскольку вы уже будете в состоянии корректно сформулировать интересующий вас вопрос (тут то гугл и форумы станут вашими родными братьями). Естественно, голой технической информации будет недостаточно, дабы наиболее полно осознавать процесс и уже без труда ориентироваться в сфере геймдева. Посему следующая рекомендация:

  • читайте материал по теме, очень много материала (почти всё)

Читайте истории разработки, следите за начинающими разработчиками, читайте блоги, статьи по игровой теме и т.п. Сейчас я сделаю одну крайне полезную ремарку — используйте англоязычные ресурсы. Информация из англоязычных источников на порядок качественнее русских аналогов. Во всяком случае, её можно без труда найти, в отличие от русскоязычного сегмента интернета. Лично я пользуюсь тонной youtube каналов, посвященных разработке игр. Ребята рассказывают, как создать ту или иную вещь, делятся опытом, в общем, ящик Пандоры для нас. Возможно вы будете не согласны со мной по поводу качества и количества игрового (конкретно разработка) контента в «русском интернете» — прошу в комментарии с ссылками на соответствующую тематику, это будет крайне полезно для всех. В конце статьи я оставлю небольшой перечень ресурсов, которыми я пользуюсь в данный момент.

И, наконец, последнее:

  • не отступайтесь

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

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

Полезные ссылки для моих коллег:


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

Комментарии (26)


  1. taluks
    07.03.2018 19:04

    определитесь с игровой нишей, в которой хотите работать

    Именно так и начинается обычно любая статья с советами по разработке игр\сайтов\начала своего бизнеса. Лучше бы рассказали как Вы начали, почему именно выбрали 2д или 2д выбрал вас?
    создавайте то, что можете создать, а не то, что хотелось бы

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


    1. RALMAZ
      07.03.2018 19:07

      +
      Если делать только то что можешь, когда будешь развиваться?


    1. oKatanaaa Автор
      07.03.2018 19:49

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

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

      Почему вы так считаете? В данный момент я работаю над простейшими платформером(имитирую Марио, дабы получить какие-то практические знания), хотя в будущем планирую создавать ActionRPG и интерес до сих пор не угас, а наоборот приумножился. Здесь ребром стоит вопрос о процессе, а не итоговых результатах. Игры, к какому бы жанру они ни принадлежали, имеют общие черты в рамках процесса разработки. Создавая простейшее, человек будет приобретать навыки и понимание того, с чего следует начать и как следует продолжить. Например: в рамках взаимодействия каких-либо объектов в игре крайне полезна система хитбоксов. В Марио она примитивна, что позволит мне без особых усилий освоить данную вещь. Если бы я взялся за что-то посложнее, то мой прогресс сильно бы застопорился, поскольку те задачи, перед которыми меня поставит более сложный проект, я скорее всего не решу. Почему? — Банально не знаю, основ. Я не знаю, как ответить на вопрос в самом примитивном виде. Марио даёт мне этот самый примитивный ответ, от которого я буду отталкиваться в будущем.
      Разве интересно клепать банальные клоны коих полно да еще и низкого качества которые не будут востребованы?

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

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


      1. Flakky
        08.03.2018 15:14

        Стоит начать с малого, но все же не с того, что умеешь. Я лично думаю, что нужно писать то, что ты не умеешь и не простые вещи. Например какой-нибудь шутер, где есть достаточно много аспектов разработки. Писать как можешь, писать костылями, ужасно запутанным кодом. Потом от этого сам начнешь понимать, что было сделано неудобно и неправильно.
        Дело в том, что если вы учитесь на простом, вы не затрагиваете множество всего. Например аспекты ООП или КОП, взаимодействия с различными объектами разными способами и прочее.
        Но вот на сложном проекте вы все это пройдете. На этом и стоит учиться. Более того, в наши дни движки предлагают такой инструментарий, что что-то простое на них делать не очень-то удобно. Например тот же Unity, который все же заточен под 3D. И геморится с, на каказось бы, простым 2D там не очень-то удобно.


        1. Flakky
          08.03.2018 15:25

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

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

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

          Я в свое время тоже не начинал с таких простых игр. Сразу выбрал 3D игру с достаточно шустрым геймплеем. Писал лишь бы работало, много чего узнал и понял (особенно благодаря UE4 и БП). После этого мог писать уже что угодно и через пол года выложил в сеть свою первую игру, написав её за 2 месяца.
          www.youtube.com/watch?v=UbAox4khRKY Вот, кстати, и она. Квест, вроде портала, только с управлением временем.


          1. saboteur_kiev
            08.03.2018 17:32

            У меня первым, что я писал — был ММОРПГ. На Ansi C, и ничего так, отлично пошло.

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

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


  1. janvarev
    07.03.2018 19:59

    Можно советы начинающему игроделу от профессионального программиста (не игр, но всё же)?

    Первое и основное — делайте то, что любите. Без любви у вас ни за что не хватит ни сил, ни времени, ни упорства, чтобы что-то освоить. Есть мнение, что для профессионализма надо наработать в районе 10000 часов в сфере деятельности — без любви к своему делу вы столько не проработаете.

    Далее более конкретно:
    — На начальном этапе разрабатывайте однопользовательские игры для ПК. На мобильных устройствах вам придется много возится с окружением и оптимизацией — это нужно для коммерческих продуктов, но не для вашего развития. Поддержка онлайн-игры для многих людей — тоже не сахар.
    — Фантазируйте и придумывайте. Ваша задача — попробовать самые разные жанры, чтобы выработать свой собственный стиль. Вы можете остановиться в любой момент в реализации — совершенно не обязательно доводить всё до конца, чтобы получить опыт и фан. Моя статистика приблизительно такая — мне приходят в голову идеи около 100 проектов. Из них 10 заслуживают какого-то внимания, раздумия. Один доходит до этапа реализации. (Интервью с Полуниным — там тоже есть про фантазирование и остановку на любом этапе)
    — Используйте простейшие инструменты для реализации идей. Не надо использовать что-то навороченное вроде Unreal Engine. GameMaker — отлично; еще могу порекомендовать RenPy в случае, если хочется попробовать что-то вроде визуальных новелл, на которых можно научиться делать сторителлинг.
    — Попробуйте сделать мод к своей любимой игре. Во-первых, это весело. Во-вторых, это недолго (а вам надо набрать 100 идей). В-третьих, вы немного поймете, какими вещами оперируют разработчики игр.
    — Реализуйте в простейшем варианте парочку классических игр — например, Пакмана или арканоид. Вы почувствуете их и получите ценный опыт программирования.
    — Для вдохновения стоит почитать классические книги про разработчиков игр и про сторителлинг. Моя подборка: Тристан Донован. «Играй! История видеоигр», Дэвид Шефф «GAME OVER Как Nintendo завоевала мир», Роллингз Э., Моррис Д. «Проектирование и архитектура компьютерных игр». Возможно, «Тысячеликий герой» Кэмпбелла, хоть он и заезжен. От книг по программированию (напишите цикл А и условие Б) по моему личному мнению, пользы сильно меньше.
    — Заглядывайте в соседние области — изучайте настольные, ролевые игры, игры живого действия.


    1. oKatanaaa Автор
      07.03.2018 20:31
      +1

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


    1. AbstractGaze
      07.03.2018 21:07

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

      Фраза — для вдохновения почитать… по моему если человек полез делать игры ради сугубо денег — то читать бесполезно. Точнее он даже не прочитает то, что вы тут написали — не осилит.

      Считаю что для вдохновения надо читать или художественную литературу, или научную для общего кругозора.


      1. janvarev
        08.03.2018 11:31

        > Интересно было почитать подход «программиста», от подхода «игрока)

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

        > Считаю что для вдохновения надо читать или художественную литературу, или научную для общего кругозора.

        Согласен :) Кстати, то, что мной перечислено — скорее неплохие научно-популярные работы. В частности, очень много подчерпнул из исторических обзоров развития игровой индустрии: как менялись предпочтения игроков со временем, как образовывались жанры. Например интересны факт — классическую Bejeweled (первый пример механики «3-в-ряд») издатели не хотели издавать — она не соответствовала идее классического «соревновательного» процесса в играх.


    1. norlin
      07.03.2018 21:40

      Не надо использовать что-то навороченное вроде Unreal Engine.

      Вот с этим не могу согласиться. "Навороченность" UE4 – миф, на данный момент. Возможно, так было раньше. Сейчас это отличный движок, чтобы попробовать себя в геймдеве. Однако, его не стоит выбирать, если цель – 2D игра. Всё-таки, UE4 больше заточен под 3D.


      1. janvarev
        08.03.2018 15:53

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

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


    1. Flakky
      08.03.2018 15:19
      +1

      Не надо использовать что-то навороченное вроде Unreal Engine.

      В Unrel Engine как раз есть очень хорошие инструменты для новичков, которых нет больше нигде. Например Блупринты на замену C++, которые очень сильно облегчают задачу, дают легче понять, как строится логика, и что не менее важно, не дают сделать ошибок.
      Так же в анриале есть редактор материалов, который заменяет HLSL код, позволяя строить свои шейдера.

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


  1. AbstractGaze
    07.03.2018 20:53
    +1

    Как начинающий начинающему напишу свое мнение. У меня оно правда в корне отличается и я согласен с комментарием taluks о чем опишу ниже подробней, возможно слишком.

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

    Собственно определиться с концептом своей игры используя только то, что я могу — так это у большинства будут максимум «крестики-нолики». У многих идея ммо и прочие радости где можно «жить». Но, никто не знает с чего начать.
    Я начал с изучения общих технологий, чтобы понять что вообще можно осуществить, какие бывают проблемы, как их решают или они до сих пор не решены (актуально в пвп шутерах).
    Дальше стала интересна архитектура и масштабируемость, вроде все про это слышали, но если задать вопрос вида «ваша игра выстрелила, пришло 5кк игроков, как быстро можно купить и развернуть сервера для такой нагрузки?» мало кто себе задает. И ладно если это сессионка вроде 10 на 10, а если это ммо на едином сервере, как делить мир? Вот например будут кланы с захватом территорий (ну это как полагается одна из древних рюшечек), а сколько территорий можно выделить кланам? А вдруг их будет на порядок больше? Масштабируемость дожна быть не только мощностей, но иногда и игрового мира. Понятно что платформеров эта проблема не касается — а это уже один из критериев выбора, который можно обосновать «завышенной» сложностью для первого проекта.
    А где посмотреть какие архитектуры бывают, какие у них недостатки или преимущества? Я нашел только один ресурс с адекватным для «начинающих» описанием архитектур, проблем которые они решают и какие создают новые. Надеюсь ссылку разрешат, это не реклама, это блог работника из этой сферы gameserverarchitecture.com (ищите по блогам patterns)

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

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

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

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

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

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

    Ресурсы. За четыре года я прошел много видео курсов, и прочитал пару десятков книг. От себя могу сказать, что книги рулят. Даже старые, особенно старые. Курсы обычно идут от новичков, которые не могут пояснить что, и как и почему (я про русскоязычные курсы).

    В общем, в этом комментарии вроде все чем я хотел поделиться как начинающий. Из литературы, что я прочитал, могу точно посоветовать следующее (для тех кто хочет значительно больше «крестиков-ноликов»):
    — Фредерик Брукс. Мифический Человек-месяц [1995] (не смотрите что старая, она старей, новы будете Очень удивлены)
    — Сэм Ньюмен. Создание микросервисов [2016]
    — Бхаргава А. — Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствующих [2017]
    На самом деле книг хороших гораздо больше — ищите по отзывам к другим книгам и найдете.

    P.S. извиняюсь за ошибки, ну мне честно лень вычитывать комментарий))


  1. norlin
    07.03.2018 21:55

    Летом 2016г решил сделать свою игру. Задумка масштабная, а опыта в геймдеве вообще не было. Начал изучать UE4 (оказалось, он очень прост в освоении основ и с ним легко и приятно работать, в большинстве случаев). Примерно год назад, в начале 2017, начал делать небольшую игру, "первый блин", поставив себе цель допилить эту игру до релиза перед тем, как переходить к изначальному сложному проекту.


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


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


    концепты

    image
    image


  1. DrNefario
    07.03.2018 23:01

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

    В общем, туториалы, мануалы и другие всякие «getting started» — это здорово!


  1. KirEv
    07.03.2018 23:05

    смотря на процесс разработки игр изнутри, одно приходит на ум (извините, что с своим уставом)…

    простое что-то, типо пятнашки — можно самостоятельно реализовать, как полноценную игру, пусть то мобильное нативное иос, андроид, или юнити кросплатформенное…

    но когда речь о более-менее сложной игре: нужна команда.
    — дизайнер интерфейса\игры\художник\моделлинг
    — разработка логики и уровней игры
    — маркетинг и продвижение
    — непосредственное программирование уровней, моделей, персонажей, логики, интерфейса…

    Здесь видел статьи, когда программист делал игру в течении месяцев-лет, но вопрос: можно ли программиста считать gamedeveloper'ом, если он пишет свою игру вечерами, и маловероятно, что она увидит мир, не говоря про продажи и заработок.


    1. AbstractGaze
      07.03.2018 23:58

      Нельзя сделать кого то, кем то. Тут скорее вопрос начального опыта, у кого что было, до того как он пришел. И судить только со своей стороны — с которой вы пришли — это не правильно, хотя я все же придерживаюсь мнения что геймдев, это от игроков, а не программистов или менеджеров, почему? Ну потому что геймдев от программистов мы видели 20-30 лет назад, с него геймдев начинался — по сути с изучения возможностей (что можно создать).
      Но, сейчас идет не изучение возможностей (не только оно), а скорее изучение потребительского рынка, т.е. надо создавать продукт который будет нужен не сейчас, а завтра.
      Тут на хабре недавно был отличный пост\перевод habrahabr.ru/post/345366 к этому я рекомендую изучить ТРИЗ — теория решения изобретательских задач — очень сильно помогает при самостоятельном анализе. (ну кто как я неуч без во)


  1. Marui
    08.03.2018 10:08

    Вот это советы…
    Матрицы 44 нету. И из чего состоит нету
    Вращения по осям нету
    Матрица камеры-взгляда, модели, проекции неу
    Определение угла между векторами нету. С помощью atan2 и прочие.
    Что cos/sin считает в радианах нету
    Основных законов движения v = v0 + att/2 и p = p0 + vt нету
    Преобразование local2global и global2local нету
    Движение по сплайну и анимации нету
    Интерполяции нету
    Единичная, Обратная, Транспонированная матрица нету


    1. oKatanaaa Автор
      08.03.2018 10:45
      -1

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


      1. lgorSL
        08.03.2018 11:29

        Выше имелись ввиду матрицы 4*4, которые активно используются в 3д графике (и в 2д тоже — например, для сортировки спрайтов по глубине). Без начальных знаний линейной алгебры далеко не уйти.
        Я начинал с книжки F.Dunn I.Parberry "3D math primer for graphics and game development". Она на английском, но зато начинается с самых самых азов типа векторов и их свойств, а потому можно потихоньку привыкнуть к английским обозначениям и прочитать её целиком. Кроме того, благодаря этой книжке я осознал суть кватернионов и потом спокойно использовал их. Там есть примеры на С++ с реализацией кватернионов, матриц и простейших моделей освещения.


      1. Marui
        08.03.2018 13:02

        Матрица нужна для хранения трансформа объекта в какой-либо системе координат: камеры, мира, экрана.
        Хранит в себе направление базиса, перемещение, масштаб и вращение по осям базиса.
        На деле всё немного сложнее. Ведь матрицы нужны только на этапе растеризации. И разработчик игровой логики, может воообще не знать формулу LookAt или Матрицы Проекции. И обходиться только vec3 для позиции и углами Эйлера.


  1. lgorSL
    08.03.2018 12:16

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


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


  1. Flakky
    08.03.2018 15:38

    Статья полезная, но на самом деле вы написали статью о том, как научиться программировать игры. Стоило написать про вводные и про моделирование, про создание уровней или геймдизайн. Все же разработка игр это далеко не одно программирования. Как вы сами написали, это всего 10-20%.

    Добавочка как раз тем, кто хочет научиться придумывать и стать геймдизайнером… Можно читать книги, можно смотреть на другие игры. Однако тут будет проблема в том, что вы не сделаете ничего нового. Все же копируя что-то, лучше не сделаешь.
    Хорошей стороной считается то, что вы можете придумать игру не играя в игры и не читая о них, а смотря на окружающий мир.
    Например всем известная игра, когда нельзя наступать на линии между плитками, когда идешь по улице. Это наблюдение, а не копирование.
    Геймдизайнерам советую ещё следующую практику. Выйдите на улице или откройте какой-нибудь сайт, и пытайтесь придумать игру на основе того, что увидите.
    Например я вижу, как человек чистит автомобиль от снега. Сразу наскакивает идея игры, где нужно как можно быстрее чистить машину от грязи/снега/песка на время. Или даже сделать экономический симулятор сети автомоек :)
    Или, скажем, видите новость о том, что какого-нибудь чиновника посадили за отмывание денег. Сразу делаем игру о том, что нужно искать доказательства того, что человек как-то отмывает или ворует деньги. Смотреть документы с его выписками, собирать в игре новости и прочее.


    1. kolu4iy
      09.03.2018 19:34

      Совмещая идеи получаем игру про мойку денег, например. Уже третий сценарий, а всего-то два наблюдения.


  1. Feelnside
    08.03.2018 23:13

    Все конечно здорово, но в конечном итоге в 90% случаев успех игры зависит от маркетинга. Как бы человек не вылизывал игру, какие бы невероятные механики не придумывались, в 90% случаев все решит маркетинг. Если в игре будет хорошая монетизация, грамотное продвижение — игра будет успешной, в противном случае, никакие уникальные идеи не спасут (конечно же, в 90% случаев, оставим 10% на исключения). На своем примере, за полтора месяца в своей игре набрал еле-еле 50к установок, передал игру другому разработчику, он за 2,5 месяца смог превысить рубеж в 1млн установок. В общем, нужно учиться продвигать игры, сейчас это к сожалению гораздо важнее, чем сама игра.