И объявлять что-то глобальное в модулях — это плохо, потому что загаживает пространство имён, может коллидировать и путать тебя. Делай локальные таблички с функциями и возвращай, реквайрнешь модуль ровно в том месте где тебе надо, используешь функции из конкретного места, а ссылка на него потом соберётся мусорщиком и не будет мешаться.
Я не могу догнать, как тогда луаджит юзают в геймдеве если там любое обращение к функциям из другого файла - это хеш таблица. Как не крути, но в хорошей игре очень много вызовов lua происходит и каждый вызов по сути сопровождается дрочью хеш таблиц
Всё очень просто. Игровая логика как правило не требует дикой производительности. Дикая производительность в геймдеве требуется для: 1. Перегонки кучи данных на видяху 2. Рендеринга (+отсечения невидимого всякие) 3. Часть матана, если он нужен в данной конкретной игре
Во-первых, в определённых местах никто не мешает делать массивы. Во-вторых, проблемой становится не хеш таблица, а именно сборщик мусора, если ты переразмечаешь память. Поиск по хешу — гораздо более быстр чем разметка и удаление табличек без необходимости, например, чем грешат куча разработчиков.