Диагноз Defold "Экспертная слепота". Результаты опроса игровых разработчиков на Defold [с комментариями]

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

Не так давно решил всё таки провести опросник для русскоговорящих программистов из чата титанов по Defold. Из около 980 человек в опросе приняло участие 14 человек. Я понимаю, что это малая выборка, но что есть, то есть. В этом посте я поделюсь результатами опроса и оставлю некоторые свои комментарии, несмотря на то, что выборка маленькая :smiling_face_with_tear:

Если что, я по прежнему продолжаю использовать Defold и мне нравится этот игровой движок. Своими комментариями я не хочу никого обидеть, опросник лишь подтвердил мои предположения “почему Defold непопулярный”. Раз ты сюда зашёл, вручаю тебе повестку.

Гугл таблица(ответы последние вопрос были скрыты(почты)):

Опросник для программистов на Defold

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

1. Сколько лет вы разрабатываете игры на Defold?

Категория стажа Количество человек Доля (%)
Менее 1 года 4 28,6%
1–2 года 3 21,4%
3–5 лет 5 35,7%
Более 5 лет 2 14,3%
Всего 14 100%
  • Новички (менее 1 года): 28,6% — значимая доля новичков. Это позитивный показатель притока новых участников, что важно для “здоровья” сообщества: идёт обновление, появляются свежие взгляды.

  • Средний стаж (1–2 года): также заметная группа (21,4%), что дополнительно указывает на устойчивое “ядро” участников между новичками и ветеранами.

  • Наиболее крупная группа — 3–5 лет опыта (почти 36%). Это говорит о том, что в сообществе/команде существенная доля участников уже имеет “средний” опыт.

  • Опытные участники (более 5 лет): только 2 человека (14,3%). Это может говорить о молодом возрасте проекта/команды или недостаточной привлекательности долгосрочного участия. Как я понимаю:
    Unity почти 20 лет, а Defold — около 17 лет, если считать с момента создания, и около 9 лет, если считать с момента публичного релиза.

В целом, если бы в опроснике приняли бы участие около 100 человек, то ситуация складывалась такая, что существует дефицит “активных” старожил:

  • Только 14 человек в команде из 100 — это риск потери корпоративной памяти, лучших практик и наставничества.

А также, есть хорошие показатели:

  • Приток новичков (29%) — Каждый третий участник новый. Это здоровый уровень для поддержания динамики и роста.
  • Сильное “ядро” среднего опыта (36%) — Группа с 3–5 годами — это “рабочая лошадка” любого коллектива. Они достаточно опытны и ещё энергичны.

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

(Позже мы узнаем, что “полных” новичков критически мало в Defold :sob:).

2.Какой тип разработки вам наиболее знаком? (Выберите все подходящие)

Тип разработки Кол-во Доля (%)
Web-игры (HTML5) 11 78,6%
Мобильные игры (iOS/Android) 10 71,4%
Десктопные игры (Windows/Mac/Linux) 3 21,4%
Гибридные/мультиплатформенные проекты 2 14,3%
Консольные игры (Switch, PlayStation и т.д.) 1 7,1%

Делаем выводы:

  • Web/Mobile доминируют (78,6% и 71,4%)
  • Desktop слаб (только 21,4%)

3 человека (21%) — скорее всего опытные энтузиасты, которые знают “зачем” они выбрали Defold для десктопа, т.к насколько мне известно, Defold лучше заточен под мобильные и браузерные платформы и именно поэтому сообщество смещенно в сторону веб-разработки (мы видим это по диаграмме).
Открытый вопрос: “Почему Unity используют чаще в Web и Mobile, если есть Defold?”.
Ответ простой: “Многие профессионалы искренне считают, что GitHub мостик для новичков. И новички должны учиться по GitHub и официальной документации”.
С чем я не согласен: .GitHub — это не мостик, по которому комфортно идти новичку. Это лестница, взбираясь по которой нужно прикладывать больше усилий новичку. И популярность Unity вызвано не только проектами на GitHub. А многочисленной базой туториалов.
Представьте, если сейчас ветераны Defold умрут. Насколько Defold отстанет в прогрессе?

3. Каков ваш уровень опыта в разработке игр в целом?

Категория Кол-во Интерпретация
Совсем новички 2 чел (14,3%) Учатся, экспериментируют, нужна помощь
Растущие разработчики (2–5 лет) 7 чел (50%) Это основная аудитория — им нужны гайды, лучшие практики
Опытные (5–10 лет) 4 чел (28,6%) Сформировались, знают что делают
Эксперты (10+ лет) 5 чел (35,7%) Лидеры, ментора, архитекторы

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

Либо в Defold высокий порог входа для “полного новичка”:

  • Defold сложен для полных новичков в game-dev (мое мнение, и да, я новичок).
  • Люди сначала учатся на Unity/Godot (более популярные, больше туториалов)
  • Потом некоторые переходят на Defold, когда уже понимают базовые концепции

Следствие: Сообщество Defold — это не “первый выбор” для абсолютного новичка, а скорее “осознанный выбор” опытного разработчика, который готов столкнуться с трудностями при работе с Defold.

Либо происходит утечка новичков:

Возможный сценарий:

  1. Новичок пробует Defold
  2. Сталкивается с документацией
  3. Что-то не понимает, идёт в чат титанов, но когда там прослеживается язвительность в ответах по типу: “ищи в в гугле”, “это легко”, “раньше было сложнее”.
  4. Уходит в более дружелюбные экосистемы (Unity, Godot)
  5. Остаются только те, кто уже имеет IT-опыт.

Профессионал подумает: “неженка, мы в твои года делали 3д игры на Flash”.
А толку от этих “выкрутасов”. Новичку пофигу, пойдёт скачает другой игровой движок и откроет первый попавшийся туториал, что-то попробует сделать. И даже если он не останется в gamedev, в своих разговорах с другими людьми он будет упоминать более лёгкий игровой движок для старта, и этим движком не будет Defold.

Я знаком с одни начинающим игровым разработчиком, который ушёл из Defold, потому что там кто-то ответили с “язвительностью”. Я не осуждаю опытных игровых разработчиков, я согласен с вами, что некоторые вопросы реально могут быть тупыми и такое ощущение, будто человек не открывал документацию. И я был таким, и мне было обидно, потому что перед вопросом я тратил не один час на то, чтобы хоть что-то понять и при вопросе избежать язвительных ответов. Но, что если новичок в силу своего незнания не понимает как задать правильно вопрос, столько неизвестного перед ним. Может быть он вообще зашёл в тупик. Вы-то сразу поймёте, что к чему, за вашими плечами опыт и знания. А перед ним “непаханое пастбище”

— Вот скажи, что ты здесь видишь?


— Лес.
— Нет, это будущие пшеничные поля.
Из "Сага о Винланде".

В общем. я сейчас наткнулся на одно исследование, дело не в Эффект Даннинга-Крюгера:

Nathan, Koedinger и Alibali (2001)

  • Суть: Исследование посвящено концепции «экспертной слепоты» в преподавании, когда преподаватели, будучи экспертами, могут не замечать трудности, с которыми сталкиваются студенты при изучении нового материала, поскольку их собственные знания настолько глубоки, что им сложно представить, как можно не понимать очевидные для них вещи.
  • Ключевые выводы: Глубокие знания в предметной области могут затмить педагогические знания, то есть знания о том, как эффективно обучать этому предмету

Обращения к некоторым экспертам. Прекращайте считать ваши знания лёгкими для освоения новичками.

4. Какие другие игровые движки/фреймворки вы использовали?

Можно было выбирать несколько вариантов ответа:


Это любопытно, всего лишь у двоих людей первым игровым движком является Defold(14.3%). Один из них новичок(менее 1 года), кстати, другой — нет (3-5 лет в сфере IT).

Остальные 12 (85,7%) пришли из других экосистем:

  • Unity (57,1%) — это самый частый “входной движок” для этих людей
  • Они учились на Unity, потом осознанно выбрали Defold

Попробуем сделать выводы:

  • Defold — выбор, а не случай

    • Люди знают, чего они хотят
    • Понимают, в чём Defold уникален
    • Не пришли “просто так”, ища первый попавшийся движок
  • Опытная аудитория

    • Знают паттерны из других движков
    • Могут критически оценить Defold
    • Не пугаются Lua, кастомной архитектуры
  • Defold — нишевой движок, не массовый

    • 57% Defold разработчиков пришли из Unity
    • Это означает, Defold не конкурирует с Unity за новичков
    • Это “вторая волна” — люди, которые разочаровались в Unity или нашли ей альтернативу
  • Цикл потери: новички → Unity → Defold (редко)

    • Defold не получает приток “свежих сил” прямо
    • Только уже обученные переходят
  • Зависимость от других экосистем

    • Если Unity упадёт в популярности, это не поможет Defold (люди могут перейти в Godot)
    • Defold — это “план Б”, а не “план А”

Это печально. “Полных новичков нет”!

5. Рекомендуете ли вы использовать Defold новичкам в игровой разработке?

Что?

Основное противоречие:

  • Большая часть рекомендуют Defold новичкам
  • Но самих новичков в сообществе ОЧЕНЬ мало.

Это означает:

  • Defold хорош для новичков в теории
  • На практике новички не приходят или уходят
  • Люди, рекомендующие его, скорее всего, имеют в виду “опытных новичков” (люди с IT-опытом, новые в game-dev)

А ведь я догадывался, что специалисты говорят не об одном и том же, когда упоминают “новичков”. Ладно. Поехали дальше.

В опроснике я допустил опечатку. Следующий вопросы начинаются с 7.

7. Много ли времени новичок сэкономит, если перед тем как начать изучать Defold, он пол года изучит Unity?

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

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

Попробую сравнить Unity и Defold.

Вариант 1: Новичок в Unity

  • :cross_mark: Тяжелее синтаксис (C#)
  • :cross_mark: Много параметров и инструментов
  • :white_check_mark: НО: Множество туториалов на русском
  • :white_check_mark: НО: Огромное сообщество помогает
  • :white_check_mark: НО: Почти любая ошибка уже решена кем-то

Вариант 2: Новичок в Defold

  • :white_check_mark: Проще синтаксис (Lua)
  • :white_check_mark: Меньше “магии” и параметров
  • :cross_mark: НО: Критично мало туториалов на русском (да и на английском)
  • :cross_mark: НО: Активное сообщество 14 человек (судя по опросу).
  • :cross_mark: НО: Если ошибка — иди на англоязычный форум или попроси помощи у человека, который посмотрит на тебя через искажение “экспертной слепоты”.

“Мы, опытные разработчики, можем справиться с дефицитом документации. Но новичок? Он будет страдать.”

ПОЧЕМУ ДЕФИЦИТ КОНТЕНТА ТАК КРИТИЧЕН?

Для опытного разработчика:

  • “Документация неполная? Я сам разберусь с исходным кодом”
  • “Нет туториала? Я понимаю концепцию, сам сделаю”
  • “Ошибка? Я знаю, как отлаживать”

Для новичка:

  • “Документация неполная? Я не знаю, что ищу”
  • “Нет туториала? Я не знаю, как начать”
  • “Ошибка? Я не знаю, что случилось”

Новичок зависит от наличия ХОРОШЕГО контента. Опытный — нет.

Создаётся замкнутый круг:

1. Новичок пробует Defold
   ↓
2. Встречает проблему, ищет решение
   ↓
3. Не находит туториала на русском
   ↓
4. Уходит в Unity/Godot (есть русскоязычные туториалы)
   ↓
5. Потом, когда опытнее, может вернуться
   ↓
6. Но цикл повторяется с каждым новичком

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

8. Насколько важно изучение Lua ПЕРЕД началом работы с Defold?

Любопытно, но один профессионал с опытом работы 3-5 лет сказал, что Lua стоит изучить перед тем как приступить к Defold. И его опыт разработки игр в целом равен больше 10 лет. И я согласен с ним.
Посудите сами, многие из вас перешли из другого игрового движка, скорее всего, с общими концепциями языков программирования вы уже знакомы, но новички этого не поймут. Каким бы не был Lua, это один из барьеров, который также нужно освещать. И освещать его нужно в том ракурсе, как будто Lua — это твой первый язык программирования.

9. Как часто вы используете систему сообщений Defold?

Похоже, что в Defold сообществе нет ЕДИНОГО МНЕНИЯ насчёт использования системы сообщения.

10. В какие моменты вы испытываете сложности с msg.post()? (Выберите все подходящие)

11. Какой совет вы дали бы новичку по использованию message passing? Может лучше использовать альтернативы?

8 ответов:

Использовать его, если возможно. Он работает понятно и стабильно. В ситуациях, когда использовать его не удобно (разные контексты сцен, работа с модулями) можно использовать defold event от insantly

Делать “один апдейт” и использовать сообщения только при пересечении границ контекста выполнения

Не надеяться на производительность, не перекидывать большие таблицы

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

Там где возможно всегда использовать прямые вызовы функций с явной передачей параметров. Лично не стал бы рекомендовать всевозможные event bus, notifier-listener, потому что они хорошо работают, когда один скриптовый контекст (go или gui). И магию, которые библиотеки делают под капотом с принудительной установкой скриптового контекста - как по мне жуть, которая может потом выстрелить долгой отладкой. При работе с сообщениями: * заранее захешировать message id и вынести из в отдельный модуль констант * обработчки сообщений сконцентрировать по возможности в нескольких местах, которые будут выступать диспетчерами и будут вызывать уже конкретные функции в скриптах * помнить о том, что сообщения не обрабатываются в момент отправки. А все происходит в конце кадра. С этим ограничением понимать в каких случаях использовать сообщения, а в каких - лучше реорганизовать код. * не смешивать корутины и сообщения

Лучше использовать альтернативы

Однозначно не использовать. Один .script на всю сцену. Остальное в модулях. Так можно будет и headless сборки тестировать

Постараться построить всю логику в луа модулях и там же хранить стейт

12. Какой первый шаг вы бы рекомендовали, если новичок говорит, что его игра лагает?

13.Сколько времени обычно требуется новичку, чтобы разобраться с физикой в Defold? Как вы думаете?

14. Какой совет вы дали бы новичку при отладке физики?

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

Смотреть примеры

Нужен контекст проблемы, тяжело дать совет не понимая что именно отлаживать

Напиши свою

Использовать box2d от Димы, а не встроенный

15. Как часто вы использует встроенную физику Defold?

16. Рекомендуете ли вы изучать шейдеры новичкам?

17. Какие графические эффекты сложнее всего реализовать в Defold?

18. Какой подход к управлению анимацией вы рекомендуете новичкам?

Через скрипт управлять

От простого к сложному. Твины и flow от Бьерна. Потом пантера. Потом спайн.

Всё ручками

Чем проще - тем лучше

В defold в атласе это уже встроено. Для анимации движениями go/gui могу рекомендовать panthera

19. Как вы рекомендуете организовать состояния игровых объектов (idle, run, jump и т.д.)?

20. Какой подход вы рекомендуете для больших GUI систем?

Какой подход вы рекомендуете для больших GUI систем?

21. Рекомендуете ли вы использовать фреймворки для GUI?

22. Какие советы вы дали бы новичку при разработке для веб?

22 Какие советы вы дали бы новичку при разработке для веб?

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

Всё упирается в размер билда

Понимать ограничения целевой платформы; понимать какая целевая аудитория превалирует в вебе; готовиться к страданиям с отладкой проблем разных браузеров, десктоп/мобайл; минимальные знания как работает браузер, рендеринг страницы и в целом webgl/js

*** *** и в продакшн

*** *** и в продакшен

23. Какие платформы вы рекомендуете новичку для первого проекта?

24. Какой совет вы дали бы новичку для эффективной отладки?

Используй print и pprint для дебага кода.

Отлаживаться print’ами

Встроенных функций достаточно чтоб найти любую проблему, в том числе и веб отладка (web profiler)

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

Логируй все

Много времени сэкономит если изучит, как работают автотесты, как пользоваться bob’ом и разберётся с adb для подключения android’а к пк

25. Используете ли вы unit testing в Defold проектах?

26. Какие обучающие ресурсы помогли вам больше всего

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

27. Какой обучающий материал наиболее полезен для новичков?

28. Каких обучающих материалов не хватает?

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

30. Если вы переходили с другого движка, что было самым сложным?

Система ui, понимание различий между collection, go, component

Архитектура Дефолда далека от интуитивности

Сообщения, ecs подход (go.set_position(id)), gui_script, атласы

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

Понять механизм фабрики, коллекции фабрик, коллекций прокси

31. Какие преимущества Defold вам нравятся больше всего?

32. Какие недостатки Defold по сравнению с другими движками?

33. Какой совет вы дали бы разработчику, переходящему из Unity/Godot/Unreal?

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

Из юнити/годот - переходить не думая, из Анриал - подумав очень хорошо

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

Defold - это всего лишь инструмент

Однозначно переходить

34. Что, по вашему мнению, является главным правилом при разработке на Defold?

Druid, Monarch, Event, Lang

druid для gui, monarch для сцен

друид, ортокам

Нет таких, в любую тему нужно сперва ткнуться самому

Встроенных функций достаточно, нет прям 100% маст хев

  • Monarch * Druid * Что-нибудь для камеры (orthographic, rendercam, rendy) * Для 3д: kinematic walker, scene 3d * Spine * остальные зависят от целевой платформы и задачи

monarch, druid, defsave

37. Какие игры/жанры лучше всего подходят для Defold?

38. Рекомендуете ли вы Defold для начинающих разработчиков?


Опять вопросы из той же оперы…

39. Как вы думаете, что нужно для развития сообщества Defold?

40. Напишите свой главный совет для начинающих разработчиков на Defold:

Используй именно ui (не go) везде, где это возможно.

Не бояться, он только кажется замороченным

Нет совета, но обучение окупится с лихвой. База которую даст Defold легко переносима (шейдеры/рендер/математика/паттерны)

Читай мануал

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

41. Как бы вы начали изучать Defold, будь вы новичком сейчас?

Прочитал бы документацию полностью

если есть опыт, то с создания оч маленькой-простой игры до конца

Просто сел бы и изучил, ничего хитрого тут нет

Постепенно и размеренно. Раньше влетал с 2х ног, ничего не понимал, и улетал назад на Godot

Запускал бы примеры проектов, читал бы документацию. Сформировал бы список типовых вопросов и изучал бы каждый из них. Например, 1. Как собираются атласы? 2. Как организовывается игровая сцена? 3. Как работать со звуками/анимациями/партиклами и т.п. 4. Как собирается проект под целевую платформу и т.д.

С интерактивных туторов

Какой бы я сделал вывод:

  • Выбил бы мысль у профессионалов: “Defold — лёгок для новичков!”.
  • Осознал бы, что новичков мало, а полных новичков единицы!"
  • Активных участников сообщества мало!
  • Начал бы создавать “мостик” для “полных” новичков (т.к их единицы, оф.документация хороша для опытных, но не является “мостиком” для новичков).
  • Не поскупился бы и каждый год делал бы по одному уроку для начинающих (Это занимает не больше недели, особенно, если вы профессионал).