Como compartilhar / reutilizar um script Lua para várias entidades?

Estou na fase de codificação de design / esqueleto do meu jogo em C ++ com scripts Lua, mas encontrei um problema de design:

O jogo terá muitas cópias do mesmo tipo de entidades, com comportamento controlado pelo mesmo script. Existe uma maneira simples de compartilhar o script entre entidades do mesmo tipo em um único lua_state? Eu só consegui encontrar essa pergunta duas vezes na Internet; Eu li um feedback misto sobre se é uma boa ideia carregar o mesmo script em diferentes lua_state's, e não um feedback profundo sobre alternativa

É simples e à prova de balas, mas acho que carregar, compilar e armazenar cópias adicionais do mesmo código de bytes com cada instância do mesmo tipo de entidade criada é um trágico desperdício, então eu gostaria de descobrir uma solução mais inteligent

Estas são as duas soluções em que pensei. Eu não sou novo em programação ou conceitos C ou OO, mas ainda estou aprendendo quando se trata de Lua e, especialmente, da API Lua / C. Acho que minhas idéias são sólidas, mas nem tenho certeza de como as implementari

Implement OO no script Lua e faça com que cada entidade seja representada por um objeto Lua; toda a lógica de Lua atuaria no objeto. Isso também teria o benefício (ou o "benefício") de permitir que o ambiente global fosse alterado por qualquer entidade únic

Encapsule cada entidade em seu próprio ambiente usando setfenv e copie referências de todas as funções do espaço global. Pelo que entendi, o ambiente é apenas uma tabela diferente da global padrão, mas observei o setfenv, mas não sei como faria isso.

questionAnswers(1)

yourAnswerToTheQuestion