Всем привет! Заинтересовала платформа telegram games, html5 игры в телеграме. С вебом опыта мало, раньше делал мобильные игры. Выбор движка стоит между defold и phaser, у каждого свои плюсы и минусы, но критичны только некоторые вещи, поэтому хотел задать несколько вопросов:
1. Есть у кого опыт в defold, именно браузерных игр? Как у него с производительностью? У меня пару билдов заметно долго запускаются, нежели на phaser. Хоть они и пишут что он такой легкий, все равно заметно ожидание загрузки. Насколько phaser производительнее будет на мобилках в веб?
2. В телеграм апи сказано, что чтобы добавить таблицу лидеров (которая отображается прямо в чате), надо добавить код в index.js. А defold это ведь lua, и js код появляется уже после билда. Могу ли я после билда что то добавлять в него? Ведь эти функции надо еще где то вызывать. В phaser с этим вроде всё понятно, там изначально js.
3. Defold меня привлекает именно кроссплатформенностью, что можно будет эти игры и в эпп сторы залить. Но на phaser есть возможность сбилдить через phonegap (cordova), есть у кого опыт с этим? Стоит ли того? В смысле нет ли платформо зависимых проблем, или проблем с защитой (нет ли такого, что игру на phonegap легко взломать и тп)? Да и social плагинов на фазер вроде как нет, а в дефолде есть.
И еще такой нубский вопрос:
4. Как обычно при запуске хтмл игр получают какие либо параметры игрока, например его ник? Через ссылку с параматрами? Если мне надо чтоб игрок перешел по уникальной ссылке и я его идентифицировал уже на сервере. Я могу просто сгенерировать индивидуальную ссылку, в которой будут параметры заданы(открыто), и в фазере я вроде легко их получу, а вот смогу ли я получить параметры в defold'е?
Спасибо, буду рад если кто-то сможет помочь ;)
Привет.
> Есть у кого опыт в defold, именно браузерных игр? Как у него с производительностью?
Вел на нем проект 2 месяца, за это время изучил его довольно подробно. Для браузерок производительность приемлемая. С Phaserом его сравнивать не очень уместно, Phaser нативный для браузера, а в Defoldе исполнение lua через JS, исполнение одного скриптого языка средствами другого скриптового языка... сам понимаешь :)
В 5-секундный лимит загрузки Facebook Instant Games мы влезли. И мобильные браузеры его с горем пополам переваривают. На айфонах начиная с SE и средненьких андроидах можно добиться приемлемой производительности.
Из плюсов Defoldа - WebGL, это тебе и сеточки/партиклы, и шейдеры, и Spine-анимации... он же минус, если целевая платформа WebGL не поддерживает. Phaser же штука хотя и легковесная, но примитивная и упирается в возможности HTML Canvas. У нас на Phaserе пилят playable ads, где легковесность и скорость загрузки решают. Для чего-то более или менее серьезного я бы его не брал.
> 2. В телеграм апи сказано, что чтобы добавить таблицу лидеров (которая отображается прямо в чате), надо добавить код в index.js.
JS напрямую из lua дергать проблематично. Я разрабатывал под Facebook Instant Games, для нее King сделали плагин, который представляет из себя прокси к FBIG SDK, который разумеется на JS. Есть ли что-то под телеграм - х.з., гугли. Возможно кто-то что-то уже написал.
> phonegap (cordova)
С экзотикой не знаком.
> 4. Как обычно при запуске хтмл игр получают какие либо параметры игрока, например его ник? Через ссылку с параматрами? Если мне надо чтоб игрок перешел по уникальной ссылке и я его идентифицировал уже на сервере.
GUI в Defolde очень примитивный, готовых кнопок, инпут-филдов и прочих элементов, которые ожидаешь от полноценного движка - увы нет. Но все реализуется ручками при должной сноровке :) Есть сторонние дополнения разной степени готовности, но мне ни одно из нихне подошло, все писал сам.
Так что да, получение ввода от пользователя возможно.
Ну а сделать веб-запрос к серверу - это запросто:
https://www.defold.com/ref/http/
Не бери дефолд: закрытый код, все инструменты заточены под собственные процессы кинга, шаг в сторону от туторов - всё, до свидания. Примерялся к нему пару лет назад для большого вебного проекта, ощущение, будто тебе объедки со стола в фантик завернули, на маркетинг они больше чем на сам движок тратят)
Ну и из-за связки lua-cpp-emscripten-js В вебе он будет всегда раз в 5-10 медленнее нативных js движков, но тут вопрос, что ты собираешься делать, может тебе и хватит.
Если серьёзно хочешь целиться и в веб, и на мобилки, и тебе важна производительность, то советую посмотреть CocosCreator. Документация скудная и только на хромом английском, но по духу очень близко к Cocos2d, по которому инфы море, так что при желании втянуться можно
Если пишите под Телеграм, то кроссплатформенность вам не нужна - js и html достаточно, phaser здесь вполне уместен. Чтобы разместить своё приложение нужно создать бота и необходим скрипт на сервере с SSL, который будет получать запросы и посылать ответы Телеграм.
Спасибо большое всем за ответы!
alexey.ch,
>Из плюсов Defoldа - WebGL, это тебе и сеточки/партиклы, и шейдеры, и Spine-анимации... он же минус, если целевая платформа WebGL не поддерживает. Phaser же штука хотя и легковесная, но примитивная и упирается в возможности HTML Canvas.
Насколько я знаю, в phaser также есть webgl (можно выбирать между ним и канвасом). Но defold все вокруг ругают, мне лично очень не понравился размер билда мелкого прототипа - 5.6 мб. Для мобилок это неплохо, но не для веба. Наверно чтоб понять, по делу его ругают или нет, надо попробовать самому)
meekobold
>Ну и из-за связки lua-cpp-emscripten-js В вебе он будет всегда раз в 5-10 медленнее нативных js движков, но тут вопрос, что ты собираешься делать, может тебе и хватит.
Я заметил очень медленную загрузку в браузере, после того как игра загружается, лагов не наблюдалось. Возможно пример был слишком простой. Но играя в примеры игр на phaser'e, я заметил лаги в мобильом браузере. Может быть из-за использования canvas вместо webgl, не могу сказать.
А cocos заинтересовал. Давно хотел его посмотреть, хотя бы из-за игр, которые на нем сделаны) Но когда смотрел, был только cocos2d, под ios. Потом появился 2d-x, и инфы по нему совсем не было. В сети нашел, что простой билд на нем весит ~2мб, что очень радует (если это действительно так).
CocosCreator - это редактор для cocos2d-x, я правильно понял? А cocos2d-x это копия cocos2d, только кроссплатформенный? Или производительность отличается?
mihals
Кроссплатформенность интерисует именно из-за дальнейших целей выпускать игры в эпп сторы. Поэтому ищу варианты, чтоб не изучать несколько движков, если возможно, ведь всегда есть свои нюансы в процессе разработки, когда начинаешь углубляться в технологию.
Про бота, да, представление имею, ботов писал раньше.
По поводу получения параметров от пользователя, я наверно не совсем понятно выразился) Я имел ввиду - нормальная ли это практика будет, если я, когда буду в телеграме пользователю отправлять ссылку на игру, добавлю в нее параметры (его юзернейм, например), а потом сервер уже примет эти параметры, и я смогу использовать их в самой игре? И возможно ли это вообще?
Rustam789
> Но defold все вокруг ругают, мне лично очень не понравился размер билда мелкого
> прототипа - 5.6 мб. Для мобилок это неплохо, но не для веба. Наверно чтоб
> понять, по делу его ругают или нет, надо попробовать самому)
Если нужен размер билда до 5 мб, то Defold конечно не вариант. По производительности он значительно отстает от нативных HTML5-движков. Но по скорости разработки в сравнении с Phaser он вне конкуренции.
Defold хорош своим интсрументарием: геймобджекты, коллекции, фабрики, компоненты от спрайтов до мешей и систем частиц. Это делает его ближе к старшим собратьям типа Unity. Между функционалом Defold и Phaser такая же пропасть, как между Phaser и Unity.
Ну а что касается ругают... За время разработки на нем я возненавидел и Defold, и Lua, и всех причастных к разработке этих технологий :) Но мой основной инструмент - Unity, я привык к его гибкости и широкому функционалу. При переходе на Defold приходилось во многом себя ограничивать, искать альтернативы привычным приемам. Оттого я и бомбил :) В сравнении с Unity - Defold - дно дниченское. Но Unity для разработки игр для мессенджеров не подходит.
Если бы мне пришлось работать с Phaser, я бы совсем расстроился :)
Rustam789
Есть cocos2dx - движок на с++, быстрый на мобилках/десктопе, старый и достаточно популярный, но без какого-то общепринятого редактора - всё делается через код/текстовые конфиги/сторонние инструменты
Есть cocos2d-js - тот же движок, но полностью переписанный на javascript.
Есть CocosCreator - редактор, сильно вдохновлённый Юнити, кладущий компонентую систему поверх обычного cocos2d. Игровая логика пишется на js, (грубо говоря) билд под веб собирается с cocos2d-js внутри, под мобилки с coco2d-x внутри.
Плюсы:
- визуальный редактор (если в команде есть непрограммисты)
- полностью открытый код движка (и js, и c++ части), при желании можно сделать что душе угодно
- архитектура движка родственна старому кокосу, по которому куча мануалов и обучалок
Минусы:
- визуальный редактор. У редактора код закрытый, документации по нему почти нет - тяжко делать плагины/инструменты. Год назад были проблемы со сборкой из командной строки
- разработчики - китайцы :-)
Но играя в примеры игр на phaser'e, я заметил лаги в мобильом браузере. Может быть из-за использования canvas вместо webgl, не могу сказать.
это называется кхм, хреновая оптимизация самих игр, на самом деле у фазера вышла 3 версия, на ней еще не кодил, но вроде сделали производительнее. Но есть n-ое число компаний выпускающих игры в мессенджерах на фазере(втором), которые вполне шустрые. Думаю был бы фазер настолько лаганым, не было бы спроса на игры на нём. Опять же смотря какую игру делать.
Defold очень хорош, но!
Текущий экспортер в HTML5 нормально работает, однако ошибка считать мобильные браузеры нормальными браузерами. Дефолд команда так и говорит - мобильные браузеры это не поддерживаемая платформа. В течении двух ближайших месяцев в Дефолде обновят emscriptem и начнут движение в сторону wasma. Facebook Instant Games например отлично работают прямо сейчас.
На счет Луа - сам его не любил пока не научился правильно использовать. Вообще в Дефолд не надо пихать объектно ориентированный подход, там просто entity подход отлично работает.
На счет ГУИ - есть две отдельные хорошие библиотеки компонентов. Вообще подход Дефолд команды - все есть во внешних расширениях, если чего то не - просто напиши что тебе надо. И это работает.
На счет размера билда - вам надо настроить профиль текстур для сжатия webp и аппманифест для вырезания не нужных частей движка. И все будет окей.
На счет закрытого Дефолд кода - сейчас идут юридические консультации по части открытия разных частей движка. Как первый этап команда сделала расширения движка - каждый может дописать тот функционал которого ему не хватает. На счет внутренних процессов Кинга я не знаю но форум Дефолда это лучшее что я видел вообще, очень много активных людей которые быстро дадут ответ. НО! Скоре всего ответ уже есть на форуме в нескольких вариантах просто ты поленился искать.
Так дефолд в вебе через emscripten работает?
Щупал phaser, из того, что не понравилось:
- нет возможности смотреть иерархию, тыкнуть мышкой и поменять свойства (к примеру UI подгонять)
- нет сборки в атласы из коробки (у меня куплен TexturePacker, для фазера я его через кастомный билд плагин вебпака запускаю. Но пришлось сделать пару хаков, а то лайв релоад не работал при правке ресурсов)
- нет 9 slice (есть 3rd party плагин)
- внезапно, картинка не может иметь в себе дочерние элементы. И походу до 3 версии глубокую иерархию вообще было не сделать. Сейчас появился Container, который не рендерится, но умеет содержать в себе детей. То есть чтоб делать UI в привычном (мне) стиле, каждый элемент должен наследоваться от контейнера и помещать в себя картинку.
- нет проигрывания flash анимаций (если сравнивать с двигом, на котором я пишу по работе. SWF -> экспорт в свой формат анимаций + рядом графика). А это нифига себе фича.
Тема в архиве.