На каких языках программирования пишут игры?
Новички часто спрашивают, на каком языке программирования можно создать игру. Поставим точку в этом вопросе.
Игру можно написать на чем угодно:
- C;
- C++;
- C#;
- Java;
- PHP/JavaScript;
- ActionScript;
- Swift и Objective-C.
У каждого языка свои преимущества, поэтому не стоит думать, что какой-то один будет лучше остальных — они используются для решения разных задач. А вот чтобы выбрать, какой подойдет вам, давайте разберемся в нескольких моментах.
Что из себя представляет игра
Это что-то развлекательное или познавательное, но обязательно интерактивное. Вы можете наблюдать рыцарские поединки. Это интересно и познавательно, но не игра, потому что вы никак не влияете на исход сражения.
Или, например, книги, в которых читатель может открыть определенную страницу, чтобы направить сюжет в другое русло:
«В таверне вам рассказали о пещере с сокровищами, из которой никто не возвращался живым. Откройте страницу 6, чтобы продолжить выпивать, или страницу 312, если хотите пойти в пещеру.»
Читатель или игрок влияет на развитие событий, поэтому можно с натяжкой назвать такую книгу интерактивной или игрой. Используя компьютерные технологии, мы можем заменить в такой книге текст на графику, а перелистывание страниц — на ссылки. То есть пользователь будет нажимать на ссылку, чтобы продвинуть сюжет.
Реализовать такое можно на чем угодно, потому что все языки могут обрабатывать действия пользователя, но лучше всего подойдет HTML (хотя это даже не язык программирования) — на нем можно создать подобную игру за 10–15 минут.
Браузерные игры
Мы привыкли, что в современных играх куда более свободное управление, продвинутая графика, есть жизни, мана, деньги и так далее.
Тут уже можно подключить JavaScript — он позволяет хранить в переменных какие-то данные персонажа, а графику может обрабатывать с помощью canvas. Если прикрутить PHP, получится подключить базу данных, построить защиту и реализовать многопользовательский режим. А это уже полноценная браузерная игра.
Они хоть и не такие крутые, как игры для консолей и компьютеров, но тоже затягивают. И дело не в том, что они хорошо написаны, а в умелой работе гейм-дизайнеров — они продумывают механики так, чтобы вы тратили на игру больше времени и денег.
Если вы играли хотя бы в одну крупную браузерную игру, то знаете, что в них дают бонусы за ежедневное посещение, вступление в фан-группу, расшаривание каких-либо записей и так далее. Игровой процесс дозируют, чтобы игроку не наскучило, — его действия расходуют энергию. А чтобы продолжить игру, нужно либо зайти на следующий день, либо заплатить.
Так игрок всё больше и больше втягивается, а потом осознает, что достиг9000 уровня в «Ультра-фермер Одноклассников онлайн», потратив несколько тысяч рублей.
Многие из таких игр создаются на Flash, который работает на языке ActionScript. Мы не рекомендуем изучать эту технологию, потому что скоро ее поддержка будет прекращена, а на HTML5 появится еще больше возможностей, чтобы полностью ее заменить.
Игры для мобильных устройств
Мобильные игры хоть и превосходят браузерные, но не сильно. Во-первых, маленький экран и небольшая мощность не позволяют создавать крутую графику. Во-вторых, нельзя реализовать такое же удобное управление, как на компьютерах и приставках.
Это компенсируется относительной простотой разработки. Можно скачать какой-нибудь популярный движок и за несколько недель выпустить готовое приложение — это программы, которые предоставляют готовые решения для работы с графикой и физикой. Разработчику остается только добавить спрайты или модели, а потом прописать несколько скриптов на одном из предложенных языков. Можно даже не заморачиваться из-за всех ресурсов, потому что их можно скачать или купить в интернете.
Unity, один из самых популярных движков, дает возможность писать на C# и JavaScript, а до пятой версии поддерживался и Boo. Подключаете скачанные файлы, пишете несколько команд — и простенькая игра готова.
Курс «С# с нуля»
Практический 4-х месячный курс для тех, кто хочет овладеть языком программирования с индивидуальным наставником и положить первое десктопное приложение к себе в портфолио.
- Живая обратная связь с преподавателями
- Неограниченный доступ к материалам курса
- Стажировка в компаниях-партнёрах
- Дипломный проект от реального заказчика
- Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы
Компьютерные и консольные игры
Тут настоящий размах. Невероятно реалистичная графика, VR, большой игровой мир, поддержка огромного количества игроков онлайн и так далее. Можно создавать небольшие проекты вроде Limbo или Super Meat Boy в одиночку, а можно в команде разрабатывать новый Fortnite.
Но и сложность тоже возрастает в несколько десятков или даже сотен раз. Чем масштабнее вы мыслите, тем больше работы предстоит проделать. Вот неполный список аспектов разработки, над которыми предстоит потрудиться:
- механика;
- графика;
- анимация;
- физика;
- музыка;
- озвучка;
- скрипты;
- сюжет.
Придется работать с освещением, тенями, частицами, разрушаемостью — всем, что важно для конкретной игры. Один человек не может потянуть все это за год или даже два, поэтому такое под силу только крупным студиям. Конечно, многие из них трудятся над проектами в движках, но работа все равно колоссальная.
Без движков тоже можно обойтись: World of Warcraft был написан на C++. Также можно сделать всё самому: Minecraft был создан одним человеком на Java, а после игру купила компания Microsoft за 2,5 миллиарда долларов.
Что уж говорить, если даже Super Mario написали на Ассемблере, когда о движках никто и не задумывался.
Какой язык выбрать для разработки игры?
Как вы уже поняли, любой. Но ориентироваться лучше на то, что вы хотите реализовать и на какой платформе:
- Swift — игры на iOS или MacOS.
- PHP и JavaScript — браузерные игры.
- C# — игры на Unity.
- С или C++ — большие требовательные игры.
И так далее. На каждом из известных языков создавались какие-то популярные игры. Поэтому не выбирайте что-то одно как решение всех проблем. Многие, например, пишут большую часть проекта на одном языке, а высоконагруженную — на другом.
Допустим, вы создаете многопользовательскую браузерную игру. Со временем, если вложить достаточно денег и усилий в маркетинг, будет повышаться количество пользователей, а вместе с ними и нагрузка на сервер.
Если до этого все отлично работало на PHP, то с появлением новых игроков часть проекта может начать подвисать. Чтобы исправить эту проблему и не потерять пользователей, нужно выяснить, какая именно функция работает медленно. Возможно, ее получится переписать на PHP, повысив скорость. В большинстве случаев используются языки, позволяющие работать с большой нагрузкой, — C или C++.
Если вы создаете игру впервые, воспользуйтесь каким-нибудь движком:
- Unreal Engine;
- Unity;
- CryEngine.
Это ускорит разработку в несколько раз: вы увидите результат трудов, и будет больше мотивации продолжать. Каждая новая строчка кода будет отражаться на игре, а это чувство можно сравнить с созданием чего-то прекрасного. Даже если у вас кислотная графика, а программная часть не работает без костылей. Это чувство не оставит, пока вы подходите к делу с душой — а это главное в любом начинании.
