Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update LUA #7

Open
andrew-boyarshin opened this issue Aug 29, 2014 · 12 comments
Open

Update LUA #7

andrew-boyarshin opened this issue Aug 29, 2014 · 12 comments

Comments

@andrew-boyarshin
Copy link

RU

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

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

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

@nitrocaster
Copy link
Member

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

@andrew-boyarshin
Copy link
Author

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.

@nitrocaster
Copy link
Member

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

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

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

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

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

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

@andrew-boyarshin
Copy link
Author

@nitrocaster
Copy link
Member

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

@andrew-boyarshin
Copy link
Author

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

@andrew-boyarshin
Copy link
Author

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

@nitrocaster
Copy link
Member

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

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

@ghost
Copy link

ghost commented Feb 23, 2018

Эх

@Xottab-DUTY
Copy link
Member

А что эх?)

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

@andrew-boyarshin
Copy link
Author

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

@Xottab-DUTY
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants