Если ты решил начать делать игры под Яндекс Игры, но Unity и другие движки тебя не устраивают — билды много весят, долгие загрузки и другие проблемы — то эта статья для тебя.
Почему не Unity?
Я начинал на Unity и несколько лет работал на нем. Потом пересел на unreal engine 4/5. Но так получилось, что я попал в html5 игры, и Unity в этом плане, мягко говоря, не очень. Кроме того, у него есть свои недостатки. В статьях по best practices for Unity часто пишут: это не юзай, это медленно работает, и пишите свою реализацию и т. д. Кроме того, Unity имеет закрытый исходный код, что тоже дает определенные ограничения.
Другие движки, которые я использую, такими проблемами не страдают. Конечно, выбор движка зависит от ваших потребностей и предпочтений. Лично я определился с двумя движками для разработки HTML5-игр: Defold для 2D, а также Cocos Creator для 3D и 2D игр. У defold мне нравится комьюнити, оно очень крутое, у билдов маленький размер, что очень важно для браузерных игр, для скриптов используется замечательный скриптовый язык Lua. Если есть тяжелые задачи, можно переписать на плюсы. У defold ещё много хорошего, но об этом в другой раз. А про Cocos Creator вы узнаете в ходе статьи.
Что ещё за кокос?
Большинство не слышало про Cocos Creator, а у некоторых ассоциации с Cocos2d-x. Так вот, Cocos2d‑x — это фреймворк, который перестал обновляться в 2019 году. Сейчас актуален Cocos Creator. Но базовый слой Cocos Creator развился из Cocos2d-x.
С официального сайта Cocos:
Cocos Creator — это бесплатный кроссплатформенный инструмент разработки игр с открытым исходным кодом, основанный на сценариях, компонентах и данных, в основе которого лежит создание контента. Благодаря простому в использовании рабочему процессу создания контента и мощному набору инструментов разработчика, разработчики могут легко создавать свои собственные игры с глубокой поддержкой Cocos Creator всех основных платформ, что позволяет быстро публиковать игры на Web, мобильных телефонах и различных платформах для мини-игр. Для веб-платформ и мини-игр используется чистый движок JavaScript, обеспечивающий лучшую производительность и меньший размер пакета. На других мобильных платформах базовый фреймворк реализован на C++ для обеспечения большей эффективности во время выполнения.
Коротко — это как Unity, только от китайцев, бесплатно и с открытым исходным кодом, кроссплатформенный, для 2д- и 3д-игр.
Кто вообще это использует?
Ubisoft, Gameloft, Square Enix, FunPlus, Tencent и другие.
А какие игры на нем сделаны?
Brain Out от Focus Apps: Более 100 миллионов установок на Google Play.
Top War: Battle Game от Topwar Studio: Более 50 миллионов установок на Google Play.
Idle Heroes от DHGAMES: Более 10 миллионов установок на Google Play.
Idle Mafia от FunPlus: Более 10 миллионов установок на Google Play.
SSSnaker от Habby (издатель Archero): Более 1 миллиона установок на Google Play.
Minimal Dungeon RPG от CapPlay: Более 1 миллиона установок на Google Play.
Обратите внимание, что эти данные на момент написания статьи, и количество установок может увеличиваться со временем.
Cocos Creator также популярен для разработки браузерных игр, особенно на платформах WeChat (там больше половины игр на Cocos Creator) и Facebook (Организация Meta, а также ее продукты Instagram и Facebook, признаны экстремистскими и запрещены на территории РФ).
Так, а почему именно Cocos?
Есть несколько причин, почему я предпочел Cocos Creator другим движкам:
Знакомый интерфейс. Cocos Creator предоставляет редактор с привычными окнами, такими как сцена, ресурсы, инспектор, иерархия и т. д. что упрощает работу, особенно если у вас уже есть опыт с другими движками, например Unity.
Гибкость. Cocos Creator позволяет вырезать модули движка в билде, которые вам не нужны. Это дает возможность создавать оптимизированные и компактные билды.
Скорость развития. Cocos Creator активно развивается, и разработчики регулярно выпускают новые функции и обновления. Например, уже есть экспериментальная поддержка WebGPU, что позволяет использовать современные технологии для повышения производительности.
Открытый исходный код. Cocos Creator — это open‑source проект, что дает возможность вносить свои изменения и дополнения в движок.
Подводные камни
Однако есть несколько недостатков, о которых стоит знать:
Популярность вне Китая. Cocos Creator пока более популярен в Китае, что означает меньше доступного обучающего контента на английском и на русском. Это может быть затруднением для начинающих разработчиков, и поддержка может быть ограниченной за пределами китайского сообщества (я эту ситуацию начал исправлять).
Не так много работы. В отличие от популярных движков, таких как Unity, вакансий для разработчиков на Cocos Creator может быть меньше. Это может потребовать дополнительных усилий в поиске работы или создании собственной команды.
Тем не менее, если вы готовы справиться с этими недостатками, Cocos Creator может быть отличным выбором для разработки ваших HTML5-игр.
Что под капотом?
Начиная с версии cocos creator 3.6, движок можно назвать «двухъядерным». То бишь есть ядро на c++ и ядро на js/ts. И для разных платформ используется своё ядро. Да, такой подход в gamedev не распространен, потому что он чрезвычайно затратен. Для этого надо, чтобы не было «сильных» различий между ядрами, а то на одном ядре будет свинья, а на другом крипер (кто понял — тот понял).
Интерфейс редактора
Почти как в Unity. Всё стандартно: окно scene, assets, inspector, hierarchy и т. д. Если есть опыт с другими движками, то проблем с редактором не будет. Но тем, кто сидел на unity или unreal, будет непривычно, потому что многих инструментов будет не хватать. Например, на момент написания статьи нет кисти для рисования объектов по террейну. И надо все расставлять ручками. Но я уже реализовал пару инструментов для автоматической расстановки и подобие кисти для ландшафта (TerrainWorldElementGenerator).
Typescript
TypeScript — это язык программирования, разрабатываемый и поддерживаемый Microsoft, который представляет собой надмножество языка JavaScript. Он добавляет статическую типизацию к JavaScript, позволяя разработчикам определять типы данных для переменных, функций, объектов и других элементов кода. TypeScript компилируется в обычный JavaScript, поэтому его можно запускать в любой среде, поддерживающей JavaScript.
Ts любят около 72% программистов на Stack Overflow. Ts — ещё open-source проект.
В движке для написания скриптов используется Typescript. Javascript уже давно не используется, только иногда для плагинов.
До Cocos Creator я ни разу не использовал Ts, но мне лично он понравился. Что мне понравилось в Ts, так это объединение типов (в некоторых случаях довольно полезная возможность) и вообще работать с типами. И много других возможностей языка. Если использовали Unity, то быстро освоитесь в этом языке.
Для Ts я использую vs code с плагинами. Для некоторых это будет плюсом, так как не надо устанавливать десятки гигов, чтобы писать код (привет, обычная visual studio) или много потребляющая ОЗУ ide от jetbrains.
Физика
Начнем с 3д-физики. Cocos Creator поддерживает 4 физических движка (а что, так можно было?):
Bullet(по умолчанию): физический движок по умолчанию, asm.js/wasm версия Bullet. Физический движок с обнаружением столкновений и симуляцией физики.
Встроенный: встроенный физический движок, легкий движок только для обнаружения столкновений.
Cannon.js: Физический движок с обнаружением столкновений и симуляцией физики.
PhysX: Игровой физический движок, разработанный NVIDIA. Физический движок с обнаружением столкновений и симуляцией физики.
НЕ ИСПОЛЬЗУЙТЕ BULLET ДЛЯ ГОНОЧНОЙ ИГРЫ
Когда делали гоночную игру, то не знали про нюансы bullet. И вот на середине разработки было замечено, что иногда машина могла провалиться или оттолкнуться от земли, когда едет или падает на большой скорости. И это проблема была не моя, а физического движка, потому что при определенных столкновениях будет непредсказуемое поведение и много умных слов, почему так происходит…
2д-физика — здесь всё легко, есть Box2d и встроенный (для простых игр). Также присутствуют различные соединения как для 2д, так и для 3д.
В Cocos Creator 3.8 будет character controller.
Про обрезания движка
В Cocos Creator это называется Feature Cropping. Вы просто снимаете галочки с модулей, которые вам не нужны, и вуаля — у вас билд стал меньше.
Пустой проект с отключением всех модулей весит 305 КБ.
C модулями для 2д-игры с физикой (Box2d) пустой проект весит ~600 КБ, с нормальным набором модулей для 3д-игры с физикой (Bullet) пустой проект весит ~1250 кб.
Вес написан для билда в zip. Версия Cocos Creator 3.7.3.
Процесс разработки
Разработка под веб — это просто сказка (после Unity). Как проходит процесс:
Пишешь код — Ctrt+S — зашел в Cocos — перешел в браузер — и уже запускается игра.
Минимум задержек. И разработка не превращается в ожидание и смотрение в прогресс-бар (привет, Unity).
Поддержка интеграции со сторонними сервисами
Есть интеграция с HUAWEI App Gallery Connect и HMS Core. Что очень полезно, так как AppGallery — тоже популярный стор (привет, смартфоны от HUAWEI). Но надо понимать, что там не будет много стран из первого тира.
А с sdk для браузерок проблем не будет, так как используется Ts. А если использовать сервисы наподобие gamepush, то это будет очень легко и быстро.
А можно онлайн-игру сделать?
Да, для мультиплеера есть colyseus sdk (бесплатный). Возможно, вы с ним сталкивались в других движках. Серверная часть пишется тоже на Ts. Colyseus тоже open-source.
Что по ECS?
Если вы работали с ecs в Unity, то, наверное, слышали про LeoEcs. Так вот leopotam (разработчик LeoEcs) сделал порт для Ts (конечно же, работает и под cocos creator), но на момент написания статьи, чтобы получить LeoEcs, надо быть спонсором на boosty.
Различные реальности
Присутствуют VR, AR и WebXR.
Возможности Cocos Creator:
Итог
Cocos Creator — это хорошая альтернатива Unity. Если будете использовать кокос, то у вас уже будут преимущества перед играми на Unity и других движках под web. Но главное — это делать игры, в которых игрок хорошо проведет время.
Ссылки:
Моя группа по Cocos Creator, там вы найдете много полезного.
Комментарии (42)
HomoHikka
24.07.2023 16:20+1С работой в России на данном движке туго. Сам года 2 назад работал в Playgendary как джуниор разработчик - делал Playable Ads. Но вот после работу на этом конкретном движке так и не нашел. На всех вакансиях, по ощущению, хотели сразу миддл+/сеньора, но на мой взгляд, предлагали ниже рынка, и дообучать меня не хотели от слова совсем, даже с учетом 1 года реального коммерческого опыта
Grozamir Автор
24.07.2023 16:20+1Ну, не только проблемы с работай у cocos. Вот недавно была новость от hh ru. Почти на 1/3 убавилось вакансий в gamedev.
Pastoral
24.07.2023 16:20+3Про Cocos понятно, лютый Китай - называет себя кроссплатформенным но загрузки кроме как на Windows я не обнаружил. Может и хорошо для сетевых дел.
А с Defold ничего не понятно, всё бесплатно и они ещё сборочный сервер держат - откуда деньги? Или иначе - как они будут меня продавать?
domix32
24.07.2023 16:20называет себя кроссплатформенным
собирали как под Айфоны с Андроидами так и на десктопе запускали во время разработки (Win/Mac/Linux). Единственное, что для десктопов использовать кокос сомнительная затея, хотя вполне реальная.
Grozamir Автор
24.07.2023 16:20Cocos Creator работает ещё под MacOS.
А с Defold ничего не понятно, всё бесплатно и они ещё сборочный сервер держат - откуда деньги? Или иначе - как они будут меня продавать?
Pastoral
24.07.2023 16:20+1И как можно было предположить что я этого не читал? Ну получили донат, теперь живут якобы на подачки и не собираются зарабатывать. Так не бывает. Корпоративное спонсорство? Чего ради? Наблюдать за активностью игроделов, при этом имея возможность прекратить её отключив единственный сервер? Зачем?
Это ещё более загадочно чем с Гуглом - тысячи тщательно отобранных инженеров собираются в одном месте и в условиях превосходящей Манхеттенский Проект секретности ежегодно выпускают не вполне рабочий смартфон... Бывает так?
arusakov
24.07.2023 16:20+2А если сравнивать с Godot?
Он вроде как тоже может в web, open source, свой скриптовый язык или C#... В общем интересно ваше мнение, если был какой-то опыт.Noortvel
24.07.2023 16:20+1C# в Godot сырой, такое ощущение что добавили ради того чтобы был, даже при загрузке написано, что не используйте билд с C# в продакшене). В вебе очень толстенький, последний раз билд вышел в 28 мб. Unity 12-18 мб. Так что Cocos самый лучший для веба из движков с редактором.
domix32
24.07.2023 16:20+5это фреймворк, который перестал обновляться в 2019 году
откуда дровишки? последние коммиты за сим годом значатся. В планах там и 4 версию выпустить были, правда неизвестно насколько она бета получилась.
Сейчас актуален Cocos Creator.
Фактически это просто студия, аналогичная Unity. Cocos2d-x как движок никуда не делся, просто генерация кода для однообразных механик становится более унифицированная. Ну и сборка под платформы проще (по крайней мере планировалось).
Ubisoft, Gameloft, Square Enix, FunPlus, Tencent
Сами кампании этим не пользуются. Пользуются их купленные кампании, занимающиеся мобильными играми.
Не так много работы.
Потому что надо искать Lua/C++ программистов, а не фреймворкистов - чай не js. После СВО в России в принципе геймдева не так много осталось, это не связано с популярностью фреймворка.
Это самый мощный игровой движок
Движок изначально затачивался под 2д на мобильных платформах, поэтому куски легаси тянутся ещё со времён когда оно было cocos2d на objective-c
Легаси очень сильно влияет на производительность - на одной из прошлых работ коллега делал серьёзные доработки графического пайплайна, чтобы FPS было таки в районе 60, а не 30. Серьёзно дорабатывалась система управления памятью - переписывался кокосовый аллокатор (AutoreleasePool) и избавлялись от встроенных кокосовых умных указателей, тянувшие бремя `auto_ptr`. Внутреннее устройство компонентов всё это время продолжает жить без ECS, включая js/ts. Так что LeoEcs скорее всего работает как замена того AutoreleasePool для веб, помогая с уменьшением фрагментации за счёт использования арен (но я тут свечку не держал, могу ошибаться).
Когда я последний раз пробовал запускать студию то огромное количество вещей просто не работало - даже генерация проекта. С появлением веб таргета вероятно что-то таки завелось, но с учётом размера их команды думаю прогресс не был достаточно значительным, учитывая количество поддерживаемых таргетов.
Поэтому не знаю как он у вас оказался "самым мощным", учитывая количество проблем с одной из главных состовляющих игр - графикой.
valera5505
24.07.2023 16:20+1последние коммиты за сим годом значатся
Как-то это активным процессом разработки язык не поворачивается назвать. В обоих коммитах единственный измененный файл — readme.md
domix32
24.07.2023 16:20Это у них перманентное состояние, т.к. там буквально три китайца этим занимаются. Плюс поддерживают ещё околококосовые проекты а ля тех же блокчейн платформы для блокчейн же игр. И большая часть этих работ ведётся в закрытом режиме, поэтому апдейты в проекте не сказать чтобы прям супер активные.
mmomkona
24.07.2023 16:20Cocos2dx и Cocos Creator это два разных движка. Где-то в глубинах их форума была запись, что cocos2dx-v4 - это последняя версия плюсового движка, и больше он не поддерживается. С графическими редакторами для него беда, к креатору его не подключить, FairyGUI использовать - это страдать. Последний специализированный редактор - CocosStudio, работает только на маке с Hight Sierra на борту (тоже страдания, только по другому).
Есть парни, которые форкнули проект и потихонечку переписывают. Пока надежда на них.domix32
24.07.2023 16:20Только в README раздел есть
Therefore, we no longer recommend new users to start with Cocos2d-x. Instead, please use the brand-new Cocos Creator for project development to enjoy the best editor and 3D support.
Не рекомендуется, но и не умирает т.к. нативные платформы запускаются именно при помощи него. Веб версия скорее всего работает с cocos2d-js, который теперь наверное уже cocos2d-ts. То есть Creator это комбайн поверх двух с половиной движков плюс интеграции с кучей всяких систем - рекламы, сторы, аналитика и т.п - то есть не движок сам по себе. Это примерно как звать Android Studio движком для андроид разработки.
Studio мы когда-то даже использовали для создания сцен, проекты которого мы потом отдельно самостоятеьно парсили. Разрабатывалась правда емнип сторонними людьми, не основными контрибьюторами кокоса и да только под мак.
Grozamir Автор
24.07.2023 16:20откуда дровишки? последние коммиты за сим годом значатся. В планах там и 4 версию выпустить были, правда неизвестно насколько она бета получилась.
https://docs.cocos.com/creator/manual/en/#product-line-overview
Сами кампании этим не пользуются. Пользуются их купленные кампании, занимающиеся мобильными играми.
Соглашусь.
Потому что надо искать Lua/C++ программистов, а не фреймворкистов - чай не js. После СВО в России в принципе геймдева не так много осталось, это не связано с популярностью фреймворка.
Частично соглашусь. Просто компании выбирают, тот же unity, ещё потому что найти специалистов легче, чем на Cocos Creator или тех, кто разработает движок для проекта. И частично это связано с образованием (как с курсами, так и университетами и т д), где в основном программы по разработке игр на unity. Иногда Unreal. А вот программы, где разбирали бы рендер, физику, ai и т д, как это работает более глубоко, и делали бы на плюсах, хотя бы не с нуля, а с использованием библиотек (суть думаю поняли), такие есть, но в рф их очень очень мало.
Поэтому не знаю как он у вас оказался "самым мощным", учитывая количество проблем с одной из главных состовляющих игр - графикой.
Ну тут смотря под какую платформу. Для пк unreal куда круче по графике будет.
Под веб в 3д, лично для меня, Cocos Cretor пока самый лучший среди 3д движков. Тому подтверждения (в то что графика может быть красивой и технологичной) демка Lake или cocos cyberpunk. Но игроку в веб играх, куда важнее скорость загрузки (этот пункт зависит ещё от типа игры и др. факторов), геймплей, стилистика графики.
Я писал статью с целью, что бы больше людей узнали про Cocos Creator. Просто у многих ассоциации с фреймворком cocos2dx, а кто-то вообще не слышал. Да, cocos не идеален, как и другие движки, всегда есть плюсы и минусы.
shaman4d
24.07.2023 16:20Спасибо очень интересно. А вот плагины для гугл плей\фейсбук\рекалмы для мобильных платформ как разрабытывать? Вроде у юнити полегче с этим, но я могу ошибаться.
Grozamir Автор
24.07.2023 16:20Для монетизации под мобильные платформы, есть vungle. Сейчас тестируется Admob, который появится, когда выйдет Cocos Creator 3.8.
Плагин просто для гугл плей, тоже есть.
Vungle и плагин для гугл плей входят в cocos services.
С facebook точно проблем не будет https://docs.cocos.com/creator/manual/en/editor/publish/publish-fb-instant-games.html
Есть ещё статья, как добавлять android sdk в cocos creator
GavriKos
24.07.2023 16:20+199% сторонних вещей предоставляют SDK под нативный андроид. А Creator выгоняет как раз проект в AndroidStudio.
Да, вам придется в общем случае написать мост между Java/Kotlin и JS.
GavriKos
24.07.2023 16:20+1Кокос кнчн хороший движок, спору нет. Но у него есть фундаментальный косяк - на мобильных платформах это по сути вебвью. Со всеми вытекающими последствиями в виде ANR, перерасхода ресурсов и прочего.
nnknows
24.07.2023 16:20+1Не, там не вебвью. Там свой нативный рантайм против которого бандлятся js-ные скрипты.
GavriKos
24.07.2023 16:20Этот рантайм - кусок V8, который все и рисует ) Да, вебвью получается кастомный, не стандартный - но оттого проблем не становится меньше (
nnknows
24.07.2023 16:20Нет, у вас неправильная модель в голове. Там прямо весь движок написан в двух версиях – на ts и на cpp. JS-машинка для скриптов, понятно, что есть. Но вот создаваемые ей объекты движка и сам рендер-луп – они в двух разных версиях для браузера и для натива. Соответственно, на нативе никакого "webview" и близко нет, есть некая "коробочка", из которой можно доставать уже оптимизированные спрайты и меши, а вовсе не WebGL-ный контекст.
Например, RenderScene:https://github.com/cocos/cocos-engine/blob/develop/native/cocos/scene/RenderScene.cpp
https://github.com/cocos/cocos-engine/blob/develop/cocos/render-scene/core/render-scene.ts
domix32
24.07.2023 16:20На мобильных платформах отрадясь нативный код гонялся и рисовался через Open GLES. Вебвью там появляется только если веб версию собирать.
ildarin
24.07.2023 16:20Пишешь код — Ctrt+S — зашел в Cocos — перешел в браузер — и уже запускается игра.
По этой причине и пересел на JS для пет-проджектов и геймдева. Минимум требований к системе разработки (VsCode+Chrome). Даже гайд написал. Очень подкупает простота разработки, скорость старта и скорость отклика при изменениях. Да и весят такие игры минимально. Эта моя игра весит 1014КБ без ассетов (и то я ее не оптимизировал по весу никак, даже внешняя либа не минифицированная).
Но, конечно без строгой типизации - туго. Тут либо TS, что требует предварительной установки как минимум nodejs. Даже сделал пак с быстрым развертыванием билда для фронта, чтобы авто-билдилось при изменениях.
Либо на голом JS, благо есть JSDoc 3. Но это все равно не очень удобно - код отдельно от описания. Классы не люблю, т.к. нужно писать this и вообще много лишних слов. Количество this в коде растет в геометрической прогрессии с ростом класса. В то время как return {property} - пишется один раз и в одном месте сразу видно публичную структуру объекта.
Пока что для себя вывел такой code style - VsCode его хорошо цепляет для intellisense без расширений. Может и костыльно, но работает. Инкапсуляция есть, полиморфизм есть, наследование через делегирование. Правда есть свои проблемы, JSDOC не подцепишь, рекурсивные функции не подцепляются, лишняя проверка на false и выглядит порой криво.
function createObject(name='myObject'){ const items = [] const obj = { name, appendChild } return obj //--- function appendChild(child = createObject()){ child.name += 'child of '+name items.push(child) } } const myObjects = false?[createObject()]:[]
GospodinKolhoznik
Вот я чего не пойму. Игровая логика, она же как правило мудрёная. А зачастую очень и очень мудрёная. Но игровые движки предлагают описывать эту логику на языках с динамической и слабой типизацией. Хотя казалось бы, чем строже язык, тем удобнее на нем описывать сложную логику. Злой в плане типизации Haskell справляется с очень развесистой логической клюквой. Но движки как будто соревнуются, кто предложит язык с как можно менее строгой типизацией.
Кто ни будь пробовал на Lua писать игровую логику? И как оно вам?
Grozamir Автор
Яп для написания логики в движках, выбирают по другим характеристикам, как сложно его интегрировать в движок (например, lua легко и быстро интегрировать в игровой движок на плюсах), как дружит с различными платформами, как сильно влияет на билд игры и т д.
По поводу написания логики на Lua. Могу порекомендовать игровой движок defold. Писать на lua одно удовольствие.
zhagk0
Я думаю, что нет никаких проблем в динамической типизации, если ты не выбираешь движок под AAA-игру.
mrise
Зависит от игры. Порой достаточно и визуально-блоксхемного программирования(которое, кстати, несколько лет назад завезли в тот же анриал).
Так что всё, как всегда, упирается в скорость разработки прототипа и трудозатраты допиливания его до конечного продукта.
DarkNews
Шок контент конечно, а потом на хабре выходят статьи с 1к+ комментов о там как деградировало современное ПО.
Как по мне если ты НЕ соло пилишь свою игру, или вообще делаешь проект онли для себя, то за те самые блюпринты и использование дин типизации нужно выгонять нафиг из сферы деятельности, а потом еще и по рукам бить, до синяков
Может быть если бы так было - игры бы не стали полнейшим ужасом в плане оптимизации, что происходит со всеми последними релизами.
dekeyro
Блюпринты ускоряют разработку и снижают порог вхождения. Как следствие - уменьшаются затраты. Следовательно - быстрее можно выйти на рынок.
Так что в плане компаний как раз, что лепят игры однодневки ну или у кого конвеер по производству - это лучшее решение.
Уже потом можно переписать целые модули на код, если взлетело и нужна производительность.
Тут рулит менеджмент и планы продаж...
Hardcoin
Полагаете, что ресурсы съедает именно логика игры, а не рендеринг? И если код логики типизировать, то станет существенно быстрее?
kchhay
Есть разные игры. Имхо, первый коммент вообще некорректен, в подавляющем большинстве игр логика проста как лом. Десяток условий на боссах, дерево выборов в диалогах - ничего затратного с точки зрения вычислений. Есть, конечно, 4Х стратегии, типа Виктории, где подглагивания можно было бы объяснить тем, что вычислений там действительно уйма. Но таких игр можно пересчитать по пальцам.
А в лагучих релизах проблемы чаще могут лежать вообще где угодно, в ui, в физике (где вычислений тоже может быть тонна), в сетевом коде...
GospodinKolhoznik
Игровая логика в полноценных рпг с большой квестовой составляющей и всяких стратегиях, особенно экономических сложна. Во всяких аркадах и т.п. конечно довольно примитивна.
Другое дело что принято забивать на игровые баги, считая их чем то само собой разумеющимся. А потом происходят косяки с невыполнением квестов, потому что ключевой персонаж мертв, ключевой предмет утерян и т.п. И отловить их можно только в рантайме, а не на этапе компиляции.
ildarin
World War 2 сильно начинает тормозить в процессе игры именно по причине сложной логики. Вообще это присуще 4X стратегиям. Stellaris и Endless Space тоже начинают подтормаживать к лейту.
mrise
Простите, но зря вы так с не- и слабокодящими геймдизайнерами. Игры и так в последнее время превращаются в корпоративный шлак, а вы хотите выгнать из индустрии часть людей, которые всё ещё пытаются привнести в неё креативность, из-за собственной не слишком объективной ненависти к использованому подходу.
Не надо так. Будьте человечнее. Идеи не стоят того, чтобы бить людей.
Sadler
Ещё как пробовал. Не могу сказать, что это прямо приятное занятие, но явно комфортнее визуального программирования блюпринтами в духе UE. И не требует пересборки проекта после каждого изменения, нужный скрипт можно перезагрузить на лету. UE сейчас предлагают использовать Verse как промежуточный этап, но с его синтаксисом я, пожалуй, пас.
vaslobas
Я писал на луа скрипты для вова. Вполне удобно было. Большим плюсом был низкий порог входа, поэтому многие новички легко вкатывались в написание/редактирование скриптов.
domix32
Писал, и тут сильно зависит от архитектуры луа составляющей. Когда луа в кокосе был second class приходилось делать собственную архитектуру и гайдлайны как-то продвигать, было не очень. Когда плюсовую инфраструктуру продублировали - стало проще, хотя и несколько проблемно ловить некоторые баги.
Вне кокоса тоже было неплохо, но там логика крутилась на миксинах и хвала байтам мне не приходилось с ними возиться.
JKot
Игровая логика как правило очень слабосвязанная. Сегодня инвентарь есть у песонажа, завтра инвентарь это сундук, после завтра инвентарь добавить в машину. Практически каждый объект может взаимодействовать с другим, куда тут уж статическая сильная типизация? Наоборот чем слабее типизация тем удобнее. Тот-же ecs который захватил геймдев во многом про слабые связи между объектами и про то что объект можно собрать из различных компонентов, которые к тому-же будут изменятся во времени. Не имел опыта с хаскель, но игровую логику я бы писал на чем угодно, но не на моём любимом cpp.
playermet
В течение многолетнего периода пользовались реализацией LuaJIT. И считаю это наверное один из лучших существующих языков для данной задачи. Что не удивительно, ведь он специально проектировался и создавался конкретно для ее решения.
Почти ничего не весит, элементарно встраивается, быстро учится даже не программистами, не скуден возможностями, удобный биндинг, крайне производительный, успевает запуститься, отработать, и вывести результат раньше чем я подниму палец с клавиши запуска. Главный минус - маленькая встроенная библиотека, но именно такая и должна быть во встраиваемом языке.
Что касается логики, то flavor мудрености игровой логики, и flavor сложной логики которую удобно писать на статических языках - это два разных flavor'а. Не видел еще ни разу, чтобы статический язык сам по себе помогал исправить например блокирующий прогресс баг в логике ветвленной цепочки квестов. При этом подавляющая часть игровой и квестовой логики это элементарщина. А если нужен сложный алгоритм - он пишется на основном языке и биндится.
sva89
Писал когда то давно логику на Lua, особых проблем не испытывали - и порог входа низкий, и производительность достаточная. Но и игры там были в стиле Hidden Object, так что никаких мудреных алгоритмов не требовалось. Сам движок, естественно, был написан на плюсах.