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

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

Игру можно написать на чем угодно:

  • 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 написали на Ассемблере, когда о движках никто и не задумывался.

Примеры компьютерных игр

Какую роль в гейм-разработке играют языки

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

Представьте, что у вас есть 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 нападет, если увидит вас, а до тех пор он будет патрулировать местность по заданному маршруту.
  • Мина взорвется, если вы на нее наступите.
  • Веревочный мост начнет раскачиваться, если по нему пробежать.
  • Враги включат тревогу, если услышат выстрел.
  • Кат-сцена запустится, если вы войдете в какую-то область.

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

Подводя итог, можно сказать: язык — основа любой игры. Без программирования персонажи не смогут ходить, а вы не сможете их убивать.

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

Как вы уже поняли, любой. Но ориентироваться лучше на то, что вы хотите реализовать и на какой платформе:

  • Swift — игры на iOS или MacOS.
  • PHP и JavaScript — браузерные игры.
  • C# — игры на Unity.
  • С или C++ — большие требовательные игры.

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

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

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

Если вы создаете игру впервые, воспользуйтесь каким-нибудь движком:

  • Unreal Engine;
  • Unity;
  • CryEngine.

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

Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox
Посмотреть