Lua para Jogos

4.739 visualizações

Publicada em

Palestra criada por Sérgio Queiroz para a Campus Party Brasil

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.739
No SlideShare
0
A partir de incorporações
0
Número de incorporações
42
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Lua para Jogos

  1. 1. Descobrindo Lua S´rgio Queiroz de Medeiros e smedeiros@inf.puc-rio.br LabLua Campus Party 2008 S´rgio Queiroz de Medeiros e Descobrindo Lua 1
  2. 2. Lua ◮ Uma linguagem de script: ◮ Robusta; ◮ R´pida; a ◮ Port´vel; a ◮ Linguagem de extens˜o; a ◮ Pequena; ◮ Livre; S´rgio Queiroz de Medeiros e Descobrindo Lua 2
  3. 3. Lua ◮ Alguma semelhan¸a com outras linguagens de script (Perl, c Python, Tcl); ◮ Linguagem de descri¸˜o de dados (anterior a XML); ca ◮ Linguagem de extens˜o extens´ a ıvel: ◮ Enfatiza o desenvolvimento em m´tiplas linguagens u S´rgio Queiroz de Medeiros e Descobrindo Lua 3
  4. 4. Importˆncia a ◮ ´ Unica linguagem criada em um pa´ em desenvolvimento a ıs ganhar proje¸˜o mundial; ca ◮ De outra forma: unica linguagem relevante que n˜o foi ´ a desenvolvida no eixo EUA/Europa/Jap˜o. a ◮ Jap˜o == Ruby a S´rgio Queiroz de Medeiros e Descobrindo Lua 4
  5. 5. Usos de Lua ◮ Especialmente utilizada em jogos; ◮ Uma pesquisa informal feita em 2003 pelo site gamedev.net apontou Lua como a linguagem de script mais utilizada para jogos; S´rgio Queiroz de Medeiros e Descobrindo Lua 5
  6. 6. Lua em Jogos ◮ ”It is easy to see why Lua is rapidly becoming the de facto standard for game scripting.- Artificial Intelligence for Games, Morgan Kaufmann,2006; ◮ ”It’s quite possible that game developers will look back at the 2000s as the decade of Lua- Game Programming Gems 5, Charles River Media, 2005. S´rgio Queiroz de Medeiros e Descobrindo Lua 6
  7. 7. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 7
  8. 8. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 8
  9. 9. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 9
  10. 10. Jogos que Usam Lua S´rgio Queiroz de Medeiros e Descobrindo Lua 10
  11. 11. Mais Aplica¸˜es co ◮ Adobe Lightroom is ’the complete, elegant environment for the art and craft of digital photography from raw capture to creative output’. Over 40% of Adobe Lightroom is written in Lua. Mark Hamburg (Adobe Fellow) S´rgio Queiroz de Medeiros e Descobrindo Lua 11
  12. 12. Mais Aplica¸˜es co S´rgio Queiroz de Medeiros e Descobrindo Lua 12
  13. 13. Mais aplica¸˜es co ◮ Impressoras Olivetti; ◮ P´s-produ¸˜o de filmes; o ca ◮ Monitoramento remoto; ◮ Desenvolvimento Web; S´rgio Queiroz de Medeiros e Descobrindo Lua 13
  14. 14. Raz˜es para usar Lua o ◮ Portabilidade ◮ Simplicidade ◮ Pequeno tamanho ◮ ”Acoplabilidade” ◮ Eficiˆncia e S´rgio Queiroz de Medeiros e Descobrindo Lua 14
  15. 15. Portabilidade ◮ Lua roda em praticamente todas as plataformas conhecidas: ◮ Unix ◮ Windows ◮ Windows CE ◮ Symbian ◮ Palm ◮ PS2 ◮ Escrita em ANSI C ∩ ANSI C++ S´rgio Queiroz de Medeiros e Descobrindo Lua 15
  16. 16. Simplicidade ◮ Somente um tipo num´rio (geralmente double); e ◮ Um unico tipo de estruturas de dados: ´ ◮ Tabelas ◮ Mecanismos ao inv´s de pol´ e ıticas ◮ e.g., orienta¸˜o a objetos; ca S´rgio Queiroz de Medeiros e Descobrindo Lua 16
  17. 17. Pequeno Tamanho ◮ Menos de 200k; ◮ Distribui¸˜o completa cabe (com folgas) em um disquete; ca ◮ N´cleo + Bibliotecas u ◮ N´cleo com menos de 100k; u ◮ Bibliotecas independentes (podem ser removidas). S´rgio Queiroz de Medeiros e Descobrindo Lua 17
  18. 18. Acoplabilidade ◮ Lua ´ uma biblioteca C; e ◮ API simples e bem definida: ◮ modelo de pilha ◮ Biderecional; ◮ Acoplada em: ◮ C/C++ ◮ Java ◮ Fortran, ◮ C# ◮ Perl ◮ Ruby ◮ Ada ◮ etc S´rgio Queiroz de Medeiros e Descobrindo Lua 18
  19. 19. Eficiˆncia e ◮ Benchmarks independentes mostram Lua como uma das mais r´pidas linguagems de script interpretadas com tipagem a dinˆmica; a ◮ Lua n˜o ´ r´pida somente em benchmarks. a e a S´rgio Queiroz de Medeiros e Descobrindo Lua 19
  20. 20. Lua x Ruby S´rgio Queiroz de Medeiros e Descobrindo Lua 20
  21. 21. Lua x Perl S´rgio Queiroz de Medeiros e Descobrindo Lua 21
  22. 22. Lua x PHP S´rgio Queiroz de Medeiros e Descobrindo Lua 22
  23. 23. Lua x Python S´rgio Queiroz de Medeiros e Descobrindo Lua 23
  24. 24. LuaJIT ◮ Compilador Just In Time para Lua; S´rgio Queiroz de Medeiros e Descobrindo Lua 24
  25. 25. Hist´ria de Lua o S´rgio Queiroz de Medeiros e Descobrindo Lua 25
  26. 26. Como tudo come¸ou c ◮ Lua nasceu em 1993, dentro do Tecgraf, na PUC-Rio; ◮ Criadores: ◮ Roberto Ierusalimschy; ◮ Luiz Henrique de Fiqueiredo; ◮ Waldemar Celes. S´rgio Queiroz de Medeiros e Descobrindo Lua 26
  27. 27. O Ambiente ◮ Tecgraf foi criado em 1987; ◮ Laborat´rio de pesquisa e desenvolvimento; o ◮ Pol´ ıtica de reserva de mercado para hardware e software; ◮ Vigorou de 1977 a 1992; ◮ Precisa de alguma coisa? Fa¸a! c S´rgio Queiroz de Medeiros e Descobrindo Lua 27
  28. 28. Constru¸˜o de Interfaces Gr´ficas ca a ◮ 1992: Projeto entre PUC-Rio e PETROBRAS (CENPES); ◮ Interfaces gr´ficas para programas de simula¸˜o. a ca S´rgio Queiroz de Medeiros e Descobrindo Lua 28
  29. 29. DEL - Linguagem para Especifica¸˜o de Di´logos ca a ◮ Descri¸˜o de dados; ca ◮ Defini¸˜o de formul´rio: ca a ◮ Lista de parˆmetros; a ◮ tipo e valores default. S´rgio Queiroz de Medeiros e Descobrindo Lua 29
  30. 30. Limita¸˜es de DEL co ◮ Estruturas de controle; ◮ Predicados; ◮ Necessidade de maior poder de express˜o. a S´rgio Queiroz de Medeiros e Descobrindo Lua 30
  31. 31. PGM - Programa Gr´fico Mestre a ◮ 1993: projeto com a PETROBRAS; ◮ Visualiza¸˜o de perfis geol´gicos (com op¸˜es de ca o co configura¸˜o); ca S´rgio Queiroz de Medeiros e Descobrindo Lua 31
  32. 32. SOL - Simple Object Language ◮ Linguagem para descri¸˜o de objetos; ca ◮ Sintaxe inspirada no BibTeX. S´rgio Queiroz de Medeiros e Descobrindo Lua 32
  33. 33. Programa SOL type @track {x:number, y:number=23, z} type @line {t:@track=@track{x=8}, z:number*} -- create an object ’t1’, of type ’track’ t1 = @track{y=9, x=10, z=quot;hi!quot;} l = @line{t=@track{x=t1.y, y=t1.x}, z=[2,3,4]} S´rgio Queiroz de Medeiros e Descobrindo Lua 33
  34. 34. Limita¸˜es de SOL co ◮ Recursos para constru¸˜o de di´logos; ca a ◮ Mecanismos de programa¸˜o procedural; ca ◮ Mecanismos de abstra¸˜o mais poderosos. ca S´rgio Queiroz de Medeiros e Descobrindo Lua 34
  35. 35. DEL + SOL = ? ◮ DEL e SOL compartilhavam v´rios problemas; a ◮ Achar uma solu¸˜o comum: ca ◮ Roberto Ierusalimschy (PGM) ◮ Luiz Henrique (DEL) ◮ Waldemar Celes (PGM) S´rgio Queiroz de Medeiros e Descobrindo Lua 35
  36. 36. Precisa-se de uma linguagem ◮ Estruturas de controle, sub-rotinas, atribui¸˜o; ca ◮ Capaz de descrever dados facilmente; ◮ Port´vel; a ◮ Converse amigavelmente com C; ◮ Sintaxe f´cil. a S´rgio Queiroz de Medeiros e Descobrindo Lua 36
  37. 37. 1993 ◮ Tcl estava dispon´ ıvel; ◮ Scheme e Lisp tamb´m; e ◮ Python estava nascendo; ◮ Vamos fazer nossa pr´pria linguagem! :-) o S´rgio Queiroz de Medeiros e Descobrindo Lua 37
  38. 38. Adeus, SOL! ◮ SOL estava saindo de cena; ◮ um novo nome foi sugerido... S´rgio Queiroz de Medeiros e Descobrindo Lua 38
  39. 39. Bem-vinda, Lua! S´rgio Queiroz de Medeiros e Descobrindo Lua 39
  40. 40. Um pouco de Lua 1.0 ◮ Similaridades com SOL t1 = @track {x = 10.3, y = 25.9, title = quot;depthquot;} S´rgio Queiroz de Medeiros e Descobrindo Lua 40
  41. 41. Um pouco de Lua 1.0 ◮ Mas bem diferente t1 = @track {x = 10.3, y = 25.9, title = quot;depthquot;} function track (t) if not t.x then t.x = 0.0 end if type (t.x) ~= quot;numberquot; then print (quot;invalid ’x’ valuequot;) end if type (t.y) ~= quot;numberquot; then print (quot;invalid ’y’ valuequot;) end end S´rgio Queiroz de Medeiros e Descobrindo Lua 41
  42. 42. Lua 1.0 ◮ Chamada de 1.0 posteriormente; ◮ “The simplest thing that could possibly work” ◮ tabelas implementadas via listas! ◮ Implementa¸˜o padr˜o: ca a ◮ yacc + lex ◮ m´quina de pilha a ◮ Menos de 6000 linhas de c´digo C. o S´rgio Queiroz de Medeiros e Descobrindo Lua 42
  43. 43. Lua 1.0 ◮ Expectativas: solucionar problemas com PGM e DEL ◮ dispon´ para uso em outros projetos do Tecgraf ıvel ◮ Correspondeu `s expectativas: a ◮ DEL e PGM usaram Lua com sucesso ◮ PGM ainda est´ sendo usado a ◮ Foi um grande sucesso no Tecgraf S´rgio Queiroz de Medeiros e Descobrindo Lua 43
  44. 44. Usando Lua adoidado S´rgio Queiroz de Medeiros e Descobrindo Lua 44
  45. 45. Lua 1.1 ◮ 1994: primeira vers˜o lan¸ada publicamente; a c ◮ V´rios usu´rios reais; a a ◮ Manual de referˆncia; e ◮ Defini¸˜o e documenta¸˜o da API com C; ca ca ◮ Licen¸as para uso comercial negociadas. c S´rgio Queiroz de Medeiros e Descobrindo Lua 45
  46. 46. Ganhando o Mundo ◮ Artigo publicado em 1996 na revista Dr. Dobb’s; ◮ Bret Mogilefsky (LucasArts); ◮ 1998: lan¸amento de Grim Fandango; c A tremendous amount of the game was written in Lua ◮ Mesa redonda na Game Developer’s Conferece (principal evento para desenvolvedores de jogos). S´rgio Queiroz de Medeiros e Descobrindo Lua 46
  47. 47. lua-l ◮ 1997: cria¸˜o da lista de discuss˜o de Lua; ca a ◮ Principal f´rum da linguagem; o ◮ Menos de 10% dos usu´rios s˜o do Brasil; a a ◮ Mais de 40000 mil mensagens. S´rgio Queiroz de Medeiros e Descobrindo Lua 47
  48. 48. Linhas de C´digo com o Tempo o S´rgio Queiroz de Medeiros e Descobrindo Lua 48
  49. 49. Evolu¸˜o ca ◮ ˆ Enfase nos requisitos originais: ◮ ”minimalismo pragm´tico” a ◮ mecanismos mais gerais ◮ ˆnfase em fun¸˜es e co S´rgio Queiroz de Medeiros e Descobrindo Lua 49
  50. 50. Lua atualmente ◮ Site com 4.000 visitas por dia ◮ de mais de 100 pa´ ıses ◮ 14.000 downloads por mˆs e ◮ Lista com mais de 1.400 participantes ◮ Compromisso com estabilidade ◮ Lua 4.0 ficou mais de dois anos sem altera¸˜es co ◮ Lua 5.0 foi lan¸ada em mar¸o de 2003 c c S´rgio Queiroz de Medeiros e Descobrindo Lua 50
  51. 51. Lua Atualmente ◮ Licen¸a atual: MIT c ◮ uso livre, n˜o ”viral” a ◮ Modelo de desenvolvimento centralizado ◮ Participa¸˜o da comunidade: ca ◮ lista ◮ patches para vers˜es alternativas o ◮ LuaForge S´rgio Queiroz de Medeiros e Descobrindo Lua 51
  52. 52. Lua Atualmente ◮ LuaWorkshop: ◮ Encontro da comunidade Lua ◮ 2005: Estados Unidos; ◮ 2006: Holanda; ◮ 2008: Washinghton D.C., Estados Unidos. S´rgio Queiroz de Medeiros e Descobrindo Lua 52
  53. 53. Lua Atualmente ◮ Fiel aos requisitos originais: ◮ Simplicidade; ◮ Portabilidade; ◮ Extensibilidade; ◮ Pequeno tamanho. ◮ Entre as 20 linguagens mais populares (segundo TIOBE). S´rgio Queiroz de Medeiros e Descobrindo Lua 53
  54. 54. Popularidade S´rgio Queiroz de Medeiros e Descobrindo Lua 54
  55. 55. Livros Programming in Lua, 2006 Lua 5.1 Reference Manual, 2006 S´rgio Queiroz de Medeiros e Descobrindo Lua 55
  56. 56. Livros Beginning Programming, 2007 Game Development With Lua, 2005 S´rgio Queiroz de Medeiros e Descobrindo Lua 56
  57. 57. Livros S´rgio Queiroz de Medeiros e Descobrindo Lua 57
  58. 58. Descobrindo mais http://www.lua.org/ S´rgio Queiroz de Medeiros e Descobrindo Lua 58

×