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


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

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

Многие разработчики используют в работе несколько языков, поэтому мы просили их выбрать один - тот, на котором они пишут больше всего. В лидерах оказались пять языков: C++, JavaScript, Java, Python и Perl. Все эти языки разные, и каждый лучше решает свою задачу. Поэтому они по-разному используются в Яндексе.

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

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

Java - это универсальный язык, на котором можно написать любое приложение, будь то игра Flappy Bird или веб-сервер, обрабатывающий миллионы запросов в минуту. Несмотря на название имеет мало общего с JavaScript. Разработка на нём пойдёт быстрее, чем на C++, однако программа может получиться чуть медленнее. Особенности Java позволяют создавать программы, которые работают практически на любом устройстве - от телефона до микроволновки. На Java у нас написаны, например, Маркет и Музыка.

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

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

С точки зрения задачи выбор языка - это поиск равновесия между эффективностью программы, квалификацией программиста и временем, потраченным на работу. Конечно, в реальности всё немного сложнее, поэтому иногда и случаются истории вроде той, с которой мы начали. «Шёл на вакансию C++, взяли на Perl, пишу на Python, а люблю Scala», - такое тоже бывает.

С точки зрения разработчика, выбор языка - это вопрос предпочтений. Кому-то действительно нравится сам язык, кому-то - задачи, которые он решает. Например, одни предпочитают фундаментальные задачи и пишут базу поиска на C++, а другие любят делать то, что видно пользователям, и пишут интерфейсы на JavaScript. Третьи пишут на каком-то языке просто потому, что знают его досконально. А некоторые, наоборот, готовы пробовать новое и участвуют в разных проектах.»

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

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

Вопрос:

Хочется задать вопрос, которым тебя мучают наверно минимум 2-3 раза в неделю... но он меня мучает не меньше, поэтому все таки задам:)

Коротко:
я хочу делать игры. Какой язык программирования выбрать?:)

Долго:
мне 19 лет, учусь на 2 курсе не программистской специальности в принципе по случайности, о которой теперь немного жалею.
Интерес к играм у меня наверное лет с 3, еще с консолей. И дальше по возрастающей... Потом программирование на паскале, дальше С# уже на первом курсе универа. Но это все лирика, уровень был, как можно догадаться крайне низким.
Год назад мне захотелось понять, смогу ли я "поработать программистом". Выбрал то, что интересовало на тот момент и было попроще - вебдев. Надо сказать, что веб меня увлек, теперь у меня есть довольно раскрученный аккаунт на одной из бирж для таких же code monkeys как и я:) Получил неплохие знания в области, в программировании, прочитал кучу книг...
В общем вроде бы ничего плохого, но недавно все таки понял, что удовольствия от этого никакого. Примитивный (в большинстве случаев), слишком "нишевые" задач, низкая оплата да и сам код - по уровню сложности в среднем это "записки веб дизайнера", а не что-то серьезное. Теперь мне даже кажется, что я впустую потратил почти целый год - графика, физика - это совсем другая область, насколько мне удалось поверхностно ознакомиться, которая требует знаний математики, геометрии. Php, sql, js были по сути бесполезной тратой времени.
Не хочу еще раз так же "промахнуться" - посоветуй, что стоит, а что не стоит изучать? И, если не затруднит, немного аргументов и парочку основных книг. Я понимаю, что направлений в геймдеве море и я задаю слишком общие вопросы, чтобы на них ответить, но всё-таки:)
Сейчас я начал с си++, многие (и ты тоже, по-моему) рекомендуют его для игр. С другой стороны, после твоего ответа о перспективности java и дотнета в интервью я как то начал сомневаться в правильности.
В общем, так как твое мнение мне очень интересно, я надеюсь, что ты посоветуешь мне что-нибудь:)

Ответ:
Действительно, направлений в геймдеве столько, что порекомендовать один язык, казалось бы сложно. Но на самом деле - нет.
Сейчас большинство игр делаются на C++ или C. Так что обычно требуется знание именно этих языков.
В то же время есть целые направления в геймдеве, где C++ вообще неважен - это браузерки и flash-игры. Там уже и опыт web-разработки бы не помешал. Я про эти направления знаю мало, поэтому посоветовать ничего не могу.
Есть еще огромный рынок казуалок, которые можно писать на чем угодно, например, на том же Java или на C#. Языки простые, а наличие бесплатных библиотек типа XNA делает их реально интересными платформами для разработки игр.
Кроме этого, все больше и больше программистов в геймдеве используют только скриптовые языки для работы - Lua, Python, Unreal script:) Они очень просты и специфичны - зависят от проекта. Любому программисту, имхо, изучить такой скрипт-язык под проект - плёвое дело. И, судя по вакансиям "требуется программист-скриптер", можно работать в геймдеве зная только скриптовые языки.

В итоге, я бы посоветовал сначала определиться с конечной целью. Если цель - работать в геймдеве, то стоит изучить C++ и потратить полгода-год на написание собственных маленьких игр. Хотя бы тетрисов, змеек, пятнашек и т.п. Это даст вам опыт разработки и завершения проектов, пусть и небольших. Вы изучите хоть какой-то набор базовых алгоритмов. А также наличие таких проектиков - это большой плюс на собеседовании.
Если ваша цель - создать игру-шедевр в одиночку или с минимальной командой, то изучайте flash или C# с XNA в зависимости от типа игры.
Кроме того, какой бы язык и направление вы не выбрали - регистрируйтесь и начинайте читать все профессиональные сайты, чтобы быть в курсе дел индустрии. Также на всех этих сайтах полно статей и профессиональных постов, которые позволят вам избежать многих граблей и велосипедов.
Вот несколько таких сайтов навскидку.

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

Разработка компьютерных игр
Можно с полной уверенностью заявить, что процесс разработки компьютерных игр является одной из сложнейших задач в области информационных технологий. Все дело в том, что для создания хорошего игрового проекта требуется обладать довольно большим объемом информации. Так, например, необходимо знать несколько языков программирования, уметь писать простой и понятный программный код, в котором нет ничего лишнего. По этой причине разработкой компьютерных игр, как правило, занимаются крупные команды геймдев, состоящие из сотен специалистов различных областей. Имеются, конечно, и исключения из правил. Так, например, известный программист Маркус Перссон создал «Майнкрафт» в одиночку. На сегодняшний день эта игра является одним из наиболее прибыльных проектов за последнее десятилетие. Однако, чтобы разработать нечто подобное, необходимо быть настоящим профессионалом своего дела и иметь огромный опыт работы.

Создание игр: программирование

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

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

Лучшим выбором для начинающего геймдева будет Python. Этот язык программирования имеет достаточно простой синтаксис. Чтобы начать программировать на Python достаточно прочитать туториал и обладать определенным знанием английского языка. Возможности данного языка программирования довольно широки. Конечно, Python в этом смысле не угнаться за С++ в плане функционала. Однако при помощи Python можно разработать вполне достойный софт. Именно на Python написаны такие популярные компьютерные игры, как Симс 4, Цивилизация 4 и Батлфилд.

Еще одним претендентом, достойным внимания пользователей, является язык Java. Главное преимущество данного языка заключается в его кроссплатформенности. Это значит, что программное обеспечение, написанное посредством языка Java, поддерживается всеми типами операционных систем, в том числе Windows, Linux и Android. Это дает возможность быстро модифицировать игру под любую платформу. Кроме этого, Java также предоставляет программисту множество возможностей. Не нужно далеко ходить за примерами. Упомянутая выше «Майнкрафт» была написана как раз на языке Java.

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

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

Одной из самых популярных программ для разработки компьютерных игр является Game Maker. Данная программа предназначена для создания двумерных проектов. В ней вы сможете создавать собственные компьютерные игры без навыков программирования. Вместо строчек пользователю предоставляется набор уже готовых действий. Нужно только создать новые объекты и определить правила, по которым они будут взаимодействовать. Стоит также отметить, что прямо в Game Maker можно рисовать спрайты без использования сторонних программ. По этой причине данное программное обеспечение является довольно самодостаточным. Game Maker также понравится и продвинутым пользователям, которые уже имеют определенные навыки программирования. В этой программе существует возможность добавления собственного исходного кода. При помощи Game Maker можно создавать компьютерные игры с видом сверху и сбоку.

Еще одним конструктором для разработки 2D-игр является Construct 2. Главной особенностью данной программы является мультиплатформенность. При помощи Construct 2 можно создавать компьютерные игры для Windows, Android, iOS и других систем.

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

Прежде, чем мы начнем, мы хотим привести вам пример первой игры от автора этой статьи. Это была простая текстовая игра под названием Divine Blood:

Это была самая первая игра, причем запрограммированная для калькулятора TI-83 Plus . Позднее она была переписана автором на Java во время обучения в старших классах. Примечательно, что игра так и не была закончена.

Ко всеобщему сожалению, не доводить игры до логического конца - одна из самых распространенных проблем начинающих разработчиков. Соответственно, возникает вопрос: как повысить свою продуктивность и все-таки закончить начатый проект? Ответ прост: прочтите наше «прохождение» разработки игры.

Основные этапы

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

  • планирование;
  • прототипирование;
  • программирование;
  • релиз.

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

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

Уровень 1: Планирование

Помните, сделав 90% игры, вы думаете, что потратили 90% своего времени. А доделывая оставшиеся 10%, вы тратите еще столько же «оставшегося» 90% времени. Составляйте план, учитывая это. - Ян Шрейбер

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

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

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

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

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

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

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

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

Уровень 2: Прототипирование

Дизайн это процесс, а не результат. - Кристофер Симмонс

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

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

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

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

Вы помните секретные телепорты в игре Super Mario Bros? Игрок мог найти хорошо спрятанные трубы, прыгнув в которые можно было пропустить несколько уровней. Так и здесь. Правда, мы не полностью пропускаем прототипирование, а совмещаем его с планированием.

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

Хорошая игра - это поток интересных задач, решаемых игроком. - Брюс Шелли

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

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

Уровень 3: Программирование

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

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

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

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

«Я не умею рисовать» - используй клипарт. «Я не умею создавать звуки» - ищи MIDI файлы. «Я не умею программировать» - никого это не волнует, не программируй! - Роб

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

Но вы не должны унывать! Лучшее решение этих проблем - отвлечься от проекта на несколько дней. Вы очистите ваш ум и позволите новым идеям посетить его. Также неоднократно замечено, что «утро вечера мудренее». Застряли? Не знаете как решить проблему? Ложитесь спать, а на завтрашнее утро вы, возможно, сразу поймете причину ваших неудач. Не работайте до изнеможения и не изнуряйте себя: работа над проектом должна быть в удовольствие.

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

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

Уровень 4: Релиз

Никогда не сдавайся. - Элис Тейлор

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

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

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

А финальным боссом всего нашего путешествия будет являться ваша гордость. Вы сделали полноценную игру от начала и до конца! На самом деле, не все могут похвастаться этим.

Каждый разработчик когда-нибудь напишет «плохую» игру. Если вы еще не написали - напишете. Все мы напишем. - Бренда Ромеро

И помните, дорога к успеху вымощена многократными неудачами. Никогда не сдавайтесь!

Вывод

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

А теперь соберитесь и напишите свою игру!

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

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

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

Не переживайте! Главное - в самом начале узнать, что нас ждет, чтобы потом не свернуть на полпути, пройти все этапы и начать продавать игру!

С чего начать разработку игры

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

  • Написать все с нуля - сложный способ, но лучше начать с него, чтобы разобраться с языками.
  • Использовать движки - способ полегче. Даже новичок, вооружившись мануалами из интернета, может создать интересную игру на одной из популярных платформ.
  • Заготовки - можно скачать готовую заготовку игры, в которой достаточно будет поменять текстуры, чтобы выдать ее за свою.

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

Языки программирования

Создать игру можно на любом языке, от Python и C до Pascal и Java. От выбора зависит то, сколько времени уйдет на игру и для какой платформы будет релиз. Также язык влияет на производительность, хотя навыки программиста тоже очень важны.

На C++, например, можно писать для любой платформы, а вот PHP или JavaScript больше подойдут для браузерных игр. Если же вы собираетесь использовать один из популярных движков, то лучше изучать C#, потому что он часто используется ими для прописывания скриптов.

Главное - не недооценивать языки. В движке Unity можно писать и на JavaScript, а Minecraft был написан на Java.

Движки для создания игр

Среди современных можно выделить:

Crysis, Far Cry, Sniper II: Ghost Warrior.

Gears of War 4, Deadpool, Mortal Kombat X, Tekken7

Outlast, Assassin’s Creed: Identity, Temple Run, Deus Ex: The Fall.

Большой популярностью пользуется Unity , потому что он позволяет создавать как 2D- , так и 3D-игры. Также можно работать с разными платформами и языками. Еще на нем создается большинство мобильных игр и инди. Он бесплатный, но если вы зарабатываете на своих играх больше100 000 долларов в год, то придется делиться ими с разработчиками Unity.

Как строится игровой код

Допустим, вы выбрали язык, движок, придумали концепт игры. Что дальше?

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

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

Физика

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

  • ходьба;
  • езда;
  • прыжки;
  • удары;
  • выстрелы;
  • падение предметов и так далее.

Если вы пишете сами, то для обычного прыжка вам придется:

  • проверить, находится ли игрок на земле;
  • менять координату Y, чтобы игрок поднимался вверх;
  • закончить подъем через какое-то время;
  • начать и продолжать падение до тех пор, пока под ногами игрока не окажется земля.

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

function jump () {
If (gamer.jumpTimer >= 1 ) {
gamer.y++ ;
gamer.jumpTimer -- ;
} else {
If (gamer.y >= ground.y) {
gamer.y-- ;
}
}
}

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

Механика

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

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

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

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

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

Графика

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

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

Пример анимации двумерного персонажа

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

Анимация в действии

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

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

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

Баланс

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

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

Искусственный интеллект

Если геймплей предусматривает взаимодействие с NPC, то им нужно прописать модели поведения: реакцию на действия игрока, агрессивность, возможность вести диалоги или торговать.

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

На какие платформы ориентироваться

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

  1. Персональные компьютеры.
  2. Приставки.
  3. Мобильные устройства.
  4. Браузер.

У каждой из этих платформ своя аудитория с вполне конкретными предпочтениями. На мобильных устройствах предпочитают головоломки (2048, 94%, Cut the Rope), аркады (Subway Surf, Temple Run, Angry Birds) и казуалы (Talking Cat Tom, Kitty Kate Baby Care, Hair Stylist Fashion Salon) .

На компьютерах можно играть в MMORPG (Lineage II, World of Warcraft, Skyrim) или шутеры (Battlefield, Call of Duty, Counter-Strike) . Приставки подходят для гонок (Need for Speed, Blur, Burnout Paradise) , приключенческих игр (Assassin’s Creed, Portal, The Walking Dead) и так далее. В браузерах собирают пазлы и строят фермы.

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

Заключение

Будьте готовы к тому, что ваша первая игра не станет шедевром. Скорее всего, получится что-то вроде этого:

Вам нужен браузер с поддержкой HTML5 и JavaScript!

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

Мышью:

Зажмите экран и водите курсором:

Левее корабля - влево

Правее корабля - вправо

Вверх - стрелять

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

Клавиатура:

Стрелка влево - влево

Стрелка вправо - вправо

Ctrl или Cmd - Стрелять (edited)

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

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

Похожие публикации