Как сделать игру на движке

Добавил пользователь Alex
Обновлено: 30.08.2024

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

Да и необходимость программирования никто не отменял. Без него не поймёшь, как что работает, не объяснишь это другим, и не добавишь в игру что-то своё — движки дают только основу, не больше.

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

Способы разработки

Создавать игры можно тремя путями:

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

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

Игровые движки

Движок — это программное обеспечение для разработки игр.

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

Ещё движки поддерживают скрипты и API. Скрипты помогают писать команды, которые будут выполняться игрой всё время или после каких-то действий игрока. API же помогает упростить написание скриптов.

Вот самые популярные из них.

Unity

Unity, наверное, самый популярный игровой движок. Он подходит под разные платформы — десктоп, веб и мобильные устройства. На Unity создаётся большинство мобильных и инди-игр.

Интерфейс Unity

Он бесплатный, но если вы зарабатываете на своих играх больше 100 тысяч долларов в год, придётся делиться ими с разработчиками Unity.

Преимущества. Удобная визуальная среда разработки, большая библиотека ассетов и плагинов, возможность портировать игры на разные платформы, возможность интегрировать игры со многими графическими или анимационными приложениями.

Unity — оптимальный выбор для новичков. В нём вы можете реализовать что-то несложное даже с минимальными навыками

Для каких игр подойдёт. Мобильные 2D и 3D-игры, одиночные и сетевые игры для десктопа, VR-игры.

Лучшие курсы по Unity для начинающих — в подборке

Unreal Engine

Unreal Engine — популярный игровой движок, который выпустила известная студия Epic Games. Он предназначен для больших игр с мощной графикой.

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

Интерфейс Unreal Engine

Преимущества . Гибкость, мультиплатформенность, большие графические возможности, качественное освещение, возможность создавать игры под VR, общая дружелюбность к разработчику и множество инструментов.

Для каких игр подойдёт. ААА-игры с большим бюджетом, шутеры, приключенческие экшены, VR-игры.

CryEngine

CryEngine — мощный движок от немецкой компании Crytek. На нём можно делать масштабные игры для любых платформ — десктопа, веба и мобильных устройств.

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

Демо последней версии движка CryEngine 5.5 на примере шутера Hunt: Showdown

Преимущества. Графические возможности значительно выше, чем у Unity и Unreal Engine: артхаусный свет, реалистичная физика, сложная система уровней и продвинутая анимация — всё это вы сможете создать в CryEngine.

Для каких игр подойдёт. Крупномасштабные ресурсоёмкие игры и игры под ПК и консоли, включая PS4 и Xbox One.

Языки программирования

Языки программирования позволяют задавать условия и команды в игре: если А, сделай Б, а если В, сделай Д. Движки много берут на себя, но все равно программировать придётся много.

Перемещение по меню, переход между локациями, управление персонажем, движение камеры, смена музыки, диалоги, система квестов — для всего этого нужно писать код

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

Вот на каких языках создают игры.

С++ — кроссплатформенный язык, который позволяет эффективно управлять памятью и при этом не загружать её. Без него не обходится ни одна разработка серьезного гейм-продукта. Кроссплатформенность позволяет создавать игры для разных платформ: веб, онлайн или мобайл.

Этот язык помогает создавать механику игры — взаимодействие игрока с миром и мира с игроком. На нём пишут оптимизированные крупномасштабные игры уровня ААА. С++ также используют в мобильных играх, где нужно бережно обходиться с памятью устройства и поддерживать высокую производительность игры.

Этот язык считается одним из самых сложных для изучения. Браться за C++, не зная других языков и не обладая хотя бы мало-мальским опытом в программировании, — все равно, что начинать изучать математику с линейных уравнений.

Но если вы освоите С++, для вас откроются двери многих игровых студий. Ведь когда говорят о профессиональных программистах игр, обычно имеют ввиду именно программистов С++.

Для каких игр подойдёт. Ресурсоёмкие десктопные игры, игры на Unreal Engine, мобильные игры.

скриншот Fortnite

скриншот Fortnite


Лучшие курсы по С++ — в подборке

Для каких игр подойдёт. Игры для разных платформ, игры на Unity, мобильные игры.

Игра в жанре интерактивного кино Life is Strange: Before the Storm

Игра в жанре интерактивного кино Life is Strange: Before the Storm

Игра в жанре интерактивного кино Life is Strange: Before the Storm

Для каких игр подойдёт. Мобильные игры для Android.

Двухмерная аркада Gish — одна из лучших Java-игр

Двухмерная аркада Gish — одна из лучших Java-игр

Лучшие курсы по Java — в подборке

Objective-C/Swift

Для каких игр подойдёт. Игры для iOS и macOS.

Лучшие курсы по iOS-разработке — в подборке

JavaScript

На JavaScript пишут небольшие браузерные игры, потому что он умеет выполнять код прямо в браузере. Правда, используют здесь JavaScript не в одиночку, а вместе с HTML5. А конкретно — инструментом Canvas, который представляет собой холст, на котором можно рисовать с помощью JS-команд. Именно он позволяет создавать 2D-графику и делать анимированные фоны.

Для каких игр подойдёт. Браузерные игры, мобильные игры.

Стратегия PixelDefense

Лучшие курсы по JavaScript — в подборке

Python

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

Для каких игр подойдёт. Мобильные и браузерные игры.

симулятор жизни Sims 4

симулятор жизни Sims 4

симулятор жизни Sims 4

симулятор жизни Sims 4

Лучшие курсы по Python — в подборке

В основном в разработке игр используют эти языки. Но в зависимости от проекта могут понадобится и другие.

Но скорее всего одним языком дело не ограничится. В разработке игр изучать сразу несколько языков — не прихоть, а жизненная необходимость. Опытные программисты, работающие в крупных студиях, иногда пишут на семи-восьми языках одновременно.

Фреймворки

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

Фреймворк — это каркас, почти готовая игра. Нужно просто дописать для этого каркаса дополнительные функции, подогнав под свой проект.

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

Вот какие фреймворки используются в разработке игр:

Платформер Celeste, который стал лауреатом 22-й ежегодной премии D.I.C.E. Awards и признан одной из лучших игр 2018 года, сделан на фреймворке XNA

Библиотеки

Библиотека — это набор готовых функций, классов и объектов для решения определённых задач.

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

Графические библиотеки — позволяют растрировать игровые объекты и высчитывают, как изображения или 3D-модели должны выглядеть на мониторе. Это OpenGL, WebGL и DirectX.

Физические библиотеки — помогают работать с физикой: ускорять свободное падение, проводить импульсы или задавать векторы. Это Havok и PhysX.

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

Если вы создаёте игру на движке, ни фреймворки, ни библиотеки в большинстве случаев вам не нужны

Первый проект — с чего начать

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

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

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

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

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

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

— Я придумал игру, создай мне её.
— А почему ты сам её не создашь?
— Я не умею.

И я задумался, а так ли сложно что-то создать с нынешним количеством уроков и тем по созданию игр в интернете?

С чего начать?

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

  1. Это РПГ в средневековом стиле (банально, не правда ли? =) )
  2. Она должна быть 3D, а не 2D (тут, кстати, довольно интересно, потому как в основном весь интернет пестрит роликами с 2D играми)
  3. Вид камеры от третьго лица
  4. Характеристики изменяются сами с повышением уровня, с упором на используемое оружие.
  5. Лимит уровней — 30
  6. Предметы привязаны к уровню персонажа (персонаж четвертого уровня не сможет использовать предмет пятого уровня)
  7. Движок, на котором всё будет работать (в моём случае это Unity: по работе с ним самое большое количество уроков на мой взгляд)

Думаю, что данный план вполне подойдёт для создания шедевра ААА класса =).

Начнём создавать шедевр

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

Запускаем Unity Hub.


Выбираем NEW и далее 3D проект, пишем название и местоположение проекта.


И открывается сама программа.


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

Как создать модели для игры?
  1. Научиться моделированию (сложно, долго, но интересно)
  2. Купить готовый пак моделей (быстро и просто, но за деньги)

Я выбрал второй вариант. Отправляемся в AssetStore. Если у вас не активировалась ваша учетная запись, повторно входим в личный кабинет. И начинаем искать подходящие паки. Я нашел то, что нужно, примерно за 3 минуты по поиску knight. В паке, помимо моделей самих персонажей, были модели окружения. Купил за 10 долларов, нажал Import, поставил все галочки, и пропала проблема, неумения моделировать. 1/4 игры готово.

Сцена

Дальше начинается самое нудное. Нужно собрать рабочую зону (scene, сцену, кому как привычнее называть).

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

Поскольку мы с вами в этом деле новички, снова лезем в интернет и смотрим, как нам поставить поверхность в игровую зону. Выбираем GameObject -> 3D Object -> Cube, после масштабируем его до простой площадки.


Далее добавляем персонажа (рыцаря, демона, ниндзю, тяночку, или кто вам больше по душе). Персонажа берем из папки Prefabs: мы уже знаем (вспоминаем, чему нас научили во вкладке Learn), что туда сохраняют полностью готовые объекты, персонажей и так далее.

И вот он, наш герой, который будет покорять всех и вся.


Анимация

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

Что нужно в первую очередь? По мне — так научиться ходить и бегать. Возьмём анимацию ходьбы и бега.

  • В поисковике анимации набираем walking, выбираем понравившуюся анимацию, и ставим галочку In Place
  • Далее нам нужно подгрузить FBX модель от купленного пака для того, чтобы анимация не баговала (иногда такой модели может не быть в паке, но сейчас 99% разработчиков дают модель при покупке любого пака бесплатно либо она может лежать на официальном сайте). Тыкаем на upload character и загружаем модель FBX со смешным названием Mixamo_Guy_Naked.fbx.
  • Видим, что наш FBX заменил стандартную модель миксамо, и при желании можно кастомизировать анимацию, но этого делать мы, конечно же, не будем. Меня всё устраивает. Я жмякаю кнопку Download, выбираю Frames per Second 60 - анимация ходьбы готова.
  • Проделываем туже процедуру с анимацией бега (и другими, в зависимости от того, сколько вы их хотите добавить в данный момент)

Теперь создаём папку Animation в Unity и добавляем туда нашу анимацию. Начинаем настройку.

Выбираем персонажа, inspector, окно Animator, и в строке Controller нажимаем на кругляшок. Появится выбор, где мы и увидим нашу Animation, выбираем её и нажимаем на кнопку Play в Unity. Если вы всё сделали правильно, то сейчас должны наблюдать как ваш персонаж стоит, и у него проигрывается анимация Idle. То есть, он стоит и немного покачивается.


С анимацией разобрались, пора включать снова человека, который ничего не умеет =)

Скрипт W A S D


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move: MonoBehaviour

CharacterController controller = GetComponent ();
transform.Rotate(0, horizontal * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection(Vector3.forward);
float curSpeed = speed * vertical;
controller.SimpleMove(forward * curSpeed);

Тут я немного поясню скрипт.

Верхние четыре строчки — это подключение библиотек, public class — название скрипта. Если у Вас скрипт называется Moving или что-то в этом роде, то поменяйте название. Учтите, к регистру скрипт тоже придирчив.

public float speed = 3.0F; public float rotateSpeed = 3.0F; — это скорость персонажа, настраивается по желанию. Далее идёт подключение управления Character Controller и, соответственно, анимации.

Перетаскиваем скрипт в Inspector персонажа и проверяем. It's ALIVE.

Но есть нюанс: поворачивается наш персонаж слишком быстро и не подключена анимация бега. Скорость поворота лечится просто — выставляем в строке Rotate Speed 0.5, и наш персонаж больше не использует чит-крутилку из CS GO. Теперь сделаем, чтобы наш персонаж все-таки побежал. Снова интернет, хотя, по мне, тут можно и логически додумать, как всё провернуть, но всё же я нашел строчку кода, чтобы всё заработало. Добавляем в наш код такую строчку

Если у Вас возникли вопросы, что такое Fire3, то ответ прост: это LShift, а проверить это можно, зайдя File->Build Setting->Player Setting->Input Manager. Эту информацию также не составило труда найти в интернете.


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

В итоге весь скрипт у нас получился такого вида

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move: MonoBehaviour

CharacterController controller = GetComponent ();
transform.Rotate(0, horizontal * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection(Vector3.forward);
float curSpeed = speed * vertical;
controller.SimpleMove(forward * curSpeed);

if (Input.GetKey(KeyCode.LeftShift))
speed = 6.0f;
>
else
speed = 3.0f;
>

Всё проверили, всё работает, осталось только прикрепить камеру к персонажу. Без заморочек просто перетаскиваем Main Camera в нашего персонажа, далее её настраиваем как нам удобно, проверяем и празднуем ПОБЕДУ!

Заключение

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

Я считаю, что не имея никаких знаний и денег, а только немного терпения, можно самому создать свою игру. Если вас смущает покупка пака из Asset Store, то всегда можно найти бесплатные паки. Я порылся в интернете и нашел как минимум 6 ресурсов, которые их предоставляют. Советую помимо интернета начать изучение какого-либо направления гейм дева.

Все описанное в этой статье было собрано без специальных знаний с помощью интернета.

Возможно, тема надоевшая, но я поискал в интернете на эту тему и понял что в интернете(youtube, yandex, habr) нет ничего полезного, вернее оно есть, но без объяснений.

Вроде всё изложил.

Написать свой движок с нуля
Как написать свой движок с нуля при помощью C++. Заранее спасибо.

Можно ли в Visual Basic написать свой игровой движок
Здравствуйте господа программисты. Я хотел сделать свою игру, и для этого я искал разные движки.


Свой игровой движок
Я писал 3 раза игровой движок. Теперь предстоит четвертый. Подскажите, на чем лучшего его написать.

Ответ на твой вопрос зависит от того что ты хочешь получить на выхлопе?
По тому что если тебе нужен CryBiteUnrealUnity 10K5000 то запросы одни, а если тебе двиг для майнкрафта то запросы другие.

Те же фростбайты, анриалы, юнити и край энжины написаны на c/c++, сам сделай выводы.

Все что нужно знать об openGL есть тут.

Конкретно тебе нужно знать:
1.1) как создать окно
Первый самый простой этап.
2.1) ты должен узнать что такое шейдер, как его скомпилить на гпу, как его применить.
2.2) как создать vao (обязательно нужно разобраться как использовать несколько атрибутов), и как его выводить (рисовать), тут ты узнаешь что заходит на вход вершинному шейдеру и что выходит из фрагментного.

Тут ты уже поймешь как работает opengl, тебе станет очень радостно если ты добрался до сюда.

2.3) Ты должен загрузить изображение, создать текстуру, установить ее в семплер, внести изменения в код шейдера и любоваться своей текстурой.
Второй этап закончен. Ты уже можешь что-то рисовать посредством шейдеров.

Вот от сюда будет начинаться что-то серьезное.
3.1) Нужно будет разобраться с тем что такое fbo, как его создавать, как его применять/чистить и как в него рендерить.
3.2) Зная что такое fbo, нужно будет в первый раз что то отрендерить в текстуру (тобишь в fbo), сделаешь тени.

Вот на этом моменте кончается 90% работы. Можешь начать с этого после изучения языка.


Потом ты еще должен будешь выбрать аудио апи аля OpenAl.

Что нужно знать о языке?
Само собой нужно уметь работать с массивами, циклами (for, while), блоками ветвлений (if/else, switch/case), структуры. Потом ты должен знать как алоцировать память динамически, аля new и delete, указатели ( не умные, а обычные, умные таковыми только называются).
Не плохо бы знать ооп (классы, наследование), опять же, перегрузка и таблицы виртуальных функций для риалтайма зло.

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

Lorem ipsum dolor

Те , кт о з наком с программированием, знают, что на языке С или С++ можно писать игры для компьютера, применяя игровой движок. Так же многие знают, что игровая индустрия находится в топ е по популярности . Согласно некоторым данным , по своей капитализации игровая индустрия уступает только виде ои ндустри и ( телевидению и вид ео хостингам типа YouTube). Если у вас есть знания в языке программирования С, то логично предположить, что иногда закрадываются мысли ворваться в игровой мир и покорить его своей игрой. Как миниму м э то может принести достаточное количество денег.

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

Игровой движок на С: как создать игру

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

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

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

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

Игровой движок на С: как выбрать

Заключение

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

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Читайте также: