Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Lua para Jogos

4,775 views

Published on

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

Published in: Technology
  • Be the first to comment

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

×