«Один раз написал игру — она везде работает»: в чём преимущества кроссплатформенного движка Defold

Текстовая версия 332 выпуска подкаста «Как делают игры».

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

Гости:

  • Алексей Гулев, разработчик игр и движка Defold в Refold
  • Олег Придюк, основатель The Communities Show. Ранее работал в Defold и Unity
  • Олег Чумаков, CEO, Luden.io

Ведущие — Сергей Галёнкин (Director of Publishing Strategy, Epic Games) и Михаил Кузьмин (Marketing Director, tinyBuild).

Послушать выпуск можно на сайте КДИ, в Apple Podcasts, Google Podcasts, Spotify.

Знакомство с гостями

Алексей Гулев с детства пытался делать игры. В индустрию попал больше десяти лет назад: сначала делал образовательные игры, потом — социальные слоты, затем занялся гиперказуалками, ещё когда их так не называли. Успел поработать в разных студиях, последнее место работы — компания King, в которой делал Crash Bandicoot: On the Run для мобильных устройств. Сейчас работает над Defold в компании Refold.

Олег Придюк работал в Unity, когда это ещё была маленькая компания на 20 человек.

Год 2008, Вильнюс, маленькая квартира. Мы вчетвером — это был проект Unity iPhone, вот тогда я начал работать в Unity. В это время ещё была избушка в Копенгагене, там ещё было около десяти человек, и пара человек в Сан-Франциско — это была вся Unity. Через некоторое время они обнаружили, что я говорю по-русски и сказали: «Слушай, есть такой большой регион, они не платят, они воруют Unity». […] Unity тогда стоила 1500 евро за два года, тогда ещё не было сервисной модели. Меня отправили разобраться, чего эти русские не платят. Я начал вдохновлять людей платить, и так начались отношения Unity с этим рынком.

Олег Придюк, основатель The Communities Show, ранее работал в Defold и Unity

Что такое Defold

Движку Defold уже несколько лет, но, по словам Олега Чумакова, про него существует множество мифов, которые мало соотносятся с реальностью. Команда Олега использует движок в создании образовательных игр.

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

Interrogation создана на Defold
Interrogation создана на Defold

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

Я об этом узнал, когда пообщался с людьми внутри компании и увидел цифры. Это был 2015 год, мы говорили про iPhone 4 — самый старый iPhone, на котором тогда поддерживались игры. И в Candy Crush на них был большой процент платных пользователей (от 2% до 4%). Позиционирование движка было в том, чтобы запускать игры и собирать деньги с людей со старыми устройствами.

Олег Придюк, основатель The Communities Show, ранее работал в Defold и Unity

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

Основную часть Defold написали Рагнар Свенссон и Кристиан Мюррей, но они уже давно не работают над движком. В Defold используется язык программирования Lua. Сейчас Defold есть на Windows, Linux, Mac.

В Unity первые 80% разработки игры очень лёгкие, ты доволен, а вторые 80% разработки — очень сложные. В Defold вторые — не 80%, а 20%, потому что не нужно ничего сильно оптимизировать.

Олег Придюк, основатель The Communities Show, ранее работал в Defold и Unity
ZOOM-BE, созданную на Defold, можно запустить прямо в браузере
ZOOM-BE, созданную на Defold, можно запустить прямо в браузере

Гулев рассказал, что Defold изначально заставляет тебя следовать большему количеству правил, даёт меньше свободы, чтобы потом ты меньше страдал.

Чаще всего [Defold] сравнивают с Unity. На Unity ты можешь делать всё как хочешь, просто копировать код с уроков на YouTube, он работает, ты делаешь игру дальше и всё вроде бы хорошо. Когда ты доходишь до релиза, всё тормозит и вылезают проблемы, с которыми нужно садиться и разбираться. На Defold тебе технически навязывается больше паттернов, которые тебе изначально могут не нравиться, но в конце концов ты от них выигрываешь. Наверное, именно поэтому опытные программисты влюбляются в движок. Опытный программист уже получил фан от разработки, сейчас он уже хочет делать и выпускать продукт и знает, каких проблем он помогает избежать.

Алексей Гулев, разработчик игр и движка Defold в Refold

Размер пустого проекта, собранного на Defold, совсем небольшой: под Android — 1,7 Мбайт, под HTML5 — 800-900 Кбайт.

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

Может показаться, что это ненужное преимущество, но мы избалованы быстрым интернет-соединением. Есть исследование, в котором говорится, что даже небольшое увеличение на 200 Кбайт может повлиять на ухудшение конверсии людей, дошедших до геймплея, на 5%. Также высвобождение одних ресурсов открывает возможность потратить их на что-то ещё.

Fates of Ort
Fates of Ort

Кому принадлежит движок

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

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

По словам Гулева, изначально задумка была классная: ты заходишь в Defold, создаёшь репозиторий на Git (он тогда ещё был платным, поэтому существовал публичный бесплатный Git-сервер), создаёшь проект, в движке видны все изменения, ты их можешь оттуда пушить.

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

Faerie Solitaire Harvest
Faerie Solitaire Harvest

Когда Activision Blizzard купила King, постепенно все высокопоставленные сотрудники King ушли и не осталось людей, которые продвигали Defold и видели в нём потенциал. Компания решила, что не будет развивать такие технологии. Разработчики Defold всеми доступными возможностями стали доносить до руководства, что он нужен миру и им пользуется много людей. В итоге направление смогло отделиться.

The Defold Foundation — зарегистрированная в Швеции некоммерческая организация, которой принадлежит Defold. В устав Defold входит несколько основных пунктов: движок должен быть доступен всем бесплатно, он должен работать, он должен поддерживаться, он должен выполнять свои функции, пока существует Foundation.

В Defold Foundation есть что-то вроде совета директоров, который принимает решения по организационным вопросам. Но в организации нет полноценных сотрудников. И существует отдельное акционерное общество Refold — Гулев и команда Defold работают именно там. Они занимаюмся не только движком, но и консультируют компании в вопросах портирования, делятся экспертизой. В рамках Defold они поддерживают инфраструктуру, разрабатывают новые фичи, исправляют баги, иногда занимаются портированием на Switch.

Мы давно не зависим от денег King, у нас множество партнеров, с которыми мы работаем. Денег, которые мы зарабатываем, хватает на поддержку и развитие Defold.

Алексей Гулев, разработчик игр и движка Defold в Refold

Гулев рассказал, что на Defold действует модифицированная лицензия, написанная на основе Apache 2.0. В лицензии сказано, что Defold не может продаваться как коммерческий продукт. Это нельзя делать ни команде, ни кому-либо ещё. Его можно модифицировать и развивать, выпускать на нём игры, но нельзя эти изменения упаковать и продавать как новый движок.

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

Алексей Гулев, разработчик игр и движка Defold в Refold

Особенности Defold

Defold — изначально 3D-движок: поддерживается и 3D-рендер, и возможность загрузки моделей, и материалы. Но команда не проработала весь набор инструментов, необходимый для работы с 3D, поэтому в первую очередь она рекомендует его для 2D.

Но в принципе работать с 3D можно, у нас в комьюнити есть ребята, которые готовят сейчас пакет Defold 3D Starter Pack. Сейчас будет тяжело сделать полностью 3D-игру, я бы не рекомендовал, если вы не энтузиаст. Мы подумаем о том, чтобы доделать фичи для 3D и найти финансирование на это.

Алексей Гулев, разработчик игр и движка Defold в Refold

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

Defold не заточен под конкретный жанр — можно делать всё, что угодно, даже простое 3D. Хотя вряд ли получится сделать 3D-шутер.

Bouncer Story
Bouncer Story

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

Мы используем Lua 5.1, потому что для него есть LuaJIT, который даёт сильный прирост производительности. [...]

Lua очень популярен не только в геймдеве, но и в бэк-энде, как раз благодаря LuaJIT. [...]

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

Алексей Гулев, разработчик игр и движка Defold в Refold

Гулев рассказал, что старается собирать маленькие команды — Defold отлично подходит для этого: он изначально делался так, чтобы малыми силами можно было получить максимум результата. Lua хорошо подходит в этом процессе — благодаря типизации не нужно предусматривать потенциальные ошибки, потому что сама вероятность ошибок ниже.

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

Хотя есть и альтернативы. Гулев рассказал, что существует модуль на Haxe — языке программирования, придуманного в Shiro Games. Его основная особенность в том, что он транслируемый на другие языки. Один из таргетов Haxe — это Lua. Используя этот таргет и библиотеку GitHub, можно писать на Haxe, при желании — объектно-ориентированно, и запускать это на Defold.

Но сам Гулев этот язык не использует, потому что на Lua всё же быстрее.

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

Алексей Гулев, разработчик игр и движка Defold в Refold

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

Defold подходит даже для запуска в браузере телефона — поэтому его удобно использовать для playable ads. Кроме того, движок отлично подходит для портальных игр, которые обычно запускают прямо через браузер: раньше эти проекты создавались на Flash, но он умер, а сегмент аудитории остался.

«Один раз написал игру — она везде работает»: в чём преимущества кроссплатформенного движка Defold

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

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

Чтобы начать изучать Defold, Гулев советует зайти в чат в Telegram, а также обратить внимание на его собственный сайт.

Алексей отметил, что в будущем планируется расширение количества модулей. К примеру, инструменты для создания освещения в 2D.

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

5858
46 комментариев

«Один раз написал игру — она везде работает»: в чём преимущества кроссплатформенного движка Defold Гулев рассказал, что Defold — это кроссплатформенный игровой движок, который можно использовать даже на HTML5 и мобильных устройствах. При этом везде у него будет единая база — это значит, что «не нужно писать игру несколько раз, ты один раз её написал, она работает». Как и любой другой кросс-платформенный движок?
В Unity первые 80% разработки игры очень лёгкие, ты доволен, а вторые 80% разработки — очень сложные. В Defold вторые — не 80%, а 20%, потому что не нужно ничего сильно оптимизировать.Но в Unity большая часть тормозов и лагов НЕ из-за кода, отвечающего за логику.

19
Ответить

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

Как и любой другой кросс-платформенный движок?

Да, на сегодняшний день любой движок позволяет собрать игру под любые платформы. Но собрать не всегда означает, что она будет работать вменяемо. Я не уверен, удалось ли все донести мысль правильно, но основная месть была в том, что:
1. Это делается в один клик без дополнительных действий (не нужны СДК, другие аде и т.д. один раз скачал движок и собираешь игру под все)
2. Что важнее, что производительность под все платформы будет на высоком уровне, что очень важно для html5 проектов, особенно на мобильных устройствах (что я специально и подчеркнул). т.е. просто собрать, чаще всего, не достаточно. Нужно чтобы конечный пользователь мог в это играть с комфортом на любом среднестатистической устройстве.

Но в Unity большая часть тормозов и лагов НЕ из-за кода, отвечающего за логику.

Да, дело не в логике в 99% случаев. Думаю тут я точно не так донес мысль. Под подходами я имел ввиду не только написание логики, но и то как устроен движок и к каким подходам он в итоге "склоняет". Пара примеров:
- Defold статический движок, буферы под объекты выделяются заранее и создание/удаление объектов ничего не стоит на стороне движка (кроме логики в компонентах скрипт, которые пишет сам разработчик).
- GUI компонент дает простые инструменты разделения по слоям с простыми правилами, следуя которым накосячить с батчингом будет тяжело (даже если разработчик им не следовал, то добавить слои довольно быстро и просто)
- У ресурсов всегда есть четкий владелец, что делает менеджмент ресурсов довольно простым (загрузил объект с нужными ресурсам, выгрузил объект и ресурсы выгрузились)
и т.п.

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

Тут отмечу, что я не говорю, что Defold лучше Юнити. Но он решает другие проблемы, которые Юнити если и решает то совершенно другими средствами, вроде отдельного project tiny, что уже и не совсем тот-же движок и требует отдельного написания игры с нуля.

5
Ответить

По поводу кросс-платформенности.

1. Если кому нужен именно хтмл5, то дефолд отлично подходит. Многие площадки ставят лимит на размер билда. Типа "нам нужно не более 10 мб". Но юнити тетрис сбилдит в 15мб. Из-за этого сложно пробиваться с тяжелыми по размеру играми на большие хтмл5-площадки

2. Дефолд прикольно собирает. Например, ты можешь собрать андроид-приложение без андроид студио. А мак и айос приложения спокойно сбилдишь на винде. Под свитч - без сдк свитча. Вроде юнити так не может. Хотя могу ошибаться.

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

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

5
Ответить

Но в Unity большая часть тормозов и лагов НЕ из-за кода, отвечающего за логику.А из-за чего тогда?

Ответить

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

4
Ответить

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

5
Ответить

"PS. Defold в 2021 такое себе и издателями стал окончательно восприниматься, как движок для плохих 2D-игр от команд, которые не вытянули Unity."
Откуда такая информация?
Или это типа твоё оценочное суждение, которое ни на чём конкретном не основано? Проще говоря пи**ёж?

2
Ответить