Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.10.2016, 12:10
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Адекватный аналог CrossBridge для JS?

Проблема, объективно вытекающая из миграции AS3->JS.

Для каждой новой игры мы получали сишную библиотеку, с помощью CrossBridge (http://crossbridge.io/) паковали ее в swc-контейнер, который дальше включали в проект. Этот контейнер имел методы, которые торчали наружу и за которые его можно было дергать, а внутри контейнера был соответствующий класс, описывающий взаимосвязь этих методов с методами сишной библиотеки. Для простоты понимания - эта библиотека предназначена для генерации игровых данных и включает в себя 80-100 файлов, общий размер примерно 400к, около 12к строк кода. Сама библиотека используется для разработки и отладки. В продакшн-версии игра работает с сервером.

Теперь мне надо найти аналогичное решение для JS. Посмотрел Emscripten (http://kripken.github.io/emscripten-site/index.html), но что-то мне не показалось, что это то, что нужно. Нет, вероятно, с помощью Emscripten решить задачу можно, но нет ли способа попроще?

В принципе, я рассматривал вариант оставить все как есть, компилировать в swc, делать на его основе swf, цеплять к браузеру и лазить в него из JS, но что-то мне кажется флеш тут явно лишний.

Ни у кого не было опыта решения аналогичных задач?

Добавлено через 23 минуты
Кстати, нашел еще Native Client:
https://developer.chrome.com/native-client

Кто-нибудь пробовал использовать?

Старый 05.10.2016, 17:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
https://github.com/node-ffi/node-ffi - это работает через libffi (я не уверен, что это поддерживается в Виндовсе). Т.е. эти обвязки немного ограничены в том, что они могут делать, но, с другой стороны, это позволяет работать с библиотеками на Си из ж.скрипта. Опять же, только в Ноде, но, если для тестов, то другого и не нужно, наверное... или нужно?
__________________
Hell is the possibility of sanity

Старый 06.10.2016, 18:31
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я остановился на Native Client.
Внешне выглядит именно так, как я и хотел - сишная программа упаковывается внутрь плагина как в контейнер, при этом есть возможность передавать в него вызовы со стороны js и по листенеру получать результаты работы кода внутри плагина.

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

Работает только в хроме, но этого достаточно.

Старый 06.10.2016, 20:21
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А собирать нужно именно на Питоне?
Вобщем, все билд системы очень плохие, но если выбирать из плохого не самое плохое, то SCons - вполне подходит для таких целей. WAF - этo типа "улучшеный" клон SCons, но... ну вобщем это больное место. Я могу много плохого про них рассказать.
Из интересных (но опять же, плохих) вариантов: tup, но это на Си + чуть-чуть Луа. Плохо, но зато очень быстро.

А по поводу НаКла... и вообще подхода. Я понимаю, что лезу с наставлениями, но не проще ли было дать разработчикам примитивный сервер имитирующий настоящий? Если сервер не работает на "любимой" (я так понимаю, что Виндовс, иначе таких проблем не возникло бы?) операционной системе разработчика - то всегда можно спаковать его в минимальный ВМ (типа бизибокса) и дать разработчикам Вагрант файл, например.
__________________
Hell is the possibility of sanity

Старый 07.10.2016, 12:00
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 5  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
А по поводу НаКла... и вообще подхода. Я понимаю, что лезу с наставлениями, но не проще ли было дать разработчикам примитивный сервер имитирующий настоящий?
Спасибо, Кэп.
Я пытаюсь продавить этот подход уже два года, но это абсолютно не реально.
Конечно, работа с тестовым сервером была бы идеальной.
Но порядок разработки тут установился принципиально другой.

Скажем так (чтобы не выглядело как выбалтывание секретов), игра на си существует в варианте без какого-либо сервера. Мы создаем на ее основе вэб-версию и уже потом, когда разработан демо-клиент, работающий с тестовыми данными, для него сторонней организацией пишется сервер. Тестовые же данные, необходимые для разработки клиента и его тестирования, находятся как раз внутри сишной библиотеки.

Выглядит немного диковато, согласен.

Старый 07.10.2016, 13:28
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, в такой ситуации я бы сделал следующее:
1. SWIG + обвязки для Питона для сишной библиотеки (это при наличии нормальных ашек просто генерируется и ничего писать не нужно).
2. На Питоне пишется сервер с использованием чего-то типа SimpleHTTPServer - это примерно занимет один файл на 200-300 строчек.

Выгода в том, что на стороне клиента не будет разницы между тестовым и рабочим кодом. Ну и еще плюсы в том, что если подозревеать код сервера, то его легко отладить теми же GDB / PDB. НаКл выполняется в сендбоксе куда так просто не подобраться (для него нужен свой отладчик). Ну и он как бы живет очень полноценной и активной жизнью, общается с хостом и т.д.
__________________
Hell is the possibility of sanity

Старый 07.10.2016, 17:17
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 7  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Да, в этом смысл есть.
В свое время я подумывал над тем, чтобы каким-то образом превращать сишную библиотеку в вэбсервер. Но в сторону питона точно не смотрел.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:22.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.