Геймдев
#Руководства

На каких языках программирования пишут игры

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

 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.

function playerMove(direction) {//Функция движения
	if(direction == “right”) {//Проверяем направление
	player.x++; //Меняем координаты
} else {
	player.x--;
}
playerAnimate(player.x); //Вызываем функцию анимации
}

function controlChar(e) {//Создаем функцию, которая будет обрабатывать все нажатия
	switch(e.keyCode){ //Проверяем, какую кнопку нажал пользователь
		case 38: //У каждой кнопки есть свой код. 38 — стрелочка влево
playerMove(“left”); //Вызываем функцию движения
 break;
case 39: //Стрелочка вправо
playerMove(“right”); //Вызываем функцию движения
 break;
}
}
document.getElementById(“game”).onkeydown = controlChar; //При нажатии вызываем функцию

Если пользователь нажмёт нужную кнопку, то его персонаж передвинется на другие координаты, а потом будет вызвана функция анимации. На JavaScript в основном работают с 2D или псевдо-3D, поэтому останавливаться на моделях мы не будем.

Программный код также запускает музыку в нужный момент:

If(eventHappend == true) { //Если событие произошло
	audio.play(); //Запустить аудио
}

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

В играх почти всё завязано на скриптах:

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

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

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

Какой язык выбрать для разработки игры

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

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

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

Научитесь: Профессия Разработчик игр на Unreal Engine 4 Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована