На каких языках написаны игры. На какие платформы ориентироваться. Движки для создания игр

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

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

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

Во-первых, какую игру вы собираетесь писать? Варианты ответа:

    Игру ААА-класса, чтоб убер-графика, убер-эффекты, всё реалистичное, чтоб у игрока челюсть отваливалась от одного скриншота.

    Серединка-наполовинку: полу-инди с полу-убер-графикой.

    Хлам для мобилок и браузеров: геймплей - ничто, монетизация - всё!

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

Во-вторых, кто вы по профессии? Варианты ответа:

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

    Простой смертный программист.

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

В-третьих, кто вы по отношению к игре?

    Шестерёнка в компании.

    Только сейчас задумались о гейм-деве.

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

*1* Если вы крутейший специалист, то вы не читаете этот вопрос. Пропускаем.

1*1 Если вы заправляете разработкой ААА-игр, то вы тоже не читаете этот вопрос.

**2 Если вы работаете на кого-то, то выбора у вас нет. Ха-ха-ха.

1** Если вы хотите заниматься разработкой игр AAA-класса, то есть некоторый выбор.

13* Если вы простой смертный, решивший приобщиться к разработке самых дорогих игр, то выбора особо нет.

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

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

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

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

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

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

Если нагрузка на CPU ограничена, то вы можете воспользоваться тем фактом, что CPU - отдельно, GPU - отдельно. Если вы даже из самого медленного языка отправите на отрисовку пучок графических операций, то они отработают быстро, потому что они будут выполняться отдельно от вашего тормозного кода. Сейчас, когда компьютеры стали достаточно быстрыми, часто ресурсов хватает на все дополнительные тормоза, которые возникают из-за управляемого кода (C#, Java и т.д.).

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

23* Если вы ничего толком не умеете, то писать сложные игры в качестве первой попытки не стоит. Начните с чего-нибудь попроще.

42* Если графика у вас относительно простая, а сложных ресурсоёмких алгоритмов нет, то ваш выбор становится очень широк.

Вы можете писать абсолютно на чём угодно! Игру можно писать на любом интерпретируемом языке, который на порядки медленнее оптимизированого кода на C++. Какая разница, если игрок не заметит?

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

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

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

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

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

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

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

Так как ни одна платформа не доминирует, то сразу смотрите в сторону кросс-платформенных движков и библиотек. Псевдо-ААА тоже сплошником на нём пишется, и это никого не смущает. Так как разнообразие невелико, то в трёх соснах не заблудитесь.

P.S. Я ещё не рассмотрел тьму тьмущую вещей: для какой платформы вы пишете, как выбирать движок и т.п. Считайте это общим вектором, а не инструкцией по применению.

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

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

0. Разработка игр для детей

Многие книги ориентированы на работу с легендарной и интуитивно понятной средой разработки для детей Scratch, в том числе ScratchJr. После базиса следует информация о Python Pygame. Есть книга для пятилетних, но большая часть материалов подойдет для детей в возрасте от 8 лет.

1. Информатика

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

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

Разговаривать на языке компьютера непросто, но возможно. И таких способов уйма. Например, язык C существенно повлиял на индустрию ПО, поделившись своим синтаксисом с популярными C#, C++ и Java. C++, в свою очередь, является мощным языком для создания эффективных программ и программных комплексов. Многие также пишут игры на C#: язык шустрый, удобный и позволяет быстрее стартовать разработку.

А вот Lua перенял кое-что от C++. Скрипт-язык хорош для игровой логики. Он упростит инициализацию уровня, привязку задач к объектам, смену поведения NPC в интерактивном режиме без необходимости перекомпилировать проект и многое другое.

3. Создание приложений

И если информатика – это базис теоретический, то здесь больше практики. Разработка игр – ухабистая стезя, и начать лучше с приложений. Книги с практическими заданиями, а также информацией о паттернах и UML помогут разобраться, что к чему.

4. Математика для разработки игр

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

5. Игровое программирование

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

6. Разработка игрового движка

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

7. Компьютерная графика

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

Недаром этот раздел самый большой. Сюда включены основы программирования с Real-Time 3D, DirectX и OpenGL. Все дополнено информацией о рендеринге и технологиях. Отдельного внимания в подборке удостоились Direct3D и OpenGL.



8. Игровое аудио

Разработка игр касается и аудио: это звуки, издаваемые NPC, главным героем, явлениями или предметами, а также музыка. Аудио программирование обошлось всего двумя книгами, но в них доступно изложена необходимая информация.

9. Игровая физика и анимация

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

10. Игровой искусственный интеллект

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

11. Многопользовательское игровое программирование

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

Машина не понимает человеческий язык. Конечно, мы не про Siri и другие распознаватели голоса — мы про создание нового софта. Чтобы сделать калькулятор, машине нужно поставить задачу так же, как бригадир объясняет рабочим как класть кирпич. Но «Вася, ёпт, ну ровнее же надо!» нужно описать на языке программирования. Откуда вообще взялись эти языки?

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

В середине XX века появляется машина Тьюринга, затем первые компьютеры и первый современный язык программирования Plankalkül. Первый скачок развития произошёл, когда на компьютеры обратили внимание военные — DARPA и иже с ними начали активно инвестировать в молодую отрасль. Второй пришёл с распространением интернета — чем глубже люди погружаются в цифровую эпоху, тем более востребованы главные творцы окружения этой эпохи — программисты. И всё больше желающих к ним присоединиться.

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

Критерии выбора первого языка программирования

Выбор языка зависит от задач, которые хочет решить программист. Для интернет-проектов популярен Python, который используют в своих проектах Google и Facebook, для мобильных приложений под Android лучший друг — Java, а под iOS — Swift.

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

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

Помимо универсальности , есть ещё критерии:

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

Под эти три описания лучше всего подходят языки Python, C#, Java и Ruby.

Разработан в 80-е годы голландским программистом Гвидо ван Россумом. Большие технологические компании работают с Python: Яндекс, Google, Facebook и YouTube. Это так называемый скриптовый язык — на нём пишут то, что у программы под капотом. Его используют для веб-приложений, в разработке игр, софта для серверов…

Простота Популярность Универсальность

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

Занимает 1-е место в программах начального обучения программированию в университетах США.

Регулярно обновляется — раз в 2,5 года. Входит в пятерку популярных языков по версии аналитической компании TIOBE Software на январь 2016 года.

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

Язык был разработан в конце 90-х на базе C++ и Java. В основном используется для больших enterprise-проектов, но не ограничивается только ими. Например, скрипты в игровом движке Unity пишут на C#.

Простота Популярность Универсальность

Структурно близок к C++ и Java — синтаксис (структура программного кода) сложнее, чем у Python и Ruby, но зато на изучение родственных языков уйдёт меньше времени. Интерфейсы библиотек хорошо вписываются в шаблоны проектирования — это упрощает изучение.

Последнее обновление было в 2015-м году.

На C# пишут под Windows Phone, iOS и Android. Большое количество документации, но библиотек со свободной лицензией не много — это значит, что для обучения программист может использовать чужой код, но вот для использования в коммерческом продукте нужно платить.

Язык придумали программисты из Microsoft для разработки Windows-приложений. Несмотря на это, его используют и в других системах. Также работает на встраиваемых, десктопных и серверных платформах.


Ruby

Создан японским разработчиком под влиянием языка Perl. Запущен в 1995 году. На Ruby написаны: Shopify, Github, Groupon, Yellow Pages, Twitter и Slideshare. Он набирает популярность, но чаще встречается в стартапах, нежели в крупных компаниях. Хорошо подходит для создания простого интернет-проекта.

Простота Популярность Универсальность

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

Большое и лояльное сообщество разработчиков — замыкает десятку самых популярных языков по версии TIOBE Software. Много библиотек в свободном доступе.

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


Java

Первая версия языка вышла в мае 1995 года. Java используется в Amazon, eBay, LinkedIn и Yahoo!

Простота Популярность Универсальность

Как было сказано ранее, у Java и C# очень похожий синтаксис — выучил один, почти знаешь другой. Но как и в первом случае, синтаксис сложнее, чем у Ruby и Python.

В мире 3 миллиарда смартфонов на Android — это значит, что Java ещё долго будет востребован. Первый по популярности по версии TIOBE Software.

Чаще всего используется для enterprise-разработки и Android-приложений.


Итог препарирования

Вывод сделать сложно. С одной стороны манит возможность одним выстрелом убить двух зайцев и взять Java или C#, но Python манит свой универсальностью, а Ruby — простотой.

Мы сомневались и пошли говорить с опытными разработчиками — они всё же советуют остановиться на Python. Вот что говорит Григорий Петров, профессиональный разработчик, евангелист VoxImplant:

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

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

Что должны учитывать будущие разработчики игр? С какого языка начать обучение? К чему стремиться? На кого равняться? И что необходимо сделать в первую очередь?

Большинство любителей рок-музыки рано или поздно берут в руки гитару. Фанаты спорта страстно мечтают о выходе на футбольное поле, баскетбольную площадку или теннисный корт. Ну а те, кто совершил сотни угонов в GTA, провел десятки часов в компьютерных клубах за Counter-Strike или достиг немалых успехов в MMORPG, наверняка задумываются о карьере разработчика игр.

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

К чему стремиться?

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

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

Какой язык учить?

Кроме того, от цели зависит и ответ на животрепещущий вопрос: с какого языка программирования стоит начинать?

Так, будущим разработчикам игр вроде Minecraft и мобильных приложений под Android стоит обратить пристальное внимание на 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). Ведь даже благодаря несложному инструментарию вы значительно облегчите себе жизнь. Во-первых, в миниатюре поймете логику и структуру практически любого игрового приложения. Во-вторых, набьете шишки, которые заживут во время перехода к серьезным проектам. Наконец, в-третьих, обогатите портфолио. Ведь даже простая "игрушка" требует массу времени, терпения и творчества для выдумки концепции, написании кода и устранения багов. Кроме того, показывает, что с производством игр вы знакомы не только в сухой теории.

Что брать за ориентир?

Тот, кто мечтает стать писателем, прочитает сотни книг перед тем, как напишет хотя бы одно слово. Мастера игры на фортепиано на зубок знают лучшие произведения Штрауса, Шопена и Бетховена. Известные же художники перед крупными выставками наизусть заучивали историю искусств.

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

Статьи по теме: