IT-инфраструктура для бизнеса и творчества

Топ-9 JS-движков и библиотек для игр в 2020 году

Команда Mail.ru Cloud Solutions перевела статью Фернандо Доглио о том, какие игровые библиотеки и движки можно считать лучшими для разработчика JavaScript.

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

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

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

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

Итак, поехали!

GDevelop предоставляет отличный набор инструментов для любых пользователей — от новичков до продвинутых.

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

В качестве дополнительного бонуса GDevelop дает возможность экспорта в различные платформы, такие как Android, iOS, Facebook Instant Games и другие.

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

2. melonJS

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

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

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

ImpactJS — игровой движок JavaScript, в основном ориентированный на разработку 2D-игр, как и библиотеки выше. Но есть плагины, которые вы можете добавить в Impact для имитации 3D-среды, например как здесь:

Интересно отметить: Impact поставляется с несколькими дополнительными инструментами, такими как редактор уровней для любой 2D-игры, мощный дебаггер, а также очень интересный фреймворк для публикаций Ejecta, позволяющий размещать игры в iPhone App Store.

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

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

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

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

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

6. PixiJS

PixiJS — удивительно гибкая и мощная библиотека для 2D-визуализации. Она работает с WebGL и предназначена для создания красивых веб-интерфейсов, которые необязательно должны становиться играми. Хотя библиотека поддерживает ряд игровых элементов, такие как спрайты, текст и даже некоторые продвинутые, например шейдеры.

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

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

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

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

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

8. A-Frame

У некоторых из предыдущих вариантов есть совместимость с VR в качестве дополнительного функционала. А вот A-Frame был создан именно с учетом VR и AR. Это означает, что фокус всего фреймворка смещен.

Конечно, можно создавать на нем и 3D-игры, но максимальную пользу можно извлечь, если использовать WebXR-совместимые браузеры или даже экспериментальные фичи в последних версиях Chrome, обеспечивающие поддержку WebXR AR.

Поскольку A-Frame был разработан для использования в браузере, он имеет синтаксис, похожий на синтаксис HTML-верстки. Поэтому вместо того, чтобы сильно полагаться на JavaScript, он использует некоторые пользовательские элементы разметки, как видно здесь:

Кому подходит. Этот фреймворк — отличный вариант, если вы заинтересованы в опыте с VR/AR вместо старых добрых 3D-игр. Поскольку A-Frame специально разработан для этого, он сделает вашу жизнь намного проще. Попробуйте!

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

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

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

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

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

Конечно, это не все движки и библиотеки для игр

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

Что еще почитать по теме:

{ "author_name": "Ekaterina Kushnir", "author_type": "self", "tags": [], "comments": 8, "likes": 9, "favorites": 56, "is_advertisement": false, "subsite_label": "dev", "id": 131649, "is_wide": true, "is_ugc": true, "date": "Wed, 03 Jun 2020 13:19:51 +0300", "is_special": false }
(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ // { // name: 'camera', // url: `${cdnUrl}CameraCat`, // text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', // link: '1', // }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', }, // { // name: 'cloud', // url: `${cdnUrl}CloudCat`, // text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', // link: '3', // } ] let buttonCycle = document.querySelector('.button--cycle') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?4' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?4' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите почитать?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
8 комментариев
Популярные
По порядку
Написать комментарий...
4

По опыту скажу:
1) Все дерьмо. Тяжелое, громоздкое, неудобное.
2) С WebGL сегодня не работает никто и ничто, даже Pixi.
3) 3D и VR для веба - это чистое безумие.

PS: сейчас очевидный бум движков для геймдева, это не плохо, но подходить к выбору нужно очень тщательно и осторожно. Что касается веба и JS - лучше писать полный натив.

Ответить
0

Поделитесь опытом по 1 и 2 пунктам? Пока похоже на, экхм, пиздеж! А судя по заявлению " веба и JS - лучше писать полный натив" — можно и не отвечать, опыта там не так уж и много)))0)

Ответить

Комментарий удален

1

Поддерживаю - все дерьмо, по большей части. Хотя с тем что webgl не работает - не соглашусь.
babylon неплох, но весит оочень много. Есть еще достойный hilo3d. Он небольшой, но сделан с умом. В двумерке pixi неплохо рисует, но архитектура там грустная. Ну про плейканвасы и фейзеры молчу, делать на них полноценные продукты просто смешно.

Ответить
0

все УГ  ,раз там    лицензия MIT License, то это априори не может быть  хорошим,если там стоит лицензия MIT - это даром не нужно. Опять таки все не русское,что не русское - то УГ. какой смысл переводить зарубежные статьи?   если продукт не русский вы зря потратили чужое и свое время.

Ответить
0

Вы не используете нерусские продукты? :) Даже для того, чтобы написать это, вам нужен был компьютер с ос Windows или Mac OS. Или телефон на Android или от Apple. 

Ответить
0

ох.. видимо ты просто тролль. 90% актуальных разработок не относятся к России

Ответить
0

Забыли Cocos2d с его Cocos Creator. Нормальная документация, дружелюбное комьюнити и оч популярные проекты на нем реализованы (например: AFK arena).
Из минусов: на ютубе гайдов по нему кот наплакал.

Ответить
Читать все 8 комментариев
В Москве стартовал прием заявок на соискание премий в области охраны окружающей среды

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

фото: Департамент природопользования и охраны окружающей среды города Москвы

Премия разделена на два блока и предусматривает финансовое вознаграждение. Один блок – конкурс в области охраны окружающей среды – включает 8 премий. Сумма награды составляет по 200 тысяч рублей и по 100 тысяч рублей в 4-х номинациях.

Осталось всего 3 дня, чтобы подать заявку в Finlanding
Как успешно продавать кондиционеры с минимальными затратами на рекламу

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

«Оптимальный портфель» – новая стратегия автоследования от «БКС Мир инвестиций»

«БКС Мир инвестиций» запустил новую стратегию «Оптимальный портфель» на площадке Fintarget – маркетплейсе инвестиционных стратегий.

19 этикеток вина, которые намного больше, чем просто этикетка

Что может быть лучше, чем этикетка для вина, чтобы рассказать историю. Я веду канал «Логотип побольше», где за более чем год собрал 19 этикеток вина, которые созданы не просто так, а имеют замечательную, порой красивую, а иногда и поразительную идею.

«Самокат» запустит доставку безрецептурных лекарств совместно со «Сбер Еаптекой» Статьи редакции

Благодаря партнёрству ритейлер планирует сократить время доставки с 1–2 часов до 15 минут.

«Модульбанк» запустил сервис для анализа продаж на маркетплейсах (даже у конкурентов)

Он доступен бесплатно всем клиентам банка.

Brooke Cagle
Рынок CPA в России: обзор исследований AdIndex

Рынок партнерского маркетинга продолжает развиваться. Какие задачи бренды закрывают благодаря этому каналу, как предпочитают взаимодействовать с CPA и кого выбирают в качестве партнеров – в обзоре двух исследований AdIndex 2021 года.

Бренд спортивной одежды и обуви Under Armour вновь откроет магазины в России в 2022 году — «Ъ» Статьи редакции

Магазины бренда начали закрываться в 2019 году из-за высокой конкуренции.

Disney построил дом Винни-Пуха в английском лесу — его можно арендовать на ночь через Airbnb Статьи редакции

Ночь стоит от 7633 рублей.

Спальная зона Airbnb
null