Как научиться разрабатывать игры. Как создать игру самому? Этапы создания игры

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

Шаги

Готовимся к успеху

    Разберитесь со своей игрой. Вам нужно будет довольно много планировать и думать о глобальных проблемах, если вы хотите, чтобы процесс шел гладко. В каком жанре будет ваша игра (РПГ, шутер, платформер и т.д.)? На какой платформе будет выпущена ваша игра? Какие уникальные и отличительные черты будут у вашей игры? Для ответ на каждый вопрос требуется различный набор ресурсов, навыки и планирование, так как они по-разному влияют на разработку игры.

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

    Будьте реалистом. Если бы штамповать игры как Mass Effect было легко, каждый бы этим занимался. Вам нужно понимать, что вы можете и не можете сделать без огромной студии и хорошего опыта за плечами. Также нужно быть реалистичным в том, что вы можете сделать за разумный отрезок времени. Если не будете смотреть реально на свои силы, то скорее всего быстро разочаруетесь и сдадитесь. А нам не хочется, чтобы вы сдались!

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

    • Как минимум вам будет нужен мощный процессор (по крайней мере четырехъядерный и желательно один из новых i5 или i7), много оперативной памяти и продвинутая видеокарта.

    Эту страницу просматривали 31 191 раз.

    Была ли эта статья полезной?

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

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

После одного игрового проекта со стримом всего процесса разработки мне часто пишут начинающие разработчики, что-то спрашивают, что-то показывают и на что-то жалуются. Недавно мне пришлось влезть в спор двух ребят, где темой спора было: “Что круче знать 3д-моделирование или программирование, если собираешься разрабатывать игры?”. Влез к ним в спор с предложением сделать первый шаг из схемы, что родилась в процессе участия в игровых проектах и создания своих.

Шаг 0. Станьте разработчиком игр

Именно первый, а точнее даже “нулевой”, шаг сделает Вас сразу разработчиками игр. Это не проекты, которые, может, уже есть у Вас за плечами, не навыки, котороми Вы, может, владеете, а простой, но очень важный шаг: скажите себе, а заодно и всему миру, что вы разработчик игр. Как только у вас уляжется в голове ответ на вопрос, чем вы занимаетесь - разработкой игр, - вы сразу станете для себя и окружающих разработчиком игр.
Как это сказать себе и другим?
Уверен, что у вас уже есть какая-то профессия. Также я уверен, что Вы каждый день посещаете сайты/форумы, связанные с вашей профессией, читаете блоги и, может, даже книги.
Первое, что надо сделать, чтобы стать разработчиком игр:
  • Начать посещать сайты, связанные с тематикой игр и разработкой игр.
  • Подписаться на блоги разработчиков, творчество которых вам нравится.
  • Купить пару книг в “киндл” на амазоне, например, о игровом дизайне.

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

Шаг 1. Найдите себе применение как разработчику игр

Теперь, когда Вы смело можете считать себя разработчиком игр, надо найти себе применение. Как писатели могут пребывавать в двух состояниях: ищут идею книги, пишут книгу, - так и разработчики: ищут проект (идею), делают проект. Бывает, конечно, еще и поддерживают проект, но лично я его всегда объединяю с процессом поиска нового.

Слова “найти проект” для каждого разработчика игр значат разное, вот список популярных способов поиска проектов:

  • найти проект, близкий по духу, с интересной идеей, проинвестировать в него свои навыки и/или деньги, а, может, какие-то еще ресурсы;
  • взять пару игр и сделать из них микс;
  • сделать клон игры, что может принести хорошую прибыль;
  • придумать гениальную идею и попробовать найти энтузиастов;
  • сделать ремейк любимой игры;

    И множество других способов.

Выйти из состояния “поиска проекта” нужно как можно быстрее , и желательно выйти в состояние “делаю проект” и делать проект с шансами на успех: релиз и популярность.

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

Вот некоторые советы для прохождения этого шага:

  1. Начните что-то свое . Свое от идеи до реализации в одиночку. Даже если у вас есть навыки программирования или вы сносно рисуете, - не вступайте в существующие проекты. Сделайте что-то небольшое, не требующее серьезных навыков.
    Например, я сделал маме подарок на НГ - 3д-игру по психологической методике:
    У меня не было опыта разработки на C# и программировать я особо не умел (немного знал python) и никогда до этого не моделил.
  2. Скажите себе кодовую фразу: “Если кто-то смог, я тоже смогу ”. Как бы вы ни были готовы к игровому проекту, всегда будет задача, с которой вы никогда не сталкивались. Например, даже у опытных программистов программного обеспечения, часто нет опыта создания шейдеров. Скажите себе кодовую фразу и учитесь по ходу .
  3. Найдите себе единомышлеников . Мне в моем развитии очень сильно помогли: скайп-чатик разработчиков социальных игр (теперь уже создатели: Голос Припяти 3D, Tanks Heroes, Contract Wars, Батла и многие другие) , а также одногруппники из Scream School по курсу гейм-дизайна . Их успех будет вас подталкивать, а обмен опытом ускорит процесс развития.
  4. Выберите себе платформу для разработки . Определите платформу, которая вас устраивает. Это может быть, например, Unity - за ее возможности, огромное комьюнити и сравнительно низкий порог входа. Вне зависимости от платформы, станьте ее евангелистом . Это позволит вам наладить коммуникацию с другими разработчиками и быстрее развиваться.
  5. Не давайте эмоциям взять вверх . Ошибки и неудачи станут вашими спутниками на длительный период, а если вы будете делиться процессом развития с русскоговорящими разработчиками, будьте готовы к тоннам говна большому количеству негативных отзывов. Не позволяйте эмоциям брать вверх: слушайте любые отзывы и предложения, но относитесь ко всему с необходимой критикой. Сохраняйте критичность ума .

Шаг 2. Помогите себе закончить хотя бы ОДИН проект!

Если вы закончили свой первый проект как разработчик игр, скорее всего, вы что-то делали не так. Даже эпилептоид не сможет закончить свой первый проект, а к первому релизу у него в архиве будет пара-тройка (минимум) замороженных проектов. Это нормально . Мы учимся на своих ошибках, а не совершают их только идиоты или те, кто ничего не делают.
Но в какой-то момент нужно будет собрать весь свой опыт, полученный из проб и ошибок, и, наконец, сделать свой первый релиз .
У каждого разработчика своя история первого релиза, но у меня есть пару советов, которые обязательно вам помогут:
  1. Вгоните себя в экстремальные условия , а выходом из них сделайте релиз. Поставьте себе реальный, но очень сжатый срок на релиз, например, 48 часов или неделю, но спать будете по 4 часа в день. Это даст сильный толчок, заставит оптимально использовать время и сфокусироваться на результате.
    • Сжатые сроки
      Сжимая сроки, не оставляйте себе время на риск. Сжимайте до последнего, пример с 48 часами - хороший.
    • Отсутствие сна
      Полное или почти полное отсутствие сна хороший мотиватор, но не доходите до крайностей. Практика показывает, что даже молодому организму надо давать отдых.
    • Менеджмент времени
      Не стоит выделять много времени на тайм-менеджмент, но не забывайте ставить себе вехи (milestone). Например, скажите себе, что через 5 часов вам надо сделать играбельный прототип.
      Например, в своем первом 48 часовом марафоне (на нем я только рисовал) , я за первую треть времени нашел стиль игры, нарисовал основной, игровой экран и все спрайты врагов. И за оставшееся время сделал 170+ спрайтов анимации и дорисовал интерфейс.
    • Конкурсы , особенно мероприятия, типа, HackDays или Ludum Dare, где нет времени на раздумья и надо сразу бросаться в работу, - отличное подспорье для пунктов выше.
  2. Поставьте себе рамки . Для первого релиза, особено в сжатые сроки, критически необходимо знать рамки проекта. Выпишите себе минимум, что нужен для релиза, и не выходите из него. По необходимости:
    • Урежьте список возможностей
      Было бы здорово сделать возможность летать на самолетах, но если вы делаете шутер про пехоту, сфокусируйтесь на стрельбе.
    • Сократите время игры
      Вероятно, вы рассчитывали сделать синглплеер на 5 часов игры, но вы останетесь победителем с демкой на 20 минут.
    • Уберите часть контента
      Конечно, дополнительная карта не будет лишней для вашего тактического шутера, но релиз останется релизом даже с одной картой.
  3. Ищите простые пути . Напоминайте себе, что вам необходим релиз, а не шедевр . У вас остается право на ошибку, но вы потеряли право на заморозку проекта.
    • Используйте костыли и хардкод
      Не стоит фокусироваться на универсальности или производительности кода. Оптимизация тоже подождет. Просто идите к результату.
    • Копируйте, а не придумывайте
      Если с ответом на любой вставший перед вами вопрос возникают трудности, копируйте решение коллег.
    • Используйте опыт на 150%
      Учет сделаных ошибок - это, несомненно, хорошо, но пока вы их совершали, вы собрали багаж наработок. Постарайтесь использовать из него что-то.
    • Подключите все ресурсы
      Если у вас есть друзья, готовые помочь, не отказывайтесь, а если у вас есть денежный ресурс - вкладывайте (покупайте готовые решения, контент и рабочие руки). Ваши вложения окупятся в дальнейшем.

Шаг 3. Сделать полноценный релиз

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

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

  1. Делайте проект каждый день . У всех начинающих инди есть занятия, с которыми приходится совмещать разработку. Но не забывайте добавлять хотя бы одну строчку кода или новый спрайт в игру каждый божий день. Это очень важно, это пункт номер 1.
  2. Ставьте себе небольшие задачи и старайтесь выполнять их каждый день. Долго открытая задача, например: “разработать систему инвентаря”, может быстро превратиться в “висяк” с очень низким приоритетом. Поставьте задачу “Интерфейс основного окна инвентаря” и закройте в этот же день, а затем радуйтесь прогрессу.
  3. Два шага вперед, один в сторону . Какой бы разнообразной вы ни планировали игру, не стоит делать сразу 50 типов врагов и тысячи уровней. Сфокусируйтесь на реализации возможностей игрока, а не способах их проявлений. Делаете слешэр? - Реализуйте возможность рубить врага, а врагов клонируйте.
  4. Прототипируйте . Когда вы сфокусированы на настоящем релизе, необходимо отдавать себе отчет, что игра должна быть хорошей . Проверить это можно, прототипируя.
  5. Вы делаете игру . Не стоит делать из своей игры движок или фреймворк. Нет, я не про чистоту кода или возможность его переиспользовать. Работайте хорошо, и результат будет хороший. Не стоит реализовывать возможности до того, как поймете, что они действительно необходимы вашей игре . Например, если вы не уверены, что будет возможность менять цвет одежды героя, не стоит рисовать маску для смены цвета в шейдере. Убедитесь, что ваш дизайн подразумевает наличие предметов перед тем, как создать класс Item.
  6. И главное… Не бойтесь вернуться на шаг 2 . Возможно, еще не время для настоящего релиза.

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

Разработка игр

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

Конечно, имеются и исключения из правила. К примеру, небезызвестный программист Маркус "Нотч" Перссон в одиночку создал "Майнкрафт" — игру, которая является одним из самых прибыльных проектов за последние 10 лет. Но для того, чтобы разработать что-то подобное, нужно быть настоящим асом своего дела и иметь за плечами огромный опыт.

Создание игр. Программирование

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

В первую очередь нужно освоить хотя бы несколько самых популярных языков программирования. Без этого создать качественную игру вряд ли получится. Почему же несколько языков? Неужели одного недостаточно? Дело в том, что каждый programming language имеет свою четкую область применения. Ниже мы рассмотрим самые востребованные языки и их применение при программировании игр.

Языки

Пожалуй, наиболее универсальным языком в плане программирования игр является C++. Большинство современных игр и движков для них пишутся именно на нем. В чем же особенность данного языка? Пожалуй, одно из главных достоинств C++ заключается в огромном количестве всеобъемлющих библиотек. Благодаря этому посредством данного языка можно написать все что угодно: от маленькой инди игрушки до крупного проекта ААА класса.

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

Python — это, пожалуй, лучший выбор для начинающего геймдева. Во-первых, синтаксис языка довольно прост. Для того чтобы начать программировать на Пайтоне, достаточно прочитать туториал и обладать нативным уровнем английского. Во-вторых, возможности данного языка программирования достаточно широки. Конечно, Пайтону не угнаться за C++ в плане функциональности. Тем не менее посредством Python можно создать вполне достойный софт (в том числе и игру). К примеру, на Пайтоне написаны такие игры, как "Батлфилд" (2005), "Цивилизация 4", "Симс 4" и много других проектов, которые стали настоящими хитами.

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

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

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

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

Программы для создания игр

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

Пожалуй, сама известная программа для разработки игр — Game Maker. Она предназначена для создания двухмерных проектов. Делать игры можно без навыков программирования. Вместо строчек кода пользователю предоставляют набор готовых действий. Все, что нужно сделать — создать объекты и определить правила взаимодействия между ними. Также стоит подметить, что рисовать спрайты можно прямо в Game Maker без использования посторонних программ. Поэтому софт является вполне самодостаточным. Мало того, Гейм Мейкер не обидит и продвинутых юзеров, которые обладают навыками программирования. Ведь в программе есть возможность добавлять свой исходный код. Посредством Game Maker можно создавать игры с видом сверху (РПГ, тактический шутер и т.д.) и сбоку (платформер).

Construct 2 — это еще один конструктор для разработки 2D-игр. Пожалуй, главная особенность данной программы — мультиплатформенность. Посредством "Конструкта" можно создавать игры для iOS, Android, Windows, Web и т.д. В плане функциональности Construct 2 ничем не уступает тому же "Гейм Мейкеру".

Вывод

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

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

Вы только что закончили ваш первый курс по С++ и хотите начать делать игры. Кто-то указал вам на этот сайт и вы, возможно, поэкспериментировали немного с руководством . Вы изучили несколько лаконичных примеров, но не нашли руководства о том, как сделать целую игру. И на то есть причина.

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

Выбор проекта

Итак, с чем же начать? Проще ответить с чего начинать не стоит, а именно с больших проектов, типа полноценной 3D FPS, MMO или даже длинного платформера 16-битной эпохи. Самая распространенная ошибка начинающих разработчиков это начать с большого проекта основанного на Крутой Идее или взять проект, который кажется простым, и закончить с полузаконченной кучей спагетти-кода. Поначалу следует создавать небольшие проекты.

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

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

Принимая во внимание все выше написанное, вот пара советов с чего начать.

Графика и обработка событий

Если вы никогда не программировали ничего связанного с графикой или GUI, вам следует начать с чего то маленького, чтобы «обмочить ноги». Моим первым проектом были крестики-нолики, так что даже у меня было скромное начало. Пара идей для первого проекта:

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

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

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

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

Синхронизация, движение, столкновения, анимация

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

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

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

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

Тетрис хорош для второго/третьего проекта. В нем совсем немного логики нужной для создания игры-головоломки. Это игра приличного размера, так что вам придется научиться разделять вашу программу на несколько исходных файлов, о чем вы можете больше прочитать . Не недооценивайте Тетрис. Я недооценил и только посмотрите на это жуткое месиво в коде Lazy Blocks.

Переинженеринг

Типичная ошибка новичка это попытка сделать Самую Лучшую Игру Всех Времен, заканчивающаяся переинженерингом. То есть когда он пытается написать самую лучшую игру/движок и это все заканчивается тем, что используется только маленькая часть того что было понаписано.

Когда я был начинающим я переинженерил AI для крестиков-ноликов. Я хотел сделать игру с непобедимым AI. Мне удалось достигнуть этого, запрограммировав компьютер на знание всех возможных ловушек. Звучит круто не правда ли? Это заняло почти 40 000 тысяч строк в основном скопированного кода и месяц моего свободного времени.
Позже я выучил структуры данных и узнал про алгоритм Минимакс, который при меньшем размере кода не только делал нужное, но еще и делал это лучше.

Так что учитесь на моих ошибках и не будьте излишне амбициозны. Концентрируйтесь на обучении тому как делать игры, а не просто делайте их.

Планирование, анализ столкновений, физика, уровни, искусственный интеллект





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

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

Теперь про вашу следующую игру. Break Out и Puzzle Bobble хороши для третьего проекта, потому что они включают в себя продвинутое распознавание столкновений и физику. Физика важна, поскольку дает игре реалистичное ощущение. Даже в Super Mario Brothers есть ощущение гравитации и инерции. Бильярд отличный проект для тех, кто хочет напрячь извилины физикой.

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

Break out и Puzzle Bobble так же включают дизайн уровней и требуют загрузки и освобождения их ресурсов. Хорошим опытом будет создание редактора уровней для игры. Редакторы позволяют вам легко создавать уровни и не вынуждают впаивать их в приложение. У меня есть про создание редактора уровней.

Так же вы возможно хотите попрактиковаться в написании искусственного интеллекта (AI). Один из вариантов - вернуться к крестикам-ноликам или четырем в ряд и написать непобедимый AI. Теперь вы уже должны знать структуры данных и сможете использовать знания о деревьях для использования алгоритма Минимакс. С этим алгоритмом вы можете просчитать все возможные исходы крестиков-ноликов и создать непобедимый AI. Забавно расстраивать им своих друзей. Так же вы возможно захотите сделать разные уровни сложности. Игра не приносит радости, если в нее нельзя выиграть.

Pac Man - отличный способ попрактиковаться в написании AI. Нужно будет знать структуры деревьев/графов и алгоритмы поиска, типа A*, для того чтобы призраки могли пройти через лабиринт. Так же нужно будет сделать чтобы призраки работали в команде. Все это пригодится когда вы будете делать игры со сложным AI, типа стратегий в реальном времени. Об основах AI можно прочитать .

Платформеры, Action/Adventure, RPG, RTS, движки





Теперь, когда вы получили опыт создания хорошо спланированной игры, вы готовы к созданию Action/Adventure/Платформера. Это будет кульминация графики, движения, анимации, анализа/обнаружения столкновений, физики, AI, программной архитектуры и всего остального, что вы изучите к этому моменту. Тем кто более амбициозен, можно предложить сделать стратегию в реальном времени(RTS) или ролевую игру(RPG). Будьте осторожны, потому что RPG и RTS действительно огромные проекты.

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

RTS также сложны архитектурно, а так же требуют много AI. Вам нужно будет делать поиск пути для юнитов, получение ими команд, разное поведение в зависимости от полученных команд. Если вы никогда до этого не делали AI, будет лучше начать с клона Pac Man"а для начала.

Вероятно вам впервые придется делать движок для вашей игры. Чего следует избегать, так это создания универсального движка. Создавая движок не пытайтесь сделать его подходящем для любой игры. Если ваша игра требует x, y и z, делайте движок который умеет x, y и z. Движки создают исходя из того что нужно для конкретной игры, а не из того что любой игре может потенциально понадобится.

Другая распространенная среди новичков ошибка - это попытка создать движок в качестве первого проекта. И обычно это универсальный движок. Вам не нужен движок с фантастической графикой для создания Pong"а или Space Invaders. Программируя, легко закопаться в деталях. Концентрируйтесь на общей картине и завершайте свои игры.

Сеть

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

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

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

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

3D игры

Перед тем как делать 3D игры, вам следует сделать хотя бы одну хорошо спланированную игру и иметь хорошее понимание трехмерной векторной математики, линейной и Ньютоновской физики. Тут вам придется иметь дело с вершинами, текстурами, освещением, тенями, опредением взаимодействия с объектами в трехмерном пространстве, загрузку моделей и прочими сложно звучащими вещами.

Хорошая новость в том, что если вы уже сделали 4 или 5 игр, вы уже знаете основы необходимые для создания игры. Вы уже хорошо знакомы с процессом разработки и знаете свои возможности как программиста. Неважно трехмерный шутер или двухмерный, он по прежнему шутер. 2D RPG или 3D RPG по прежнему RPG.

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

Быстрый способ

Говорите, что вы учитесь быстрее если сразу возьметесь за дело и будете просто писать вашу 3D MMOFPSRTSRPG и научитесь тому, что нужно по мере необходимости? Чтож, вот пару советов, которые вам помогут:
  1. Идите на местный рынок
  2. Купите целую рыбину. Рекомендую взять лосося или треску, хотя и сом тоже подойдет. Форель, кстати, тоже довольно эффективна
  3. Идите домой и включите компьютер
  4. Запустите вашу любимую IDE
  5. Теперь возьмите купленную рыбу и влупите себе по голове
  6. Повторите пункт 5, пока мысли о быстром способе не покинут вас
Вы не научитесь алгебре решая вычислительные задачи. Вы учите основы и опираетесь на них. Тоже самое и с программированием. Если вы ищите быстрый способ я тут как тут, чтобы сказать вам что его нет. Не торопите себя. Еще раз: учите основы и опирайтесь на них. Иначе вас ждет фиаско.

Путешествие начинается

Теперь, чтобы у вас было общее понимание того что же все-таки делать, пора начать заниматься игроделом. Я не ожидаю что вы будете следовать этому руководству слово в слово. Все учатся по разному и с разной скоростью. Если вы что-то и должны были вынести из этой статьи, так это три вещи:
  1. Выберите свой темп
  2. Доделывайте игры до конца
  3. Концентрируйтесь на обучение, а не просто на создании
Удачи вам на пути разработки игр!

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

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

После одного игрового проекта со стримом всего процесса разработки мне часто пишут начинающие разработчики, что-то спрашивают, что-то показывают и на что-то жалуются. Недавно мне пришлось влезть в спор двух ребят, где темой спора было: “Что круче знать 3д-моделирование или программирование, если собираешься разрабатывать игры?”. Влез к ним в спор с предложением сделать первый шаг из схемы, что родилась в процессе участия в игровых проектах и создания своих.

Шаг 0. Станьте разработчиком игр

Именно первый, а точнее даже “нулевой”, шаг сделает Вас сразу разработчиками игр. Это не проекты, которые, может, уже есть у Вас за плечами, не навыки, котороми Вы, может, владеете, а простой, но очень важный шаг: скажите себе, а заодно и всему миру, что вы разработчик игр. Как только у вас уляжется в голове ответ на вопрос, чем вы занимаетесь - разработкой игр, - вы сразу станете для себя и окружающих разработчиком игр.
Как это сказать себе и другим?
Уверен, что у вас уже есть какая-то профессия. Также я уверен, что Вы каждый день посещаете сайты/форумы, связанные с вашей профессией, читаете блоги и, может, даже книги.
Первое, что надо сделать, чтобы стать разработчиком игр:
  • Начать посещать сайты, связанные с тематикой игр и разработкой игр.
  • Подписаться на блоги разработчиков, творчество которых вам нравится.
  • Купить пару книг в “киндл” на амазоне, например, о игровом дизайне.

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

Шаг 1. Найдите себе применение как разработчику игр

Теперь, когда Вы смело можете считать себя разработчиком игр, надо найти себе применение. Как писатели могут пребывавать в двух состояниях: ищут идею книги, пишут книгу, - так и разработчики: ищут проект (идею), делают проект. Бывает, конечно, еще и поддерживают проект, но лично я его всегда объединяю с процессом поиска нового.

Слова “найти проект” для каждого разработчика игр значат разное, вот список популярных способов поиска проектов:

  • найти проект, близкий по духу, с интересной идеей, проинвестировать в него свои навыки и/или деньги, а, может, какие-то еще ресурсы;
  • взять пару игр и сделать из них микс;
  • сделать клон игры, что может принести хорошую прибыль;
  • придумать гениальную идею и попробовать найти энтузиастов;
  • сделать ремейк любимой игры;

    И множество других способов.

Выйти из состояния “поиска проекта” нужно как можно быстрее , и желательно выйти в состояние “делаю проект” и делать проект с шансами на успех: релиз и популярность.

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

Вот некоторые советы для прохождения этого шага:

  1. Начните что-то свое . Свое от идеи до реализации в одиночку. Даже если у вас есть навыки программирования или вы сносно рисуете, - не вступайте в существующие проекты. Сделайте что-то небольшое, не требующее серьезных навыков.
    Например, я сделал маме подарок на НГ - 3д-игру по психологической методике:
    У меня не было опыта разработки на C# и программировать я особо не умел (немного знал python) и никогда до этого не моделил.
  2. Скажите себе кодовую фразу: “Если кто-то смог, я тоже смогу ”. Как бы вы ни были готовы к игровому проекту, всегда будет задача, с которой вы никогда не сталкивались. Например, даже у опытных программистов программного обеспечения, часто нет опыта создания шейдеров. Скажите себе кодовую фразу и учитесь по ходу .
  3. Найдите себе единомышлеников . Мне в моем развитии очень сильно помогли: скайп-чатик разработчиков социальных игр (теперь уже создатели: Голос Припяти 3D, Tanks Heroes, Contract Wars, Батла и многие другие) , а также одногруппники из Scream School по курсу гейм-дизайна . Их успех будет вас подталкивать, а обмен опытом ускорит процесс развития.
  4. Выберите себе платформу для разработки . Определите платформу, которая вас устраивает. Это может быть, например, Unity - за ее возможности, огромное комьюнити и сравнительно низкий порог входа. Вне зависимости от платформы, станьте ее евангелистом . Это позволит вам наладить коммуникацию с другими разработчиками и быстрее развиваться.
  5. Не давайте эмоциям взять вверх . Ошибки и неудачи станут вашими спутниками на длительный период, а если вы будете делиться процессом развития с русскоговорящими разработчиками, будьте готовы к тоннам говна большому количеству негативных отзывов. Не позволяйте эмоциям брать вверх: слушайте любые отзывы и предложения, но относитесь ко всему с необходимой критикой. Сохраняйте критичность ума .

Шаг 2. Помогите себе закончить хотя бы ОДИН проект!

Если вы закончили свой первый проект как разработчик игр, скорее всего, вы что-то делали не так. Даже эпилептоид не сможет закончить свой первый проект, а к первому релизу у него в архиве будет пара-тройка (минимум) замороженных проектов. Это нормально . Мы учимся на своих ошибках, а не совершают их только идиоты или те, кто ничего не делают.
Но в какой-то момент нужно будет собрать весь свой опыт, полученный из проб и ошибок, и, наконец, сделать свой первый релиз .
У каждого разработчика своя история первого релиза, но у меня есть пару советов, которые обязательно вам помогут:
  1. Вгоните себя в экстремальные условия , а выходом из них сделайте релиз. Поставьте себе реальный, но очень сжатый срок на релиз, например, 48 часов или неделю, но спать будете по 4 часа в день. Это даст сильный толчок, заставит оптимально использовать время и сфокусироваться на результате.
    • Сжатые сроки
      Сжимая сроки, не оставляйте себе время на риск. Сжимайте до последнего, пример с 48 часами - хороший.
    • Отсутствие сна
      Полное или почти полное отсутствие сна хороший мотиватор, но не доходите до крайностей. Практика показывает, что даже молодому организму надо давать отдых.
    • Менеджмент времени
      Не стоит выделять много времени на тайм-менеджмент, но не забывайте ставить себе вехи (milestone). Например, скажите себе, что через 5 часов вам надо сделать играбельный прототип.
      Например, в своем первом 48 часовом марафоне (на нем я только рисовал) , я за первую треть времени нашел стиль игры, нарисовал основной, игровой экран и все спрайты врагов. И за оставшееся время сделал 170+ спрайтов анимации и дорисовал интерфейс.
    • Конкурсы , особенно мероприятия, типа, HackDays или Ludum Dare, где нет времени на раздумья и надо сразу бросаться в работу, - отличное подспорье для пунктов выше.
  2. Поставьте себе рамки . Для первого релиза, особено в сжатые сроки, критически необходимо знать рамки проекта. Выпишите себе минимум, что нужен для релиза, и не выходите из него. По необходимости:
    • Урежьте список возможностей
      Было бы здорово сделать возможность летать на самолетах, но если вы делаете шутер про пехоту, сфокусируйтесь на стрельбе.
    • Сократите время игры
      Вероятно, вы рассчитывали сделать синглплеер на 5 часов игры, но вы останетесь победителем с демкой на 20 минут.
    • Уберите часть контента
      Конечно, дополнительная карта не будет лишней для вашего тактического шутера, но релиз останется релизом даже с одной картой.
  3. Ищите простые пути . Напоминайте себе, что вам необходим релиз, а не шедевр . У вас остается право на ошибку, но вы потеряли право на заморозку проекта.
    • Используйте костыли и хардкод
      Не стоит фокусироваться на универсальности или производительности кода. Оптимизация тоже подождет. Просто идите к результату.
    • Копируйте, а не придумывайте
      Если с ответом на любой вставший перед вами вопрос возникают трудности, копируйте решение коллег.
    • Используйте опыт на 150%
      Учет сделаных ошибок - это, несомненно, хорошо, но пока вы их совершали, вы собрали багаж наработок. Постарайтесь использовать из него что-то.
    • Подключите все ресурсы
      Если у вас есть друзья, готовые помочь, не отказывайтесь, а если у вас есть денежный ресурс - вкладывайте (покупайте готовые решения, контент и рабочие руки). Ваши вложения окупятся в дальнейшем.

Шаг 3. Сделать полноценный релиз

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

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

  1. Делайте проект каждый день . У всех начинающих инди есть занятия, с которыми приходится совмещать разработку. Но не забывайте добавлять хотя бы одну строчку кода или новый спрайт в игру каждый божий день. Это очень важно, это пункт номер 1.
  2. Ставьте себе небольшие задачи и старайтесь выполнять их каждый день. Долго открытая задача, например: “разработать систему инвентаря”, может быстро превратиться в “висяк” с очень низким приоритетом. Поставьте задачу “Интерфейс основного окна инвентаря” и закройте в этот же день, а затем радуйтесь прогрессу.
  3. Два шага вперед, один в сторону . Какой бы разнообразной вы ни планировали игру, не стоит делать сразу 50 типов врагов и тысячи уровней. Сфокусируйтесь на реализации возможностей игрока, а не способах их проявлений. Делаете слешэр? - Реализуйте возможность рубить врага, а врагов клонируйте.
  4. Прототипируйте . Когда вы сфокусированы на настоящем релизе, необходимо отдавать себе отчет, что игра должна быть хорошей . Проверить это можно, прототипируя.
  5. Вы делаете игру . Не стоит делать из своей игры движок или фреймворк. Нет, я не про чистоту кода или возможность его переиспользовать. Работайте хорошо, и результат будет хороший. Не стоит реализовывать возможности до того, как поймете, что они действительно необходимы вашей игре . Например, если вы не уверены, что будет возможность менять цвет одежды героя, не стоит рисовать маску для смены цвета в шейдере. Убедитесь, что ваш дизайн подразумевает наличие предметов перед тем, как создать класс Item.
  6. И главное… Не бойтесь вернуться на шаг 2 . Возможно, еще не время для настоящего релиза.