На каких языках программирования пишут игры
Новички часто спрашивают, на каком языке программирования можно создать игру. Поставим точку в этом вопросе.
vlada_maestro / shutterstock
Сохранитесь и подпишитесь: наш Telegram-канал «Чекпоинт» — уютное место, где мы рассказываем об играх и о том, как они создаются.
Ориентироваться лучше на то, что хотите реализовать и на какой платформе:
- Swift — игры на iOS или macOS.
- PHP и JavaScript — браузерные игры.
- C# — игры на Unity.
- С или C++ — большие требовательные игры.
Если создаёте игру впервые, воспользуйтесь каким-нибудь движком:
- Unreal Engine;
- Unity;
- CryEngine.
В чём отличие языков для создания игр
У каждого языка свои преимущества и назначение, поэтому не стоит думать, что какой-то лучше остальных — все они для решения разных задач. Многие, например, пишут большую часть проекта на одном, а высоконагруженную — на другом.
Чтобы выбрать, какой язык подойдёт вам, давайте разберемся в нескольких моментах. А для совсем новичков мы предлагаем курс «Профессия Разработчик игр на Unreal Engine 4».
Браузерные игры
Они хоть и не такие крутые, как игры для консолей и компьютеров, но тоже затягивают. Причина в умелой работе гейм-дизайнеров — они продумывают механики так, чтобы вы тратили на игру больше времени и денег.
Если вы играли хотя бы в одну крупную браузерную игру, то знаете: игровой процесс дозируют, чтобы игроку не наскучило. А чтобы продолжить игру, приходите на следующий день либо платите.
Тут уже можно подключить JavaScript — он позволяет хранить в переменных данные персонажа, а графику обрабатывать с помощью Canvas. Если прикрутить PHP, получится создать базу данных, построить защиту и реализовать многопользовательский режим. А это уже полноценная браузерная игра.
Многие из таких игр создаются на Flash, который работает на языке ActionScript. Мы не рекомендуем изучать эту технологию, потому что скоро её поддержка будет прекращена, а на HTML5 появится ещё больше возможностей, чтобы полностью её заменить.
Примеры браузерных приложений
Игры для мобильных устройств
Мобильные игры превосходят браузерные, но не сильно. Маленький экран и небольшая мощность не позволяют создавать крутую графику. И ещё нельзя реализовать такое же удобное управление, как на компьютерах и приставках.
Это компенсируется простотой разработки. Можно скачать популярный движок и за несколько недель выпустить готовое приложение — это программы, которые предоставляют готовые решения для работы с графикой и физикой. Разработчику остается только добавить спрайты или модели, а потом прописать несколько скриптов на одном из предложенных языков. Можно даже не заморачиваться из-за всех ресурсов — они скачиваются или покупаются в интернете.
Unity, один из самых популярных движков, даёт возможность писать на C# и JavaScript. Подключаете скачанные файлы, пишете несколько команд — и простенькая игра готова.
Примеры мобильных игр
Компьютерные и консольные игры
Тут настоящий размах. Реалистичная графика, VR, большой игровой мир, поддержка огромного количества игроков онлайн и так далее. Можно создавать проекты вроде Limbo или Super Meat Boy в одиночку, а можно в команде разрабатывать новый Fortnite.
Но и сложность возрастает. Чем масштабнее вы мыслите, тем больше работы предстоит проделать. Вот неполный список аспектов разработки, над которыми следует потрудиться:
- механика;
- графика;
- анимация;
- физика;
- музыка;
- озвучка;
- скрипты;
- сюжет.
В таких играх ведется работа над освещением, тенями, частицами, разрушаемостью — всем, что важно для конкретного проекта. Один человек не потянет всё это за год или даже два, поэтому такое под силу только крупным студиям. Конечно, многое решается в движках, но работа всё равно колоссальная.
Без движков тоже можно обойтись: World of WarCraft был написан на C++, а MineCraft создан одним человеком на Java, после чего игру купила компания Microsoft за 2,5 миллиарда долларов.
Даже Super Mario написали на ассемблере, когда о движках никто и не задумывался.
Примеры компьютерных игр
Какую роль в гейм-разработке
играют языки
Если постараться, то сделаете крутую игру без написания кода — есть специальные движки и заготовки. Но чтобы понять, как всё работает, выясните, какую роль играет программирование.
Представьте, что у вас есть 3D-модель персонажа. Пока от неё нет толка. Если хотите, чтобы она двигалась, нужен код. Этот скрипт должен отлавливать действия игрока, а потом передавать команду модели персонажа.
Например, вы ловите все нажатия, а потом определяете, что это была за кнопка. Если это стрелочка влево — персонаж должен идти налево. Рассмотрим на примере JavaScript.
Если пользователь нажмёт нужную кнопку, то его персонаж передвинется на другие координаты, а потом будет вызвана функция анимации. На JavaScript в основном работают с 2D или псевдо-3D, поэтому останавливаться на моделях мы не будем.
Программный код также запускает музыку в нужный момент:
Или даёт толчок развитию событий. Например, если пользователь нажмёт клавишу E, указав мышью на NPC, то откроется диалоговое окно, в котором можно поторговать или узнать слухи.
В играх почти всё завязано на скриптах:
- NPC нападет, если увидит вас, а до тех пор он будет патрулировать местность по заданному маршруту.
- Мина взорвется, если вы на неё наступите.
- Верёвочный мост раскачается, если по нему пробежать.
- Враги включат тревогу, если услышат выстрел.
- Кат-сцена запустится, если вы войдёте в какую-то область.
Событий может быть очень много, но большая зависимость от скриптов приводит к излишней линейности игры.
Вывод — без программирования персонажи не будут ходить, а вы не сможете с ними взаимодействовать.
Какой язык выбрать для разработки игры
Допустим, вы создаёте многопользовательскую браузерную игру. Когда количество пользователей вырастет, вместе с ним увеличится и нагрузка на сервер.
Если до этого всё отлично работало на PHP, то с появлением новых игроков часть проекта может подвисать. Чтобы исправить эту проблему и не потерять пользователей, выясните, какая именно функция работает медленно. Возможно, её получится переписать, повысив скорость. С большой нагрузкой справляются C или C++.
Когда вы увидите результат труда, то получите больше мотивации продолжать. Каждая новая строчка кода будет отражаться на игре, а это чувство можно сравнить с созданием чего-то прекрасного. Это чувство не оставит, пока вы подходите к делу с душой — а это главное в любом начинании.