Documento: “A Linguagem Lua e suas aplicações em Jogos”
Tutorial elaborado pelos autores de Lua, para demonstrar (no Simpósio Brasileiro de Jogos para Computador e Entretenimento Digital, em 2004 – SBgames) os conceitos básicos da linguagem e como ela pode ser útil para criação de jogos
Estrutura
O tutorial é dividido em 7 seções:
- Seção 1: Introdução
- Seção 2: Linguagens de extensão
- Seção 3: A linguagem Lua
- Seção 4: Uso de Lua em Jogos
- Seção 5: Conclusão
- Seção 6: Agradecimentos
- Seção 7: Referências
Resumo
A seção 1 apresenta estatísticas sobre o uso da linguagem Lua em jogos, e menciona características desejáveis de uma linguagem neste contexto. A seção 2 detalha um pouco mais essas características ao diferenciar entre alguns tipos de extensão (configuração, macros e embutidas), e comenta as vantagens de usá-las, em especial nos jogos.
Já a seção 3 apresenta uma visão geral da linguagem, desde seu histórico, sua sintaxe básica, características principais, versatilidade paradigmática, biblioteca padrão, mecanismos de co-rotinas e API C, sempre dando enfoque à aplicação dentro de jogos.
Em seguida, a seção 4 dá um enfoque maior à API C e sua importância para embutir Lua dentro de outras aplicações (nesse caso, os jogos), com três diferentes exemplos, cada qual colocando Lua num papel diferente dentro da aplicação (no primeiro, como linguagem de configuração; no segundo, como linguagem de extensão; e no terceiro, como linguagem de controle).
Por fim, a seção 5 conclui comentando alguns exemplos de jogos que usaram Lua, e para qual finalidade a linguagem foi escolhida nesses casos. As seções 6 e 7 fazem os agradecimentos e referências, respectivamente.
Comentários
O que você pensaria, num primeiro momento, ao saber que está lendo um documento de quase duas décadas de idade, sobre uma linguagem de programação que segue em desenvolvimento até hoje? Provavelmente pensaria que ele está bastante desatualizado, não é mesmo?
Pois bem, este documento foi publicado em 2004, quando a versão corrente do interpretador Lua ainda era a 5.0. Embora existam alguns detalhes que mudaram, a quase totalidade do que está descrito nele permanece válida.
Isto mostra a solidez da linguagem, que foi projetada desde o princípio para oferecer um “solo comum” mínimo, a partir do qual o programador fará adaptações necessárias para sua aplicação. Isto permite que pouco precise mudar ao longo dos anos. A bem da verdade, este é um documento introdutório, e à medida que se aprofunda no assunto, é esperado que um número maior de diferenças entre as versões seja detectado.
Ainda assim, o disposto no documento corresponde a boa parte do que um programador Lua casual precisa saber, e no presente momento (considerando o modo e o ritmo com que a linguagem tem evoluído) é de se esperar que o conteúdo permaneça igualmente válido por um bom tempo.
Os três pilares da linguagem (tabelas, funções e co-rotinas) são apresentados e exemplificados (embora não haja uma exploração exaustiva), para que se tenha uma dimensão do que pode ser feito em código Lua. Ao mesmo tempo, o documento mostra também um outro lado da linguagem que é a sua implementação e integração com outras aplicações, com uso da API C.
Aqui cabe ressaltar que este documento também explora um pouco a integração com C++, o que faz sentido em um contexto de jogos, onde esse ambiente de desenvolvimento é bastante comum.
Embora o documento não detalhe completamente a linguagem, ele demonstra suas principais características e alguns exemplos de uso que são úteis para despertar o interesse. Também é útil para quem já tem alguma vivência com a linguagem e gostaria de ter ideias para uso da mesma em jogos.
Pontos de Atenção
Na subseção 3.3 (página 4) há um comentário sobre o tipo number não diferenciar entre inteiros e reais. Até a versão 5.2 isto se manteve verdadeiro, no entanto, na versão 5.3 (que é posterior a este documento) passou-se a diferenciar as representações numéricas, de modo que um número é representado por um inteiro se não houver uma parte fracionária.
Na subseção 4.1, há um exemplo de uso da função
lua_open()
para criação de um novo estado Lua. Essa função foi substituída na versão 5.1, pela funçãoluaL_newstate()
.
Conteúdo relacionado
- Glossário – Ambiente
- Glossário – Ambiente Global
- Glossário – API C
- Glossário – Biblioteca padrão
- Glossário – Bloco
- Glossário – Co-rotina
- Glossário – Coletor de lixo
- Glossário – Distribuição padrão
- Glossário – Escopo Léxico
- Glossário – Estado Lua
- Glossário – Fluxo de execução
- Glossário – Metatabela
- Glossário – Pilha virtual
- Glossário – Programa hospedeiro
- Glossário – Tabela
- Glossário – Trecho
- Glossário – Userdata
- Glossário – Valores de primeira classe
- Glossário – Variável global
- Glossário – Variável local