Criando Jogos 2D com Lua + Corona SDK

Preview:

DESCRIPTION

 

Citation preview

Autor:

Leonardo Dalmina

Fonte das Imagens:

Walter Luh

Tópicos abordados

Introdução à linguagem Lua;

Introdução à engine Corona SDK;

Uso da library physics;

Cuidados com o gerenciamento da memória;

Tópicos abordados

Organização dos dados para ganhar performance;

Bibliografias recomendadas.

Introdução à linguagem Lua

nil

boolean

number

string

function

table

userdata

Sintaxe estilo JavaScript;

Tipagem dinâmica;

Case-sensitive;

Objetos são tabelas.

Pequeno tamanho de código

Lua vs Outras Linguagens

Objetos em Lua são Tabelas

Métodos de Objeto

Sem a abreviação ":"

Arrays baseados em 1

Introdução à engine Corona SDK

Introdução à engine Corona SDK

Introdução à engine Corona SDK

O que é Corona?

Aumento de Produtividade

Multiplataforma

Alta Performance

#1 na maioria das Stores (Lojas)

Não apenas para Jogos

O equilíbro certo

Arquitetura

Corona Enterprise

Mais de 500 APIs

Alta variedade de Recursos

Simulador próprio

Uso simplificado de Bibliotecas

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Exemplo de Implementação

Adicionando mais caixas

Adicionando mais caixas

Adicionando mais caixas

Adicionando mais caixas

Invertendo a Gravidade

Gravidade normal:

Gravidade invertida:

Eventos

Listeners

Tipos de Eventos

enterFrame

system

orientation

accelerometer

GPS

heading

touch

timer

Touch + Multitouch

Múltiplos tamanhos de Tela

Escala de Conteúdo

Escala de Conteúdo

Retina Display

Customizando a Imagem de Retina

API da Imagem de Retina

Uso da library "physics"

Possui muitos recursos;

Facilmente parametrizável;

Representa muito bem a física do ambiente;

Não é recomendada para jogos que não simulem uma física real.

Cuidados com o gerenciamento da memória

Criar rotinas de limpeza para objetos obsoletos;

Ao excluir permanentemente um objeto, sempre incluir além de object:removeSelf(), a atribuição object = nil;

Verificar a consistência dos objetos antes de utilizá-los.

Organização dos dados para ganhar performance

Controlar o nível de complexidade dos algoritmos implementados:

Evitando rotinas exponenciais (n², n³);

Convertendo estas rotinas de modo a deixar a complexidade linear (n log n).

Organização dos dados para ganhar performance

Alterar a estrutura de armazenamento e acesso dos dados para atingir a complexidade linear:

Evitando o uso de listas ou vetores de grande tamanho;

Alocando estes dados em mapas (maps), utilizando o sistema de chave e valor (key, value) através da implementação de tabelas (tables).

Compilações Diárias

Oportunidades de Carreira

Exemplo de Sucesso

Bibliografia Recomendada Linguagem Lua:

http://www.amazon.com/Programming-Third-Edition-Roberto-Ierusalimschy/dp/859037985X/

API do SDK:

http://docs.coronalabs.com/api/index.html

Plugins:

http://docs.coronalabs.com/plugin/index.html

Bibliografia Recomendada Guias:

http://docs.coronalabs.com/guide/index.html

Tutoriais (Corona University):

http://coronalabs.com/resources/tutorials/getting-started-with-corona/

Blog (Indispensável):

http://coronalabs.com/blog/

Referências Entrevista com Robert Nay (Criador do Bubble Ball):

https://coronalabs.com/blog/2011/01/18/robert-nay-talks-bubble-ball-before-the-3-million-downloads/

Apresentação original do Walter Luh:

http://www.slideshare.net/CoronaLabs/corona-sdk-demo-at-gmic-sv-october-19-2012-14873279

Documentação Oficial do Corona SDK:

http://docs.coronalabs.com/