Lua estasprogramlingvo dinamika malpeza, refleksiva, ordonema kaj iom funkciema. La plej grava celo de ĉi tiu programlingvo estas ebligi ke aliaj programoj uzu ĝin kiel etendilon. Nuntempe, multajkomputilludoj uzas Lua-n, pro ĝia facileco, por difini dinamikajn aferojn de la ludo, ekzemple: artefaritan intelekton, poziciojn de ludantoj, ilojn en scenejoj, kaj tiel plu. Alia programlingvo, ekz.C++ pro ĝia rapideco, estas uzata por grafikaj funkcioj kaj la baza logiko de la ludo.
Lua estis kreita en1993 enBrazilo de Roberto Ierusalimschy, Luiz Henrique de Figueiredo kaj Waldemar Celes. Ĝia nomo signifasluno en la portugala.
Lua estasplurparadigma programlingvo. Pro tio, la programisto povas uzi la stilon, kiu plej taŭgas en ĉia situacio. Malgraŭ tio, Lua estas tre malgranda kaj malpeza. Ĝi ebligas krei multajn konceptojn de aliaj programlingvoj per pli simplaj kaj bazaj konceptoj. Ekzemple, oni povas kreiklasojn,nomspacojn kaj listojn perasociaj tabeloj (pli specife,hakettabeloj), Luae nomataj «tabeloj» (angletables). La asociaj tabeloj simple ligas parojn da datumoj, tiel ke unu estas la indico (aŭŝlosilo) por trovi la alian. Kiam oni uzas entjerojn kiel ŝlosilojn, tiuj tabeloj aspektas kaj uzeblas samkiel la ordinarajtabeloj de la tradiciajĝeneralcelaj programlingvoj (respondaj alvektoroj, matricoj ktp).
Krome, Lua havas esprimilon nomatan meta-tabeloj (meta-tables) por ŝanĝi specifajn kondutojn de tabeloj. Ekzemple, oni povas agordi ke, se iu datumo ne troveblas en la tabelo, Lua serĉu ĝin per la sama ŝlosilo en alia tabelo. Tio estas la bazo por realigi klas-heredadon en Lua.
Eblas mencii ke Lua estis influita de programlingvoj kielScheme kajIcon, kaj influisIo-n. La kreo de Lua okazis precipe pro la bezono havi simplan lingvon por agordi pli kompleksajn programojn kaj samtempe aldoni iom da logiko (algoritmojn) al la agordodosieroj (kompare kun statikaj agordlingvoj, kiuj nur entenas datumojn kaj povas komputi nenion). Pro la facileco kaj dinamikeco de Lua, ĝi ofte estas komparata kunPython.