# INSTEAD на emscripten
Peter(syscall,1) — All
2017-07-21 22:06:50


Сегодня удалось собрать сабж. С минимальными изменениями. Игры работают, и работают быстро! В том числе те, что со спрайтами. Fps в аркадах 60 fps. :)

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

Проблемы:
1.Переделать фейдинг
2.Музыка ogg (звуки уже работают)
3.Поддержка трекерной музыки
4.Поддержка iconv
5.Сохранения (сейчас они не переживают сессии)

Из всего этого, не знаю как решить 5. Может быть, поможет technix. Остальное, вроде понятно как делать.

Я думаю, что пока попридержу новый релиз до того момента, когда закончу изменения для emscripten

# Re: INSTEAD на emscripten
Antokolos(syscall,12) — Peter
2017-07-22 09:41:39


Отличные новости!
Интересно, в чём была проблема прошлой Emscripten-версии, которая подтормаживала?
А сборочный скрипт для Emscripten будет прямо в основном репозитории Инстеда?

# Re: INSTEAD на emscripten
Peter(syscall,1) — Antokolos
2017-07-22 11:45:12


> Отличные новости!
> Интересно, в чём была проблема прошлой Emscripten-версии, которая подтормаживала?
> сборочный скрипт для Emscripten будет прямо в основном репозитории Инстеда?

Там проблемы были в цикле обработке, в реализации таймера в SDL emscripten, в сборке SDL_mixer...

В основном репозитории думаю что как закончу все, что то положу точно. Или readme, или скрипты... А код уже пушаю по тихоньку.

Ну и вот, для первого тестирования прототипа (пока не оптимизированно по скорости, но по моему и так хорошо шпилит):
http://instead.syscall.ru/downloads/instead-em/project.html

Известные проблемы:
1) не всегда грузятся ogg шки
2) иногда исключение на рестарте
3) save пропадают

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-23 16:27:35


Новая информация по emscripten сборке.
1) Все желающие с Linux могут попробовать собрать себе instead-em сами. Вот скрипт, который у меня собирает все зависимости и сам инстед:
https://github.com/instead-hub/instead/blob/master/contrib/instead-em-build.sh
Конечно, могут быть какие-то косяки, но в целом -- смотря внутрь скрипта не сложно разобраться что происходит.

2) Я вроде выяснил причину нестабильностей. Похоже, это SDL_mixer и Mix_PlayMusic. Если отключить музыку, то все работает стабильно. Если включить - то иногда она просто не играет, а иногда игра крашится при рестарте.

3) С сохранениями не разбирался, но нашел такую статью: http://www.alternativegames.net/blog/porting-to-emscripten/ где это вроде описывается.

4) Есть проблема -- почему то на андроиде не пашет мышка. Такое чувство, что canvas не получает фокуса или что то такое.

Я сейчас хочу прерваться. На самом деле, нужно понять зачем нам это все нужно.
Плюсы -- инстед прям как "настоящий". Аркады можно гонять, и они работают быстро! :)

Минусы -- нужна поддержка webgl, нестабильная музыка.

В целом, мне нравится, но нужно дальше развивать проект. Я пока делаю перерыв. Если есть желающие помочь/поэкспериментировать -- буду рад!

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-23 17:20:20


Еще дополнение. На chromium у меня не упало даже с музыкой. Перезалил обновленную версию. Добавил несколько игр:
http://instead.syscall.ru/downloads/instead-em/project.html

В браузере должен быть включен webgl.

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-24 21:05:07


Еще хорошие новости.
Заработала трекерная музыка в полном объеме!
Обновил версию:

http://instead.syscall.ru/downloads/instead-em/project.html

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

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-25 14:38:30


Обновил.
Сохранение настроек. Добавил игру про кота. :) В целом, все работает.
В git пушнуты изменения (скрипт сборки).

http://instead.syscall.ru/downloads/instead-em/project.html

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-26 11:56:39


Исправил работу с конфигурационным файлом:

http://instead.syscall.ru/downloads/instead-em/project.html

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-27 11:12:20


INSTEAD-EM близок к релизу!

Почти все мои игры в веб варианте здесь:

http://syscall.ru/games/

Если что, все есть в git :)

# Re: INSTEAD на emscripten
Peter(syscall,1) — Peter
2017-07-27 15:18:41


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

http://syscall.ru/games/

# Re: INSTEAD на emscripten
Antokolos(syscall,12) — Peter
2017-07-28 06:55:18


Собрал INSTEAD-EM ещё раз после нашего вчерашнего разговора в чате.
Демо Варвара без музыки (~40MB)
http://nlbproject.com/instead-em/instead-em.html?barbarian_caves_demo_nosound.zip
Демо Варвара с музыкой (~60MB)
http://nlbproject.com/instead-em/instead-em.html?barbarian_caves_demo.zip

Версия с форума в конечном итоге упала с ООМ, поэтому в своём варианте я заменил
-s ALLOW_MEMORY_GROWTH=0
на
-s NO_EXIT_RUNTIME=1 -s ALLOW_MEMORY_GROWTH=1

Падение произошло во время игры в кубики. Попробуйте её найти, это хороший стресс-тест для INSTEAD-EM :)

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

Интересно:
1) Куда реально попадают сохранения? Это же где-то в браузере должно храниться?
2) Какие именно изменения сделаны в "пропатченном Emscripten"? Критично ли это для конечного результата?

# Re: INSTEAD на emscripten
Peter(syscall,1) — Antokolos
2017-07-28 07:10:35


> Интересно:
> 1) Куда реально попадают сохранения? Это же где-то в браузере должно храниться?

В local storage

> 2) Какие именно изменения сделаны в "пропатченном Emscripten"? Критично ли это для конечного результата?

Работа на мобильных устройствах. Странно, но в гит у них это исправлено, а в zip порта sdl2 нет. Я руками заменил файл и дособрал. Если нужно, могу подробно описать что я сделал.

# Re: INSTEAD на emscripten
Antokolos(syscall,12) — Peter
2017-07-28 09:28:04


>Если нужно, могу подробно описать что я сделал.
Да, было бы здорово.

# Re: INSTEAD на emscripten
Peter(syscall,1) — Antokolos
2017-07-28 10:00:52


> Да, было бы здорово.

После сборки у меня в ~/.emscripten_cache и ~/.emscripten_ports лежат собранные либы и сорцы SDL2.
Я зашел в ~/.emscripten_ports/sdl2/SDL2-version_13/src/video/emscripten
И заменил файл SDL_emscriptenevents.c на https://raw.githubusercontent.com/emscripten-ports/SDL2/master/src/video/emscripten/SDL_emscriptenevents.c

После этого стер ~/.emscripten_cache/asm.js/sdl2.bc и пересобрался.

По хорошему нужно просто как то сказать emscripten использовать другой порт поновее, ну или ждать новую версию.