У Lua есть одна возможность - легко перемещать данные между C ++ (или C) и самим собой. По сути, вы просто помещаете данные в стек для связи между ними. Одновременно запустить и запустить несколько сред Lua также довольно просто (если вам нужна эта функциональность). Хотя Lua - это язык для сборки мусора, его легко предотвратить в отношении данных, которые должны храниться в вашем коде C ++. Создание расширяемой системы плагинов должно быть легко с Lua, как только вы заложите основу. Обмен плагинов (в данном случае, скриптов) на вход и выход во время выполнения также довольно тривиален (хотя это может быть верно и для Ruby, я недостаточно знаком с этим, чтобы это знать).
Стоит задуматься над тем, сколько объектно-ориентированных вещей вы хотите, чтобы ваши сценарии могли обрабатывать. Lua использует функции, таблицы, метатаблицы и прототипы для реализации ОО-подобного программирования. Кому-то это нравится, кому-то нет; лично я нашел это интересным для использования, хотя иногда немного неуклюжим. Не используя Ruby, я не могу за это говорить, но вы можете взвесить вашу потребность в поддержке объектов / классов.
Я думаю, что в вашей ситуации вы также должны подумать о том, как быстро вы хотите запустить и запустить свой проект. Как вы и другие заметили, Ruby сложно встроить в C ++, а Lua - нет. Время всегда ценно, и если вы хотите, чтобы что-то работало как можно скорее, лучше всего подойдет Lua.