16 de setembro, 20081 projeto conceitual de jogos saulo souto...

27
16 de Setembro, 2008 1 Projeto Conceitual de Jogos Saulo Souto [email protected] Geber Ramalho [email protected] Desenvolvendo Jogos em J2ME para celulares Aula 1 Introdução à J2ME

Upload: marcela-sabrosa-conceicao

Post on 07-Apr-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 1

Projeto Conceitual de Jogos

Saulo [email protected]

Geber [email protected]

Desenvolvendo Jogos em J2ME para celulares

Aula 1Introdução à J2ME

Page 2: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 2

Sobre quem vos fala...

Meantime Mobile Creations – Fundada em 2003, uma das principais desenvolvedora, publisher e distribuidora de jogos mobile da América Latina Um dos pioneiros mundiais na tecnologia J2ME Várias tecnologias wireless: J2ME, BREW, WAP, SMS e MMS Parceria com diversos fabricantes, publishers e operadoras Produzimos mais de 60 jogos para celulares Atua como publisher no Brasil, com parceria com todas as operadoras

Page 3: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 3

Agenda Principais tecnologias Introdução a J2ME Wireless Game Design Criando nosso Jogo Sugestão de Melhorias Dicas de performance / redução de código

Page 4: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 4

Principais Tecnologias SMS/MMS

– Jogos baseados na troca de mensagens (forca, quiz, penalty, leilões, etc.)

Brew (Binary Runtime Environment for Windows)– Ambiente de execução para chipset Qualcomm– C++ e API definida pela Qualcomm (animações, som, recursos

de rede, etc...)– Principal mercado: EUA

Flash Lite– Versão mais simples do Adobe Flash Player– Plataforma crescente

J2ME– Java otimizado para dispositivos com limitações– Adotado por todos os maiores players do mercado– API’s especificadas pela comunidade JCP– Padrão do mercado

Page 5: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 5

Telefones Java (>650 dispositivos)http://developers.sun.com/techtopics/mobility/device/pub/device/list.do

20 dispositivos por página

Page 6: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 6

Introdução a plataforma J2ME

SERVIDOR

DESKTOP

SMART-CARDS

CELULARES

Page 7: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 7

Arquitetura J2ME

Device Hardware

Host Operating System

Configuration:

Profiles

LibrariesKVM

Page 8: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 8

Universo J2ME Hoje… Java Community Process (JCP) Java Specification Request (JSR)

http://java.sun.com/javame/technology/jcp.jsp

Page 9: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 9

Configurações Uma especificação que define o ambiente de software

para uma família de dispositivos, geralmente:– Os tipos e quantidade de memória disponível– Tipos de processadores e velocidade– Tipo de conexão de rede

Inclui um conjunto básico de classes Java É especificada pela JCP Connected Device Configuration (CDC)

– High end consumer devices Connected, Limited Device Configuration (CLDC)

– Low end consumer devices

Page 10: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 10

CLDC 1.0 CLDC - Connected Limited, Device Configuration

– Dispositivos limitados com poucos recursos– Processador de, no mínimo 8 Mhz– A partir de 160 K de memória heap reservada pra Java– Acesso a rede com pouca largura de banda

Target Devices– Celulares– Two Way Pagers– Personal Organizers– etc.,

Page 11: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 11

Escopo do CLDC Define:

– Linguagem Java e características da VM – I/O– Networking framework– Segurança– Internacionalização

Não define:– Gerenciamento do ciclo de vida da aplicação (instalação,

execução, deleção)– Interface com o usuário– Tratamento de eventos– Interação entre usuário e aplicação (comandos, etc…)

Page 12: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 12

Limitação do CLDC CLDC 1.0 possui algumas limitações:

– Ausência de ponto flutuante – Ausência de Weak References– Ausência de Finalização

Não existe o método finalize() no CLDC– Não possui suporte a JNI.– Não possui a API de Reflection.– Ausência de daemon-threads e thread groups.– Limitação no suporte a Internacionalização

Permite a conversão de byte stream para Unicode e vice-versa

– Limitação no tratamento de Erros Apenas duas classes: java.lang.VirtualMachineError,

java.lang.OutOfMemoryError

Page 13: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 13

Limitação do CLDC CLDC 1.1 adiciona alguns recursos ao CLDC 1.0:

– Adição de ponto flutuante – Adição de Weak Reference– Adição de suporte a nomes de Threads– Memória mínima de 162 para 192 kbytes

Page 14: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 14

Pacotes do CLDC Herdados do J2SE

– java.lang– java.io– java.util

Específicos do CLDC– javax.microedition.io

Page 15: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 15

Profiles Um profile ou “perfil” é uma coleção de API´s em Java

que complementa uma configuração a fim de prover habilidades para uma família de dispositivos

É especificada pela JCP O principal objetivo é garantir a interoperabilidade

entre uma família de dispositivos.

MIDP (Mobile Information Device Profile): Principal e presente na maioria absoluta dos dispositivos– MIDP 1.0– MIDP 2.0– MIDP 3.0 (em breve)

Page 16: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 16

MIDP Mobile Information Device Profile (MIDP). MIDP define:

– Interface com o Usuário– Persistência (usando um modelo simples orientado a

registros)– Networking (estende o Generic Connection framework do

CLDC)– Ciclo de vida da Aplicação– Tratamento de eventos

Requisitos de Hardware (MIDP 1.0)– memória: 128 + 32 KB sobre CLDC.– tela mínima: 96 x 54 – 2 colors.– entrada: teclado, touch screen,...– connectividade: HTTP 1.1

Page 17: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 17

Pacotes do MIDP 1.0MIDP Packages:

–javax.microedition.midletjavax.microedition.midlet.MIDlet

–javax.microedition.lcdui

–javax.microedition.rmsjavax.microedition.rms.RecordStore

Page 18: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 18

Pacotes adicionais do MIDP 2.0MIDP 2.0 Packages:

–javax.microedition.mediajavax.microedition.media.Playerjavax.microedition.media.Control

–javax.microedition.media.controljavax.microedition.media.control.VolumeControl

–javax.microedition.lcdui.game

–javax.microedition.iojavax.microedition.io.PushRegistry

Layer

TiledLayer Sprite

LayerManager

GameCanvas

*

game

Canvas

lcdui

Displayable

Page 19: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 19

O que é um MIDlet É uma aplicação MIDP:

– Possui uma classe Java que estende da classe MIDlet e implementa os seguintes métodos:

startApp() pauseApp() destroyApp()

– Possui um modelo de ciclo de vida similar aos Applets.

Page 20: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 20

O que é um MIDlet (cont.) Gerenciado pelo “Java Application Manager” (JAM)

– Uma aplicação que deve vir acompanhando a implementação do MIDP e que controla a instalação, execução e remoção dos MIDlets

– Provê o ambiente de execução dos MIDlets– Trata todos os erros ocorridos durante a instalação e

execução dos aplicativos sem “derrubar” o dispositivo

Page 21: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 21

Ciclo de vida dos MIDlets

Page 22: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 22

MIDlet Suites e Descritores (JAD) Uma MIDlet Suite é um conjunto de arquivos

empacotados em um arquivo JAR – Uma suite deve possuir pelo menos um MIDlet– JAR contém: Arquivos .class , arquivos de imagem (.png),

manifest, …– MIDLets numa mesma suite podem compartilhar classes

e recursos contidos no JAR JAD (Java Application Descriptor)

– Pequeno arquivo texto que descreve uma Suite– Usado pela JAM para fazer verificações antes de baixar a

Suite– Pode ser usado para guardar propriedades da aplicação

MIDlet-1: AloMundo, , org.cesar.j2me.AloMIDletMIDlet-Name: Alô Mundo!MIDlet-Vendor: C.E.S.A.RMIDlet-Version: 1.0MIDlet-Jar-Size: 7808MIDlet-Jar-URL: HelloExamples.jar

Page 23: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 23

Passos para o desenvolvimento

1 2 3

4 5 6

Page 24: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 24

Ambiente de Desenvolvimento Editor texto + Sun Wireless Toolkit (WTK)

(free)– http://java.sun.com/products/sjwtoolkit/

NetBeans Mobility + WTK (free)– http://www.netbeans.org/products/mobility/

Eclipse + EclipseME + WTK (free)– http://www.eclipse.org/downloads/index.php– http://eclipseme.org/docs/installation.html

SDK´s dos fabricantes (Nokia, Motorola, SonyEricsson, Siemens,…)– http://developer.motorola.com/docstools/sdks/– http://forum.nokia.com/– http://developer.sonyericsson.com/site/global/home/p_home.jsp

Page 25: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 25

Nosso ambiente…

Page 26: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 26

Exercício 1- Criar o famigerado “Alô mundo!”

- Conceitos de Display- Criação e exibição de um High-Level Displayable- Conceitos de adição e tratamento de Comandos

Page 27: 16 de Setembro, 20081 Projeto Conceitual de Jogos Saulo Souto saulo.souto@meantime.com.br@meantime.com.br Geber Ramalho glr@cin.ufpe.br Saulo Souto saulo.souto@meantime.com.br@meantime.com.br

16 de Setembro, 2008 27

Dica: Esteja com a API ao alcance...http://java.sun.com/javame/reference/apis/jsr118/