0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Содержание

11 доступных движков для тех, кто хочет начать создавать свои игры

Инструменты и ресурсы для разработки игр становятся все более доступными для всех, даже если у вас нет опыта программирования. Часто эти инструменты также доступны бесплатно. Вот список из 11 игровых движков / редакторов. Он облегчит задачу тем, кто хочет начать создавать игры.

Фото: instabug.com

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

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

CRYENGINE

Коммерческий кроссплатформенный 3D-движок, разработанный Crytek. Он использовался для таких игр, как Prey (2017) и Everybody’s Gone to the Rapture.

Статья в тему:  Почему тормозят флеш игры онлайн

Фото: store.steampowered.com

Предназначен для разработки: 3D-игр.

Платформы: Windows.

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

Стоимость: Бесплатный, пока ваш проект не заработает более 5000 долларов в год, впоследствии взимается 5-процентный сбор.

Обучение: CryEngine имеет несколько бесплатных обучающих видео, которые охватывают все: от установки программы и пошаговой инструкции по созданию простой игры, похожей на Flappy Bird, до более сложных вещей, таких как сборка настраиваемой версии движка.

GAMEMAKER

Кроссплатформенный коммерческий движок для 2D-игр, разработанный YoYo Games. Он использовался для таких игр, как Undertale, Hyper Light Drifter и Minit.

Фото: kanobu.ru

Для разработки: 2D-игр.

Платформы: Windows или macOS.

Языки программирования: Использует собственный язык сценариев, называемый GameMaker Language (GML), и язык визуальных сценариев, называемый Drag and Drop (DnD).

Стоимость: Бесплатная пробная версия на 30 дней, потом нужно купить лицензию за $39 в год.

Обучение: Несколько бесплатных тестовых и видеоуроков, которые охватывают основы. Есть объемные уроки про то, как создавать конкретные жанры игр, такие как пошаговые RPG, Tower Defense и фермы. Есть также ссылки на некоторые внешние сайты и сообщества, в которых есть руководства, помогающие людям начать работу с этой программой.

GDEVELOP

2D-движок с открытым исходным кодом, разработанный для удобства использования.

Фото: gdevelop-app.com

Для разработки: 2D-игр.

Платформы: Windows, macOS, Linux или браузерная версия.

Языки программирования: Нет, использует интерфейс Drag-and-drop.

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

Обучение: В вики GDevelop доступно множество руководств и учебных пособий, а также более 80 тестовых файлов о том, как создавать игры определенных жанров и вводить особые игровые функции.

GODOT

Игровой движок с открытым исходным кодом для создания 2D-и 3D-игр. Отличается простотой в освоении и подходит для совместной работы целой команды.

Фото: github.com

Для разработки: 2D- и 3D-игр.

Платформы: Windows, macOS и Linux.

Языки программирования: GDScript, C# и визуальный скриптинг.

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

Обучение: У Godot есть обширное пошаговое руководство по использованию их редактора, а также бесплатные текстовые руководства, охватывающие более конкретные аспекты, такие как реализация виртуальной реальности, использование скелетов для 2D-анимации и создание процедурной геометрии.

LUMBERYARD

Коммерческий кроссплатформенный движок для 3D-игр, разработанный Amazon. Он основан на более старой версии CryEngine. Он был использован для таких игр, как Star Citizen и The Grand Tour Game.

Статья в тему:  Как зарегистрироваться в онлайн игре

Фото: robertsspaceindustries.com

Для разработки: 3D-игр с интеграцией Twitch и многопользовательских функций.

Платформы: Windows.

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

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

Обучение: Существует бесплатная серия обучающих видеороликов и видео-бесед о более специфических особенностях движка.

REN’PY

Игровой движок для создания визуальных новелл с открытым исходным кодом. Он использовался для таких игр, как Doki Doki Literature Club, Butterfly Soup и One Night, Hot Springs.

Фото: doki-doki-literature-club.fandom.com

Для разработки: Визуальных новелл.

Платформы: Windows, macOS и Linux.

Языки программирования: Язык скриптов Ren’Py и Python.

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

Обучение: Существует бесплатный текстовый гайд, как сделать простую игру в Ren’Py, и дополнительные текстовые руководства для более специфической настройки вашего проекта.

RPG MAKER

Коммерческий игровой движок, разработанный Degica. Он разработан специально для создания классических игр в стиле JRPG без необходимости уметь программировать. Он был использован для таких игр, как Corpse Party и Rakuen.

Фото: medium.com

Для разработки: Ролевых 2D-игр.

Платформы: Windows и macOS.

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

Стоимость: $79.99.

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

TWINE

Редактор с открытым исходным кодом для интерактивных текстовых историй. Он был использован для таких игр, как Lionkiller и The Uncle Who Works For Nintendo.

Для разработки: Интерактивных текстовых квестов.

Платформы: Windows, macOS или браузерная версия.

Языки программирования: Собственный язык, но также поддерживает HTML, Javascript, и CSS.

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

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

UNITY

Кроссплатформенный коммерческий игровой движок, разработанный Unity Technologies. Он использовался для таких игр, как Untitled Goose Game, Ori and Will of the Wisps и Hollow Knight.

Фото: epicgames.com

Для разработки: 2D- и 3D-игр.

Платформы: Windows, macOS и Linux.

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

Стоимость: Бесплатно для личного пользования предоставляется студентам и любителям, а также небольшим компаниям, которые зарабатывают менее 100 000 долларов в год. Помимо этого, существуют годовые планы, начинающиеся с 399 долларов в год или 40 долларов в месяц.

Статья в тему:  Как продать вещи в доте которые нельзя продавать

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

UNREAL

Кроссплатформенный коммерческий игровой движок, разработанный Epic Games. Он использовался для таких игр, как Fortnite, ремейка Final Fantasy VII и Octopath Traveller.

Фото: playground.ru

Для разработки: 3D-игр.

Платформы: Windows.

Языки программирования: C++ и Blueprints Visual Scripting.

Стоимость: Бесплатно, но с 5-процентным сбором от общего дохода игры, если она принесет более 3000 долларов в квартал.

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

VN MAKER

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

Фото: gamingtrend.com

Для разработки: Визуальных новелл.

Платформы: Windows, macOS и Linux.

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

Стоимость: $69.99.

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

Как программировать игры: языки, движки и все, что нужно знать начинающему разработчику

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

Главное — в самом начале узнать, что нас ждёт, чтобы потом не свернуть на полпути, пройти все этапы и выпустить релиз. Подробно всем тонкостям, навыкам и хитростям мы обучаем на курсе «Профессия разработчик игр на Unity». Здесь же рассмотрим первые шаги, которые ждут разработчика.

С чего начать разработку игры

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

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

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

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

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

Подойдут любые, от Python и C до Pascal и Java. От выбора зависит то, сколько времени уйдёт на игру и для какой платформы будет релиз. Также язык влияет на производительность.

На C++, например, пишут для любой платформы, а вот PHP или JavaScript лучше подходят для браузерных игр. Если же вы используете один из движков, то лучше вдобавок изучать C# — на нём прописывают скрипты. Главное — не недооценивать языки. Движок Unity дружит и с JavaScript, а MineCraft был написан на Java.

Движки для создания игр

Среди современных выделим:

Crysis, Far Cry, Sniper II: Ghost Warrior.

Gears of War 4, Dead Pool, Mortal Kombat X, Tekken 7

Outlast, Assassin’s Creed: Identity, Temple Run, Deus Ex: The Fall.

Большой популярностью пользуется Unity, он рассчитан как на 2D-, так и на 3D-игры. Он подходит под разные платформы и языки. На нём создается большинство мобильных и инди-игр. Он бесплатный, но если вы зарабатываете на своих играх больше 100 тысяч долларов в год, то придётся делиться ими с разработчиками Unity.

Как строится игровой код

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

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

Физика

Физика — это то, как мир игры реагирует на действия игрока или объектов внутри мира. Вот какие могут быть физические действия:

  • ходьба;
  • езда;
  • прыжки;
  • удары;
  • выстрелы;
  • падение предметов и так далее.
Статья в тему:  Где посмотреть голодные игры онлайн

Если пишете сами, то для обычного прыжка придется:

  • проверить, находится ли игрок на земле;
  • менять координату Y, чтобы игрок поднимался вверх;
  • закончить подъём через какое-то время;
  • начинать и продолжать падение до тех пор, пока под ногами игрока не окажется земля.

Не говоря уже о том, что нужно работать над анимацией всего этого.

В движках уже прописана физика, и нужно лишь подогнать её под свои нужды. Для примера:

  1. Вы поместили объект в рабочую область Unity.
  2. Указали, что для него нужно использовать физику.
  3. При запуске игры объект упадёт.

И для этого не придётся писать код вообще — всё уже предусмотрено.

Механика

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

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

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

  • если добавить стрельбу, то будет экшн;
  • если игрок будет безоружен, — стелс;
  • если ещё и замки нужно взламывать, то это уже головоломка или пазл.

Будучи программистом, придётся уделять много времени механике.

Графика

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

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

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

Статья в тему:  А ты думал что твоя жена в онлайн игре шики

Если брать 3D-модель, то используется скелетная анимация — модель как бы нанизывается на специальный каркас (скелет) с подвижными частями. Движение этих частей прописывается в коде.

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

Создаётся анимация так: прописываются точки координат или захватываются движения реального актера.

Первый способ сложный, но дешёвый, потому что от программиста требуется только прописать движения — сдвинуть точку A1 на координаты (50,240).

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

Баланс

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

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

Искусственный интеллект

Если геймплей предусматривает взаимодействие с NPC, то им нужно прописать модели поведения: реакцию на действия игрока, агрессивность, возможность вести диалоги или торговать.

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

На какие платформы ориентироваться

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

  1. Персональные компьютеры.
  2. Приставки.
  3. Мобильные устройства.
  4. Браузер.

У каждой из этих платформ своя аудитория с вполне конкретными предпочтениями. На мобильных устройствах предпочитают головоломки (2048, 94%, Cut the Rope), аркады (Subway Surf, Temple Run, Angry Birds) и казуалы (Talking Cat Tom, Kitty Kate Baby Care, Hair Stylist Fashion Salon).

Статья в тему:  Что такое адк в доте

На компьютерах играют в MMORPG (Lineage II, World of Warcraft, Skyrim) или шутеры (Battlefield, Call of Duty, Counter-Strike).

Приставки подходят для гонок (Need for Speed, Blur, Burnout Paradise), приключенческих игр (Assassin’s Creed, Portal, The Walking Dead) и так далее.

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

Конечно, можно сделать и головоломку для PS4, и гонку для браузера — никто никого не ограничивает.

Заключение

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

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

Профессия
Разработчик игр на Unity

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

  • Первые полгода учёбы — без оплаты.
  • Неограниченный доступ к материалам курса.
  • Обучение на реальных задачах.
  • Карьерные консультации и помощь в трудоустройстве.

Пишем собственный игровой движок с помощью C++

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

В этом проекте мы создадим собственный игровой движок на C++. Движок будет очень простым, но готовым к расширению возможностей. Конечная игра с использованием этого кода тоже крайне проста: наш персонаж сможет перемещаться влево и право, а из графики – только бэкграунд и фигурка персонажа.

Подготовка Visual Studio

Создадим новый проект в Visual Studio. Обратите внимание, что проект требует библиотеку SFML, поэтому если вы не настраивали окружение для нее, прочтите сначала небольшое руководство по настройке.

  1. Откройте Visual Studio и выберите File | New Project. В левом меню отметьте язык C++ и шаблон HelloSFML. Назовите проект Simple Game Engine.
  2. Выберите правой кнопкой мыши файл HelloSFML.cpp в окне Solution Explorer (под Source Files), далее – Rename и назовите файл Main. Это подходящее имя, так как файл будет содержать основную функцию.
  3. Откройте Main.cpp, удалите все содержимое файла.
  4. Переместите файл библиотеки SFML.dll из каталога Диск:SFMLbin в Диск:Visual Studio StuffProjectsSimple Game EngineSimple Game Engine. Если названия в путях отличаются, вероятно, вы сделали отличную от руководства настройку.
Статья в тему:  Что такое мисклик в доте 2

Теперь можно приступить к коду. Исходный код и дополнительные ресурсы будут доступны на этой странице.

Проектируем собственный игровой движок

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

Класс персонажа

Bob – простой класс для представления фигурки персонажа, управляемой игроком. Код класса будет легко расширяться, а что самое главное – его несложно переписать под любой другой игровой объект, который вы захотите добавить. Для этого потребуется заменить текстуру и описать поведение нового объекта в методе update().

Займемся заголовками класса. Выберите правой кнопкой Header Files в Solution Explorer и нажмите Add | New Item. В окне Add New Item выберите Header File (.h), затем в поле Name введите Bob. Нажмите Add и добавьте код заголовка класса:

Здесь мы объявили объекты типа Texture и Sprite. Дальше мы свяжем эти объекты и любое действие на экране с объектом Sprite будет сопровождаться изображением Боба:

Кликните правой кнопкой, чтобы сохранить

Bob.cpp

Теперь приступим к описанию методов.

Выберите правой кнопкой мыши Source Files в Solution Explorer и откройте Add | New Item. В окне Add New Item кликните по C++ File (.cpp), а в поле Name укажите Bob.cpp. Теперь добавьте в файл код:

В конструкторе мы установили значение переменной m_Speed на 400. Это значит, что Боб пересечет экран шириной в 1920 пикселей за 5 секунд. Также мы загрузили файл Bob.png в Texture и связали его с объектом Sprite. В переменных m_Position.x и m_Position.y установлено начальное положение Боба.

Функция update обрабатывает два If. Первое If проверяет, нажата ли правая кнопка (m_RightPressed), а второе следит за левой (m_LeftPressed). В каждом If скорость (m_Speed) умножается на elapsedTime. Переменная elapsedTime рассчитывается в функции Start движка (класс Engine). Им мы и займемся далее.

Пишем класс Engine

Класс Engine будет контролировать все остальное.

Статья в тему:  От чего зависит фпс в онлайн играх

Engine.h

Добавим заголовок. Откройте окно Add New Item (так же, как для класса Bob), выберите Header File (.h) и в поле Name введите Engine.h. Добавьте в файл следующий код:

Класс библиотеки SFML, RenderWIndow, используется для рендера всего, что есть на экране. Переменные Sprite и Texture нужны для создания фона. Также в заголовке мы создали экземпляр класса Bob.

Engine.cpp

В Engine.cpp мы опишем конструктор и функцию start. Создайте файл класса так же, как для Bob.cpp, и добавьте в него код:

Функция конструктора получает разрешение экрана и разворачивает игру на весь экран с помощью m_Window.create. В конструкторе же загружается Texture и связывается с объектом Sprite.

Пример фонового изображения

Скачайте пример изображения или используйте любое другое на свое усмотрение. Переименуйте файл в background.jpg и поместите в каталог Simple Game Engine/Simple Game Engine.

Игровой цикл

Следующие три функции будут описаны каждая в своем файле, но при этом они должны быть частью Engine.h. Поэтому в начале каждого файла укажем директиву #include «Engine.h», так что Visual Studio будет знать, что мы делаем.

Обрабатываем пользовательский ввод

Создайте файл Input.cpp и добавьте в него код:

Функция input обрабатывает нажатия клавиш через константу Keyboard::isKeyPressed, предоставляемую SFML. При нажатии Escape m_Window будет закрыто. Для клавиш A и D вызывается соответствующая функция движения.

Обновляем игровые объекты

Теперь опишем простую функцию update. Каждый игровой объект будет иметь собственную функцию update.

Создайте файл Update.cpp и добавьте в него код:

Поскольку у нас пока только один объект «Боб», мы вызываем только функцию m_Bob.update.

Отрисовка сцены

Это последняя функция класса Engine. Создайте файл Draw.cpp и добавьте в него код:

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

Запускаем движок в main()

Теперь вернемся к нашему Main.cpp. Время добавить в него немного кода:

Несколько слов в конце

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

Статья в тему:  Где посмотреть голодные игры онлайн

Разработка игрового движка

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

Выбор движка по бэкграунду знаний:

  • Cocos2Dx, Unreal Engine — C++
  • LOVE, Corona SDK, Defold — Lua
  • Unity3D — C#
  • SpriteKit — Swift ObjectiveC
  • AndEngine, LibGDX — Java

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

Вводная часть закончена, теперь можно и представиться. Меня зовут Надтока Антон, я мобильный разработчик для iOS и Android. В свободное от работы время я пишу мобильный движок для игр. Будучи студентом как и многие другие (думаю были и такие) хотел создать свой Counter Strike. Еще был OpenGL 1.1 и в то время я реализовывал небольшой движок для Windows, который позволял отображать SkyBox, оружие, уровень и эффект стрельбы. Чтобы скрыть недостатки графики использовался туман. Позже работая по разным направлениям сконцентрировался на мобильной разработке в начале 2012. Удалось пощупать и поработать с AndEngine, Cocos2Dx и Unity.

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

Причины написать сейчас свой движок:

  • Узнать как все работает под капотом
  • Полный контроль над кодом и поведением движка
  • Компактный размер финального результата
  • Добавление новых функций в конкретные сроки
  • Получить кайф от разработки
Статья в тему:  Как зарегистрироваться в онлайн игре

Посколько я начал работать с С++ с 2005 года выбор языка отпал сам собой. За основу был взят стандарт C++11.

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

Спасибо за внимание.

Мои любимые статьи про то как начну что-то делать 😉 можно открывать тотализатор, на сколько статей без воды хватит автора 😉

Обычно, не более 3-х.

Ставка принята, я пожалуй поставлю на то, что эта статья будет последняя 😀

Donovan — 1 статья
Andrey Apanasik — 3 статьи ред.

Ставка не сыграла

Разработка игрового движка

Не нужна.

Поясню.
Узнать как все работает под капотом

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

Ну, оное так для многих решений. Особенно если они опенсорсные. А дальше всё упирается в архитектуру. Как ты собрался это обходить?
Компактный размер финального результата

И кому это нужно? Любые итоговые ресурсы проработанного персонажа по весу перевалят размер бинарника с либами на порядок (если, конечно, ты не решил генерить все ресурсы на месте). Наоборот, ужатые ресурсы сейчас не в моде в угоду быстрой загрузке на устройстве. А лишний гиг — скачают, не обломятся. То же и с местом хранения.
Добавление новых функций в конкретные сроки

Свой игровой движок и разрабатывается для реализации каких-то функций, которые невозможно или нецелесообразно реализовывать на других. В обратную сторону, ради каких-то вероятных бенефитов — это не просто не рационально, но и бессмысленно. Потому что перед каждой новой фичей «за рамками» тебя ждёт долгий процесс рефакторинга (и конкретные сроки уже сразу растягиваются). Кстати, а тесты ты пишешь?
Получить кайф от разработки

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

Движок не open source. Каждая архитектура — своя среда. Сейчас я запускаю на iOS, Android и Windows, Linux, Mac. Кроме ресурсов игры еще есть разные библиотеки, которые
используются другими движками. Тот же Mono .NET. Идеи на движок не только в игровом плане, но и в обучающем. Работа со звуком, видео.
Тесты будут в планах. В качестве сборщика CMake, там же будут тесты — когда поделю на модули.

Статья в тему:  Почему тормозят флеш игры онлайн

Не опен сорс? А нафига тогда ты о нём пишешь? Кому он нужен такой?

Описать детали разработки, выслушать мнение других. Дальше опишу о разных аспектах разработки. Будет взаимовыгодная польза для тех кто также работает над своим движком.

Почему бы не перекопать исходники условного Godot или UE, или чего попроще типа Love, если чуть пониже уровнем то условный SDL, при этом реализуя какие-то фишечки рендеринга/оптимизации/работы с медиа/физики/контроллеров/чегоугодно в качестве отдельных либ/кусков кода/примеров, чтобы не терять время? Человек сверху хорошо написал про пруф оф концепты.

Ну т.е. не похоже что у тебя есть хоть какой-то план. Какая-то минимальная спека хотя бы в голове, видение MVP движка, кроме как хочу на C++ 11, чтобы было кроссплатформенно, а еще потом будут тесты, а вообще, чтобы сделать игру где можно грабить корованы.

Узнать как все работает под капотом

Как работает под капотом что? С какого момента хочется лезть под капот? Начнешь писать свой OpenGL или нет? Ну чтобы уже на 100% быть уверенным, что все контролируешь и понимаешь.
Полный контроль над кодом и поведением движка

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

Компактный размер игры? В мире где ресурсы игры сожрут сотни мегабайт (и до бесконечности)?
Добавление новых функций в конкретные сроки

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

Статья в тему:  Что такое мисклик в доте 2

Это дело хорошее. ред.

Game Engine своими руками #1

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

Если ты решил написать игровой движок, то значит ты уже хоть что-то знаешь, а как минимум неплохо владеешь тем или иным языком программирования. Если ты вынес со школьной скамьи основы Бейсика, то тебе, конечно, выбирать не приходится, но я, все же, не советовал бы тебе браться за игру, пока ты не овладеешь более совершенным инструментом. Если ты пишешь только на Delphi, и пишешь довольно долго, то у тебя есть хоть какие-то шансы выжить, но в идеале желательно овладеть языком Си, все-таки все солидные игры пишутся сегодня именно на нем. Лучше всего для нашего дела подойдет Visual C++ от Microsoft, желательно шестой версии, хотя это и не принципиально. Если ты долгое время общался с другими компиляторами, например от Borland, то тебе, конечно, имеет смысл оставаться в родной среде.

Прежде, чем приступать к бурным дискуссиям, я хочу убедиться, что твои представления о понятии «игровой движок» совпадают с моими. И так, игровой движок или game engine — это небольшая ОС в рамках игры, которая предоставляет набор базовых функций с помощью, которых игра устанавливает интерфейс с пользователем т.е. движком называется весь тот код, который отвечает за вывод графики, воспроизведение звуков, работу с сетью и т.д. , и который не касается правил самой игры. Надеюсь, с этим все ясно.

Статья в тему:  Что лучше качать в world of warships

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

Специализация движка

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

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

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

При создании 3D движка для шутеров вроде Анрыла и Квейка, очевидно, в первую очередь стоит позаботиться о рендере, т.е. той части движка, которая будет отвечать за прорисовку (рендеринг) окружающего мира. Ты должен заранее определиться с системой, которую ты планируешь использовать. Будут ли это BSP-деревья (Quake), портальный движок (Unreal) или quad-деревья (Tribes). Особо ярые энтузиасты могут заняться строганием воксельного движка.

Статья в тему:  А ты думал что твоя жена в онлайн игре шики

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

Поддержка модов

Уверен, что про моды ты слышал не раз. Может быть, даже сам принял участие в их создании и уж точно попробовал клепать уровни для любимой Кваки или Халф-лайфа. Сейчас инет просто расходится по швам от обилия модов для игрушек, есть люди, которые до сих пор пишут моды для первоквака. С помощью мода первоначальную игру можно просто-таки вывернуть наизнанку, поменять не только внешний вид, но и
кардинально перевернуть гейм-плей, а можно просто слегка изменить правила, например замедлить практически до нуля скорость снарядов от BFG и так вот резвиться. Всей этой романтики
не было бы вообще, если бы умные программеры, такие как Джон Кармак, не предусмотрели бы поддержку этих самых модов в своих движках.

Ты можешь спросить, почему большинство игр все же не поддерживают моды если это так круто? Ответить однозначно на этот вопрос довольно сложно, но можно привести несколько основополагающих доводов. Во-первых, поддержка модов дело довольно сложное, а порой совсем и не нужное, представь себе мод «Rocket Arena» для Сапера. Во-вторых, поддержка модов может нанести, не очевидные сначала, как моральные, так и финансовые убытки разработчику, если какой-нибудь Вася из Таганрога выложит в сеть мод, форматирующий винт при каждом запуске игры. Поэтому-то Кармак и пишет собственные компиляторы, чтобы еще на этапе создания мода присечь попытки деструктивной деятельности.

Существует вариант, когда движок поддерживает не моды, а внешние ресурсы в виде самодельных карт к игре, моделек, текстурок, звуков и т.п. Но в этом случае стоит серьезно задуматься о написании собственных утилит или о поддержке существующих бесплатных редакторов, потому что не у всех юзеров на компе стоят лицензионные 3D Studio MAX и Photoshop (ха-ха).

ОК, ты окончательно и бесповоротно решил писать поддержку модов, тогда давай обсудим как это все дело можно обустроить. Если ты хочешь разрешить пользователям модифицировать только ресурсы, то тебе не о чем беспокоиться, всего лишь нужно предусмотреть чтение небольшого файлика из каталога с модом, в котором будет сказано, как сам мод называется и какую карту нужно запустить первой, этого достаточно (в Half-Life этим файликом был ‘liblist.gam’). Если же ты хочешь разрешить программирование мода, то это более серьезно. Нужно подумать о безопасном месте в котором код мода будет храниться. Это не может быть самостоятельное приложение, так как моду необходимо, чтобы была запущена сама игра. Самым популярным решением является использование DLL (иногда разработчики меняют у файла расширение, чтобы смутить окружающих). DLL (Dynamic-Link Library) или динамические библиотеки это файлы в которых хранится набор некоторых функций, которые затем могут быть вызваны из любой другой программы при условии, что программа знает имя функций содержащихся в DLL. Когда моды организуются в виде динамических библиотек, заранее оговаривается какие функции по умолчанию должны содержаться в коде мода, а затем движок просто вызывает эти функции, не задумываясь над тем с каким именно модом он работает и где расположены функции, которые он вызывает. Причем код самой «родной» игры также можно выполнить в виде мода.

Статья в тему:  Что такое адк в доте

Сетевые игры

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

Наиболее распространенной является модель «Клиент-Сервер», когда один компьютер назначается сервером и начинает игру, а другие машины-клиенты потом к нему коннектятся, т.е. подсоеденяются. Сервер периодически опрашивает клиентов на предмет новых совершенных игроками действий, собирает инфу обрабатывает и раздает обратно, чтобы клиенты могли узнать последние новости друг о друге. На сервере хранится вся информация о положении и действиях игроков и других важных объектов. Если связь с клиентом была потеряна, то сервер либо делает его недоступным для других клиентов, либо просто оставляет его на растерзание врагам. Всякая мелочь типа разлетающихся гильз, облачков дыма от выстрелов, пятен крови и т.п. дело сугубо личное для каждого клиента и поэтому обрабатывается именно на клиентской машине. Сервер просто сообщает клиентам, что, например, игрока номер 2, только что офигенно разнесло на куски взрывом гранаты, а клиент уж сам решает рисовать эти куски или нет,
в зависимости от игровых настроек. Само собой игрок сидящий на сервере получает некоторые преимущества, так как вся информации крутится на его компе, особенно это заметно при плохом коннекте у клиентов. Что самое интересное, при такой организации сетевых взаимоотношений в движке можно не писать отдельно код для сингл-плейера и код для мултиплейера, просто при одиночной игре одна и та же машина выполняет роль как сервера, так и клиента. Все очень просто

Статья в тему:  Этанол как антидот этиленгликоля вводят

Ну что, надеюсь ты понял, что написание движка дело довольно ответственное и это тебе не под «Ya mama» зажигать. Но я верю, что у тебя все получится, а если ты еще не почувствовал силы в своих руках, тогда не расстраивайся, мы сделаем все что сможем, чтобы помочь тебе в твоих девелоперских начинаниях. Главное не останавливайся перед трудностями и у тебя все получится!

Как создать собственную игру-бродилку онлайн

Бродилка — жанр приключенческих компьютерных игр, герой которых перемещается по неизвестной местности для нахождения какого-либо объекта. Пожалуй, бродилки — это вечнозеленый жанр со времен Acornsoft Labyrinth (и тому подобного). На любом игровом портале или том же Google Play сотни такого рода игр. Учитывая популярность и востребованность жанра, у многих возникает вопрос — как создать свою игру.

Существуют десятки движков разного уровня сложности (Unity, Unreal Engine и так далее). В этой статье продемонстрирую функционал игрового движка Gamefroot с базовым набором возможностей . Его п люсом является возможность «клепать» игры прямо в браузере без установки софта на диск. Результат можно проверить там же, запустив предпросмотр.

Основные инструменты Gamefroot

После создания аккаунта вам доступна контрольная панель (Dashboard), где вы можете создать игру с чистого листа или оценить возможности платформы, выбрав Game Kits — готовые игровые наборы, либо Tutorial Games — учебные игры.

Например, выбираем Maia the Brave и попадаем в заготовку лесной бродилки с персонажем-девушкой. Выглядит неплохо, правда?

Статья в тему:  Как продать вещи в доте которые нельзя продавать

Возможностей графики хватает для создания приличных бродилок. В левой части экрана имеются различные объекты, которые можем добавлять в игру простым перетаскиванием. Имеются три раздела Media, Code и Levels — отвечающие за объекты, код игры и ее уровни — естественно, можно делать многоуровневую бродилку со сложной логикой и скриптами. Кроме того, имеется маркетплейс — страница, где можно приобретать (Premium) или скачивать бесплатно (Free) разнообразные наборы предметов для игры и тому подобное. Это очень облегчает создание игры. Собственных персонажей можно создавать при помощи кнопки Character Creator, постепенно «собирая» их.

В середине находится игровой экран, а также карта всего «царства» (уровня), масштаб которого можно менять кнопками — и +.

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

Посмотрим, как работает слой с главным персонажем. Для этого выберем строку «Player», и вокруг девушки возникнет синий прямоугольник. С помощью него ее можно менять в размерах, вращать, перемещать.

Далее мы видим слой Park objects, к которому относятся объекты парка — в данном случае это деревья. Их также можно двигать и модифицировать. Ниже находится слой Collectibles, самый вожделенный для любителей игр. В него можно добавлять те самые предметы, которые требуется собирать: монеты, шоколадки, одним словом, клад (gem). В левой части экрана есть выбор из 6 таких предметов. Они имеют статус pre-scripted asset — то есть предмет, имеющий заданное скриптом заранее поведение.

Следующий слой Non-Player — это другие персонажи, не относящиеся к главному. Здесь это некоторые животные. Их тоже можно перетащить на основной экран и добавить в игру. Например, это Dr. Peck — птичка в стиле Angry Birds, расхаживающая туда-сюда. Выглядит это просто потрясающе, в лучших традициях бродилок. Что особенно приятно, процесс расхаживания птички можно редактировать в редакторе анимации Animation Editor, управляя ей покадрово. Для этого надо нажать на птичку правой кнопкой и выбрать Dr. Peck -> View Animation. А при контакте девушки с птичкой появляется сообщение, либо можно запрограммировать другую логику на ваш вкус. Также есть слои с водоемами (Water), дорожками (Paths) и насаждениями (Hedges). Их можно включать или отключать, по аналогии с Adobe Photoshop.

Статья в тему:  Как продать вещи в доте которые нельзя продавать

Слой Background отвечает за фон игры. Также важным моментом является добавление нового слоя. Это можно сделать, нажав плюсик справа от надписи Layers. На выбор будет два варианта: New Layer (добавление нового слоя) и New Tile Map (добавление сетки для выравнивания элементов). Последнее требуется для того, чтобы расположить элементы ровно по сетке.

Проверить, как работает игра в режиме предпросмотра можно, нажав кнопку Play. Разрешение игры меняется в разделе Game Settings. По умолчанию это 960×540. А общий размер игрового мира находится в разделе Levels, по умолчанию это 2800×2880, довольно масштабная бродилочка.

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

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

С помощью Gamefroot можно встроить игру на собственный сайт, предоставляется embed-код. Получится вот такая игра (на третьем слайде нажмите Play):

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

10 альтернативных игровых движков

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

  • Construct 3. Браузерный кросс-платформенный визуальный движок разработки игр.
  • Game Maker: Studio. П озволяет писать расширения под множество платформ на соответствующих им языках.
  • Unity. Одна из самых известных платформ. Позволяет создавать 3D-игры. Основными преимуществами Unity являются наличие визуальной среды разработки, межплатформенной поддержки и модульной системы компонентов. К недостаткам относят появление сложностей при работе с многокомпонентными схемами и затруднения при подключении внешних библиотек.
  • GDevelop. Open-source браузерный кросс-платформенный визуальный движок разработки игр, также есть версия для скачивания
  • GameSalad. Движок с платной подпиской (абонентской платой), позволяющий создавать игры для Android, iOS и на HTML5. Приложение основано на принципе Drag-and-drop специально для людей, не знающих программирование.
  • Buildbox. Скачиваемая платформа для разработки мобильных игр, есть бесплатная и платная версии, различающиеся функционалом. Знание программирования не требуется.
  • Godot Engine. Мощный открытый кроссплатформенный 2D и 3D игровой движок под лицензией MIT. Игра создаётся с использованием собственного высокоуровневого динамически типизированного скриптового языка программирования под названием GDScript, синтаксис которого напоминает язык Python.
  • Unreal Engine. Мощнейший всемирно известный трехмерный движок. Написанный на языке C++, движок позволяет создавать игры для большинства операционных систем и платформ. Со 2 марта 2015 года Unreal Engine 4 стал бесплатным. Разработчики игр должны передавать 5% от выручки с продаж игры компании Epic Games, если ежеквартальная выручка превышает $3000.
  • Panda3D. Движок малоизвестный, разработан компанией «Дисней» и в последствии передан университету CMU и сообществу. Движок написан на языке C++ и небольшая его часть — на Python. Panda3D спроектирован таким образом, чтобы разработка проектов с его использованием велась на языке Python в большей степени, а также на языке C++.
  • Stencyl. Скачиваемый кроссплатформенный конструктор игр. Stencyl работает в интеграции с онлайновым магазином компонентов игр StencylForge и сайтом Stencyl.com. На сайте расположены учебные материалы, форумы пользователей конструктора и опубликованные ими игры. Позволяет создавать игры для платформ iOS, Android, настольных компьютеров под управлением Windows, Linux и Mac OS, а также игр в формате Adobe Flash и HTML 5. Есть бесплатная и платные версии с расширенными возможностями.
Статья в тему:  От чего зависит фпс в онлайн играх

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

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector