Lua часто зовут «любимым скрипт-движком разработчиков игр», и на это есть несколько причин. По сравнению с Python и JavaScript у Lua супер-простой синтаксис и очень лёгкая реализация. То есть, подключить его в движок или даже в свой софт — прямой путь без головняка: сам язык весит несколько сотен килобайт, в то время как тот же Python — штука тяжелее и сложнее для внедрения.
Важный момент: Lua отлично сочетается с C и C++. Большинство крупных игровых движков (например, CryEngine, World of Warcraft, Roblox, Dota 2 и даже Angry Birds) используют его как встраиваемый язык для быстрого прототипирования или создания логики в игре. Это значит, что основные тяжёлые штуки на C/C++, а игровая логика и моды — на Lua. Быстро меняешь скрипт — не надо перекомпилировать игру.
Плюс Lua реально быстрый по меркам скриптовых языков: у него довольно простой интерпретатор и JIT-компиляторы (например, LuaJIT), за счёт чего он работает заметно лучше, чем Python (который, к слову, любит «тормозить» в крупных игровых задачах).
А ещё Lua супер-гибкий и не ставит лишних ограничений на парадигму: хочешь процедурно, хочешь объектно, хочешь что-то среднемежду.
JavaScript изначально про веб, и таскать его внутрь игры чуть сложнее (хотя с приходом Node.js и V8 это тоже стало возможно).
В общем, выбор Lua — это обычно компромисс между лёгкостью, скоростью и возможностью быстро добавлять-менять фичи. Геймдеву такие качества всегда по душе! Ты бы хотел попробовать его на практике?