36
Introdução à Programação em Lua para criação de addons em World of Warcraft

Introdução à Programação em Lua para criação de addons …iue1002/material/basico/luawow01.pdf · • para o desenvolvedor do jogo • para o jogador • Portabilidade •

  • Upload
    vuduong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Introdução à Programação em Lua

para criação de addons em World of Warcraft

•  uma linguagem de programação interpretada •  programação •  compilação X interpretação

•  Todo tipo de aplicação •  Nicho em jogos

"63% of the main Lightroom-team authored code is Lua", Troy Gaul, Adobe

•  Ginga •  middleware padrão brasileiro para TV digital

•  VLC media player •  set-top boxes: Verizon (FiOS TV), Active-

TV, VUDU

•  Wireshark •  analisador de protocolos

•  Snort •  intrusion detection and prevention system

•  nmap •  rastreador de redes para segurança

•  firmware para impressoras (Olivetti e Oce), teclados (Logitech) e cameras (Canon)

•  biblioteca para GIS (INPE), monitoramento remoto (Omnitronix), pós-produção de filmes (Digital Fusion, eyeon), servidores Web (RealTimeLogic), dispositivos de segurança de redes (Cisco), LuaTeX, etc.

•  "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.

•  como funciona um jogo como o WoW •  clientes e servidores de jogos •  uso de várias linguagens de programação

•  onde entra a programação em Lua? •  para o desenvolvedor do jogo •  para o jogador

•  Portabilidade •  Simplicidade •  Pequeno tamanho •  “Acoplabilidade” (embedding)

•  scripting •  Eficiência

•  Roda em praticamente todas as plataformas que já ouvimos falar •  Unix, Windows, Windows CE, Symbian,

BREW, hardware dedicado, Palm, PSP, etc. •  Escrita em ANSI C ∩ ANSI C++

•  evita #ifdefs •  evita pontos obscuros do padrão

•  Núcleo é praticamente uma aplicação free-standing

•  Menos de 200K •  Distribuição completa com menos de

210K •  Núcleo + bibliotecas

•  núcleo com menos de 100K •  bibliotecas independentes (e removíveis)

•  uma única implementação principal, com diversas distribuições

•  stand alone x embutida em algum programa

•  para Windows, Lua for Windows vem se firmando como principal instalação

•  para Linux, maioria das distribuições oferecem pacotes prontos •  e.g., lua5.1 para Debian/Ubuntu

•  quatro maneiras de executar um "programa"

$ lua -e "print(2^0.5)"!

$ lua nome-do-arquivo!

$ lua!> print(2^0.5)!

$ lua!> dofile("nome-do-arquivo")!

•  http://luaforwindows.luaforge.net/ •  (ou navegando a partir de www.lua.org)

•  instalar •  nessa aula, vamos fazer alguns exercícios

com Lua, para depois entrar em sua interação com o WoW

> print(“alo alo”)!alo alo!> print(2+3*5)!17!> print(2^0.5) !1.4142135623731!> print(math.pi) !3.1415926535898 !

•  usadas para guardar valores •  atribuições: = •  diferentes das variáveis da álgebra!

> pontos = 4!> print (pontos + 2)!6!

> pontos = pontos + 1!> print (pontos)!7!

•  variáveis podem armazenar vários tipos de valores

> pontos = 5!> mensagem = “Muito bom total de pontos!” !> print (mensagem, pontos)!Muito bom total de pontos! 5!

•  podemos descobrir o tipo de um valor armazenado com type()

•  concatenação com ..

> print (“Voce tem “.. pontos .. “ pontos”)!

> pontosLuiz = 5!> pontosAna = 10!> msg = “parabens!”)!> print (pontosLuiz < pontosAna)!true!> print (pontosLuiz < msg)!stdin:1: attempt to compare number with string!stack traceback:!

!stdin:1: in main chunk!![C]: ?!

valores não comparáveis!

== < > <= >= ~=

> function parabens ()!>> print (“muito muito muito bem!”)!>> end!> parabens()!muito muito muito bem!!> function parabens (ganhador)!>> print (“muito muito muito bem, “ ..!>> ganhador .. “!”)!>> end!> parabens("Ana")!muito muito muito bem, Ana!!> !

interpretador esperando final da construção!

> function parabens ()!>> for i = 1, 10 do print (“mto bem!”)!>> end!> parabens()!mto bem!!mto bem!!mto bem!!mto bem!!mto bem!!mto bem!!mto bem!!mto bem!!mto bem!!mto bem!!

> function parabens (pontos, jogador)!>> !>> if pontos > 10 then!>> print (“parabens!”)!>> else print (“vc pode melhorar!”)!>> end!>> end!> parabens(5)!

•  função para imprimir o maior entre dois •  função para imprimir X vezes o

“parabens”

function add (a)! local sum = 0! for i = 1, #a do sum = sum + a[i] end! return sum!end!

print(add({10, 20, 30.5, -9.8}))

function add (a)! local sum = 0! for i = 1, #a do sum = sum + a[i] end! return sum!end!

print(add({10, 20, 30.5, -9.8}))

tamanho do array