Игровой Движок - Написать Самому или Взять Готовый? Как создать движок для игры


Как написать собственный игровой движок на C++ / Хабр

Перевод статьи Джеффа Прешинга (Jeff Preshing) How to Write Your Own C++ Game Engine.

Как написать собственный игровой движок на C++

В последнее время я занят тем, что пишу игровой движок на C++. Я пользуюсь им для создания небольшой мобильной игры Hop Out. Вот ролик, записанный с моего iPhone 6. (Можете включить звук!)

Your browser does not support HTML5 video.

Hop Out — та игра, в которую мне хочется играть самому: ретро-аркада с мультяшной 3D-графикой. Цель игры — перекрасить каждую из платформ, как в Q*Bert.

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

С чего бы кому-то хотеть написать игровой движок? Возможных причин много:

  • Вы — ремесленник. Вам нравится строить системы с нуля и видеть, как они оживают.
  • Вы хотите узнать больше о разработке игр. Я в игровой индустрии 14 лет и всё ещё пытаюсь в ней разобраться. Я даже не был уверен, что смогу написать движок с чистого листа, ведь это так сильно отличается от повседневных рабочих обязанностей программиста в большой студии. Я хотел проверить.
  • Вам нравится ощущение контроля. Организовать код именно так, как вам хочется, и всегда знать, где что находится — это приносит удовольствие.
  • Вас вдохновляют классические игровые движки, такие как AGI (1984), id Tech 1 (1993), Build (1995), и гиганты индустрии вроде Unity и Unreal.
  • Вы верите, что мы, индустрия игр, должны сбросить покров таинственности с процесса разработки движков. Мы пока не очень-то освоили искусство разработки игр — куда там! Чем тщательнее мы рассмотрим этот процесс, тем выше наши шансы усовершенствовать его.

Игровые платформы в 2017-ом — мобильные, консоли и ПК — очень мощные и во многом похожи друг на друга. Разработка игрового движка перестала быть борьбой со слабым и редким железом, как это было в прошлом. По-моему, теперь это скорее борьба со сложностью вашего собственного произведения. Запросто можно сотворить монстра! Вот почему все советы в этой статье вращаются вокруг того, как сохранить код управляемым. Я объединил их в три группы:

  1. Используйте итеративный подход
  2. Дважды подумайте, прежде чем слишком обобщать
  3. Осознайте, что сериализация — обширная тема.

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

Используйте итеративный подход

Мой первый совет — не задерживаясь заставьте что-нибудь (что угодно!) работать, затем повторите.

По возможности, начните с образца приложения, которое инициализирует устройство и рисует что-нибудь на экране. В данном случае я скачал SDL, открыл Xcode-iOS/Test/TestiPhoneOS.xcodeproj, затем запустил на своём iPhone пример testgles2.

Вуаля! У меня появился замечательный вращающийся кубик, использующий OpenGL ES 2.0.

Моим следующим шагом было скачивание сделанной кем-то 3D-модели Марио. Я быстро написал черновой загрузчик OBJ-файлов — этот формат не так уж сложен — и подправил пример, чтобы он отрисовывал Марио вместо кубика. Ещё я интегрировал SDL_Image, чтобы загружать текстуры.

Затем я реализовал управление двумя стиками, чтобы перемещать Марио. (Поначалу я рассматривал идею создания dual-stick шутера. Впрочем, не с Марио).

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

К тому моменту я отказался от формата OBJ и написал скрипт на Python для экспорта собственных JSON-файлов из Blender. Эти JSON-файлы описывали заскиненный меш, скелет и данные анимации. Я загружал эти файлы в игру с помощью библиотеки C++ JSON.

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

В течение следующих нескольких месяцев я сделал такие шаги:

  • Начал выделять функции работы с векторами и матрицами в собственную библиотеку трёхмерной математики.
  • Заменил .xcodeproj на проект CMake
  • Заставил движок запускаться и на Windows, и на iOS, потому что мне нравится работать в Visual Studio.
  • Начал перемещать код в отдельные библиотеки "engine" и "game". Со временем, я разделил их на ещё более мелкие библиотеки.
  • Написал отдельное приложение, чтобы конвертировать мои JSON-файлы в бинарные данные, которые игра может загружать напрямую.
  • В какой-то момент убрал все библиотеки SDL из iOS-сборки. (Cборка для Windows всё ещё использует SDL.)

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

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

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

Готов поспорить, что больше времени тратится при противоположном подходе: пытаться заранее продумать архитектуру, которая будет делать всё, что вам понадобится. Две моих любимых статьи про опасности чрезмерной инженерии — The Vicious Circle of Generalization Томаша Дабровски и Don’t Let Architecture Astronauts Scare You Джоэла Спольски.

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

Итеративный подход дал мне куда более элегантную архитектуру, чем я мог бы вообразить, глядя на чистый лист бумаги. iOS-сборка моего движка сегодня на 100% состоит из оригинального кода, включая собственную математическую библиотеку, шаблоны контейнеров, систему рефлексии/сериализации, фреймворк рендеринга, физику и аудио микшер. У меня были причины писать каждый из этих модулей самостоятельно, но для вас это может быть необязательным. Вместо этого есть множество отличных библиотек с открытым исходным кодом и разрешительной лицензией, которые могут оказаться подходящими вашему движку. GLM, Bullet Physics и STB headers — лишь некоторые из интересных примеров.

Дважды подумайте, прежде чем слишком обобщать

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

Время от времени нарушайте принцип DRY

Приведу пример: мой движок содержит несколько шаблонных классов умных указателей, близких по духу к std::shared_ptr. Каждый из них помогает избежать утечек памяти, выступая обёрткой вокруг сырого указателя.

  • Owned<> для динамически выделяемых объектов, имеющих единственного владельца.
  • Reference<> использует подсчёт ссылок чтобы позволить объекту иметь несколько владельцев.
  • audio::AppOwned<> используется кодом за пределами аудио микшера. Это позволяет игровым системам владеть объектами, которые аудио микшер использует, такими как голос, который в данный момент воспроизводится.
  • audio::AudioHandle<> использует систему подсчёта ссылок, внутреннюю для аудио микшера.

Может показаться, что некоторые из этих классов дублируют функциональность других, нарушая принцип DRY. В самом деле, в начале разработки я пытался повторно использовать существующий класс Reference<> как можно больше. Однако, я выяснил, что время жизни аудио-объекта подчиняется особым правилам: если объект закончил воспроизведение фрагмента, и игра не владеет указателем на этот объект, его можно сразу же поместить в очередь на удаление. Если игра захватила указатель, тогда аудио-объект не должен быть удалён. А если игра захватила указатель, но владелец указателя уничтожен до того, как воспроизведение закончилось, оно должно быть отменено. Вместо того чтобы усложнять Reference<>, я решил, что будет практичнее ввести отдельные классы шаблонов.

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

Использовать разные соглашения о вызове — это нормально

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

В моём C++ движке некоторые функции принадлежат классами, а некоторые — нет. Например, каждый противник в игре — это класс, и бо́льшая часть поведения противника реализована в этом классе, как и следовало ожидать. С другой стороны, sphere casts в моём движке выполняются вызовом sphereCast(), функции в пространстве имён physics. sphereCast() не принадлежит какому-либо классу — это просто часть модуля physics. У меня есть система сборки, которая управляет зависимостями между модулями, что сохраняет код достаточно (для меня) хорошо организованным. Заворачивание этой функции в произвольный класс никоим образом не улучшит организацию кода.

А ещё есть динамическая диспетчеризация, которая является формой полиморфизма. Часто нам нужно вызвать функцию объекта, не зная точного типа этого объекта. Первый порыв программиста на C++ — определить абстрактный базовый класс с виртуальными функциями, затем перегрузить эти функции в производном классе. Работает, но это лишь одна из техник. Существуют и другие методы динамической диспетчеризации, которые не привносят так много дополнительного кода, или имеют другие преимущества:

  • С++11 ввел std::function, и это удобный способ хранить функции обратного вызова. Также можно написать собственную версию std::function, не вызывающую столько боли, когда заходишь в неё в отладчике.
  • Многие функции обратного вызова могут быть реализованы с помощью пары указателей: указателя на функцию и непрозрачного аргумента. Требуется только явное приведение внутри функции обратного вызова. Это часто встречается в библиотеках на чистом C.
  • Иногда базовый тип известен во время компиляции, и можно привязать вызов функции вообще без накладных расходов времени выполнения. Turf — библиотека, которой я пользуюсь в своём игровом движке, сильно полагается на этот способ. Взгляните на turf::Mutex для примера. Это просто typedef над платформо-специфичными классами.
  • Иногда самый прямой путь — создать и поддерживать таблицу сырых указателей на функцию своими силами. Я использовал этот подход в своих аудио микшере и системе сериализации. Интерпретатор Python также на полную использует эту технику, как будет показано ниже.
  • Вы можете даже хранить указатели на функцию в хэш-таблице, используя имена функций как ключи. Я пользуюсь этой техникой для диспетчеризации событий ввода, таких как события мультитача. Это часть стратегии по записи ввода игры и воспроизведения его в системе реплеев.

Динамическая диспетчеризация — обширная тема. Я лишь поверхностно рассказал о ней, чтобы показать как много способов реализации существует. Чем больше растяжимого низкоуровневого кода вы пишите — что не редкость для игрового движка — тем чаще обнаруживаете себя за изучением альтернатив. Если вы не привыкли к программированию в таком виде, интерпретатор Python, написанный на C — отличный пример для изучения. Он реализует мощную объектную модель: каждый PyObject указывает на PyTypeObject, а каждый PyTypeObjeсt содержит таблицу указателей на функцию для динамической диспетчеризации. Документ Defining New Types — хорошая начальная точка, если вы хотите сразу погрузиться в детали.

Осознайте, что сериализация — обширная тема

Сериализация — это преобразование объектов времени выполнения в последовательность байтов и обратно. Другими словами, сохранение и загрузка данных.

Для многих, если не большинства, движков игровой контент создаётся в разных редактируемых, таких как .png, .json, .blend или проприетарных форматах, затем в конце концов конвертируется в платформо-специфичные форматы игры, которые движок может быстро загрузить. Последнее приложение в этом процессе часто называют "cooker". Cooker может быть интегрирован в другой инструмент или даже распределяться между несколькими машинами. Обычно, cooker и некоторое количество инструментов разрабатываются и поддерживаются в тандеме с самим игровым движком.

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

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

void load(InStream& in, u32 fileVersion) { // Загрузить ожидаемые переменные-члены in >> m_position; in >> m_direction; // Загрузить более новую переменную только если версия загружаемого файла больше 2. if (fileVersion >= 2) { in >> m_velocity; } }

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

Когда вы собираете Blender из исходников, выполняется много шагов. Во-первых, компилируется и запускается собственная утилита makesdna. Эта утилита парсит набор заголовочных файлов C в дереве исходников Blender, а затем выводит краткую сводку со всеми определёнными типами в собственном формате, известном как SDNA. Эти SDNA-данные служат данными рефлексии. SDNA затем компонуется с самим Blender, и сохраняется с каждым .blend-файлом, который Blender записывает. С этого момента, каждый раз когда Blender загружает .blend-файл, он сравнивает SDNA .blend-файла cо SDNA, скомпонованной с текущей версией во время исполнения и использует общий код сериализации для обработки всех различий. Эта стратегия даёт Blender впечатляющий диапазон обратной и прямой совместимости. Вы всё ещё можете загрузить файлы версии 1.0 в последней версии Blender, а новые .blend-файлы могут быть загружены в старых версиях.

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

Несомненно, я упускаю множество деталей. В этой статье я хотел только показать, что есть много способов сериализовать данные, некоторые из которых очень сложны. Программисты просто не обсуждают сериализацию столько же, сколько другие системы движка, даже несмотря на то, что большинство других систем зависят от неё. Например, из 96 программистских докладов GDC 2017, я насчитал 31 доклад о графике, 11 об онлайне, 10 об инструментах, 3 о физике, 2 об аудио — и только один, касающийся непосредственно сериализации.

Как минимум, постарайтесь представить, насколько сложными будут ваши требования. Если вы делаете маленькую игру вроде Flappy Bird, с несколькими ассетами, вам скорее всего не придётся много думать о сериализации. Вероятно, вы можете загружать текстуры напрямую из PNG и этого будет достаточно. Если вам нужен компактный бинарный формат с обратной совместимостью, но вы не хотите разрабатывать свой — взгляните на сторонние библиотеки, такие как Cereal или Boost.Serialization. Не думаю, что Google Protocol Buffers идеально подходят для сериализации игровых ресурсов, но они всё равно стоят изучения.

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

Я люблю сравнивать наблюдения по этой теме, так что мне очень интересно услышать мнение других разработчиков. Если вы писали движок, привел ли ваш опыт к тем же выводам? А если не писали или ещё только собираетесь, ваши мысли мне тоже интересны. Что вы считаете хорошим ресурсом для обучения? Какие аспекты ещё кажутся вам загадочными? Не стесняйтесь оставлять комментарии ниже или свяжитесь со мной через Twitter.

habr.com

• Игровой Движок - Написать Самому или Взять Готовый? « Геймдев: Основы Разработки Игр •

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

1. Создание игр для начинающих2. Специальности в геймдеве3. Создание команды разработчиков игр4. Управление командой разработчиков игр5. Игровой движок — написать самому или взять готовый?6. Как выбрать игровой движок или конструктор игр7. Создание MMORPG или любого крупного проекта — стоит ли? Показательный расчёт времени разработки8. Создание Модов для Игр — Удачный Старт для Разработчика!

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

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

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

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

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

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

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

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

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

Читайте далее arrow 6. Как выбрать игровой движок или конструктор игр

3dg.me

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

unity-5-unreal-engine-4-source-2

С недавним релизом бесплатной версии Unreal Engine и анонсом бесплатного Source 2 у вас появилось ещё больше возможностей делать собственные игры. Но выбор движка, подходящего под ваши потребности и навыки – дело не самое простое. Давайте же пробежимся по лучшим образцам бесплатного (ну почти, о чем ниже) софта для новичков и профессионалов.

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

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

На передовой технологий – CryENGINE

CryENGINE – это чрезвычайно мощный игровой движок, созданный компанией-разработчиком Crytek, впервые представленный в игре Far Cry. Он предназначен для разработки под PC и консоли, включая PlayStation 4 и Xbox One. Его графические возможности превосходят Unity и UDK, и время от времени стоят на шаг впереди Unreal Engine 4: новейшее освещение, реалистичная физика, продвинутые системы анимации и многое другое. Последней игрой на CryENGINE была Ryse: Son of Rome. По аналогии с UDK и UE4 в CryENGINE встроены мощные и интуитивные функции, касающиеся работы с дизайном уровней.

Продуктивное использование CryENGINE потребует определённого времени на его изучение, и у вас могут возникнуть затруднения при отсутствии опыта работы с другими движками. Если вам не нужна графика уровня Crysis 3 или Ryse: Son of Rome, стоит присмотреться к чему-то более дружелюбному к пользователю.

Ценовая модель CryENGINE несколько отличается от конкурентов. За использование движка нужно платить $9,90 в месяц. Он не полностью бесплатный, как UE4 или Unity 5, зато не требует выплаты роялти, так что $9,90 – это всё, что вам придётся платить Crytek. В зависимости от размера вашей студии и команды, отсутствие роялти может быть огромным преимуществом.

Начинающим – Stencyl или GameMaker

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

Stencyl позволяет делать игры без программирования. Интерфейс полностью основан на перетаскивании, игры можно выпускать на Windows, Mac, Linux, iOS, Android и Flash. Если вы когда-нибудь имели дело с чем-то вроде Scratch, вы сразу узнаете LEGO-подобный подход к построению кода посредством размещения блоков. Stencyl задуман для простого создания спрайтовых игр, поэтому чаще служит основой паззлам и сайд-скроллерам. Что-нибудь сложное сделать будет проблематично, так что если решили работать над RPG или стратегией, присмотритесь к другому софту. С помощью Stencyl на свет появилось несколько популярных игр, в том числе Impossible Pixel и Zuki’s Quest. Также в нём есть встроенное обучение, которое расскажет обо всём, что вам нужно знать.

GameMaker – другая бесплатная утилита для новичков, с помощью которой можно делать игры для Windows, Mac, iOS и Android. Как и в Stencyl, тут почти всё работает на перетаскивании, но есть ещё и хуки для многопользовательских игр, ссылки на внешние SDK, возможность покопаться в коде и многое другое. Бесплатная версия при экспорте накладывает водяные знаки, но, тем не менее, GameMaker отлично подходит для первого раза и содержит встроенное обучение основам. Тут нет такового жанрового ограничения, как в Stencyl, и можно найти отдельные руководства для разных типов игр. В GameMaker сделали оригинальную версию Spelunky и Hotline Miami.

Конечно, всё не ограничивается этими двумя вариантами. Buildbox – относительно новая утилита, доступная в течение пробного периода и предлагающая тренировочную программу для изучения её работы, а GameSalad – уже давно известная популярная платформа, правда на неё жалуются из-за багов и нестабильной работы. Construct стоит внимания, если хотите делать игры на HTML5. В каждом случае главная проблема в том, что придётся сдерживать свои дизайнерские идеи. Это софт для новичков, и вы просто сломаете его в попытке сделать что-то сложное. То есть, игры получатся забагованными и нерабочими, если вы попытаетесь выйти за рамки задуманной системы. И всё же, это превосходное место для старта и подходящий вариант при отсутствии опыта в программировании.

Программистам среднего уровня, нацеленным на 2D-игры – Cocos2D

Cocos2D – это программа с открытым исходным кодом для создания 2D-игр. Игры можно выпускать на Windows, Mac, Android, iOS, Windows Phone или на веб-платформе.

Большая часть того, что вы будете делать в Cocos2D – это работа с C++ (также есть поддержка Lua и JavaScript), так что вам нужно освоить этот язык программирования, прежде чем вообще браться за Cocos2D. Однако, при знании упомянутых языков, программа становится довольно простой в использовании. В ней есть полноценная IDE, и она совершенно бесплатна, без каких-либо условностей. Как понятно по названию, утилита предназначена для создания двумерных игр, так что и работает она лучше с простыми спрайтовыми играми, где 3D ни к чему. 2D-игры можно делать и на Unity (который мы рассмотрим чуть далее), но в Cocos2D вникнуть попроще, если вы только начинаете (и конечно, знаете C++).

На Cocos2D создано немало успешных игр различных жанров, включая увенчанную наградами Badland.

Разработчикам, нацеленным на мобильные платформы – Unreal Engine или Unity

Если вы заинтересованы в сложных, трёхмерных играх, два наиболее популярных инструмента для их создания – это Unreal Engine и Unity. У обоих есть свои сильные и слабые стороны и разные моменты в лицензионных соглашениях, с которыми стоит ознакомиться перед принятием окончательного решения.

Unity позволяет вам делать трёхмерные и двумерные игры практически для любой платформы, включая Windows, Mac, Xbox, Playstation, Android, iOS и не только. Он поддерживает игровые ресурсы, созданные в 3ds Max, Maya, Softimage, Cinema 4D, Blender и другом софте. Unity использует C#, наряду с собственным языком программирования, так что не помешает для начала хорошенько их изучить. Если сравнивать Unity и Unreal, первый, пожалуй, попроще в освоении. У него есть богатый набор готовых поведений и встроенная библиотека игровых ресурсов, в которой довольно просто за ними следить. Во время работы над этим текстом я общался с несколькими разработчиками, и они думают, что Unity – лучший движок для первых проектов, потому что его проще понять и изучить, чем Unreal. Если вы уже сделали игру, скажем, на GameMaker, то сразу разберётесь, что к чему в Unity. Ещё Unity поддерживает альтернативные модели оплаты прямо в движке, включая несколько free-to-play моделей монетизации.

Функционал бесплатной персональной версии уже достаточно богат для вашего первого проекта. Создав игру на бесплатной версии, вам не нужно платить лицензионные отчисления или роялти, но тут есть некоторые оговорки, а именно – вы не сможете получить больше $100000 спонсирования /прибыли. В помощь начинающим разработчикам по Unity написано множество обучающих статей. Популярные игры на этом движке: Alto’s Adventure, Gone Home и находящаяся в разработке Firewatch.

Unreal Engine 4 использует C++, так что при должном знании этого языка можно остановить свой выбор на нём, впрочем, игры можно будет создавать и не углубляясь в сам язык. Игры, сделанные на Unreal, Engine можно выпускать на PC, Mac, iOS, Android, Xbox One и Playstation 4. В Unreal в движок встроено практически всё, что вам понадобится, включая 3D-моделирование и работу с ландшафтом. Из-за столь богатого наполнения, освоить Unreal Engine 4 сложнее других инструментов разработки, и даже при хорошем знании C++ вам стоит приготовиться к изучению множества новых вещей. Зато вы сможете создавать по-настоящему впечатляющие игры. О тонкостях устройства Unreal можно узнать больше с помощью реверс-инжиниринга, но всё же без предварительного опыта разобраться с ним будет нелегко. Unreal Engine 4 – относительно новый движок, но на нём уже вышли такие игры, как Daylight и Tekken 7.

Для использования Unreal Engine 4, вам нужно дать согласие на выплату роялти, если ваша игра будет продаваться. После начала продаж игры или приложения вы платите 5% роялти, если превысите $3000 за квартал. Может показаться, что это слишком большие деньги, но с учётом прибыли, которую будет приносить игра, это не так уж много.

Также стоит присмотреться к движку Source 2 от Valve, который в этом году тоже должен стать бе

www.progamer.ru

Как создать игровой движок?

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

Инструкция
  • Обратите внимание, что движок для абсолютно любой игры составляется из многих, порой независимых друг от друга частей. Сюда входит: главное меню, игровой интерфейс, загрузка уровней, физическая модель, контроль столкновений и многое другое. Некоторые части необходимы лишь для какого-либо одного жанра. К примеру, в морском или авиационном стимуляторе нужен и важен модуль погодных явлений, но в стратегии реального времени он или не нужен вообще, или имеет второстепенное значение. Или, например, модуль выстрелов абсолютно без надобности в футбольном стимуляторе. Из таких необходимых частей и будет собираться компьютерная игра.
  • Используйте язык программирования Delphi, особенно если вы еще делаете первые шаги в данной области. Delphi – это среда разработки Object Pascal, отличающегося простотой и достаточной гибкостью, для возможности создания на нем полноценной компьютерной игры современного уровня, причем любого жанра, с полноценной трехмерностью и современным уровнем графики. Собственно говоря, среда разработки – дело вкуса каждого конкретного программиста. Например, MSVC++ , в отличие от Delphi , генерирует более быстрый код, но скорость компиляции Delphi в десятки, а может даже в сотни раз быстрее. Плюс удобный интерфейс и точное указывание строки кода, содержащей ошибку.
  • Рассмотрите пример примитивного графического движка. В нем пока еще нет многопоточности, счетчиков ссылок, умных указателей, приоритетов ресурсов и даже возможности выгрузить ставшую уже ненужной структуру. Но текущих возможностей вполне хватит, чтобы создать простую несложную игру. А для начала это уже немало.
  • Вы можете поручить движку, чтобы код инициализации был полностью скрыт в нем самом, а также чтобы движок загружал шейдеры и текстуры. А если при запуске произойдет LostDevice, то чтобы он сам восстанавливал нужные данные. И еще желательно, чтобы можно было выгружать все ресурсы и завершать всю работу с графикой одной функцией.
  • Совет добавлен 10 декабря 2011 Совет 2: Как создать движок Когда встает речь о создании серьезных проектов, то оптимальное решение в таких случаях – создание собственного движка под определенные нужды. Потратив время один раз, вы сможете создавать сетки определенно выстроенных проектов, не отягчая их ненужными модулями и функциями повсеместно используемых движков, таких как Joomla или Wordpress. Конечно, проще заказать разработку движка у специалистов, но, только создав CMS самому, вы будете насквозь видеть свои сайты и мгновенно решать возникающие задачи.
    Вам понадобится
    • Компьютер, доступ в Интернет, созданный сайт с четкой структурой, знания объектно-ориентированного программирования, PHP, CSS, Javascript.
    Инструкция
  • Сверстайте все страницы своего сайта. Не нужно рисовать дизайн-документ, это делается потом. А вот нарисовать четкую структуру внешнего вида необходимо: расположение меню, логотипа, шапки, количество колонок и т.д. Впоследствии все можно будет поменять, но для отладки движка все равно потребуется элементарный внешний вид.
  • Создайте все необходимые таблицы для базы данных. Например, таблица со статьями, с разделами и т.д. Не страшно, если вы что-то забудете, но таблицы нужно будет создать по максимуму качественно, чтобы четко обрисовалась внутренняя структура движка. Далее создайте набор классов, каждый из которых будет отвечать за определенную часть (класс по управлению пользователями, класс по работе с базами данных и т.д.). Помните, что один класс не должен выполнять задачи, характерные для другого. Для этого потребуется глобальный абстрактный класс для методов, применимых ко всем классам.
  • Разбейте шаблон на несколько составных частей и сохраните их в отдельных файлах с расширением .tpl. Для этого копируйте какую-либо отдельную часть, например, форму авторизации, и вставляете в отдельный .tpl-файл. Далее создайте класс, задача которого – работать с такими файлами-шаблонами и устанавливать вместо {элементов} соответствующие данные. Например, вместо {username} класс будет вставлять имя регистрируемого пользователя. Выведите все элементы на страницы сайта, применяя вышеописанный класс, тем самым, собирая страницы «по кирпичикам».
  • Разработайте дизайн сайта. Для этого нужно будет исправить файлы .tpl (оставив {элементы}), добавить файлы CSS и JavaScript. А вот функциональность сайта лучше не трогать уже, если вы, конечно, на предыдущих этапах все выполнили верно.
  • Обратите внимание Создание собственного движка сайта – дело очень трудоемкое и требует уйму времени. Возможно, вам стоит попрактиковаться на более простых вещах и ваши сайты ничего не потеряют от того, что будут созданы на уже существующих и используемых CMS. Во время создания собственной CMS пользуйтесь справочными материалами и регулярно консультируйтесь у специалистов. Лучше один раз спросить, чем потом все переделывать. Источники
    • Как создать собственную CMS
    • как создать свой сайт движок
    Как создать движок - версия для печати Оцените статью!

    imguru.ru

    О игровых движках! «На каком движке делать игру?» #1 / Блог Toytoy

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

    Начнем с того, что существует куча игровых движков и редакторов для создания собственных творений, но кол-во по-настоящему годных очень мало. Еще одна проблема заключается в том, что многие из них являются закрытыми для общего использования. Например движок Frostbite 3, да-да, тот самый движок на котором была сделана игра с крутейшей графикой на данный момент — Battlefield 4. Хотя возможно вы видите достойного конкурента батле по графике :).

    Так вот, что же делать если величайший в мире движок, на котором вы собирались делать свою игру оказался закрытым для простых смертных? Ведь вашей игре нужна такая же крутая графика и механика. И тут на помощь приходит не менее крутой движок, на котором можно творит ого-го какие вещи. Барабанная дробь… Unreal Engine 3!

    Это не просто очень крутой движок, это движок с собственным языком программирования — Unreal Script, который даже сложно назвать языком. Unreal Script можно считать просто инструментов для связи всех объектов в вашей игре, создания геймплея и т.д. Так же UDK имеет довольно простой функционал и набор инструментов непосредственно в самой программе. Рассказывать как пользоваться Unreal Development Kit или же UDK, я вам сейчас не буду. На рунете и так полно как обущающих видео, так и статей по этой проге. Вы наверно сейчас думаете — «Хм, никогда не слышал об этом движке. Какие же игры были на нем сделаны?». А современных игр на нем, которые стали очень популярными великое множество. Я думаю для примера можно привести Mass Effect 3. Да-да, эта игра была сделана на том самом движке). Графика в этой игре была очень даже приемлема. Возможно многие посчитают ее даже отличной. А может вы просто забыли как выглядит Mass Effect 3? Тогда вот вам скрин).

    Кроме Mass Effect 3 существует еще много известных игр на Unreal Engine. Возможно такие игры как: Dishonored, Borderlands 2, Thief, Outlast и Bioshoсk:Infinite вам о чем нибудь говорят?). И еще раз повторюсь что это не далеко не все игр сделанные на этом замечательном движке. Самой главной особенностью движка является его полная бесплатность. Однако если вы захотите продавать вашу игру за деньги, вам нужно будет приобрести лицензию у Epic Games. На этом я заканчиваю свое повествование о Unreal Engine и мы переходим к следующему движку.((СКАЧАТЬ UDK))

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

    Примерами игр Unity3d могут служить такие игры как: Slender (Не Arrival, а тот, где надо бегать средь низкокачественных деревьев и собирать записки), Survivers, 1916 Der Unbekannte Krieg(довольно годная игра кстати), Surivers: Viy, Plague Inc., Call of Duty: Strike Team, Among The Sleep и Knock-Knock. Это опять же не весь список популярных игра на данном движке. Но вынужден сказать, что большинство игр, сделанных неопытными инди-разработчиками, которые только осваивают редактор выглядят просто ужасно. Это вызвано тем, что большинство людей, наполненные желанием создать собственную игру, начинают эту делать именно с Unity3d. Возможно это хорошее начало, но увы, результат почти всегда печальный. Но! Хотел бы напомнить, что Unity3d является величайшим инструментом для создания игра на мобильные платформы — Android, iOS. И это все благодаря тому, что разработчики движка Unity3d внедрили функции компиляции проекта под Windows, Mac, Android, iOS и Linux! Это является очень важным достоинством движка. Для примера опять же приведу довольно популярную игрулю Temple Run 2. Возможно вы даже играли в Counter-Strike Portable созданный на данном движке.

    Я думаю многие из вас поняли, что Unity3d не очень подходит для вас если вы хотите достичь замечательной графики не особо напрягаясь. НО чтобы не навязывать вам стереотип о ужасном графоне в играх на Unity3d, приведу вам пример игры с графикой, которую можно сравнивать с Battlefield 4. И имя этой игры -Свет! Игра от русского разработчика, который сумел достичь в своей игре на Unity3d довольно годной графики. Думаю вам лень гуглить игру и смотреть скрины, по этому все будет тут :)((РУССКОЯЗЫЧНОЕ СООБЩЕСТВО UNTIY3d))((CКАЧАТЬ UNITY3d))

    Перейдем к последнему на сегодня движку — CryEngine. Это один самых популярных движков, созданных для разработки игр и помещенный во всеобщий доступ. На этом движке были сделанны любимые многими людьми игры серии Crysis. Crysis 1,2 и 3 — это все творения CryEngine! На данный момент актуальной версией движка является CryEngine 3. Разработчики движка — CryTech, предоставляют нам доступ к движку совершенно бесплатно, но опять же для распространения своей готовой игры за деньги и за коммерческое её использование вам нужно будет заплатить. Думаю много говорить о графических возможностях движка нету необходимости т.к большинство людей все же играли хоть в одну часть серии игр Crysis. Но скрин все же для примера кину.

    Движок просто ооочень легок в использовании. Вам совершенно не надо знать каких-либо языков программирования (ну по крайней мере на начальных стадиях разработки), все связи событий основаны на аутпутах и различных ивентах. Если кто-то хоть раз открывал редактор FarCry 3 или FarCry 2, то интерфейс CryEngine 3 будет ему более менее привычен и легок в использовании. Ну можно еще добавить, что по сравнению с Unity3d тут добиваться хорошей графики не надо, она и так есть и будет всегда ;). В следующей статье я расскажу о 2d движках и о их преимуществах.((СКАЧАТЬ CRYENGINE 3))

    И так, подведем некоторые итоги). Сегодня мы обсудили 3 актуальных игровых движка которые повседневно используются как начинающими, так и уже опытными разработчиками для создания шедевров. В случаем с Unity3d — «шедевров». Думаю за период прочтения этой статьи вы выбрали для себя оптимальный движок для разработки собственной игры. А если же вы не собирались разрабатывать игру и вам просто было интересно на чем делает игры настоящие тру инди-разрабы, то вы узнали, что хотели). В любом случае я надеюсь, что эта статья оказалась для вас интересной и познавательной! Пишите в комментариях, какой на по-вашему мнению самый лучший открытый игровой движок для разработки игр или же с каким движком работаете вы! Спасибо за прочтение статьи :)

    ВТОРОЙ ВЫПУСК УЖЕ НА САЙТЕ! — КЛИКНИ СЮДА, ЧТОБЫ ПЕРЕЙТИ КО ВТОРОМУ ВЫПУСКУ

    stopgame.ru

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

    Геймеры бывают разных типов, для кого-то фраза «Игровой Движок» означает лишь смутные образы в сознании и обрывки воспоминаний. А кто-то же наоборот вникает очень уж детально в их возможности, следит за тенденциями и разбирается какая игра на каком сделана за пару секунд. Мы же поговорим не о их возможностях, и то что с ними делают игровые компании, а их использование в домашних условиях для создания своих игрулек. Да, именно так, игровой движок это не только название вначале интро игры, они не какие-то элитные игрушки для развлечения многомиллионных корпораций. Они для всех! Но будьте осторожны, создание игр может стать полноценным увлечением, перерастающим в высокооплачиваемую работу.

    Что такое Игровой Движок?

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

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

    Опять же не будем вникать особо, а усвоим лишь для общего понимания. Языки программирования подобно языкам в реальности, на которых мы с Вами говорим, только они предназначены для общения человека с машиной. Непонятные строки аля символы на экранчиках в матрице переводятся в нечто подобное: «Компьютер, создай мне на уровне 1 несколько кирпичей, на них несколько шипов, проходя по которым персонаж «Вася Атаккер» будет получать урон». С той лишь разницей, что нужно учитывать на много больше нюансов и этих строк НА МНОГО больше. 

    Но не будем терять время. Рассмотрим на примере несколько движков, легких в основании, для создания игр на которых требуется совсем немного усидчивости и парочку видеоуроков. А главное их качество, и что они бесплатны. Не успеешь и глазом моргнуть, как персонаж начнёт прыгать и носиться по уровням, который мы же для него и создали! ВАЖНО! В статье мы будем говорить о простых и небольших играх, главное понимать, что простота не означает трешевость. Простые игры продаются на специальных аукционах и рынках за десятки а то и сотни тысячь долларов, речь пойдёт о Angry Birds, Super Meet Boy и им подобных, а не GTA 5, Lineage. Такой уровень достигается только трудом компаний в несколько десятков а то и сотен человек.  

    Unity 3D + PlayMaker

    Unity 3D полноценная такая програмулина, которая требует базовых знаний программирования, а их не так уж просто получить по парочке туториалов. На это может уйти не один месяц. Но есть такая прекрасная штука как PlayMaker которая упростила создание игр в разы. А именно, у нас добавляется специальная панелька, в которой есть набор инструментов «Камера, Анимации, Цвета, Освещение, Уровни, Эффекты» и всё в таком духе. А в каждом разделе мы выбираем, что нам нужно, добавляем на уровень, играемся с их настройками в специально созданных для этого окошках, нажимаем кнопку «Play» наслаждаемся происходящим.  Конечно игры созданные этом движке не будут «Убийцей World of Warcraft» да и про онлайн можно забыть, но создать бодренький платформер, или какой-нибудь Diablo подобный экшн с пострелушками, с видом сверху вполне так себе возможно. Можно даже замахнуться на подобие Dota и League of Legends, конечно всего с парочкой персонажей и несколькими механиками, но это будут НАШИ Персонажи и НАШИ Механики, а это дорого стоит. 

    Stencyl

    Игровой движок для простеньких игрулек на телефоны, планшеты да или для себя на PC по фану. Главное преимущество это написание кода через специальные кубики типа Lego. С такого рода программирования начинают в различных высших учебных заведениях для формирования логического процесса мышления, без заморочек по поводу написания тонны кода. Выбрали нужный нам «кусок пазла» перетащили его, выставили параметры, и вот наш персонаж уже бежит при нажатии клавиши которую мы указали, и это заняло всего несколько минут.  А посмотрев обучалку по движку наш персонаж уже бегает, прыгает, анимирован и взаимодействует с противниками. Чтоб такое создать без Движка чисто используя язык программирования, требуется уроков 20-30 по 15-20 минут чистого кода, у нас же это займёт минут 15 максимум час с перерывами на кофе и перекусами.  А далее всё ограниченно нашей фантазией и изучением возможностей «Пазлов». 

    Construct 2

    Удобный интерфейс смесь Word и Excel, с картинками. А главное создан по принципу «Что ты видишь, то и получаешь». Перетягиваем объекты, добавляем к ним поведение в пару кликов и смотрим, как наш уровень преобразуется в полноценный экшн, или пазл, или стратегию? Тут уж кто как пожелает.   Construct 2 хороший выбор как для начинающих, так и со временем увеличив качество проектов можно смело задумываться о создании полноценной игры и её продаже, все инструменты и возможности для этого есть.

    GameMaker: Studio 

    Если описать в двух словах «Быстрое Создание того, о чём мы думаем». Как и предыдущие движки GameMaker: Studio работает по принципу «Лёгок в освоении, а там и до создания полноценной игры несколько шагов осталось». Разобравшись с интерфейсом, перетягивая объекты, создавая тем самым уровень, добавив несколько элементов персонажу мы уже реально на пол пути к созданию чуть ли не первого своего коммерческого проекта. 

    AppGameKit

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

    Реальность и Ожидания

    Разработчики движков для так сказать «общественного» пользования будут рассказывать о том, насколько всё легко и просто без знания программирования. Но так ли это?  Нужно ли изучать язык программирования для создания игр? Да. Ответ однозначно да, без этого сделать что-то вменяемое не получиться. Но это условие для коммерческих проектов на продажу, которые мы будем выставлять на аукцион, создание которых занимаем не один месяц. Так же учитываем во внимание, что знание кода реально нужно только базовое, которое можно получить не выходя из дома по бесплатным обучалкам, либо же купить книгу, из которой нам понадобиться лишь первая её часть. Никакие курсы по пол года или году обучения и уж тем более высшее образование не требуется.  Начать же делать что-то своё, первый уровень, первый персонаж, первая стрельба, первая ловушка, это всё создавать действительно не сложно. Придётся немного набраться терпения, посмотреть несколько обучалок, а может даже и не один час провести за изучением основ программы, но рано или поздно все потраченные усилия трансформируются в какой-то экшн на экране без сомнения.

    Порог вхождения

    С каждым годом движки на подобии тех, которые мы вкратце затронули в этой статье реально переводят создание игр на новый уровень. Но только не в плане многообразия, супер крутости графики и прочих технических наворотов, а в возможности ЛЮБОМУ начать делать свою игру, увидев сразу же результаты. Начать создавать что-то своё становиться всё проще и проще. А главное для этого не нужны дополнительные навыки, доскональное владение программированием, математика, не важен возраст «Если Вы можете играть в игры, то можете их создавать.», не нужна целая команда разработчиков, не нужны большие вложение на покупку лицензий, знание английского языка и тому подобное. Нужно лишь поверить в себя и начать делать, высвобождая образы из воображения! 

    onlimegames.ru

    Создание игр - Что выбрать, с чего начать

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

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

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

    Типом движка будем считать: (рассматриваем типы относительно одного начинающего разработчика-любителя)

    2D - позволяет работать с двухмерной графикой, игры в двухмерном пространстве. Как правило, 2D игры делать легче хорошим художникам, т.к. 2D игры проще программировать. Необходимо умение работать с редакторами графики, создавать тайлсеты для блоковой постройки локаций. Рекомендуется работать с 2D движками начинающим разработчикам игр. Игры в 2D пространстве смотрятся сочно и, обычно, настолько, насколько разработчик хорошо и оригинально рисует. Категория 2D игр к концу 90-ых была вытеснена 3D играми из рынка "больших" игр, однако 2D лидирует на казуальном рынке, на мобильных и портативных платформах, в любительском игрострое и т.д. Многие жанры существуют в 2D и не нуждаются в 3D, т.к. 3D в них будет "вставным зубом" или атавизмом.

    3D - позволяет работать с трёхмерной графикой, играми в трёхмерном пространстве. Как правило, чтобы делать 3D игры, нужны навыки работы в 3D редакторах, умение моделировать трёхмерные объекты - 3D-модели. А также необходимо создавать текстуры для текстурирования 3D мира. 3D игры сложно программировать в силу их особенностей пространства. Начинающим разработчикам игр рекомендуется работать с 3D движками, только если они почти не требуют написания кода, имеют шаблоны и т.п. Игры в 3D пространстве смотрятся объёмно и, обычно, настолько, насколько разработчик хорошо моделирует мир и объекты, насколько хорошо рисует текстуры, программирует эффекты для них. Категория 3D игр в середине 90-ых стала набирать обороты, вытесняя 2D игры, однако 3D игры имеют недостатки - большинство игр в 3D смотрятся несимпатично, "сыро". 3D игры считаются высокотехнологичными, занимают лидирующие позиции на "большом" рынке игр большинства жанров. Многие жанры привязаны к 3D и не могут полноценно существовать в 2D.

    2D+3D - не ограниченное пространство, система позволяет работать как с двухмерным, так и с трёхмерным пространством. Во многих случаях можно комбинировать или совмещать 2D и 3D технологии. Например, персонажи в квесте могут быть трёхмерными, а пространство (фон) двухмерным за счёт вытянутой проекционной сетки. Как в Resident Evil, например.

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

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

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

    Вне учёта из-за расплывчатости Arcade (Аркада - затягивающие быстрые игры). Аркадной игрой может быть экшен, платформер, головоломка, стрелялка, гонка, драки и т.д. Аркадами являются: файтинг Mortal Kombat, платформеры Mario, Sonic, Crash Bandicoot, Contra и т.д.

    Action (Экшен - игры действия, стрелялки, шутеры): Contra, Doom Troopers - The Mutant Chronicles, Gods и т.д.

    3D Action (3D Экшен - игры действия, стрелялки, шутеры): Postal, Mafia, GTA, Serious Sam, Tomb Raider и т.д.

    3D FPS (Трёхмерный Шутер от первого лица - вид из глаз): DooM, Zero Tolerance, Wolfenstein 3D, Serious Sam, Postal, Bioshock, Quake, Half-Life и т.д.

    От третьего лица (действия со стрельбой от 3-го лица): The Godfather, GTA 3, Mafia, Shenmue и т.д.

    Simulator

    Спортивный симулятор, спортивные игры типа: FIFA, NHL, NBA. Сюда же входят и некоторые игры жанра Fighting - Wrestling (WWF Wrestlemania Arcade, Wrestle War, WWF RAW, WWF, WCW, ECW). Игры этого жанра могут быть аркадными и строгими. Skitchin' - симулятор катания на ролековых коньках, гонки. Paddle Fighter - аркадное подобие настольного хоккея (пинбол). Greatest Heavyweights of the Ring - бокс на ринге. Best of the Best - Championship Karate - чемпионат по карате. Aah! Harimanada - борьба "сумо". The Sims - симулятор жизни людей (Sim Live)

    Это, как правило, индивидуальные игры для которых нужен индивидуальный движок: футболу - футбольный, боевым искусствам - движок для создания игр драк (Fighting), менеджменту - движок экономической стратегии и т.д.

    Лётный симулятор, Симулятор техники (например, танка, поезда), Симулятор специалиста (например, менеджера, пожарного, врача, вора). Kolibri (32X), G-LOC Air Battle, Gadget Twins и т.д.

    Гоночный симулятор (иногда относится и к спортивным симуляторам), Авто симулятор (Гонки, Racing): Need For Speed, Test Drive, FlatOut. Игры этого жанра могут быть аркадными (например, со стрельбой как Rock n' Roll Racing, Vigilante 8, Twisted Metal) и строгими (например, как ToCA Race Driver).

    Crack Down - симулятор минёра, Infestation (симулятор лунного танка, а по сути - шутер с элементами гонки, стратегии, РПГ, леталки, как и Ex Machina: Меридиан 113).

    Платформеры: Sonic The Hedgehog, Boogerman, Comix Zone, Castlevania, Pitfall, The Lion King и т.д.

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

    Quest (квесты) Phantasmagoria, Syberia, Save Cracker, ШтЫрлиц, Петька и ВИЧ, ГЭГ, Ядерный титбит и т.д.

    Beat'Em Up (драки на прохождение, изометрические драки, бои один против всех) Battletoads and Double Dragon, Battletoads, Golden Axe, Runark, Onimusha (3D) и т.д.

    Fighting (файтинг, драки 1 на 1, единоборства): Yie Ar Kung-Fu, Mortal Kombat (Fatality, Фаталити), Street Fighter (Уличный боец), Fatal Fury, Art of Fighting, Eternal Champions, Samurai Spirits (Бои самураев), King of Fighters, Primal Rage (Бои динозавров-богов), Samurai Shodown, Strip Fighter (Бои голых девушек на PCE), Rise of the Robots (Бои роботов и киборгов), Brutal - Paws of Fury (Бои мультяшных животных), Ballz (Бойцы из шариков), Dragon - The Bruce Lee Story (Брюс Ли), Shaq Fu, Beast Wrestler (Бои чудовищ), Power Instinct, Mighty Morphin Power Rangers (Рейнджеры Силы), Deadly Moves, VR Troopers, Justice League Task Force (Бои супергероев), Karate Kid, Karateka, Weaponlord, World Heroes, Best of the best, Art of Fighter, TMNT, Kung Fu, Masters of Combat, Kick Boxing, Pit Fighter, Sangokushi, Garou: Mark of the Wolves, Killer Instinct (параллакс, силиконовая графика), Flying Dragon, Barbarian и др.

    3D Fighting: Virtua Fighter, Taken, Street Fighter, Bushido Blade и т.д.

    Logic, Puzzle (логические игры требуют от игрока мышления, реакции и стратегии): Tetris (Тетрис Алексея Пажитнова), Columns, Chess (шахматы), Shove It! - The Warehouse Game (Склад), Marble Madness, Side Pocket (Спортивный бильярд), Pac-Attack, The Lost Vikings (SMD/SNES), The Humans, Marsupilami (SMD), Baby's Day Out (SMD), Pocahontas (SMD), Blackthorne (32X) и мн.др.

    Horror Action (игры типа Resident Evil, Silent Hill). Такие игры по сути являются не жанром, а стилем, направлением, ибо ужастик можно сделать почти в любом чётком жанре: платформер, квест, РПГ и т.д.

    RPG (ролевые игры): Might of Magic, Заклятие, Diablo, Icewind Dale, Культ Королевства Ереси, Готика, Neverwinter Nights, Fallout и т.д. Ищите по тегам 3D RPG, 2D RPG, РПГ и т.д.

    jRPG (ролевые игры) Final Fantasy, Phantasy Star, The Legend of Zelda, Chrono Trigger и т.д.

    Strategy (стратегии бывают разные: экономические, глобальные, военные, сельскохозяйственные и пр.). Populous, Genghis Khan, Centurion - Defender of Rome, Mega Lo Mania (Tyrants - Fight Through Time), Power Monger, GemFire, King's Bounty, Star Control, Premier Manager (Менеджер футбольной команды), General Chaos, Syndicate, Warrior of Rome, Operation Europe - Path to Victory 1939-1945, P.T.O. Pacific Theater of Operations и др.

    Стратегия в реальном времени (RTS/3D RTS, РТС): Dune - The Battle for Arrakis, Command & Conquer, Warcraft, Age of Empires, Age of Mythology, Cannon Fodder, Herzog Zwei (экшен стратегия).

    Пошаговая стратегия, TBS (Turn Base Strategy) - обычно перенос настольных стратегических игр на компьютер: Worms, Risk, Super Battleship, Rampart и т.д. Сюда же можно отнести ролевые игры, типа Disciples, новую King's Bounty, Heroes of Might and Magic и т.д.

    Экономическая стратегия, Экономический симулятор. Theme Park, Aerobiz, Aerobiz Supersonic и т.д.

    Детские игры (для детей): The Magic School Bus, Richard Scarry's Busytown, Thomas the Tank Engine & Friends и т.д.

    Текстовые игры, Текстовый квест, Interactive fiction (IF)

    Схематичные игры

    Мультижанровые - жанр не ограничен, почти не ограничен или возможно много жанров (любой жанр) в одной игре с "рваным" геймплеем.

    Если вы ищите какой-нибудь очень специфический жанр, то постарайтесь его всё же отнести к какому-то более чёткому жанру, который наиболее близок к нему. Например, игра симулятор или аркада про паркур (персонаж бегает, прыгает по домам и прочим препятствиям) может быть платформером в 2D (Например, игра 1993 года на SMD - Dashin' Desperadoes, либо как Prince of Persia) или в 3D (Prince of Persia 3D, Mirrors Age).

    Также рекомендуем воспользоваться поиском по сайту, введя в строчку поиска нужный жанр или свойство движка (ЯП, ОС и т.д.), которое вам необходимо для разработки своей игры. Например, можно ввести как ключевое слово название игры, на которую будет похожа ваша, задуманная игра, например GTA, Fallout, Diablo. И поиск вам выдаст движки и конструкторы игр, про которые кто-нибудь из нашего сообщества упоминал как подходящие для создания подобных игр, либо они напрямую относятся к данной игре (совместимый, аналогичный или даже оригинальный движок упомянутой игры). Для поиска также очень полезен наш специализированный поисковик "GcUp Search" по сайтам разработчиков игр.

    Если вам нужно подобрать движок, конструктор игр или какую-нибудь среду для разработки своей игры с какими-то специальными или индивидуальными параметрами, если у вас есть какие-то критерии вашей игры, то в этом случае рекомендуется создать свою тему на нашем форуме в разделах "Поиск и выбор конструктора игр" или "Поиск и выбор движков". При этом рекомендуется ознакомиться с памяткой создания темы в разделе поиска и подбора движка, конструктора игр. Если вы создадите тему в соответствии с памяткой (если не в соответствии, то не будет результата + блокировка аккаунта за нарушение), то, будьте уверены, участники сообщества GcUp.ru посоветуют разные подходящие вам варианты.

    Создать тему по подбору конструктора игр (простой в освоении среды разработки с комплексом программ-редакторов)

    Создать тему по подбору игрового движка (для тех, кто знает язык программирования, либо готов изучать ЯП)

    У нас имеется рейтинг материалов. Рейтинг движков и конструкторов игр - TOP 51. Если вам нужно популярное решение или вы доверяете большинству, то можете довериться автоматическому рейтингу, места в котором занимают самые просматриваемые и скачиваемые нашими посетителями игровые движки, конструкторы игр и др.

    Помимо полноценных игровых движков, конструкторов игр, вам могут понадобиться отдельные составные, библиотеки: графические движки (2D движки, 3D движки), ЯП, AI (ИИ), Звуковые движки, физические движки, системы частиц и т.д. А также утилиты и софт: редактор графики (2D редактор, 3D редактор), тайловый редактор, редактор уровней, редактор скриптов, редактор звука и т.д.

    Таким образом, как вы уже поняли, всё относительно и условно. Поэтому вам нужно продумать свою идею, сопоставить всё, а затем уже подбирать средства для её осуществления и реализации. Удачи!

    Статус продукта:

  • Alpha - зачатки
  • Beta - начальная стадия
  • Productive/Stable - стабильный
  • Inactive - не активный

    Сеть/Networking System:

  • Client-Server
  • Peer-to-Peer
  • Master Server

    Звук и Видео:

  • 2D Sound
  • 3D Sound
  • Streaming Sound
  • OpenAL

    Физика/Physics:

  • Basic Physics/Основа
  • Collision Detection/Столкновения
  • Rigid Body/Твердое тело
  • Vehicle Physics/Транспорт

    Искусственный Интеллект/ИИ/AI:

  • Artificial Intelligence
  • Pathfinding | Decision Making | Finite State Machines | Scripted | Neural Networks

    Освещение/Lighting:

  • Per-vertex
  • Per-pixel
  • Volumetric
  • Lightmapping
  • Radiosity
  • Gloss maps
  • Anisotropic
  • BRDF

    Тени/Shadows:

  • Shadow Mapping
  • Projected planar
  • Shadow Volume

    Текстуры/Texturing:

  • Basic
  • Multi-texturing
  • Bumpmapping
  • Mipmapping
  • Volumetric
  • Projected
  • Procedural

    Шейдеры/Shaders:

  • Vertex
  • Pixel
  • High Level и соответственно языки их программирования: ASM, Cg, HLSL, GLSL и т.д.

    Рендер/Rendering:

  • Fixed-function
  • Stereo Rendering
  • Raytracing
  • Deferred Shading
  • Render-to-Texture
  • Voxel
  • Fonts
  • GUI

    Scene Management:

  • General
  • BSP
  • Portals
  • Octrees
  • Occlusion Culling
  • PVS
  • LOD

    Анимация/Animation:

  • Inverse Kinematics
  • Forward Kinematics
  • Keyframe Animation
  • Skeletal Animation
  • Morphing
  • Facial Animation
  • Animation Blending
  • Meshes
  • Mesh Loading
  • Skinning
  • Progressive
  • Tessellation
  • Deformation
  • Surfaces & Curves
  • Splines
  • Patches

    Special Effects:

  • Environment Mapping
  • Lens Flares
  • Billboarding
  • Particle System
  • Depth of Field
  • Motion Blur
  • Sky
  • Water
  • Fire
  • Explosion
  • Decals
  • Fog
  • Weather
  • Mirror

    Ландшафт/Terrain:

  • Rendering
  • CLOD
  • Splatting

    Вид в игре:

  • Сверху
  • От первого лица
  • От третьего лица
  • Сбоку

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

  • C/C++
  • Java
  • C#
  • D
  • Pascal/Delphi
  • BASIC
  • Ada
  • Fortran
  • Lisp
  • Perl
  • Python
  • LUA
  • Visual Basic
  • VB.NET
  • ActionScript
  • Javascript
  • Локальные скпиты
  • Визуальная система
  • Drag and drop
  • Без программирования и др.

    Тип распространения/Лицензия:

  • Коммерческие движки
  • Некоммерческие
  • Бесплатные, не требующие оплаты за использование
  • Платить за распространение
  • Платить с выгоды
  • GPL
  • Mozilla Public License
  • LGPL
  • GNU Lesser General Public License
  • Mozilla Public License

    Тип системы разработки:

  • Конструкторы игр
  • Конструктор 2D игр
  • Конструктор 3D игр
  • 2D движки
  • 3D движки
  • 2D+3D движки
  • Игровые движки
  • Графические движки
  • Физические движки
  • Анимационные движки
  • Звуковые движки

    Инструментарий/Tools/Editors:

  • В комплекте предоставляются инструменты в помощь разработчику, редакторы.
  • Браузерные/Web Player
  • С возможностью проигрывать игры на страницах web-сайтов.
  • Open Source/Sourcecodes/SDK
  • Полные библиотеки разработки игр с отрытым кодом. Открытый код.
  • Отечественные разработки
  • Проекты от отечественных, русскоязычных программистов.
  • Документированный
  • Documentation, имеется документация, пособия, уроки и т.д.
  • Прост в освоении
  • Простой в освоении, легкий для новичков, удобный.
  • Object-Oriented
  • Объектно-ориентированная технология.
  • Plug-in архитектура
  • Подключаемая система как плагин.
  • Сетевая поддержка
  • Поддержка сети, мультиплеера

    По типу графики:

  • 2D - Двухмерная графика и пространство.
  • 3D - Трёхмерная графика и пространство.
  • 2D+3D - Объединение 2D и 3D технологий или работа с обоими на выбор.

    Графическая API:

  • OpenGL
  • DirectX
  • Glide
  • Software и др.

    Платформа/Операционные системы:

  • Microsoft Windows
  • GNU/Linux
  • Apple Mac OS X/MacOS
  • Windows Mobile/Pocket PC
  • Unix-подобные
  • Solaris
  • SunOS
  • FreeBSD
  • Irix
  • OS/2
  • Amiga
  • BeOS
  • DOS/MS-DOS/Клоны
  • Браузеры/Web/Browser-based:
  • IE, Firefox, Opera, Safari и пр.
  • Flash
  • XNA

    Платформа/Машины:

  • PC/ПК/Персональный компьютер
  • КПК/Карманный компьютер
  • Коммуникаторы, КПК Windows Mobile, Symbian смартфоны.
  • Наладонный компьютер PDA
  • Mobile/Мобильный телефон
  • Apple iPhone/iPod
  • Sega MegaDrive/Genesis/SMD
  • GameBoy Advance/GBA
  • Nintendo/Famicom/Dendy/NES
  • Nintendo GameCube
  • Nintendo Wii
  • Nintendo DS/NDS/iDS
  • Nokia N-Gage
  • PlayStation Portable/PSP
  • Sony PlayStation/PSOne/PSX
  • Sony PlayStation 2/PS2
  • Sony PlayStation 3/PS3
  • X-Box
  • X-Box 360
  • Автоматы игровые аркадные
  • Другие портативные консоли
  • Другие приставки и консоли

    По жанру:

  • Мультижанровые/Universal Возможность разрабатывать игры для нескольких жанров или вовсе без ограничений. Жанр не ограничен, почти не ограничен или возможно много жанров.
  • Action/Arcade
  • 3D FPS
  • Fighting
  • RPG/CRPG
  • jRPG
  • Лётный симулятор
  • Симулятор техники
  • Racing
  • Гоночный симулятор, Авто симулятор, Гонки
  • Платформер
  • Logic/Puzzle
  • Логические игры, Головоломки
  • Adventure Quest от 3-его лица
  • Adventure Quest от 1-ого лица
  • Приключенческие Квесты с решением задач, сбором предметов и т.д.
  • Strategy
  • Экономическая стратегия
  • Экономический симулятор, торговля, менеджмент и т.д.
  • Глобальная стратегия
  • Военная стратегия
  • RTS - Стратегия в реальном времени
  • TBS - Turn Base Strategy - Пошаговая стратегия.
  • Текстовые игры/IF - Interactive Fiction, Текстовые квесты, Интерактивные книги
  • Схематичные игры
  • Детские игры
  • Ретро стиль
  • Классический стиль

    Типа какой игры:

  • Another World
  • BioShock
  • Castlevania
  • Chrono Trigger
  • Civilization
  • Dizzy
  • Diablo
  • DOOM
  • Dune 2
  • Fallout 1-2
  • Final Fantasy
  • Gothic 1-2
  • GTA 1-2
  • Grand Theft Auto III
  • Heroes of Might and Magic
  • Half-Life
  • Might and Magic
  • Metal Gear Solid
  • Mortal Kombat
  • Need for Speed
  • Neverwinter Nights
  • Oddworld
  • Onimusha
  • Phantasy Star
  • Prince of Persia
  • Resident Evil
  • Quake
  • StarCraft
  • Shenmue
  • Syberia
  • Tetris/Тетрис
  • The Elder Scrolls III
  • The Sims
  • The Legend of Zelda
  • WarCraft 2-3
  • Wolfenstein 3D
  • Worms
  • Петька и Вич
  • gcup.ru