xray-15 icon indicating copy to clipboard operation
xray-15 copied to clipboard

Update LUA

Open andrew-boyarshin opened this issue 9 years ago • 12 comments

RU

Сделал отдельный issue для этой задачи. Сейчас в движке:

Сейчас LuaBind заброшен(последний коммит 2010 года). LuaJIT обновился до 2.0.3. Можно опробовать связку:

Но необходимо сначала diff изменений от GSC в LuaBind и LuaJIT, чтобы знать, что они изменили в оригинальных файлах. Сложное - адаптация старого кода к новому и неизбежный дебаггинг(вида "куда подевалась половина экспортированных классов"). Если перенос пройдет успешно, производительность Lua движка вырастет в разы.

andrew-boyarshin avatar Aug 29 '14 11:08 andrew-boyarshin

Уже присутствует в version_plan.txt. Помимо изменений к коде движка может потребоваться адаптация скриптов из оригинальной игры.

nitrocaster avatar Aug 29 '14 12:08 nitrocaster

Original (29.08.13 20:29 GMT +7)

Я знаю про version_plan. Но лучше завести issue, в котором идет обсуждение путей решения данной проблемы. Пока что пробую приучить LuaBind beta 7(чистый, без правок GSC) к движку. Исправляю ошибки компиляции.

Update (29.08.14 22:19 GMT +7)

Понял, что тупанул, надо было сразу на эту связку. Но новый LuaBind требует Boost поновее, так что сразу обновляю его до самой последней версии. LuaJIT вынесен в E:/dev/luajit. Компилировать его Visual Studio - я не знаю как. Не важно, главное будет записать как билдить Lua модуль. Фактически, я делаю LuaBind и связываю его с остальным движком(обновляю старый код под новый LuaBind).

Update (29.08.14 23:32 GMT +7)

Наконец-то удалось скомпилировать Lua-стэк движка. Еще не интегрировал с остальными частями движка. Ненавижу C++ name mangling! Столько времени угробил на такой пустяк... При обновлении пришлось вырезать memory_allocator, боюсь это обернётся очень плохо... А пока 6 ошибок компиляции всего решения и на сегодня всё. Да, @nitrocaster, пожалуйста пометьте, что я работаю над LuaJIT и LuaBind в version_plan. И ещё: надо не забыть про странный кусок кода в старой имплементации LuaBind, который был связан с добавлением функции в глобальную область видимости...

Update (30.08.14 10:32 GMT +7)

LuaBind beta7 (в X-Ray LuaBind beta 7 RC4):

+* removed functor (use object with call_function() instead)

Блин, надо будет переделывать столько кода...

Update (30.08.14 14:00 GMT +7)

Уезжаю до вечера 31.08. Работал над связкой X-Ray и LuaBind.

Update (01.09.14 01:00 GMT +7)

Продолжил портирование. Часть - успешно(переименование функций, небольшое изменение синтаксических конструкций). Есть и проблемы. В LuaBind были вырезаны некоторые фичи: итерация по property экспортированных классов(временно закоментировал), get_lua_table() пока что не знаю, чем заменить. Но в целом работа идёт.

Update (01.09.14 16:16 GMT +7)

Решил не портировать xrSE - как я понял, это редактор скриптов Lua с возможностью отладки. Там всё слишком плохо - слишком много удаленных функций. В итоге это бесполезно - легче написать новый на C# с NLua. Работаю дальше.

Update (01.09.14 21:55 GMT +7)

Вообщем, во всем решении осталось менее 6 ошибок компиляции. За завтра надеюсь их пофиксить. Я не портировал xrAI и xrSE - слишком запарно, а хочется уже билд. Проблемы - где-то header потерял, где-то пути неверные прописал. Одна серьезная проблема - name mangling в luabind, хотя компилятор один и тот-же. Странно, но думаю разберусь с этим.

Update (02.09.14 23:06 GMT +7)

Продолжил работу. На поверхность всплыли косяки с архитектурой рендеров(или просто я такой), поэтому сделал базовый проект для всех рендеров(xrRender). И ещё не разобрался с name mangling проблемами в luabind.

andrew-boyarshin avatar Aug 29 '14 13:08 andrew-boyarshin

  • Наконец-то удалось скомпилировать Lua часть движка.

Не очень понимаю, о чем идет речь. LuaBind и LuaJIT - это не части движка.

  • При обновлении пришлось вырезать memory_allocator, боюсь это обернётся очень плохо...

Где он находится?

  • странный кусок кода в старой имплементации LuaBind

Какой именно?

nitrocaster avatar Aug 29 '14 21:08 nitrocaster

andrew-boyarshin avatar Aug 30 '14 02:08 andrew-boyarshin

В оригинальном LuaBind помимо luabind_memory.cpp не было нескольких других связанных файлов. X-Ray переопределяет new/delete для сбора статистики и отладки, и изменения в LuaBind сделаны как раз для использования аллокатора движка. Похоже, придется оставить их исходники в репозитории.

nitrocaster avatar Aug 30 '14 07:08 nitrocaster

Да, я это уже предполагал, хотя ещё не копал глубже в эту часть движка.

andrew-boyarshin avatar Aug 30 '14 07:08 andrew-boyarshin

Удалите из списка работающих над портом на LuaJIT 2 и LuaBind 0.9. Я не буду работать над этим, как бы это не было досадно. Не могу, не потяну. Выложу на GitHub LuaBind и инструкции по сборке Lua-стэка движка, там всё хорошо настроено для VS 2013(разные конфигурации - Debug, Release, *.lib Debug, *.lib Release). Причина: страннейшие ошибки по причине ужасной архитектуры решения X-Ray Engine. P.S. Когда будут исходники ЗП - тогда буду работать до посинения.

andrew-boyarshin avatar Sep 03 '14 14:09 andrew-boyarshin

  • P.S. Когда будут исходники ЗП - тогда буду работать до посинения.

Тогда до октября :)

nitrocaster avatar Sep 03 '14 18:09 nitrocaster

Эх

ghost avatar Feb 23 '18 14:02 ghost

А что эх?)

Lua был обновлён. Только тему не закрыли =)

Xottab-DUTY avatar Feb 23 '18 14:02 Xottab-DUTY

@Xottab-DUTY Нет, движок Чистого Неба всё так же на старой версии.

andrew-boyarshin avatar Feb 23 '18 15:02 andrew-boyarshin

@andrew-boyarshin А, блин.. Не заметил, что это репозиторий движка ЧН)

Xottab-DUTY avatar Feb 23 '18 15:02 Xottab-DUTY