Топ лучших движков для создания игр. Программы для создания игр

В этой стать пойдет речь о бесплатных программах для создания 2D и 3D игр. Данная статья нацелена не только на начинающих, но и подойдет уже более опытным.

Описаны будут программы, с помощью которых можно создавать как примитивные 2D игры, так и более сложные 3D игры с применением физики, высокой графики, написания скриптов и алгоритмов. В топе будут представлены движки и программы на которых создать игры может каждый желающий, так как для этого не нужно знать и писать специальные сложные скрипты, а также владеть языками программирования.

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

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

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

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

Немного предыстории.

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

Таким образом появились библиотеки, фреймворки а затем и полноценные движки.

5 Место

Stencyl – конструктор игр, который поможет создать вам игры разных жанров в формате 2D , для таких платформ как Android , IOS , Windows а так же игры в формате Flash и HTML 5.

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

Простота и широкий спектр простых инструментов никак не уменьшает возможности данного конструктора для работы профессионалов. Движок дает возможность варианта написания кода на языке ActionScript 3.0.

С помощью данного движка можно создавать онлайн игры, так называемые флеш игры, в форматах Flash и HTML 5 которые можно запускать в браузере и размещать на вебсайтах.

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

В этом конструкторе стоит отметить наличие магазина, в котором можно загрузить уже готовые сценарии, графику и многое другое.

Примером работы движка является множество онлайн флейш игр, которых полным-полно в сети интернет.

· Простота работы.

· Большое количество видео уроков и инструкций, а также поддержка на официальном сайте.

· Конструктор является полностью бесплатным.

· Возможность коллективной работы над игрой.

· Возможность применения собственных скриптов на языке ActionScript 3.0.

· Разработка игр для разных платформ.

· Англоязычный интерфейс.

· Не сразу понятный интерфейс.

4 Место

Kodu Game Lab – это визуальный редактор позволяющих создавать трехмерные игры без каких любо знаний языков программирования. Этот движок дает возможность создавать игровые миры, карты и размещать в них персонажей, для которых потом можно создавать задания или сценарии.

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

Kodu Game Lab имеет много возможностей и на её базе можно создавать любой жанр игр. Из-за того, что интерфейс программы очень простой любой желающий может создать самую примитивную игру со своим сценарием и миром.

· Большое количество инструментов.

· Простота работы.

· Создание абсолютно любого жанра игр.

· Русскоязычный интерфейс.

· Не требуется наличие мощного компьютера.

· Плохая оптимизация.

· Низкие возможности создания игр.

· Невозможность создания дистрибутива для дальнейшей установки на другом компьютере.

· Невозможность создания своих текстур и добавления своих материалов.

3 Место

Unity – это мощный движок для создания игр. Этот движок является кроссплатформенным, позволяет создавать игры под популярные ОС, такие как Windows , MacOS , Linux , Android , IOS , а также для игровых консолей Xbox , Wii .

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

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

В бесплатной версии Unity достаточно инструментов и возможностей для начинающих в этой сфере. Если вы уже бывалый game creator тогда скорее всего вам не хватит набора инструментов, которые присутствуют в бесплатной версии. Для того, чтобы более тонко настроить графику создаваемых вами игр, советую воспользоваться версией Pro .

Основные языки программирования, которые вам нужны для создания простых игр это C# и JavaScript.

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

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

Что бы понять все возможности данного движка советую ознакомиться с популярными видео играми, которые были полностью созданы на Unity – это Cities Skylines, Hearthstone: Heroes of Warcraft, Rust, Firewatch, Superhot, Kerbal Space Program.

· Ориентировочно-понятный интерфейс.

· Создание абсолютно любого жанра игр.

· Кроссплатформенность.

· Оптимизация.

· Большое количество видео уроков и инструкций.

· Движок является полностью бесплатный.

· Не требуется наличие мощного компьютера.

· Не подходит для начинающих.

· Закрытый исходный код.

· Устаревшая графика.

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

2 Место

Unreal Engine – является довольно мощным движком для создания игр. Эта платформа даёт возможность создания 2D и 3D игр. Неотъемлемой частью таких современных и мощных движков является кроссплатформенность, и в Unreal Engine она довольно хорошо реализована. Можно создавать игр для всех популярных платформ как для смартфонов (Android , IOS ), так и для компьютеров под управлением (Windows , MacOS ).

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

Unreal Engine является полностью бесплатным движком для создания игр, который вы можете скачать с официального сайта.

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

Хочу заметить, что, будучи не опытным в сфере создания игр, а также если вы не знаете основ программирования на С++, тогда не стоит начинать знакомство с разработкой игр с этого движка. Так как Unreal Engine является профессиональным инструментом для создания игр.

Что бы понять всю силу и возможности движка, можете просмотреть уже созданные на нем популярные проекты, такие как Gears of War 4, We Happy Few, Final Fantasy VII, Dead Island 2, Taken 7 и еще длинный список примеров возможностей.

· Огромное количество инструментов.

· Создание абсолютно любого жанра игр.

· Кроссплатформенность.

· Оптимизация.

· Большое количество видео уроков и инструкций.

· Собственные форумы, обсуждения в разработке игр.

· Движок является полностью бесплатный.

· Встроенный магазин дополнений.

· Возможность создания мульти плеера в играх.

· Высокий уровень графики.

· Открытый код

· Не подходит для начинающих.

· Сложный интерфейс.

1 Место

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

CryEngine – мощный движок для создания современных игр в любом жанре под все возможные платформы. Он так же является кроссплатформенным и позволяет создать игры под ОС Windows , MacOS , Linux , Android , IOS .

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

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

Вот некоторые проекты, реализованные на CryEngine: CrySis, Star Citizen, Sniper: Ghost Warrior 3, Ryse: Son of Rome, Warface, первая часть FarCry и многие другие.

· Огромное количество инструментов.

· Создание абсолютно любого жанра игр.

· Кроссплатформенность.

· Оптимизация.

· Большое количество видео уроков и инструкций.

· Собственные форумы, обсуждения в разработке игр.

· Движок является полностью бесплатный.

· Встроенный магазин дополнений.

· Возможность создания мульти плеера в играх.

· Высокий уровень графики.

· Почти не ограниченные возможности в создании игр.

· Открытый код

· Не подходит для начинающих.

· Довольно требователен к компьютеру.

· Сложный интерфейс.

Заключение

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

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

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

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

Некоторое время назад мы затрагивали тему создания компьютерных игр и рассказывали об уникальном бесплатном трехмерном движке, написанном на Delphi - GLScene (движок забирайте с нашего CD/DVD ). Тема создания полноценных трехмерных компьютерных игр была вам очень интересна, о чем можно было судить по количеству пришедших писем. Однако тогда мы решили, что рассказывать о программировании под движок - слишком сложно. С тех пор ваш уровень заметно возрос (об этом также можно судить по письмам и по активности на форуме журнала), вы стали более подкованы в вопросах программирования. Особенно после публикации цикла “Кладовая программиста ”.
С этого номера мы начинаем публикацию серии статей, в которых детально рассмотрим различные этапы создания трехмерной игры. Вы повысите свои навыки программирования и, что называется, заглянете за завесу тайны, отделяющую серьезных разработчиков игр от простых смертных.
Движок любой игры складывается из многих и часто независимых частей-кирпичиков: контроль столкновений, физическая модель, игровой интерфейс, главное меню, загрузка уровней и многое другое. Есть специфические кирпичики,
которые нужны только для какого-то одного жанра. Например, модуль погодных явлений важен и нужен в авиационном или морском симуляторе, а в стратегии реального времени он второстепенен или вообще не нужен, а в футбольном симуляторе ни к чему модуль выстрелов. Но несколько десятков кирпичиков присутствуют в любой игре. В серии статей мы расскажем о каждом из таких кирпичиков, покажем, как он реализуется и как его связать с остальными. К концу цикла вы сможете из этих кирпичиков собрать свою собственную компьютерную игру довольно высокого уровня.

Что это вы тут делаете?
Для тех, кто пропустил какие-то из предыдущих моих статей (или даже все), отвечу на возникшие у вас вопросы. Так сказать, небольшое техническое вступление.
Почему Delphi? Эта среда разработки и язык программирования Object Pascal достаточно гибкие, чтобы создать полноценную трехмерную игру практически любого жанра с современным уровнем графики. Многие возразят, что стандартом де-факто разработки компьютерных игр является MSVC++ или другие среды на основе С++ . Но подобные стандарты, как это часто бывает, складываются стихийно. Не будем смешивать два понятия - язык и среда разработки.
C++, безусловно, мощнее, чем Object Pascal. Но он и менее высокоуровневый, то есть в разы сложнее. Для новичков С++ подходит слабо. Object Pascal же не только простой, но и достаточно гибкий, чтобы на нем можно было разработать полноценную компьютерную игру современного уровня. Теперь о средах. Тут так категорично не скажешь. Среда разработки - дело вкуса и привычки каждого конкретного программиста. Поделюсь своим мнением на этот счет. MSVC++ генерирует немного более быстрый код, чем Delphi. Собственно, на этом преимущества заканчиваются (повторюсь, на мой субъективный и ни к чему не обязывающий взгляд). Козыри Delphi - большая скорость компиляции (в десятки и даже сотни раз быстрее, чем MSVC++), высокое качество средств отладки (в большинстве случаев Delphi указывает точно ту строку кода, в которой содержится ошибка, тогда как MSVC++ может указать строчку за несколько страниц от искомой) и удобный интерфейс.
Почему GLScene? Я повидал и перепробовал много бесплатных трехмерных движков, но остановился именно на этом. Его самое главное преимущество - GLScene постоянно совершенствуется. Разработчики не поставили точку и, скорее всего, не поставят ее никогда. Движок постоянно эволюционирует и впитывает в себя все новинки технического прогресса. Это единственный из известных мне бесплатных движков, про который никогда не скажут “устарел”. Несколько сотен постоянно работающих над “двигателем” энтузиастов не допустят этого. Как пример: в движке поддержка самых первых шейдеров появилась уже через несколько месяцев после того, как NVidia выпустила соответствующие инструментальные средства.
Еще одно преимущество: в комплекте с GLScene поставляются его полные исходники. Новичкам этот факт, наверное, вряд ли будет полезен. Хотя познакомиться с исходниками, написанными рукой профессионала, многого стоит. А вот бывалые программисты чувствуют основной смысл этих слов: ведь они смогут перекраивать движок как им
вздумается. Единственное условие в соответствии с лицензией MPL - любые изменения в исходниках должны быть доступны координатору проекта (сейчас координатор - Эрик Гранж ). Вдруг ваш код еще кому-нибудь пригодится?!
Несмотря на то что все примеры кода, которые будут приводиться в этом цикле статей, будут написаны на Delphi с применением GLScene, они будут полезны и тем, кто программирует на других языках и с другими графическими библиотеками. Ведь общие принципы создания графического движка не зависят ни о того, ни от другого. Итак... мы начинаем.

Зачем нужен трехмерный движок?
Товарищи новички, сосредоточьтесь! Возможно, то, что я сейчас скажу, с первого раза будет не очень понятно. Обязательно перечитайте и вникните: это один из основных принципов программирования вообще и разработки сложных систем (а игра - это сложная система) в частности. Представьте себе какую-нибудь проcтенькую игру. Пинг-понг, к примеру. Программист написал его на чистом OpenGL , исходники уместились строк эдак в 200. Что там будет движком, а что основным кодом игры? Так прямо сразу и не скажешь... А если подумать, такое разделение на движок и основной код вообще не нужно.
Теперь представьте, что мы хотим сделать более или менее серьезный 3D-action (десятки тысяч строк кода). И будем мы программировать таким же способом, как если бы мы делали тот самый пинг-понг. И скоро запутаемся! Да, этот код будет быстрым, там не будет ничего лишнего, но... не всякий программист сможет дописать его до конца. А ошибки в таком плотном коде искать - сущий ад. Значит, его надо как-то упорядочить. Проще всего это сделать с помощью выделения уровней абстракции .
Уровень абстракции - это одно из важнейших понятий модульного программирования. Представьте, что вы строитель, и вам нужно построить дом. Вы оперируете кирпичами: берете кирпич, кладете его на строящуюся стену, намазываете раствором, берете следующий кирпич... Кирпичи - ваш уровень абстракции. Теперь представьте, что вы застройщик. И вам нужно построить микрорайон. Вы говорите строителю, где строить дома, какие дома сносить. Дом - это ваш уровень абстракции. Было бы странно, если бы вы указывали строителю, какой кирпич куда класть. Вы сказали: вот здесь будет дом. Все остальные заботы берет на себя строитель. Ну а теперь представьте, что вы мэр города. И вам необходимо дать задание толпе застройщиков к такому-то году дать городу столько-то нового жилья. Вряд ли вы будете лично планировать, где какой дом должен стоять. Это работа застройщика. Уровень абстракции мэра - объем жилого фонда, который можно увеличивать, можно уменьшать, а как это будет выполняться - дело десятое. По большому счету на этом уровне абстракции все равно, из чего строятся дома: хоть из кирпичей, хоть из бивней мамонта. И у мэра в списке команд просто не может быть “положить кирпич ”, хотя любая его команда через несколько уровней абстракции к этому и приведет.
В более или менее сложной компьютерной программе или игре - то же самое. Каждый уровень абстракции отвечает за свою часть работы, опираясь на возможности более низкого уровня. Каждый уровень абстракции обеспечивает более высокому уровню удобный интерфейс для работы с объектами. В компьютерной игре нижний уровень абстракции - это язык программирования (хотя, на самом деле, можно копнуть еще глубже - до железа). Далее идут команды OpenGL API (если мы именно с его помощью программируем). На этом уровне мы можем отдать команду вроде “нарисовать полигон ” и “поменять местами видимую и теневую части видеобуфера ”. Потом - команды GLScene . На этом уровне мы можем дать команды вроде “построить куб ”, “загрузить модель в формате 3ds ” и “наложить на модель такую-то текстуру ”. А вот дальше -игровой движок. И, наконец, игровой код, который может давать игровому движку команды вроде “загрузить уровень ”, “выстрелить таким-то персонажем из такого-то оружия ” и “показать заставочный ролик ”. В идеальном случае каждый уровень абстракции пользуется командами только предыдущего уровня. Не всегда это возможно. Но к этому надо стремиться, так как в таком случае код будет быстрым, удобным и легкочитаемым.

Динамическое создание объектов
Мы рассмотрели вертикальную организацию компьютерной игры. Но каждый уровень абстракции можно разделить на смысловые блоки - модули. Деление это необязательно и всегда будет чисто условным, просто так проще программировать. Сегодня мы разберем маленький, но очень важный модуль-кирпичик - динамическое создание объектов, который присутствует во всех без исключения играх.
Предположим, вы создаете модуль вооружения и хотите запрограммировать очередь из пулемета. Все бы ничего, но откуда вы знаете, сколько игрок может выпустить пуль за всю игру? Через редактор объектов в IDE GLScene можно создавать любые объекты, но только если вы четко знаете, сколько и каких объектов вам нужно. В большинстве случаев это неприемлемо. К примеру, у вас в игре есть 20 уровней, у каждого уровня - свой набор объектов. И что же, создавать перед началом игры все объекты всех уровней? Это долго, да и займет огромное количество памяти. Единственный выход - создавать объекты прямо во время игры, динамически. В GLScene динамическое создание любого объекта состоит из двух стадий - создания экземпляра класса этого объекта и присвоения ему необходимых свойств. Возьмем уже упоминавшийся пример с очередями у пулемета и динамически создадим пулю. Предположим, пуля у нас будет промто-сферой. За сферы в GLScene отвечает класс TGLSphere . Казалось бы, можно написать так:
Sphere:=TGLSphere.Create
Однако команда работать не будет, так как каждому объекту в GLScene надо зарегистрироваться в очереди объектов. Кроме того, объект нельзя создать в “пустоте”, он должен быть привязан к какому-то объекту более высокого уровня. Корневой объект самого высокого уровня - glscene1.Objects (если объект компонента TGLScene у вас называется glscene1). Правильный вариант:
Sphere:=TGLSphere (glscene1.Objects.AddNewChild(TGLSphere))
Разберем эту строчку по частям. У корневого объекта glscene1.Objects мы вызываем метод AddNewChild , который добавляет в корень объект класса, указанный в параметре (в данном случае это сфера -
TGLSphere ). Так тоже можно: в параметры процедурам передавать не объекты, а целые классы. Зачем перед присвоением нужно преобразование типа к TGLSphere ? Дело в том, что метод AddNewChild , что бы вы ему в параметр ни передали, возвращает объект класса TGLBaseSceneObject . Нас это не устраивает, поэтому мы и преобразуем тип к TGLSphere. Получившийся объект присваивается переменной Sphere. Теперь с помощью этой переменной мы можем нашей пуле задать разные параметры, например положение в пространстве:
Sphere.Position.X:=
Sphere.Position.Y:=
Sphere.Position.Z:=
Или цвет:
Sphere.Material.FrontProperties.Diffuse=
Динамическое создание моделей мы разобрали, а теперь поговорим о динамическом их уничтожении. В самом деле, пуля когда-нибудь попадает в стену, человека или же улетает в голубую даль. С этого момента она больше не нужна. Если мы так и оставим ее, она будет занимать какую-то область памяти. Учитывая, сколько выстрелов делает среднестатистический кемпер, пока его нычку не обнаружат, нам всей памяти компьютера не хватит, чтобы хранить такое количество пуль. Поэтому любые объекты игры, которые стали ненужными, надо немедленно уничтожать. Единственный правильный способ сделать это - вызвать метод Free , например:
Sphere.Free
Частенько бывает необходимо проверить, существует ли объект, или его уже уничтожили. Для этого сравниваем объект с универсальной константой нуля - nil , например:
If Sphere<>nil then
Begin
{сферу еще не уничтожили,
значит, делаем здесь что-нибудь полезное}
End
Или же вызываем функцию Assigned , которая делает то же самое. И вот тут вас подстерегает один гигантский подводный камень, на который рано или поздно наталкивались все программисты. Если вы освободили объект методом Free , это не гарантирует, что переменная объекта стала равно nil ! То есть при определенном стечении обстоятельств в примере выше, даже если сфера уничтожена, условие будет выполняться. Если вы в условии после проверки обращаетесь с этой сфере (а так почти всегда и бывает), произойдет критическая ошибка, что чревато вылетом игры в синие форточки. Чтобы гарантировать, что освобожденный объект станет равным nil, используйте специальную процедуру FreeAndNil , например:
FreeAndNil(Sphere)
Теперь вы можете быть уверенными в том, что никогда не обратитесь к уже несуществующему объекту. Описанную процедуру создания и уничтожения объектов можно применять к любым объектам GLScene.

Зачем играм аккумулятор?
Рассмотрим пример выше с пулеметом. Обычно в играх пули - это не просто сферы, а сложные объекты, у которых к тому же еще и текстура имеется. Каждый раз, когда вы создаете пулю, освобождается участок памяти, устанавливаются свойства этой пули, загружается модель пули, загружается текстура (с винчестера!). Все это занимает определенное время. Если число пуль, которые изрыгает пулемет в секунду, очень велико, могут начаться дикие тормоза, особенно на слабых компьютерах. С уничтожением пуль такая же проблема: надо выгрузить объект, освободить память... То же самое относится не только к пулям, но и к любым объектам, которые часто появляются и исчезают, например к каплям дождя, искрам от электропроводки... Подобная расточительность системных ресурсов в компьютерных играх неприемлема. Вы же не хотите, чтобы вашу игру можно было запустить только на суперкрутой графической станции?
Выход простой. Прикидываем, сколько в среднем объектов подобного рода может существовать одновременно. Допустим, пулемет может выбросить несколько сотен пуль за десяток секунд, и за этот же десяток секунд пули обязательно долетят до цели. Перед началом игры создаем все сто пуль. Лучше всего это делать во время загрузки уровня. Небольшой задержки никто не заметит. Далее пули помещаются в список или массив, который называем аккумулятором . Делаем пули невидимыми или выносим их куда-нибудь за пределы игрового пространства. Как только пулемет начал стрелять, вместо того чтобы создавать пули, мы перемещаем в нужное место уже созданные пули из аккумулятора и делаем их видимыми. Как только пуля достигнет цели, мы не уничтожаем ее, а вновь делаем невидимой и помещаем в аккумулятор. В итоге для каждой пули мы экономим время создания и время уничтожения. А это очень и очень много! А что если мы немного ошиблись в своих прикидках, пули в аккумуляторе кончились, а пулемет продолжает стрелять? Тут уж ничего не поделаешь - придется новые пули создавать динамически, пока в аккумулятор не вернутся старые. И новые пули тоже не будем уничтожать, а запасем в аккумуляторе - вдруг еще понадобятся...

Атака клонов
Пусть у нас есть большой лес, в котором много-много одинаковых деревьев или, скажем, много деревьев нескольких разных видов. Пример похож на предыдущий, только мы тут ничего динамически не создаем и не уничтожаем - на этом уровне деревья есть всегда. Проблема будет при загрузке уровня. Создание стольких деревьев займет огромное время. Но ведь они все одинаковые! То есть мы раз за разом загружаем с винчестера и создаем в памяти копии одного и того же. Загрузили. Играем. Перед рендером каждого из деревьев выполняются подготовительные процедуры. Для каждого дерева они будут одними и теми же, но вызывать мы их будем опять большое число раз, по числу деревьев! Расточительно получается. И память под каждое дерево резервировать надо, и обработка каждого из них время занимает.
Вот бы загрузить одно-единственное дерево, а когда надо будет вывести на экран остальные деревья, просто показать графической библиотеке, откуда брать необходимые данные. Это ж какая экономия ресурсов получится, какой пророст FPS! Такие “ложные” деревья (и не только деревья - что угодно), о которых в памяти хранится только частная информация (положение в пространстве, углы поворота), а одинаковая информация хранится только один раз, называются прокси-объектами .
В GLScene для создания прокси-объектов существует специальный класс - TGLProxyObject . Пользоваться им очень просто. Сначала создаем объект-источник, то есть единственное дерево, например так:
Tree:=TGLFreeFrom(glscene1.objects.AddNewChild(TGLFreeFrom));
//Загружаем
его модель:
Tree.LoadFromFile(‘Tree.3ds’);
//Загружаем его текстуру:
Tree.Material.Texture.Disabled:=false;
Tree.Material.Texture.Image,LoadFromFile(‘tree.jpg’);
//А теперь создадим десять деревьев-клонов в случайных местах:
for i:=1 to 10 do begin
//Создаем очередной прокси-объект
proxy:=TGLProxyObject(glscene1.objects.AddNewChild(TGLProxyObject));
with proxy do begin
//В свойство MasterObject записываем наше дерево-образец
MasterObject:=Tree;
//Показываем, что наследоваться должна только структура объекта
ProxyOptions:=;
//Ориентацию дерева в пространстве надо оставить неизменной
Direction:= Tree.Direction;
Up:= Tree.Up;
//А вот положение задаем случайное
Position.X:=Random(100);
Position.Y:=Random(100);
//И повернем дерево на случайный угол, чтобы лучше смотрелось
RollAngle:=Random(360);
end;
end;
Теперь у нас есть десяток деревьев по цене одного. Обратите внимание, что если мы как-нибудь изменим объект-оригинал, это изменение мгновенно отразится на всех объектах-клонах.

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

Unity3D

Unity 3D - отличный доступный движок. У него есть ряд неоспоримых преимуществ перед конкурентами и, пожалуй, ключевое из них в том, что за лицензию вы платите всего один раз. Неважно, насколько популярной становится игра - если вы выбрали Unity, вам не придется раскошеливаться еще раз. С финансовой точки зрения — это удачное решение, в особенности для стартапов и начинающих разработчиков.

  • выгодная лицензионная политика;
  • легкость в использовании;
  • совместимость с любой платформой;
  • отличное комьюнити;
  • низкий порог входа;
  • популярен среди разработчиков (это означает, что ошибки быстро находят и исправляют).
  • ограниченный набор инструментов (вам, скорее всего, придется разработать некоторые из них самим);
  • процесс изготовления игры отнимает много времени.

Unreal Engine

Unreal Engine - один из наиболее популярных движков для разработки ААА-игр. Gears of War, Batman: Arkham Asylum, Mass Effect — все эти хиты были сделаны именно на нем.

  • поскольку множество разработчиков его использует, то у Unreal Engine, пожалуй, лучшее комьюнити среди конкурентов. Несколько часов видео-туториалов тому подтверждение;
  • отличная техподдержка и механизм апдейта;
  • новые инструменты выходят с каждым обновлением
  • широкий ассортимент инструментов для различных целей (некоторые настолько просты в использовании, что ими может управлять даже школьник)
  • совместим с различными платформами (iOS, Android, Linux, Mac, Windows и большинство других)
  • новая лицензионная политика включает подписку стоимостью $19 в месяц и 5% роялти, если игра заработает более $5,000, что делает движок куда более привлекательным для разработчиков, чем раньше.
  • субъективны. Некоторые разработчики жалуются, что к определенным инструментам сложно привыкнуть

CryEngine 3

Если внешняя составляющая игры - ваш пунктик, то вам нужен именно CryEngine 3.

  • функция Flowgraph поможет украсить игру отличной графикой;
  • набор функций Fmod для создания мощного звукового сопровождения;
  • самый простой процесс создания AI в сегменте;
  • начинающему разработчику будет легко сделать UI.
  • относительно небрежная техподдержка бесплатной версии;
  • поскольку движок в индустрии сравнительно недавно, ему еще только предстоит создать крепкое комьюнити;
  • относительно высокий порог вхождения.

HeroEngine

Этот движок хорошо зарекомендовал себя в создании мультиплеерных игр - взять хотя бы Star Wars: The Old Republic. Лицензия довольно дорогая и вряд ли подойдет начинающим разработчикам, но если ваш проект амбициозен, то я бы советовал рассмотреть этот вариант.

  • в наличии несколько карт для создания открытого мира. Есть возможность их «бесшовного» соединения;
  • сказочно могучий AI!
  • удобный набор инструментов для моделирования карт;
  • подходит для создания комплексных миссий, крафтинга и собирания ресурсов;
  • техподдержка осуществляется при помощи сервиса HeroCloud, что весьма удобно.
  • скриптовый движок мощный, но неудобный в управлении;
  • HeroEngine вместе с сервисом поддержки клиентов HeroCloud слишком дорого стоит и вряд ли будет доступен начинающим разработчикам;
  • высокий порог вхождения.

Rage Engine

Немногие могут конкурировать с широким спектром возможностей, которые предоставляет Rage Engine. Grand Theft Auto V, Red Dead Redemption и многие другие прославленные проекты сделаны при помощи этого движка.

  • широкие возможности для создания больших миров и погодных эффектов;
  • мощный AI;
  • множество стилей геймплея на выбор;
  • быстрый сетевой код.
  • интерфейс движка сравнительно неудобный;
  • управление плохо оптимизировано под клавиатуру и мышку.

Project Anarchy

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

  • если вы планируете разрабатывать игры на платформах iOS, Android и Tizen, то лицензия — бесплатная;
  • мощные инструменты для поиска и устранения багов;
  • сильное комьюнити;
  • издатель предоставляет четкую, понятную документацию и образцы;
  • Fmod для аудио-сопровождения;
  • мощный Havok AI .
  • отсутствует возможность разрабатывать игру на Mac и Linux;
  • нет вводного руководства для начинающих разработчиков;
  • если игра для ПК, то лицензия влетит вам в копеечку.

GameSalad

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

  • бесплатная лицензия (деньги с вас потребуют только за PRO-версию);
  • активное комьюнити;
  • отличный движок для быстрого создания прототипа;
  • совместимость с популярными мобильными платформами такими, как Cocona и Moai.
  • ограниченный набор инструментов разработки;
  • нет доступа к большинству возможностей платформы iOS.

GameMaker: Studio

Если вы начинающий разработчик и вам нужен простой и понятный движок, то GameMaker: Studio полностью отвечает вашим целям.

  • простое и интуитивно понятное управление;
  • собственный язык программирования Game Maker Language (GML);
  • интеграция со Steam;
  • кроссплатформенность.
  • относительно сложно устранять неполадки в игре;
  • чтобы экспортировать свою игру на популярные платформы, придется доплатить круглую сумму.

App Game Kit

App Game Kit - кроссплатформенный софт для разработчиков. Ценится за универсальность и легкость в управлении.

  • позволяет писать коды для основных платформ: Android iOS, Windows, Mac и Linux;
  • поставляется в комплекте с IDE , что позволяет тестить игры на любом устройстве;
  • без дополнительной установки уже включает в себя IAP, AdMob и Push;
  • есть мощные скрипты для 2D графики, физики и сетевого взаимодействия.
  • поскольку мало кто работает с этим движком, то недостатки программы долго не устраняются (относительно слабая техподдержка);
  • множество багов (что органично следует из предыдущего пункта).

Cocos2D

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

  • отлично интегрирован в платформу iOS;
  • бесплатный и с открытым исходным кодом;
  • широкий выбор инструментов разработки;
  • сильная поддержка комьюнити.
  • более сложный в применении, чем большинство аналогов;
  • высокий порог вхождения;
  • «заточен» конкретно под Mac или iOS. Отсутствует кроссплатформенность.

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

Хотите попробовать создать свою 2D игру? Перед вами лучшие инструменты для работы, даже если вы новичок в этом деле.

Создавать игры сложно. Чем больше вы знаете об этом процессе, тем сильнее вы будете удивляться тому, что кто-то действительно доводит его до конца. Как говорил один из бывших авторов PC GamerТом Фрэнсис, описывая процесс программирования игры Gunpoint: «За время работы над игрой я пришёл к одному выводу: Моя игра – это настоящее безумие. Это пациент психлечебницы. Она полностью сошла с ума, и нужно быть готовым к тому, что все разумные доводы будут встречены невменяемым кричащим бредом».

Легко впасть в ступор при одной мысли о масштабе работы, которую придётся проделать, разрабатывая дизайн и программируя свою игру, однако мы обратились к нескольким независимым разработчикам, и все они дали один и тот же совет новичкам: просто сделайте это. Погрузитесь в работу с головой, какой бы страшной она ни казалась. Для того, чтобы помочь вам сделать первый (пугающий, но, в конечном счёте, оправдывающий средства) шаг, мы подготовили список 2D-движков для начинающих игровых разработчиков. Надеемся, что он вкупе с рекомендациями опытных геймдизайнеров будет вам полезен.

GameMaker Studio 2

Стоимость лицензии : 100 долларов для ПК-версии; доступен бесплатный пробный период

Подойдёт для : коротких 2D-платформеров и RPG; кроссплатформенных игр

Примеры игр : Nidhogg, Hyper Light Drifter, Undertale, Risk of Rain

Плюсы

Марк Эссен, автор игр Nidhogg и Nidhogg 2, говорит, что GameMaker отлично подходит для новичков, так как система создания скриптов в нём максимально проста и понятна, к тому же на портале Yoyo Games можно найти собрание руководств и гайдов по данной теме. В интернете также немало дополнений для движка, позволяющих кастомизировать его для создания платформера или RPG с видом сверху.

Алекс Престон, создавший Hyper Light Drifter, говорит, что коммьюнити движка GameMaker оказывает неоценимую помощь новичкам. Он отмечает, что начинающим разработчикам следует «…наладить связь с сообществом разработчиков и изучить все инструменты движка, чтобы добиться того, чего нужно – а для этого стоит обращаться за советами к бывалым разработчикам».

Минусы

Разумеется, у вас вряд ли получится сразу же создать игру, которую можно опубликовать в Steam. «Из-за того, что GameMaker проста в использовании, проекты очень часто получаются несбалансированными», говорит Эссен. «Мне нравится, что на начальных стадиях разработки можно быстро обрисовать скелет своей игры и сосредоточиться на её дизайне, однако в дальнейшем это может выйти боком, особенно если вы не придерживаетесь организационных стандартов!»

Дункан Драммонд, автор всеми любимой Risk of Rain, тоже подчёркивает, что простота использования GameMaker может стать ночным кошмаром разработчика. «На движке можно быстро создать игру, но если проглядеть на ранних этапах своих ошибки, то позднее это выльется в увеличении затрат на игру», говорит он. Драммонд отмечает, что специфика работы с GameMaker сильно отличается от работы с другими движками, поэтому если в дальнейшем вы планируете перейти на Unity или любой другой движок, то вам, скорее всего, лучше поискать иной вариант.

«Не забывайте удалять свои старые работы! Чем чаще вы начинаете игру с нуля, тем опытнее по части геймдизайна вы становитесь», - Марк Эссен, Nidhogg

«Просто начните! Запустите движок, почитайте руководства и приступайте к работе, даже если у вас толком не получается. Чем больше ошибок совершите, тем больше уроков вы вынесете», - Алекс Престон, Hyper Light Drifter

«Не бойтесь начать! Это интересный и относительно простой способ разработки, и тратит он разве что ваше время», - Дункан Драммонд, Risk of Rain

Unity

Стоимость лицензии : Бесплатный стартовый пакет, 35 долларов в месяц за пакет Unity Plus, 125 долларов в месяц за пакет Unity Pro

Подойдёт для : практически любой инди-игры

Примеры игр : , Galak-Z, West of Loathing, Cuphead

Unity – это одна из главных платформ для разработки популярных инди-игр, и хотя она имеет впечатляющие 3D-возможности, на ней было создано немало потрясающих 2D-игр. Unity более сложен в освоении, чем остальные движки из данного списка, однако обширное сообщество разработчиков и огромное количество обучающих гайдов, которые можно найти в сети, помогут вам приступить к работе.

На официальном сайте Unity можно найти и специальные дополнения, позволяющие кастомизировать движок для разработки 2D-игр. К примеру, бесплатное расширение 2D Platformer или инструменты вроде Corgi Engine и Rex Engine, предлагающие игровую физику, управление и особенности, заточенные специально под платформеры.

Мы поговорили с Джозефом Хамфри из inkle и Виктором Томпсоном из Asymmetric Publications, которые рассказали о своём опыте работы с Unity.

Плюсы

Томпсон, ранее создававший игры классическим способом, быстро стал поклонником Unity – движка, на котором была создана недавно вышедшая под названием West of Loathing. «После 2-3 лет работы с движком больше всего меня радует то, насколько быстро можно совмещать концепты и прототипы», говорит он. «Я использовал множество различных движков – как небольшие для своих собственных проектов, так и крупные для разработки AAA-игр, однако Unity – это пока что лучший из всех движков, что я видел, так как он позволяет мне быть наиболее продуктивным».

Минусы

Впрочем, если вы собираетесь использовать одну платформу для всех своих разработок, вы столкнётесь с определёнными ограничениями. Если вы найдёте баг в Unity, вам придётся ждать, пока авторы движка его исправят, и это не всегда быстро. «Несмотря на то, что представители движка заявляют, что исправление багов является их важнейшим приоритетом, разработчики компании inkle по-прежнему считают стабильность дебаггинга одной из главных проблем движка», говорит Хамфри.

«Прежде всего, постарайтесь создать в голове конечный образ игры и сфокусируйтесь на нём – вашей конечной целью должен быть не опыт, полученный в процессе, а готовый продукт. Конечно, полезно вынести пару уроков из неудач, но, как мне кажется, намного важнее задаться целью, изучить всё, что необходимо для достижения этой цели, и в итоге реализовать задуманное», - Виктор Томпсон, West of Loathing

Ren’Py

Стоимость лицензии : Бесплатно

Подойдёт для : 2D визуальных новелл, симуляторов

Совместим с : Python

Примеры игр : Long Live the Queen, Analogue: A Hate Story

Ren’Py – это простой в освоении движок с открытым исходным кодом. И хотя он требует начальных навыков программирования, на самых ранних этапах вам понадобится лишь умение работать с текстовым редактором и приложениями по редактированию фотографий. Это удобная стартовая площадка для тех, кто в будущем планирует изучить язык программирования Python.

Плюсы

«Открытый исходный код Ren’Py и его кроссплатформенность дают множество возможностей для всех пользователей движка», говорит Бенсли. «Я также считаю плюсом тот факт, что движок рассчитан на новичков, но при этом требует вносить правки в программный код игры. Это лучше, чем графический drag-and-drop интерфейс, так как это показывает, что в программировании нет ничего страшного».
Ren’Py подойдёт вам в том случае, если вас пугает сама перспектива создания игры с нуля:

«Одно из важнейших препятствий, с которым сталкивается большинство людей, ранее не работавших над созданием игр, заключается в их уверенности в том, что программирование – это нечто “слишком сложное”, а потому это попросту им не по силам. А данный движок позволяет быстро и успешно создать простую игру, что придаёт уверенности начинающим разработчикам, даже если они и не планируют в будущем выпускать одни лишь визуальные новеллы. Как только ты создаёшь нечто, во что могут играть другие, пусть даже простенький проект, ты уже не ставишь под сомнение свои способности».

Минусы

Ren’Py немного ограничен по части графических и геймплейных функций. Если вы намерены создавать игры с 3D, Live2D, системой повреждений и другими особенностями, то вам стоит поискать другие варианты.

ink

Стоимость лицензии : Бесплатно

Подойдёт для : текстовых приключенческих игр

Совестим с : Unity, C#, HTML

Примеры игр : 80 Days, Sorcery!

Ink – это хорошее бесплатное дополнение для Unity, если вы хотите разбавить свою игру диалоговыми ветками и расширенным повествованием. Его легко освоить, в нём не используется продвинутый код, и он бесшовно интегрируется с Unity. Как говорит создатель ink Джозеф Хамфри, данный движок является «промежуточным» - после создания скрипта в ink его можно перенести в более крупную игру на движке Unity. Тем не менее редактор Inky Editor позволяет также создавать веб-игры.

Плюсы

Создание масштабного сценария со множеством диалоговых веток может быстро превратиться в запутанную кашу, поэтому ink поможет вам не потеряться в процессе. «Авторы игр могут использовать инструменты движка для создания диалогов и текста в формате удобного интерактивного сценария с ключевыми метками», говорит Хамфри. «Затем движок ink, запущенный внутри Unity, сможет читать эти сценарии и выводить текст на экраны уже в самой игре».

Открытый исходный код играет важную роль в разработке амбициозных проектов. Хамфри отмечает, что «создаваемый на движке ink текст необязательно должен показываться в виде текста. К примеру, в игре Heaven’s Vault движок ink создаёт динамичный сценарий, который интерпретируется самой игрой в виде интерактивной графической новеллы с приключенческими элементами».

ink также является отличным инструментом для тех, кто больше заинтересован в написании сценариев для игр, а не о чистом программировании. «…Количество сценаристов, использующих ink для написания интерактивных историй, постоянно растёт», добавляет Хамфри. «Where The Water Tastes Like Wine – это один из таких примеров. Её создали авторы игры Gone Home при помощи движка ink. Над игрой работали такие известные сценаристы, как Ли Александр, Эмили Шорт и Кара Эллисон. Поэтому если вам нравится сочинять сценарии и вы интересуетесь разработкой игр, то ink может стать отличной площадкой для начала».

Минусы

ink лучше всего использовать для игр, разрабатываемых на движке Unity. Хамфри говорит, что «ink не является альтернативой Unity - это скорее дополнение. Более того, ink – это единственный инструмент для создания интерактивных сценариев, который был намеренно создан в виде промежуточного звена».

«У меня есть один-единственный совет – просто попытайтесь создать демо-игру. Если же вы хотите заполнить своё портфолио, в котором указаны примеры того, в чём вы хороши, то самое время начать заполнять его. Создавайте эти примеры!»

В начале 2017 года мы писали о внезапном появлении RPG Maker на площадке Steam и о том, как движок стремительно набирает популярность среди начинающих инди-разработчиков. Но есть и другие инструменты, на которые стоит обратить внимание:

HaxeFlixel с открытым исходным кодом и кроссплатформенностью.

Stencyl – инструмент для создания игр без использования программирования.

Это пятая статья из цикла материалов для начинающих разработчиков игр: Игровой движок - написать самому или взять готовый?

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

Почему не стоит писать свой игровой движок

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

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

Помимо бесплатных систем разработки игр, многие коммерческие игровые движки, полностью готовые к немедленному началу использования в игровых проектах, предлагают сразу несколько очень привлекательных схем лицензирования : полностью бесплатную (Unity 3D в бывшей Indie-редакции), смешанную схему с выплатой Royalties (Unreal Development Kit ) - 99 $ взнос за лицензию и выплаты 25 % прибыли после первых заработанных 5000 $, либо же доступную стоимость полновесной коммерческой лицензии (Unity Pro за 1500 $).

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

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

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

Подводим итог : написанием собственного игрового движка могут заниматься те, кто чётко представляет, что именно и зачем ему это нужно, видит адекватные преимущества такого подхода и способен за вменяемые сроки претворить свой план в жизнь. Всем остальным следует поискать готовое решение, благо оных в последнее время появилось достаточно - взять хотя бы те же Unity 3D и UDK.