Написать пост

Почему C# — оптимальный язык программирования для начала пути в разработке игр

Аватарка пользователя Сергей Тарасенко

Рассказываем, почему C# лучший язык программирования для начала пути в клиентской разработке игр на самых популярных игровых движках.

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

Перед начинающим разработчиком достаточно быстро встает вопрос: “какой язык программирования учить, чтобы делать игры?”. Однозначного ответа на этот вопрос быть не может, учитывая огромное количество инструментов и технологий существующих в настоящее время. Однако, если провести небольшой анализ, становится понятно, что среди многообразия решений существует несколько фаворитов, которые и будут рассмотрены ниже. Забегая вперед, можно сказать, что одним из лучших выборов может быть язык C#, применяемый для разработки игр на самых популярных игровых движках.

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

Критерии оценки

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

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

Сравнение

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

Статистика

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

Цифры, приведенные ниже, актуальны по состоянию на июнь 2023 года. В качестве “бенчмарка” будет использоваться язык C#, поскольку он представляет особый интерес в рамках этой статьи.

Почему C# — оптимальный язык программирования для начала пути в разработке игр 1

Пример формата запросов вакансий для языка C#

  1. hh.ru 117 вакансий (100%)
  2. indeed-US 1,664 вакансий (100%)  
  3. hh.ru 2,223 вакансий (100%)
  4. indeed-US 25,577 вакансий (100%)

Комментарии

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

** Относительно высокое число вакансий Python в большей степени отражает востребованность в сферах backend, tools, devops, чем, непосредственно, в клиентской разработке.

*** Поиск выдает нерелевантные вакансии для запросов по языку C.

Выводы

  • Количество участников сообществ и обсуждений по Python и JavaScript почти на порядок опережает другие представленные языки программирования;
  • Несмотря на высокий рейтинг TIOBE, язык C обладает наименьшим сообществом среди представленных языков. Кроме того, сложно оценить реальную востребованность языка, поскольку почти всегда он упоминается лишь как дополнительный навык в C++ вакансиях;
  • По количеству вакансий в разработке игр C# борется с C++. Остальные языки проигрывают;
  • По количеству вакансий вне разработки игр C# отстает от конкурентов, но все еще показывает хорошую востребованность;

Базовые характеристики

Рассмотрим базовые характеристики языков безотносительно их роли в разработке игр:

Почему C# — оптимальный язык программирования для начала пути в разработке игр 2

Комментарии

* Часто Python-код используется лишь для верхнего слоя программы, тогда как тяжелые операции выполняются в нижнем слое, написанном на производительных языках программирования, а часто даже использующем различные функции аппаратного ускорения (например, векторные инструкции, GPU-вычисления). В результате часто программы, написанные на Python, выполняются быстро.

** C в этом списке является единственным процедурным языком программирования. Вероятно, именно из-за этой особенности язык C не получил распространения в современной разработке видеоигр.

Выводы

  • Язык C выбивается из ряда соперников по своему типу, коим является “процедурный”. Исторически менялся подход как к языкам программирования, так и к дизайну компьютерных программ. Это привело к тому, что на смену процедурным языкам пришли другие, в частности, объектно-ориентированные. Обновленные подходы предлагают более элегантные и эффективные способы программирования;
  • В таблице присутствуют как языки с динамической типизацией, так и статической. Не существует однозначного ответа, какой из них лучше, но в обществе сложилось представление, что обучаться языкам с динамической типизацией проще. Однако в плане использования, такие языки не являются более простыми, так как автоматический синтаксический анализ в них сильно ограничен, ровно как и помощь IDE в написании кода;
  • Однозначным лидером по производительности считаются языки C и C++, но в то же время, их использование затруднено непоследовательным сложным синтаксисом и необходимостью ручного управления памятью;
  • Производительность Python и JavaScript значительно уступают всем представленным конкурентам;
  • Главный герой статьи, C#, не обладает какими-либо существенными недостатками, как с точки зрения производительности, так и с точки зрения сложности изучения и использования.

Место в разработке игр

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

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

С внушительным списком существующих игровых движков можно ознакомиться в Wikipedia, а наиболее распространенные игровые движки, которые допускают скриптинг при помощи рассматриваемых языков программирования представлены ниже:

Почему C# — оптимальный язык программирования для начала пути в разработке игр 3

Выводы

  • Можно заметить, что инфраструктура для разработки игр некоторых участников сравнения сильно уступает конкурентам. Речь идет о Python, C, Java – одна из проблем тут состоит в том, что для них отсутствуют WYSIWYG редакторы, что делает почти невозможным их использование новичками и не программистами;
  • Самые продвинутые игровые движки доступны для языков C# (Unity, CryEngine, GODOT, UNIGINE), C++ (Unreal Engine, CryEngine, UNIGINE, GODOT, Cocos Creator), JavaScript (Cocos Creator, PixiJS, Phaser);
  • Наиболее востребованными коммерческими решениями на настоящий момент являются Unity (C#) и Unreal Engine (C++), однако область применения у Unity шире, чем у второго: помимо десктопных и консольных игр, она включает также web и мобильные игры;
  • В трех строчках таблицы фигурирует GODOT. Дело в том, что он поддерживает скриптинг на большом количестве языков программирования (некоторые из которых даже не попали в эту статью). К слову, движок является опенсорсным и абсолютно бесплатным для использования в любых проектах.

Почему же C#?

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

Однако по совокупности критериев можно выделить C#: он широко распространен, востребован как в разработке игр, так и за ее пределами. Популярный игровой движок Unity фактически стал стандартом для разработки web/мобильных/indie (а часто и AAA) игр, а на пятки Unity уже наступают другие мощные решения, включая, CryEngine, GODOT и UNIGINE.

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

Что если в ходе работы в разработке игр выяснится, что разрабатывать игры все-таки не так весело, как в них играть? Можно переквалифицироваться в backend, desktop или web разработчика и дальше пробовать свои силы там. Благо, после перехода .Net Framework (среды выполнения C#) на рельсы open-source и ребрендинга в .Net Core, а в последствии в .Net, этот язык можно, по праву, назвать универсальным. А экосистема вокруг C# растет буквально взрывными темпами.

Для Разработки на C# существует множество IDE, включая, как платные, так и бесплатные. В наличии также продвинутые инструменты для отладки и профайлинга. Большая часть инструментов одинаково доступна на всех системах на основе современных версий Windows, Linux и MacOS. Таким образом, начать погружаться в разработку можно абсолютно бесплатно и почти на любом программном и аппаратном обеспечении.

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

Следите за новыми постами
Следите за новыми постами по любимым темам
5К открытий7К показов