Разработка игр. С чего начинать?
Что должны предусматривать будущие разработчики игр? С какого языка начать обучение?
К чему стремиться? На кого равняться?
И что предстоит проделать прежде всего?
Большинство поклонников рок-музыки со временем берут в руки гитару. Фанаты спорта страстно мечтают о выходе на поле для игры в футбол, баскетбольную площадку или корт для занятий тенисом.
Ну а те, кто сделал сотни угонов в GTA, провел десятки часов в компьютерных клубах за Counter-Strike или достиг немалых успехов в cool spot, наверное думают о карьере разработчика игр.
Сложность в том, что подобному направлению учат в считанных учебных заведениях. Поэтому большинство разработчиков игр – самоучки, когда то сами разработавшие учебную программу. Но какие тонкости они учитывали?
С чего начинали и к чему стремились? Какой язык учили прежде всего?
На эти и прочие важные вопросы мы и постарались дать ответ.
К чему стремиться?
Перед тем как идти в магазин вы составляете перечень покупок (хотя бы в голове). Перед выездом в второй конец города – ложите маршрут. Ну а прежде чем обучаться разработке игр, лучше задаться вопросом: чем конкретно вы желаете заниматься?
Создавать мобильные приложения или браузерные игры? Работать в большой компании или небольшой? Профессионально заниматься разработкой игр или посвящать этому свободное от работы время?
И если первое, то что интересует вас больше: создание интерфейса, отшлифовка геймплея или написание скриптов?
Правильная постановка цели даст возможность сэкономить много сил и времени. Более того, даст возможность добиться конечного пункта кратчайшим путем.
Без риска сойти с дороги или угодить в болото.
Какой язык обучать?
Более того, от цели зависит и ответ на животрепещущий вопрос: с какого языка программирования необходимо начинать?
Так, будущим разработчикам игр вроде Minecraft и мобильных приложений под Android необходимо обратить большое внимание на Java. Для начала рекомендуем пройти интенсив «Основы Java-программирования». Тем, кто заглядывается в сторону iOS – на Objective-C.
Для браузерных игр иногда хватает знания Ruby-On-Rails. Для очень небольших и обычных временами достаточно HTML. В производстве Flash-игр применяется ActionScript, а для написания скриптов разной сложности вам нужно будет JavaScript или, возможно, не очень известная Lua.
Для создания же маленьких консольных игр требуется знание C#.
Что до наиболее крупнобюджетных игр (как говорят иначе класса AAA), то многие из них оборудованы собственным или заимствованным у сотрудников «движком». Очень часто, тем не менее, весь «движок» или его значительная часть написана на C++.
Конкретно данный язык применялся при разработке большинства популярных «игрушек» – от Doom 3 и Call Of Duty до FIFA и The Sims. Тогда как классика вроде Quake была написана на C.
Тем не менее, в освоении C++ есть и закавыка – излишняя сложность. Неспроста ведь поговаривают, что приниматься за C++, не зная иных языков, – все равно, что начинать изучение математики с линейных уравнений.
Достаточно ли одного языка?
Одна из прелестей программирования – возможность постоянного саморазвития. В создании же игр (особенно больших) самосовершенствование, в том числе изучение как можно большего количества языков, – не каприз, а необходимость жизни.
Так, квалифицированные разработчики, трудящиеся на пользу гигантов индустрии игр, очень часто встречаются с необходимостью по очереди писать на 7-8 языках. При этом, кроме указанных выше языков, им приходится изучать, например, Python либо и совсем SQL (как вы понимаете, для создания баз данных).
Благодаря этому, если вы все таки захотели связать судьбу с производством больших игр, готовьтесь стать «полиглотом». Более того, чем больше языков вы освоите, тем более забавные и различные задачи перед вами поставят.
Ну и, разумеется, шансы на получение работы мечты ощутимо увеличатся.
Прежде чем осуществить кругосветное путешествие, необходимо обучиться ходить. Ну а перед серьезным игровым проектом следует попробовать силы в чем-то менее значимом.
Фактически все квалифицированные разработчики не зависимо от регалий и таланта начинали с маленьких приложений: настолок, вариантов популярных «игрушек», простеньких «флэшек». Тогда они не думали о больших выставках вроде E3, а накапливали неоценимый опыт.
Отчего же не сделать тоже? Не обязательно при этом писать архисложный код.
Для дебюта достаточно применения специализированных программ для создания игр (например, Game Maker). Ведь даже благодаря несложному инструментарию вы существенно облегчите себе жизнь.
Во-первых, в миниатюре поймете логику и структуру фактически любого игрового приложения. Второе, набьете шишки, которые заживут во время перехода к серьезным проектам.
Наконец, третье, обогатите фотографии. Ведь даже обычная «игрушка» требует большое количество времени, терпения и искусства для выдумки концепции, написании кода и устранения багов.
Более того, показывает, что с производством игр вы знакомы не только в сухой теории.
Что брать за ориентир?
Тот, кто мечтает стать писателем, прочитает сотни книг прежде чем напишет хотя бы одно слово. Мастера игры на фортепиано на зубок знают лучшие произведения Штрауса, Шопена и Бетховена.
Знаменитые же художники перед большими выставками наизусть заучивали историю искусств.
В создании игр действует аналогичный принцип. Вы не сумеете формироваться в вакууме.
Благодаря этому играйте, вдохновляйтесь мастерами и, как губка, впитываете лучшее. При этом постарайтесь смотреть на приложения не глазами «геймера», а взором разработчика. Говоря иначе: транспонируйте игру.
Задумайтесь, почему в этот момент времени «бот» побежал налево, а не назад? Из-за каких факторов меняется сила и точность удара в спортивном симуляторе? Как создать «эффект усталости» при продолжительном беге персонажа?
Как сделать таким образом, чтобы во время дождя игрок слышал звук капель, а не свиной визг? В общем, проникайте в суть.
Попытайтесь воспроизвести в голове алгоритмы, с которыми сталкиваетесь во время игры. Уж поверьте, аналогичный конструктивный подход поможет вам в будущей нелегкой, но чертовски увлекательной карьере разработчика игр.
Что должны предусматривать будущие разработчики игр? С какого языка начать обучение?
К чему стремиться? На кого равняться?
И что предстоит проделать прежде всего?
Большинство поклонников рок-музыки со временем берут в руки гитару. Фанаты спорта страстно мечтают о выходе на поле для игры в футбол, баскетбольную площадку или корт для занятий тенисом.
Ну а те, кто сделал сотни угонов в GTA, провел десятки часов в компьютерных клубах за Counter-Strike или достиг немалых успехов в MMORPG, наверное думают о карьере разработчика игр.
Сложность в том, что подобному направлению учат в считанных учебных заведениях. Поэтому большинство разработчиков игр – самоучки, когда то сами разработавшие учебную программу.
Но какие тонкости они учитывали? С чего начинали и к чему стремились? Какой язык учили прежде всего?
На эти и прочие важные вопросы мы и постарались дать ответ.
К чему стремиться?
Перед тем как идти в магазин вы составляете перечень покупок (хотя бы в голове). Перед выездом в второй конец города – ложите маршрут. Ну а прежде чем обучаться разработке игр, лучше задаться вопросом: чем конкретно вы желаете заниматься?
Создавать мобильные приложения или браузерные игры? Работать в большой компании или небольшой? Профессионально заниматься разработкой игр или посвящать этому свободное от работы время?
И если первое, то что интересует вас больше: создание интерфейса, отшлифовка геймплея или написание скриптов?
Правильная постановка цели даст возможность сэкономить много сил и времени. Более того, даст возможность добиться конечного пункта кратчайшим путем.
Без риска сойти с дороги или угодить в болото.
Какой язык обучать?
Более того, от цели зависит и ответ на животрепещущий вопрос: с какого языка программирования необходимо начинать?
Так, будущим разработчикам игр вроде Minecraft и мобильных приложений под Android необходимо обратить большое внимание на Java. Для начала рекомендуем пройти интенсив «Основы Java-программирования».
Тем, кто заглядывается в сторону iOS – на Objective-C. Для браузерных игр иногда хватает знания Ruby-On-Rails.
Для очень небольших и обычных временами достаточно HTML. В производстве Flash-игр применяется ActionScript, а для написания скриптов разной сложности вам нужно будет JavaScript или, возможно, не очень известная Lua.
Для разработки же маленьких консольных игр требуется знание C#.
Что до наиболее крупнобюджетных игр (как говорят иначе класса AAA), то многие из них оборудованы собственным или заимствованным у сотрудников «движком». Очень часто, тем не менее, весь «движок» или его значительная часть написана на C++.
Конкретно данный язык применялся при разработке большинства популярных «игрушек» – от Doom 3 и Call Of Duty до FIFA и The Sims. Тогда как классика вроде Quake была написана на C.
Тем не менее, в освоении C++ есть и закавыка – излишняя сложность. Неспроста ведь поговаривают, что приниматься за C++, не зная иных языков, – все равно, что начинать изучение математики с линейных уравнений.
Достаточно ли одного языка?
Одна из прелестей программирования – возможность постоянного саморазвития. В создании же игр (особенно больших) самосовершенствование, в том числе изучение как можно большего количества языков, – не каприз, а необходимость жизни.
Так, квалифицированные разработчики, трудящиеся на пользу гигантов индустрии игр, очень часто встречаются с необходимостью по очереди писать на 7-8 языках. При этом, кроме указанных выше языков, им приходится изучать, например, Python либо и совсем SQL (как вы понимаете, для создания баз данных).
Благодаря этому, если вы все таки захотели связать судьбу с производством больших игр, готовьтесь стать «полиглотом». Более того, чем больше языков вы освоите, тем более забавные и различные задачи перед вами поставят.
Ну и, разумеется, шансы на получение работы мечты ощутимо увеличатся.
Прежде чем осуществить кругосветное путешествие, необходимо обучиться ходить. Ну а перед серьезным игровым проектом следует попробовать силы в чем-то менее значимом.
Фактически все квалифицированные разработчики не зависимо от регалий и таланта начинали с маленьких приложений: настолок, вариантов популярных «игрушек», простеньких «флэшек». Тогда они не думали о больших выставках вроде E3, а накапливали неоценимый опыт. Отчего же не сделать тоже?
Не обязательно при этом писать архисложный код. Для дебюта достаточно применения специализированных программ для создания игр (например, Game Maker). Ведь даже благодаря несложному инструментарию вы существенно облегчите себе жизнь.
Во-первых, в миниатюре поймете логику и структуру фактически любого игрового приложения. Второе, набьете шишки, которые заживут во время перехода к серьезным проектам.
Наконец, третье, обогатите фотографии. Ведь даже обычная «игрушка» требует большое количество времени, терпения и искусства для выдумки концепции, написании кода и устранения багов.
Более того, показывает, что с производством игр вы знакомы не только в сухой теории.
Что брать за ориентир?
Тот, кто мечтает стать писателем, прочитает сотни книг прежде чем напишет хотя бы одно слово. Мастера игры на фортепиано на зубок знают лучшие произведения Штрауса, Шопена и Бетховена.
Знаменитые же художники перед большими выставками наизусть заучивали историю искусств.
В создании игр действует аналогичный принцип. Вы не сумеете формироваться в вакууме. Благодаря этому играйте, вдохновляйтесь мастерами и, как губка, впитываете лучшее.
При этом постарайтесь смотреть на приложения не глазами «геймера», а взором разработчика. Говоря иначе: транспонируйте игру.
Задумайтесь, почему в этот момент времени «бот» побежал налево, а не назад? Из-за каких факторов меняется сила и точность удара в спортивном симуляторе? Как создать «эффект усталости» при продолжительном беге персонажа?
Как сделать таким образом, чтобы во время дождя игрок слышал звук капель, а не свиной визг? В общем, проникайте в суть. Попытайтесь воспроизвести в голове алгоритмы, с которыми сталкиваетесь во время игры.
Уж поверьте, аналогичный конструктивный подход поможет вам в будущей нелегкой, но чертовски увлекательной карьере разработчика игр.
GameDev: с чего начинать разработку игр?
Разработка игр за прошедшие десятилетия преобразовалась в полную индустрию и сильно поменялась. До недавнего времени программисты не знали, с чего начинать, из-за отсутствия информации и ресурсов, теперь – из-за излишка.
Заграничные институты начали открывать необходимые специальности и курсы. Поэтому, если хотите разрабатывать новые игровые движки, учите британский и ищите собственную программу здесь или здесь. Впрочем индустрия меняется такими темпами, что практические умения могут два раза состарится за время учёбы.
Желающим выучить разработку движков собственными силами смогут помочь наши публикации: учебный план по освоению gamedev или 12 этапов изучения геймдева. Если идея своей игры уже созрела – начните именно сейчас.
Необходимый минимум
Не обращая внимания на то, что теперь расчетом игровой физики занимаются движки, GameDev – все еще жестокое место. Для успеха теперь нужны не столько технические умения, сколько настойчивость и креативность.
Вам нужно будет решать непосильные задачи применяю только собственную голову. Даже хозяйка дома сможет работать с конструкторами вроде GameMaker или Construct 2. В первом супер простой скриптовый язык, в другом совсем нет кода.
Некоторые из подобных игр даже добиваются успеха в Стим, все упирается в идею.
Путь конструкторов ограниченный в вариантах и дает возможность делать исключительно небольшие игры. Для чего-то посерьезней придется начать с программирования. К примеру, пройдите курс по алгоритмам и структурам данных на C# и подбирайте Unity
Первые шаги
Стартуйте с малого. Рекомендуется первую игру делать уровня Pong-game или Flappy Bird, потом что-то уровня Марио. С гайдами это не занимает большое количество времени.
Для старта движок неважен. Подбирайте, опираясь на языки, которыми владеете. Я бы рекомендовал брать наиболее сложный.
Данные проекты очень малы, чтобы написать их самому даже на С++ и понять важные элементы и паттерны. Если доведёте эти два проекта до победного конца и терять не будете желание продолжать – ласково просим в GameDev.
Команда
Будьте готовыми 90% работы на первых проектах делать своими руками. Для саморазвития этого будет достаточно. А по желанию зарабатывать деньги на постоянной основе – необходима команда.
Один человек не сможет хорошо осуществить код, испытание, игровую идею, арты, музыку, сюжет и продвижение, – что-то обязательно провалится. Унывать не стоит. Заниматься играми хотят не только программисты.
Регулярно ищите помощь на тематических форумах типа BuildBox или TIG, есть сообщества на пикабу и реддите, даже довольно большой сервер в discord.
Выбор движка
Завершив с ремейком Марио, беритесь за игру мечты. Сначала нужно правильно сформулировать идею в текстовом виде, пропишите gameplay и сюжет.
Если хорошо рисуете – сделайте концепты. Постарайтесь всегда видеть окончательную точку.
Это важнее, чем может показаться. Иногда неделями не будет заметного прогресса в работе.
План может измениться десяток раз, это хорошо, но цель должна быть четко сформулирована.
Разобравшись с законченной идеей, можно приступать к движку. Хорошим многофункциональным выбором будет Unity.
Для опытных программистов, незаинтересованных в мобильных платформах, подойдёт Unreal Engine. Оба движка применяются в профессиональной индустрии, бесплатны для стартапов и имеют немалое число бесплатных ассетов.
Как бонус, добившись приличного уровня мастерства, будете претендовать на работу в студиях. Ваша идея может не выстрелить, и вспомогательный вариант не будет мешать.
Хороших движков десятки. Если вам ближе другой, из-за языка или IDE, смело подбирайте его.
Единственно верного пути нет.
Маленькой перечень движков для начинающих:
- SFML или Blender – С++.
- Unity – С#. В вариантах до 2017.1 можно применять говор JavaScript, в настоящий момент язык не поддерживается движком.
- LIBgdx – Java.
- pixijs – JavaScript.
- Pygame – Python.
Графика и музыкальное оформление
Основной пункт, о котором забывают молодые разработчики. Еще совсем недавно это был камень преткновения, но рост инди сектора создал очень большой рынок. Посмотрите перечень бесплатных или недорогих ресурсов в точках продажи Unity и Unreal Engine, это даст возможность определиться и вдохновиться.
Если вы подобрали другой движок, уверяю вас, запрос в Гугл “free assets for ” выдаст результат. Есть и многофункциональные библиотеки, типа cubebrush или sketchfab.
Для амбициозного проекта все это не заменит графического оформителя, но маленькую игру собрать даст возможность.
С аудио ситуация похожа. Вот отличные сервисы с игровыми звуками opengame, musopen. Для фоновой музыки прекрасно подходят bensound или incompetech.
Золотой жилой может быть soundcloud, но навигации нет, придется переслушать горы хлама.
Продвижение
Стим уже перегружен инди играми, без маркетингового продвижения в нём потеряется даже крутая идея. Прекрасным вариантом может стать выходи на молодые платформы типа Discord Store, но лучше начать искать вкладчика. Даже с наличием готовой игры на руках, это сложная задача, но осуществимая.
В мире соцсетей можно обойтись достаточно скромными бюджетами на рекламу.
Заключение
Постарайтесь не оставаться в одиночку, даже в том случае, если команду найти не выходит. Перегореть можно в 2 счета.
Ищите единомышленников хотя бы для общения. И не забывайте, что умения GameDev сами по себе замечательный скилл и пригодятся в разработке любых программ.
Время не потрачено будет коту под хвост.
Геймдизайнер с нуля: как начать делать игры без опыта
Голубев Никита, коммерческий автор и переводчик, конкретно для блога Нетологии перевёл статью разработчика игр Анжелы Хе про то, как без способностей программирования создать собственную первую игру.
Всего 2 года назад я была 17-летней школьницей и ничего не знала о программировании. Это не помешало мне начать учиться и спустя пару месяцев выпустить собственную первую игру в Steam.
Сегодня у меня более 10 игр для ПК, интернета и мобильных устройств и более 1,9 млн игроков.
Не имеет значения, что вы сможете в настоящий момент — при правильном желании вы тоже сумеете делать игры. 2 года назад такое казалось невозможным: это было очень трудное, что я сделала в жизни, и оно того стоило.
Теперь я понимаю, что в создании игр, как и в любом ином деле, вы растёте собственно тогда, когда пробуете, заблуждаетесь и совершенствуетесь.
Всему, что я знаю, я научилась сама, а теперь научу вас.
Чтобы выполнить игру, необходимо пройти 6 этапов:
- Идея
- Графика
- Программирование
- Звук
- Подготовка к статьи
- Публикация
В статье для любого этапа я выделю:
— Рекомендации, которые я вынесла из собственного и чужого опыта.
— Инструменты, которые я считаю наиболее полезными.
Идея
Совет
У вас есть клевая идея. Но как оформить её на бумажном листе?
У каждого собственный путь. Одни составляют дизайн-документы по 60 страниц, иные напишут лист неразборчивых заметок. Не знаю, как удобнее для вас, но обязательно закрепите следующее:
- Фишки. Что выполняет вашу идею крутой? Это один из самых важных. Как лишь вы сумеете поймать и закрепить это, другие этапы покажутся легче. Ваша игра поднимает острые темы? Станет новой классикой? Или отличается от всего, что было до недавнего времени?
- Механика. Что выполняет игрок и для чего? Это ваш геймплей. Он может быть простым, как поочерёдное нажатие клавиш Q, W, O, P в игре QWOP, или сложным, как конфигурации в Dwarf Fortress.
- Легенда. За счёт чего игроки запомнят вашу игру? С какими эмоциями они будут её оставлять? У любой игры есть история. Если стория неочевидна, игрок сам создаст её. История может быть различной: возрастание чисел в игре 2048, восхождение империй в Civilization или безмолвные взаимные действия в Monument Valley. Стоит подумать, какая легенда будет стоять за вашей игрой.
- Настроение. Какое впечатление создает игра? Какие оптические эффекты и музыка будут этому помогать? Важно первое представление, которое сможет задеть игрока и потом заставить его опять возвращаться к игре. Возможно, Вам будет охота ретро-эффекта с пиксельной графикой и 8-битной музыкой или современного вида с плоской геометрией — стоит подумать об этом.
- Участвуйте в хакатонах. Вам и иным участникам потребуется выполнить игру за отведённое время. Как минимум вы вдохновитесь и встретите единомышленников. Попробуйте Ludum Dare, один из очень больших геймджемов.
- Создайте перечень идей. Записывайте каждую новую мысль. Во времена ступора всегда можно заглянуть в перечень и найти что-нибудь подходящее. Так смотрится мой персональный Гугл Doc идей и заметок.
Когда приходит вдохновение, бросайте все и пишите. В следующий раз, когда мысль уйдёт, не нужно будет высасывать идеи из пальца.
Инструменты
- Заметки на Mac OS.
- Гугл Документы.
- Трелло.
Командная работа:
- Гугл Диск.
- GitHub. Требуется git и Unity .gitignore.
- Unity Collab. Наиболее простой инструмент, но с ограничениями в бесплатной версии.
Я делаю игры на Unity. Дальше речь пойдёт о нём, но не нужно боятся применять другой движок.
Графика
Совет
Если вы не способны программировать, сначала прочтите раздел «Программирование». Навряд ли вы желаете потратить время на графику и выбросить её благодаря тому, что под неё не написать код.
если вы даже не способны рисовать, игру можно создать прекрасной, применяя три зрительных принципа: цвет, форма и объём.
Thomas Was Alone — обычная и великолепная игра
Интерфейс
Стоит подумать, как сделать игру уникальной при помощи схемы цветов, шрифтов и иконок без потери удобства для игрока. Понятна и читается ли значимая информация?
Плохой и благоприятный шрифт
2D-анимация
Анимацию можно осуществить двумя вариантами:
- Покадровая анимация. Когда вы отрисовываете каждый кадр. Для этого примените таблицы спрайтов и Sprite Packer в Unity.
- Скелетная анимация. Отрисовывается каждая подвижная конечность, потом анимируется её позиция и повороты. Это скорее, легче и тратит меньше оперативки. Для 2D-анимации на Unity примените пивоты (точки привязки) или плагин Anima 2D.
Что так же может понадобиться
Рекомендации, которые используются не только к игровой графике, но и к остальным программам:
- Объекты-тайлы применяются для создания плитки и просят мало места на жёстком диске.
- 9-slice объекты с немасштабируемыми границами и масштабируемым центром дают возможность повышать изображения без наполнения памяти.
Пятно становится шире, но углы остаются прежними
- Делайте разрешение любого объекта таким, чтобы оно делилось на 4 или было степенью числа 2.
- В Photoshop вы можете сберечь любой слой в отдельный файл через Файл > Экспорт > Быстрый экспорт в [формат изображения].
Инструменты
- Photoshop.
- Sketch.
Принципы создания интерфейса:
- Photoshop.
- Gimp.
- Paint Tool SAI — для графики в тематике аниме.
Создание 3D объектов:
- Blender — мощное ПО с непростым учебой.
- Maya — для анимации.
- Max — для отрисовки.
Бесплатные игровые ассеты:
- Behance — шрифты, иконки и другое.
- KennyNL — высокого качества объекты, готовые к применению в играх.
- Open Game Dev Art — очень большая библиотека графики, созданной иными пользователями.
Вдохновление:
- Dribbble — закрытое объединение декораторов.
- Behance — объединение декораторов, к которому может присоединиться каждый у кого есть желание.
- itch.io — объединение создателей инди-игр.
Программирование
Совет
Подберите игровой движок, среду разработки и начните углубляться в код.
Представленных ниже знаний достаточно для начала. Все варианты написаны на C++, одном из языков программирования в Unity3D. (Примечание переводчика: в действительности в Unity применяется C#, который похож на C++).
Типы данных и переменные.
- В основе кода лежат данные, которые хранятся в переменных. Можно объявить переменную так:
int — вид данных, i — имя переменной, = 0 — значение переменной.
Часто применяемые типы данных:
int и long — для целых чисел,
float и double — для чисел с плавающей точкой,
string — строчные данные.
Условия. При помощи оператора if можно сделать условия для выполнения кода:
Применяя оператор else, можно увеличить требование и отобразить что сделать, если требование не отвечает истине:
Циклы for/while. While-циклы повторяют части кода, пока требование остаётся настоящим.
Как только требование перестаёт быть настоящим, цикл обрывается.
For-циклы похожи на while-циклы. Для while мы пишем так:
Равносильный for-цикл будет таким:
Структуры данных. У нас есть данные, с которыми можно взаимодействовать.
Вдобавок их можно сохранять в особенной структуре — массиве, перечне, очереди, стеке или наборе.
Простой примера массива:
Функции и исключения. Функция — это короткая строка кода, заменяющая большое количество строчек кода. К примеру, выведем функцию EatBread(), которая содержит следующее:
Тогда при выводе функции делаются два выражения в середине неё.
Если в коде что-то идёт не так, на помощь приходят исключения. Они как бы говорят: «Так, погоди, тут ты сделал что-то нелогичное.
Перепроверь ещё один раз».
- Язык. На каком языке вы будете программировать? Очень часто игры пишут на C++, JavaScript или C#. Языки выделяются синтаксисом и областью использования.
- API (Application Programming Interface). Как лишь вы познакомились с базой, можно приступать к изучению программного интерфейса приложения для определенного игрового движка. Они собой представляют набор полезных инструментов, упакованных в простые классы и функции. API сильно облегчает жизнь программиста.
- Посмотрите варианты проектов на подобранном игровом движке. Можно отыскать много бесплатных примеров игр на движках Unreal и Unity. Это даст возможность увидеть итог и общий процесс работы полностью, и еще получить идеи для собственной будущей игры.
Немного вдохновения. Знаю, программирование сначала пугает.
Все кажется бесполезным, вы регулярно спотыкаетесь и перед лицом частых ошибок желаете сдаться, однако это не означает, что программирование не для вас.
Код — это вызов самому себе. И ничего не понимать сначала — хорошо.
Как и любому навыку, программированию необходимо обучаться. И, может быть, это окажется очень интересно.
Иные немаловажные основы программирования:
- Объектно-ориентированное программирование. Выполняет код более настоящим.
- Соглашение об именовании. Называйте классы, методы и переменные таким образом, чтобы вам и иным программистам была понятна их цель. К примеру, назовите функцию атаки ближнего боя,
- Декомпозиция. Сделайте из повторяющегося кода функцию и вызывайте её заместо копирования повторяющихся строк.
- Шаблон проектирования Singleton («Одиночка»). Шаблон программирования, который дает возможность данным сберегаться в одном месте.
- Избегание статических переменных. Кроме применения синглтонов, я избегала статических переменных — они живут только на определенный период времени игры, небыстрые и могут вести себя непредсказуемо.
- Шаблон проектирования Observer («Наблюдатель»). Позволяет объекту узнавать о состоянии остальных объектов, не теряя компьютерного времени на проверку.
Вещи, свойственные Unity:
- Сопрограммы. Дают возможность начать исполнять действие, продолжать в течение необходимого времени и потом остановить. я применяю их для оптических эффектов взрывов, резких движений.
- Класс ScriptableObject. Он хранит данные с небольшими расходами, чем базовый класс MonoBehaviour.
Инструменты
- Собственный движок на C/C++. Невысокий порог входа. (Примечание переводчика: в действительности, создание собственного движка требует значительных усилий и глубокого знания принципов программирования).
- Unity. Поддерживает 2D/3D. Требует знаний JavaScript/C#. Усредненный порог входа. Разработка для нескольких платформ.
- Unreal. Поддерживает 2D/3D. Требует знаний C++. Усредненный порог входа. Разработка для нескольких платформ.
- pixi.js. Только 2D. Требует знаний JavaScript. Усредненный порог входа. Разработка для браузера.
- GameMaker Studio. Поддерживает 2D/3D. Требует знаний специализированного языка движка GML (Game Maker Language). Для новичков. Разработка для нескольких платформ.
- Corona. Только 2D. Требует знаний Lua (похож на JavaScript). Для новичков. Разработка для нескольких платформ.
Среды разработки:
- Visual Studio Code (для MacOS) — не зависает, имеет встроеную справочную информацию и хорошие «горячие» клавиши.
- Visual Studio (для Windows).
- MonoDevelop — ставится с Unity, иногда подвисает.
Бесплатные ассеты Unity:
В Unity Asset Store, bitbucket и GitHub особенно много бесплатных ассетов. В собственных проектах я применяю минимум по два. Они облегчают жизнь, но далеко не безупречны.
Увидели погрешность — исправляйте и говорите разработчику о ней.
Очень важный, даже основной источник решения трудностей с кодом — Google!
Совет
Аудио способно создавать настроение и погружать в игру, однако для него необходима память.
Для начала решите: вы желаете звук? Если да, будет ли в игре музыка, звуковые эффекты, озвучка или повествование.
Во всяком случае потребуется запись и сведение так, чтобы звук подходил под настроение игры. К примеру, Bastion применяет органические и инструментальные звуки, хорошо вписующиеся в мир игры.
Crypt of the Necrodancer включил в себя смесь электронных ритмов и восьмибитного рока, чтобы передать ритм и яркость игры.
Погружение решает. Если звуки не совпадают с настроением игры, игроку будет не легко окунуться в ваш мир.
Инструменты
Приложения для работы с аудио:
- Logic Pro (исключительно для MacOS). Цена 200 $.
- FL Studio. Цена 99–899 $. Есть бесплатная демоверсия.
- Reaper. Цена 60–225 $.
- Audacity. Бесплатная программа. Имеет мало возможностей, но полезен для очистки аудио.
Создание ретро-эффектов:
- Soundcloud. Тут можно отыскать бесконечно много звуков и музыки под лицензией Creative Commons. Начните с этого плейлиста. Применять можно бесплатно, но не забывайте показать авторство.
- Incompetech.
- Bensound.
Подготовка к статьи
Совет
Есть маленькая вероятность — на 99,99 процентов, что в игре есть ошибки. А это означает, что прекрасное время заняться баг-тестом.
Как тестировать игру на баги?
- Дайте иным сыграть в игру. Неплохо бы с вами вместе, на случай, если они встретятся с ошибкой и не смогут понять или объяснить её.
- Необходимо проверить игру на различных платформах. В редакторе может не быть проблем, но работает ли она там, где её будут запускать? Будьте особенно внимательны с Linux и Android.
Итак, баг найден. Что теперь?
- Необходимо проверить консоль на исключения. Если нашли исключение, поищите файл и строку, где сработало исключение. Если оно звучит по-марсиански, поищите решение в сети, и стоит подумать, почему именно в данной строке срабатывает исключение.
- Напишите в консоль. Попробуйте вывести логи (системные файлы) в возможных местах ошибки. Введите различные переменные и сверьте полученные значения с ожидаемыми. При несовпадении — исправляйте.
- Необходимо проверить логи. Системные записи вашего проекта дадут больше информации, чем консоль. Прочтите строки, где сработало исключение. Гуглите все, что не знаете.
- Поспите. Все починится утром. Это просто плохой сон 🙂
Распространенные ошибки
В чём дело: функция делается с несуществующей (null) переменной.
Прекрасное решение: необходимо проверить, считается ли переменная null.
SyntaxErrorException.
В чём дело: ошибки в синтаксисе.
Прекрасное решение: в сообщении отмечено, какой символ предоставил погрешность. Поищите и исправьте его.
Примечание: Необходимо проверить, какие кавычки вы применяете.
» //правильные кавычки;
» //неиспользуемые кавычки, они принесут вам много ошибок.
- Розовый или чёрный экран.
Потенциальная проблема: не обработался шейдер.
Потенциальные причины: вы применяете 3D-шейдеры в 2D-игре или шейдеры, которые не поддерживаются ОС. Поймете, что вы применяете мобильные шейдеры для мобильных игр.
Как завершите с ошибками, можно приступать к оптимизации продуктивности и применения памяти. Пользователи смогут запускать игру быстрее и не испытывать трудностей с нагреванием устройств.
Рекомендации по оптимизации
Инструменты (исключительно для Unity)
Публикация
Совет
Прекрасное время показать всему миру своё творение.
Продвижение — самая волнительная стадия. Если у Вас есть сомнения, вам поможет объединение гейм-дизайнеров.
Не забывайте, что вы не одиноки, и раз прошли так много, необходимо закончить дело до конца.
Вы не узнаете, станет ли игра хитом, пока не опубликуете её.
Сделайте скриншоты страниц «Об игре» и создайте описания для каждой платформы, на которых думаете выпустить игру.
Нетворкинг
По желанию, чтобы все узнали об игре, напишите анонсы для игровых медиа, участвуйте в фестивалях и конференциях.
Отправьте описание игры в прессу за 7 дней до выхода — дайте людям время написать о ней. Может случиться, что о ней не станут писать, но не забывайте: журналисты любят привлекательные истории о разработчиках, уникальную или противоречивую идею и медиа-кит.
Где взять адреса?
- Поищите в сети контакты авторов, которые вам импонируют: почта, страница в LinkedIn, Твиттер.
- Поищите почту издания в разделе «О нас» или внизу страницы.
Не пишите в игровые издания, которые не освещают ваш жанр или целевую игровую платформу.
Они снимут по игре видео, если:
- Игра станет востребована на платформах.
- Вы напишете напрямую. Не говорите о себе, коротко, прекрасно и убедительно расскажите про игру. Примените гифки и скриншоты для вовлечения внимания.
В большинстве случаев адреса блогеров указаны на странице. Если нет, попробуйте найти контакты во всемирной сети.
Письмо видеоблогеру Markiplier, чей канал исчисляет более 21 миллиона подписчиков
Видео по игре от Markiplier
Соцсети
Это великолепный инструмент для продвижения: Agar.io обрела популярность на 4chan, Butterfly Soup подскочила в загрузках после внимания в Твиттере.
Как лучше: публиковаться через издателя или самому. Желаете пойти по пути Hotline Miami, выпущенной Devolver Digital, или перенять опыт Farmville и Doki Doki Literature Club?
Чтобы сотрудничать с издателем, необходимо сначала его найти. Потом будет маленькой ворох бумажной работы, но вы получите достаточно средств для развития игры.
Если готовитесь издаваться собственными силами, будьте готовыми расходовать много времени на изучение маркетинга. Вы можете провалить кампанию по продвижению, однако в процессе наберётесь ценных знаний и сохраните деньги.
Кол-во установок игры растёт
Я предпочитаю публиковать игры собственными силами. Мне нравится учиться, и я верю, что по-настоящему хорошая игра будет успешна не зависимо от продвижения.
Жмите на кнопку «Опубликовать»!
Вышло! Теперь расслабьтесь, берите что-нибудь вкусное и отдохните.
Вы работали не покладая рук и получили это.
Не нужно боятся, если игра не обрела ожидаемого внимания — это хорошо. У моей первой игры всего 255 загрузок в Steam.
Главное, что вы выполнили игру и многому научились. В настоящий момент этого вполне достаточно, и всегда существует возможность попробовать ещё один раз с новыми познаниями.
Инструменты
Сервис presskit() помогает разработчикам оформить описание игры для прессы.
- Steam (PC) — 100 $ за публикацию.
- Origin (PC).
- GOG (PC) — бесплатная публикация после разрешения.
- Mac App Store (MacOS) — 100 $ в течении года, требуется учётная запись разработчика Apple.
- itch.io (PC / Web) — бесплатная публикация.
- Game Jolt (PC/Web) — бесплатная публикация.
- Armor Games — бесплатная публикация.
- Kongregate (Web) — бесплатная публикация.
- Newgrounds (Web) — бесплатная публикация.
- GitHub (Web) — бесплатная публикация на ресурсе, заканчивающемся на «___.github.io».
- Amazon (Web/Mobile) — бесплатная публикация.
- Гугл Play (Mobile) — 25 $ за публикацию.
- iOS App Store (Mobile) — требуется учётная запись разработчика Apple.
Журналы об играх:
- Independent Games Festival (IGF). Приём заявок до 1 октября.
- Indiecade. Всемирный фестиваль инди-игр. Приём заявок до мая–июня.
- Swedish Game Awards. Игровая премия Швеции. Приём заявок до июня.
- South by Southwest Festival (SXSW). Приём заявок до декабря.
- The Game Awards. Приём заявок до ноября.
Игровые конференции:
Заключение
Нет обычного пути создания игры. Существует только ваши решительность и усилия.
За каждым Half-Life, Minecraft и Uncharted лежат океаны крови, пота и слез.
Кен Левин, создатель Bioshock
Вы будете допускать ошибки, ощущать себя в тупике и хныкать. Это хорошо — значит, вы растёте над собой.
Спецматериал. С чего начинать разработку собственной игры
С чего начинать разработку собственной игры? Как ни удивительно, однако самым первым и очевидным пунктом тут будет: оставьте эту затею.
Серьёзно. Если вы только-только думаете собственный путь в индустрии игр, у вас горят глаза, и вы точно уверены, что знаете как сделать собственного « Ведьмака», Fallout или World of Warcraft — не стоит начинать.
Разработка и продвижение игр — это в основном абсолютно не вечеринка с компанией друзей на природе под шашлыки и пиво. Данный процесс требует самой большой отдачи, очень часто вынуждая не только попрощаться со всем собственным достаточным временем, но и добавить в сутках несколько дополнительных часов.
То, что вы прошли все части Assassin’s Creed и последние 5 лет запойно играете в Dоta 2 или LoL, абсолютно не означает, что вы что-то понимаете в индустрии игр. Скажу прямо, наверное, вы совершенно ничего в ней не знаете.
Если с тем багажом знаний, который есть у вас сейчас, вы начнете делать собственную игру собственными силами, то вас наверное ждет крах.
Редкие исключения лишь подтверждают данное правило. Люди приходят в игровую индустрию, наслушавшись историй успеха Minecraft, Punch Club, Terraria и остальных. Однако они забывают, что тот же Нотч, перед тем как начал делать Minecraft, на протяжении нескольких лет отработал в индустрии игр.
В том числе, 4-ре с лишним года проработал в компании King. Да-да, той самой King, которая ответственна за Free-to-Play серию «Saga».
Такие люди также забывают о сотнях разработчиков, которые, как и они, пришли в игровую индустрию с горящими глазами и желанием сделать собственного «Ведьмака» или Fallout. и облажались.
Если у вас есть желание сделать собственную игру, чтобы она вышла, и ее приобретали, то ваш прекрасный вариант — работа в игровой компании или небольшой студии.
Это долго. Вначале вам нужно будет разобраться в том, как все работает внутри.
Да, быстрее всего начнете вы с самых низов, а делать будете какое-нибудь бездушное Free-to-Play, но уж поверьте, оно стоит того. С каким то периодом вы начнете более-менее ориентироваться в том, как обязаны быть построены процессы.
Поймете, чем отличается создание Pay-to-Play игр от Free-to-Play, соберете знаний и обзаведетесь знакомствами. И вот тогда, Находясь на позиции senior-разработчика, вы с высоты полученных знаний и пройденного пути посмотрите на собственный давнишний концепт Fallout Online и быстрее всего убедитесь, что уже не желаете делать эту игру.
Нужно согласится, намного уютнее и просто менее расходно учиться и набивать шишки за чужой счёт.
Но, например, что по той либо другой причине вы все же приняли решение делать игру собственными силами.
Будет непросто. Собственную первую игру я начал делать приблизительно также. Я говорил себе: «Я вижу, что если вот тут и тут сделать иначе, то будет куда интереснее, а разработчики этого не видят.
Вывод: я на их месте смог бы сделать игру намного лучше!». К несчастью, это не так.
Большинство разработчиков и сами очень хорошо знают, как можно было намного улучшить, однако по той либо другой причине сделать этого они не могут.
Остановитесь на минутку и адекватно оцените уровень собственной экспертизы в индустрии игр.
Какими познаниями и способностями вы обладаете? Сумеете ли вы сделать проект в одиночку?
А если нет, то сумеете ли вы привлечь в вашу команду людей, которые обладают недостающими у вас способностями и экспертизой? Станут ли с вами общаться потенциальные вкладчики?
Справедливо, никто в здравом уме и трезвой памяти не даст вам денег на Ваш свой World of Fallout, пока вы не покажете, что можете довести до ума хотя бы пяток простеньких «пятнашек».
Не скажу, что потом вопросы отпадут сами собой, впрочем, возникнет сознание, что Вы можете сделать завершенный продукт и что вложенные в вас деньги приносят прибыль. Когда вы сформировались со своей экспертизой и экспертизой команды, наступит время перенести вашу идею на бумагу.
Что такое концепт-документ? Это документ, в котором очень доступно и кратко расписана ваша идея: общие сведения об игре, потенциальная аудитория и USP (Unique Selling Points) проекта.
В большинстве случаев это документ на 2-4 листа, который вы будете демонстрировать вкладчикам, собственной команде и коллегам-разработчикам.
Во всемирной сети, особенно английском, легко можно отыскать немалое число информации на данную тему (бывают даже готовые шаблоны). Что же касается русскоязычного сегмента индустрии, то до недавнего времени тут очень любили тыкать новичков лицом в шаблон от 1С с названием «Ryaba’s Revenge», но, хорошо, данное время прошло.
Пользоваться шаблоном или писать его полностью собственными силами, каждый волен решать сам. Главное, делать это с учетом набора важных принципов, о которых я в настоящий момент расскажу.
- Избавьтесь от общих фраз, они тут не приемлимы. Не надо писать несколько абзацев для того, что можно выразить парой слов;
- Будьте максимально лаконичны. Никто не будет читать ваши многотомники;
- Будьте предметны. Не надо описывать те вещи, которые не считаются основными. Для этого у вас будет GDD.
Следование этим базовым принципам не только облегчает способ подачи «концепта», но и выполняет вас специалистом в глазах вкладчиков и команды, и еще помогает вам не сходить с подобранного пути.
В совершенстве, концепт должен вытекать из первого пункта (экспертизы). Другими словами, если ваша команда состоит из 2D художника, который последние 5 лет рисует HOG’и, программиста, который последние три года работает на Unity, и гейм-дизайнера, который никогда не считая match-3 ничего не делал, то возможно начинать делать клон Overwatch на Unreal — не очень хороший для вас вариант.
Еще 1 принципиальный момент: если у вас необычная и, как вы думаете, блестящая идея, это абсолютно не значит, что она на самом деле такая. Управление в мобильной игре при помощи кнопок увеличения и уменьшения звука и перестрелка кнопкой «Home»? Необычно!
Нигде такого не было? Да!
Но означает ли это, что ваша игра будет интересной? Что она будет продаваться? Абсолютно не факт.
Необычность только ради самой необычности — полная ерунда.
Еще один пункт: когда концепт готов, покажите его как можно большему числу людей. Не нужно боятся, никто не станет воровать вашу блестящую идею. Она никому не требуется.
Сами идеи в сегодняшнем мире стоят несколько центов и реализовываются оптом.
Итак. Вы сформировались с тем, что желаете делать и даже написали концепт документ.
Поизучайте рынок. По-хорошему, данный процесс должен идти одновременно с написанием концепта.
Это довольно однообразная и обыденная задача, которую, все таки, предстоит проделать.
На одном из предыдущих мест работы руководство любило организовывать своеобразные «состязания» среди гейм-дизайнеров с целью получения новых интересных концептов и инвестирования в них. К несчастью, за много лет интеграции этого «состязания», в работу был пущен только один проект. Все другие концепты разбивались об одно из 2-ух утверждений одного из десижн-мейкеров компании:
- Если схожие проекты уже имелись на рынке, то он заявлял: «На рынке уже куча подобных игр, данный проект просто потеряется среди них».
- Если схожих проектов на рынке не имелось или их было очень мало, то ответом являлось: «Посмотрите на рынок, будь такая идея классной, в точках продажи бы давно лежала куча игр с аналогичной механикой».
В действительности, наш герой задавал правильные вопросы, но делал это совершенно бестолково. Поизучайте рынок и задайте себе данные вопросы правильно:
На рынке много игр в схожем с вашим жанре? Хорошенько стоит подумать, чем вы сумеете отличиться на их фоне. Может быть, это более красочная графика?
Или захватывающий сюжет? Неповторимые механики? Популярный сеттинг?
Дотошно поизучайте соперников и сопоставьте их с собственным проектом.
На рынке нет похожих игр? Стоит подумать, возможно человечество на самом деле еще не готово к вашей блестящей идее, в которой нужно стрелять при помощи кнопки «Home».
Прототипирование ключевого игрового процесса. Чем до недавнего времени, тем лучше!
Не нужно останавливаться на технической части, всем глубоко наплевать, что там у вас «под капотом» — основное, чтобы оно исправно работало. Конечный пользователь никогда не увидит ваш привлекательный структурированный код. Не нужно вымучивать замечательный gameplay и графику.
Пускай ваш образец будет про фигуры геометрической формы разнообразного цвета. Если же ваша идея легко переносится на «настольные рельсы», тогда просто порежьте все что необходимо из картона и играйте.
И если даже не переносится, ничто вам не мешает это сделать.
Если ключевые USP проекта заложены в сюжете — попробуйте расписать его.
Замечательный образец — это что-то очень доступное и максимальное быстрое в производстве. Это что-то, за счёт чего можно как можно быстрее «потрогать» вашу идею, чтобы понимать, насколько хороша изначальная идея.
А графику и звук может дорисовать ваше воображение.
Вот так, к примеру смотрелся один из первых флеш-прототипов Hearthstone.
Не нужно откладывать. Чем до недавнего времени вы убедитесь, что ваш gameplay нежизнеспособен, увидите ограничения подобранного движка или узнаете, что это все уже где нибудь было — тем лучше.
Сейчас есть большое количество различных «конструкторов», благодаря которым можно собрать простенький образец даже без базовых знаний программирования. Тот же Game Maker позволяет собрать за пару вечеров вполне играбельный образец.
Еще 1 принципиальный момент: не нужно боятся избавиться от своих плохих творений. Готовьтесь к тому, что ваш первый образец быстрее всего отправиться в мусорную корзину.
Второй, возможно, тоже. Достаточно немаловажно уметь как можно до недавнего времени процедить провальные идеи и не расходовать на них время команды. К оставленным раньше задумками и наработкам можно попробовать вернуться позднее, если на вас вдруг снизойдет озарение.
Но не стоит пытаться вынуть откровенно слабую идею, всего лишь из-за того что вы уже вложили в нее какие-нибудь ресурсы (будь то ваше время, время команды или контент, заказанный на стороне).
Например, вы адекватно оценили силы собственной команды, написали концепт, провели маркетинговое исследование и выполнили простой, но играбельный образец. Что дальше?
Выставки, тусовки и шоукейсы. Показывайте.
Смотрите. Получайте обратную связь.
Если даже выбросить относительно большие ивенты вроде Devgamm и White Nights, где в настоящий момент сильно любят инди и охотно дают им места под демонстрации, существует большое количество очень маленьких инди-ивентов.
Плюс к этому — самые разные «геймсджемы» и соревнования. Среди них бывают даже такие, куда можно отправить собственный концепт-документ и получить обратную связь не лишь от посетителей и прочих участников, но и от экспертов индустрии.
Добавочным бонусом участия в аналогичных мероприятиях появится возможность попасть на глаза игровой и околоигровой прессе, и еще укомплектовать команду систематически заглядывающими туда людьми без своих идей, но с нужными вам способностями и желанием поработать (иногда даже бесплатно или за процент от возможной прибыли). Это происходит очень редко, как хочется, впрочем, имеет место.
Чем больше фидбэка, тем лучше. Но ваша главная задача — обучиться фильтровать его и прислушиваться лишь к на самом деле значимым для вашего проекта рекомендациям.
Мне здесь сценарист на очередном проекте сказал великолепную вещь: «Чем больше людей ты пускаешь в собственный сад, тем меньше этот сад становится твоим». Мне сильно нравится эта фраза. Не нужно кидаться и переписывать весь проект только благодаря тому, что какой-то специалист на следующий демонстрации сказал, что ваша игра «не очень».
Не весь фидбэк корректен. Как ни закручивайте, а все мы живые люди, с собственными собственными предпочтениями и профессиональной деформацией.
Что ж, давайте подведем итог.
Разработка игр — это нелегкий труд, понятно, имеющий мало общего с игрой в эти самые игры. Однако, если вы все таки приняли решение начать разработку собственного проекта, то попытайтесь держаться таких правил:
- При проработке идеи и выборе движка для игры, лучше всего оглядываться на присущие у вас и вашей команды умения и уровень экспертизы
- Перенесите вашу идею на бумагу
- Проведите маркетинговое исследование. Проверьте стороны как слабые так и сильные вашей идеи. Оцените соперников
- Как можно скорее сделайте образец
- Не нужно боятся «пристрелить» собственное неудачное творение, если это нужно, чтобы двигаться дальше
- Показывайте концепт и образец. Однако помните довольно сильно фильтровать входящий фидбэк
По желанию персонально посетить новые открытые лекции по индустрии игр и выяснить об этом немножко побольше, то в марте можно сходить сразу на несколько бесплатных открытых мероприятий в ВШБИ, вход на которые выполняется просто по регистрации: