Primeiras aulas do curso Lua: do zero ao jogo

Lua: do zero ao jogo

Introdução a linguagem - Introdução

Olá, pessoal. Tudo bem? Eu sou o Fábio Pimentel, instrutor aqui da Alura. E nesse curso eu vou te treinar com a linguagem de programação “Lua” usando um frame voltado para jogos, que é o “Love2D”. Um dos frames mais conhecidos por quem trabalha com o “Lua” com esse propósito de games.

A gente vai ter uma base da programação “Lua” para a gente conseguir chegar no desafio da construção do nosso jogo. Para você ter uma ideia, a gente vai criar um remake de um jogo conhecido, que é o “14Bis Contra Meteoros”. Vamos dar uma olhada de como é que ele ficará.

Então a minha ideia é fazer um jogo de uma nave que se movimenta pelos direcionais, e a gente tem ali um tiro representando esse poder do nosso avião aqui para o jogo.

Então espero que você goste do desafio. A gente vai fazer todo o código junto, não vai ter nenhum código que você vá pegar pronto, a gente vai construir isso bem junto. E aí a gente vai se ver em muitos materiais ao longo desse treinamento.

Então, espero que você curta, e espero te ver aqui dentro da nossa plataforma. Até lá.

Introdução a linguagem - Características gerais da linguagem

Olá, pessoal. Bem-vindo ao nosso curso de “Lua” aqui na Alura. Nesse curso, a gente vai trabalhar com essa linguagem, mas antes disso, a gente precisa entender algumas características desta linguagem.

É importante a gente saber que o “Lua” foi criado aqui no Brasil, especificamente num instituto chamado “Tecgraf”, que fica dentro da PUC-Rio. E é uma das pouquíssimas linguagens que faz sucesso a nível mundial, fugindo ali desse eixo de Europa, Estados Unidos.

E se você analisar o uso dessa linguagem vai perceber, por exemplo, o propósito completamente geral que ela tem. Você vê aplicações como [...], que serve para (snifar) rede, entender o tráfego do que está acontecendo na sua rede. Aplicações com jogos, Angry Birds, World of Warcraft, aplicação de manipulação de imagem com Adobe Photoshop Lightroom. O próprio servidor Apache com código “Lua” ali dentro, permitindo que você consiga manipular o próprio programa.

E diversos outros cenários e indústrias. A própria indústria automobilística com a Mercedes Benz, já declarou que em 6 modelos de carro deles utiliza o código “Lua”, utiliza a linguagem “Lua”. [01:05] Então a gente precisa entender, quais são as características de “Lua” que favorecem isso, esse propósito tão geral que a gente está conseguindo ver aqui, agora.

A gente vai começar aqui pela primeira característica de “Lua” marcante, que é a parte da linguagem ser dinâmica. Quando a gente trabalha em uma linguagem dinâmica, a gente poderia separar essa característica basicamente em três etapas para o dinamismo de uma linguagem.

A primeira delas é a interpretação. A interpretação dinâmica de uma linguagem basicamente diz que você consegue inserir bloco de código em execução, você consegue passar para comandos específicos da linguagem, blocos de código.

Além disso, a gente tem a tipagem dinâmica. Quando a gente diz tipagem dinâmica, significa que as variáveis vão reconhecer o tipo dela em execução, e a gente consegue, num programa, trocar o tipo dessa variável ali naquela rotina, numa determinada execução que a gente venha a ter. Isso difere de linguagens estáticas.

Além disso, linguagens dinâmicas, normalmente a gente tem gerenciamento automático de memória, o famoso garbage collector. É importante você sabe que quando a gente categoria uma linguagem como dinâmica, isso normalmente vem acompanhado de uma comparação. A gente fala: “Uma linguagem é mais dinâmica do que outra”. Isso significa o quê? Que de repente, algumas das características que eu listei aqui podem estar presentes ou não. No caso de “Lua”, todas essas três características que eu relatei aqui para você, elas estão presentes de maneira bem forte na linguagem.

Além da característica de ser dinâmica, “Lua” também é uma linguagem de script. Em quais scripts, essencialmente, significam que elas foram projetadas para manipular programas escritos em outras linguagens. Isso tem muito ver com aquele cenário ali que eu mostrei para vocês, cenário de jogos, cenário de [...] que podem ser escritos em linguagens que de repente não são “Lua”.

Além disso, a gente tem uma rapidez extremamente relevante em “Lua”. Hoje é até utilizado ali como comparação, uma linguagem mais rápida ou menos rápida do que “Lua”. Quando a gente está desenvolvendo aplicações, ainda mais comerciais, a gente tem que se preocupar com a licença desse produto.

No caso de “Lua” se a gente vai usar essa linguagem, não tem, não precisa ver esse tipo de preocupação, que é uma linguagem extremamente livre, aberta, você pode usar onde você bem entender.

Além disso, é uma linguagem extremamente portátil. Você consegue executar e criar código “Lua” em ambiente Mac, Windows, Linux e qualquer outra plataforma. É uma linguagem que a gente tem poderes ali para embutir ela, ela é embutível. Isso significa que basicamente se uma plataforma consegue executar código C, ela também consegue executar código “Lua”. Isso dá poderes, por exemplo, para você executar código “Lua” no Android. Por que isso? O Android tem uma biblioteca chamada NDK, que permite você executar códigos C, C++. Se você consegue executar código C e C++, você automaticamente consegue executar código “Lua” também. Isso é bastante poderoso.

Se você analisar o “Lua”, vai verificar que o “Lua” é extremamente leve, é muito pequeno. O código “Lua”, essencialmente, a biblioteca “Lua”, compactada, dá aproximadamente em 297kb, isso facilita um monte para que alguém consiga integrar esse código com o programa já criado.

Outra coisa importante é a simplicidade que o “Lua” provê. Para você ter noção, “Lua” só tem uma única estrutura de dados. Embora seja a única, é extremamente poderosa, como a gente vai estudar ao longo do curso. [04:33] E ela não se preocupa, a gente provê, por exemplo, mecanismo de orientação objeto por padrão. Tem alguns mecanismos para que a gente consiga chegar nesse paradigma. Então esse paradigma de orientação a objetos, funcional, e por aí vai.

Então é uma linguagem essencialmente muito simples. Agora que a gente já tem uma noção das características da linguagem, é importante a gente começar a programar para de fato a gente chegar no nosso propósito do curso, que é montar o nosso jogo.

Então nos próximos vídeos a gente vai chegando nesse propósito. Então vamos para o próximo vídeo de forma que a gente consiga já executar código “Lua” na nossa máquina. Então vamos preparar o nosso ambiente. Até lá.

Introdução a linguagem - Instalando o interpretador

Olá, pessoal. Tudo bom? Agora a gente já sabe as características principais do “Lua” e aonde é que a gente aplica essa linguagem, vamos dar uma olhada em como é que a gente começa a programar.

Antes disso a gente precisa entender onde é que a gente encontra esse material. Existe um site da linguagem, que é o “lua.org”. Lá você vai encontrar toda a documentação específica de “Lua”. Inclusive existe ali uma área em português, que você pode ter inclusive acesso a alguns papers famosos aí dos criadores de “Lua”.

Só que já te adianto que essa documentação em português, ela é muito reduzida em relação à documentação em inglês. Mas vamos lá, né? Para a gente ter acesso à “Lua”, a primeira coisa que a gente precisa ter é o interpretador na máquina. Para a gente ter o interpretador na máquina, a gente precisa buildar esse interpretador localmente. Existe essa opção, ou trabalhar com algumas IDS que já tenha o interpretador embutido.

No meu caso aqui, eu vou trabalhar com o interpretador aqui na minha própria máquina. Então eu vou copiar é esse comando, “CURL”, que vai permitir eu trazer, esse código fonte de “Lua”. Então você percebe que é bem reduzido, o código-fonte do “Lua” comprido num “tar.gz" é basicamente 296kb, e aí eu vou executar um comando, que é o meu “tar zxf”, passando ali “Lua 53.4” com “tar.gz”. Então isso aqui vai descomprimir esse arquivo.

Feito isso, se fizer um LS, existe um diretório “Lua”. Então está aqui dentro todo o código-fonte dos criadores de “Lua”. Então só abrir aqui o “src”, dar um “LS”, tem lá todo o código implementado, isso dá aproximadamente vinte mil linhas de código, vinte e quatro, algo nesse sentido. Então está aqui.

O que eu preciso fazer? Eu preciso montar esse interpretador. Como qualquer projeto “C”, para você montar esse projeto, ou um projeto, a gente usa o comando “make”, que é a ferramenta de build do “C”. Então eu vou fazer exatamente o seguinte. Deixa só eu sair desse diretório, voltar para a raiz do meu projeto “Lua”, e vou fazer aqui o “make”.

Então no caso do Mac, como a própria página sugere, “se for Mac, usa make mac osx test”, se for Linux, “make Linux test”. Então eu vou fazer aqui “Make Mac osx test”. Feito isso, ele está executando. [02:32] Se você está usando Windows, depois a gente vai te mostrar como é que funciona esse mesmo processo no Linux, de você montar um interpretador. Mas por enquanto eu vou focar nesses dois caras aqui.

Bom, o “Lua” foi montado, foi buildado, que é o jargão que normalmente a gente usa. Ele foi montado aonde? Se eu abrir aqui de novo o SRC, eu vou ver que existe um executável “Lua”. Então isso daqui sugere que se eu fizer, executa a “Lua”, ele entra no modo interativo da linguagem. Então eu poderia vir aqui e executar comandos “Luas”. Por exemplo, o primeiro comando aí, o famoso print. Então eu vou colocar aqui um simples “Olá, mundo”. Ele imprime “Olá, mundo” na próxima linha. Poderia definir uma variável? “Igual a 1, print A”. Está ali, nada grandioso. Vou fechar o interpretador, e esse interpretador, obviamente, está específico ali nesse diretório, nesse caminho, que é basicamente, dentro do usuário Caelum, a gente está com o diretório “Lua” e esse “src”. Então a gente teria que toda vez ficar acessando esse cara.

Uma das opções que a gente tem para evitar ter que entrar nesse diretório ou referenciar esse interpretador toda vez através desse caminho, é jogar para variável de ambiente do meu sistema esse diretório da “Lua”. Então o que eu vou fazer? Eu vou abrir aqui, no caso de um ambiente “Units”, o Mac tem esse ambiente, eu vou criar aqui, na verdade acessar, porque já foi definido, estou acessando aqui o meu “.best profile”, que são as variáveis de ambientes relacionados a esse usuário.

Então no caso aqui, específico, eu vou inserir o seguinte comando. Eu vou exportar lá no “path” o comando associado a esse diretório. Então no caminho do “path” o nosso “lua-5.3.4/src”. Poderia colocar o caminho completo aqui, “users caelum”, e por aí vai. Então aqui ele vai procurar, procura aí o diretório “lua 53.4” dentro do diretório “src”, tudo o que está ali, executável, está na variável de ambiente.

Então deixa eu salvar esse cara, “WQ” para isso, e eu quero executar, agora, “Lua” a partir de qualquer diretório. Se eu der um “PWD”, que é o comando para printar onde eu estou, perceba que eu não estou dentro daquele diretório que eu usei para buildar o “Lua”.

Então, se eu fizer o “lua –V”, também não foi. Então aconteceu alguma coisa não muito interessante. O “~” está para cima, ele deveria estar em baixo.

Vou abrir outra janela e fazer “lua –V”, e está ali na minha variável de ambiente. Perceba que eu não estou mais no diretório.

Então isso é o necessário para que a gente comece a escrever código “Lua”. Para a gente sair desse modo de interpretação, já que eu poderia fazer “Lua” aqui direto, ele, de novo, abria lá aquele modo interativo onde a gente imprime o nosso “Olá”, eu quero trabalhar com um “arquivo.lua”, que é o código-fonte que a gente vai começar a produzir ao longo do treinamento.

Então eu vou fazer o seguinte. Eu vou abrir o meu editor de texto preferido, que vai ser o meu “Atom”, vou mandar ele salvar já o novo arquivo. Eu vou colocar aqui no documento “Fábio Pimentel”, diretório “Lua”, eu vou colocar “olá.lua”. Salvar isso. Está ali dentro, vou fazer um print. “print olá”, vou salvar, e agora eu quero executar isso.

Então vamos sair aqui desse modo de interpretação, vou dar um clear no terminal, eu estou no diretório raiz, eu preciso entrar no documento “Fábio Pimentel”, diretório “Lua”. Então tudo o que eu fizer vai ficar aqui dentro.

Como é que eu faço para interpretar esse arquivo? Eu faço “Lua” e o nome do arquivo. Quando eu faço isso, ele vai interpretar as linhas desse documento, desse “font”, realmente vai executando linha a linha. Tudo bem?

Então o nosso primeiro exercício, o nosso primeiro passo, é exatamente esse: você construir esse ambiente “Lua” para que você comece com esse estudo aí junto a mim. Tudo bem?

Então te vejo já no próximo vídeo para destrinchar os tipos básicos, e por aí vai. Então vamos lá.

Sobre o curso Lua: do zero ao jogo

O curso Lua: do zero ao jogo possui 184 minutos de vídeos, em um total de 66 atividades. Gostou? Conheça nossos outros cursos de Jogos em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Jogos acessando integralmente esse e outros cursos, comece hoje!

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1124 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana