Войти
ПрограммированиеФорумВеб

Defold vs Phaser. HTML5 игра для Telegram.

#0
18:05, 9 окт. 2018

Всем привет! Заинтересовала платформа 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'е?

Спасибо, буду рад если кто-то сможет помочь ;)


#1
0:55, 10 окт. 2018

Привет.

> Есть у кого опыт в 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/

#2
10:20, 10 окт. 2018

Не бери дефолд: закрытый код, все инструменты заточены под собственные процессы кинга, шаг в сторону от туторов - всё, до свидания. Примерялся к нему пару лет назад для большого вебного проекта, ощущение, будто тебе объедки со стола в фантик завернули, на маркетинг они больше чем на сам движок тратят)
Ну и из-за связки lua-cpp-emscripten-js В вебе он будет всегда раз в 5-10 медленнее нативных js движков, но тут вопрос, что ты собираешься делать, может тебе и хватит.
Если серьёзно хочешь целиться и в веб, и на мобилки, и тебе важна производительность, то советую посмотреть CocosCreator. Документация скудная и только на хромом английском, но по духу очень близко к Cocos2d, по которому инфы море, так что при желании втянуться можно

#3
14:29, 10 окт. 2018

Если пишите под Телеграм, то кроссплатформенность вам не нужна - js и html достаточно, phaser здесь вполне уместен. Чтобы разместить своё приложение нужно создать бота и необходим скрипт на сервере с SSL, который будет получать запросы и посылать ответы Телеграм.

#4
16:01, 10 окт. 2018

Спасибо большое всем за ответы!

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
Кроссплатформенность интерисует именно из-за дальнейших целей выпускать игры в эпп сторы. Поэтому ищу варианты, чтоб не изучать несколько движков, если возможно, ведь всегда есть свои нюансы в процессе разработки, когда начинаешь углубляться в технологию.
Про бота, да, представление имею, ботов писал раньше.

По поводу получения параметров от пользователя, я наверно не совсем понятно выразился) Я имел ввиду - нормальная ли это практика будет, если я, когда буду в телеграме пользователю отправлять ссылку на игру, добавлю в нее параметры (его юзернейм, например), а потом сервер уже примет эти параметры, и я смогу использовать их в самой игре? И возможно ли это вообще?

#5
(Правка: 19:59) 19:58, 10 окт. 2018

Rustam789
> Но defold все вокруг ругают, мне лично очень не понравился размер билда мелкого
> прототипа - 5.6 мб. Для мобилок это неплохо, но не для веба. Наверно чтоб
> понять, по делу его ругают или нет, надо попробовать самому)
Если нужен размер билда до 5 мб, то Defold конечно не вариант. По производительности он значительно отстает от нативных HTML5-движков. Но по скорости разработки в сравнении с Phaser он вне конкуренции.

Defold хорош своим интсрументарием: геймобджекты, коллекции, фабрики, компоненты от спрайтов до мешей и систем частиц. Это делает его ближе к старшим собратьям типа Unity. Между функционалом Defold и Phaser такая же пропасть, как между Phaser и Unity.

Ну а что касается ругают... За время разработки на нем я возненавидел и Defold, и Lua, и всех причастных к разработке этих технологий :) Но мой основной инструмент - Unity, я привык к его гибкости и широкому функционалу. При переходе на Defold приходилось во многом себя ограничивать, искать альтернативы привычным приемам. Оттого я и бомбил :) В сравнении с Unity - Defold - дно дниченское. Но Unity для разработки игр для мессенджеров не подходит.

Если бы мне пришлось работать с Phaser, я бы совсем расстроился :)

#6
12:32, 11 окт. 2018

Rustam789
Есть cocos2dx - движок на с++, быстрый на мобилках/десктопе, старый и достаточно популярный, но без какого-то общепринятого редактора - всё делается через код/текстовые конфиги/сторонние инструменты
Есть cocos2d-js - тот же движок, но полностью переписанный на javascript.
Есть CocosCreator - редактор, сильно вдохновлённый Юнити, кладущий компонентую систему поверх обычного cocos2d. Игровая логика пишется на js, (грубо говоря) билд под веб собирается с cocos2d-js внутри, под мобилки с coco2d-x внутри.

Плюсы:
- визуальный редактор (если в команде есть непрограммисты)
- полностью открытый код движка (и js, и c++ части), при желании можно сделать что душе угодно
- архитектура движка родственна старому кокосу, по которому куча мануалов и обучалок

Минусы:
- визуальный редактор. У редактора код закрытый, документации по нему почти нет - тяжко делать плагины/инструменты. Год назад были проблемы со сборкой из командной строки
- разработчики - китайцы :-)

#7
12:43, 11 окт. 2018
Но играя в примеры игр на phaser'e, я заметил лаги в мобильом браузере. Может быть из-за использования canvas вместо webgl, не могу сказать.

это называется кхм, хреновая оптимизация самих игр, на самом деле у фазера вышла 3 версия, на ней еще не кодил, но вроде сделали производительнее. Но есть n-ое число компаний выпускающих игры в мессенджерах на фазере(втором), которые вполне шустрые. Думаю был бы фазер настолько лаганым, не было бы спроса на игры на нём. Опять же смотря какую игру делать.
#8
12:22, 30 окт. 2018

Defold очень хорош, но!
Текущий экспортер в HTML5 нормально работает, однако ошибка считать мобильные браузеры нормальными браузерами. Дефолд команда так и говорит - мобильные браузеры это не поддерживаемая платформа. В течении двух ближайших месяцев в Дефолде обновят emscriptem и начнут движение в сторону wasma. Facebook Instant Games например отлично работают прямо сейчас.

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

На счет ГУИ - есть две отдельные хорошие библиотеки компонентов. Вообще подход Дефолд команды - все есть во внешних расширениях, если чего то не - просто напиши что тебе надо. И это работает.

На счет размера билда - вам надо настроить профиль текстур для сжатия webp и аппманифест для вырезания не нужных частей движка. И все будет окей.

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

#9
(Правка: 17:52) 17:41, 30 окт. 2018

Так дефолд в вебе через emscripten работает?

Щупал phaser, из того, что не понравилось:
- нет возможности смотреть иерархию, тыкнуть мышкой и поменять свойства (к примеру UI подгонять)
- нет сборки в атласы из коробки (у меня куплен TexturePacker, для фазера я его через кастомный билд плагин вебпака запускаю. Но пришлось сделать пару хаков, а то лайв релоад не работал при правке ресурсов)
- нет 9 slice (есть 3rd party плагин)
- внезапно, картинка не может иметь в себе дочерние элементы. И походу до 3 версии глубокую иерархию вообще было не сделать. Сейчас появился Container, который не рендерится, но умеет содержать в себе детей. То есть чтоб делать UI в привычном (мне) стиле, каждый элемент должен наследоваться от контейнера и помещать в себя картинку.
- нет проигрывания flash анимаций (если сравнивать с двигом, на котором я пишу по работе. SWF -> экспорт в свой формат анимаций + рядом графика). А это нифига себе фича.

ПрограммированиеФорумВеб