Multi-core Parallelization in Clojure - a Case Study
Mobile Game Case: Bboy in Heaven´s Mission
1.
2. Overview da apresentação
• Mercado de jogos wireless
• Jogos de sucesso
• Bboy : desenvolvendo jogos wireless
– Criação
– Tecnologia
– Lidando com as limitações
– Usabilidade e curva de aprendizado
– Analisando o processo
– Ferramentas
– Lições aprendidas
– Bboy em ação
3. Mercado de jogos Wireless no mundo
• Já está acontecendo:
Mercado global de jogos / 2001: $28b
(Jogos wireless: $.0007b)
$30b em 2006 (Jogoswireless $3.6b)
Ovum Research:
em 2006 jogos wireless games serão $4.4b
Strategy Analytics:
$1b+ em 2003, $7b+ em 2008
IDC:
7.0 milhões de jogadores wireless em 2002/3
71.2 milhões de jogadores wireless em 2007
4. Mercado de jogos Wireless no mundo
• Ainda há espaço para os pequenos
• Grandes nomes ainda estão tímidos
• Baixo custo de desenvolvimento
• Possibilidades de distribuição
• Média de preço : 3 US dólares
• No Brasil:
• Mão de obra abundante
• Criatividade abundante
• Ferramentas gratuitas
5. Sucesso mundo a fora : Simplicidade!
• Divertir é a palavra chave
• Um bom jogo não é feito somente de :
– Bons gráficos
– Engines 3D de última geração
– Milhares de fases diferentes
• Um bom jogo é feito de:
– Uma boa e bem contada história
– Personagens cativantes
– Desafios balanceados
– Fatores “viciantes”
– Os fatores do primeiro item
6. Sucesso mundo a fora: Exemplos
• Jogos que ganham pela simplicidade
• Pontos fortes: Simplicidade e facilidade de uso
• 3D não é garantia de sucesso.
• 3D = custos mais altos, poucos aparelhos dão suporte
7. Sucessos Mundo a fora: Hits!
• Qualidade acima da média
Limonade tycoon Townsmen Ancient Empires
– Pontos fortes: Complexidade aliada facilidade
8. Mercado no brasil: Ainda engatinhando
• Como comprar? Site das operadoras
• Preço médio : 10 reais (!!!) jogos perfeitos para baixar esse custo :
jogos 2D
• Pouca variedade
9. Bboy : Desenvolvendo jogos Wireless no
Brasil
• INdT em parceira com
o C.E.S.A.R
• Conceito
• Você é Bboy, um anjo querendo
provar seu valor e recebe a missão
de resgatar almas capturadas em 3
planos no mundo terreno. Sua
promoção para arcanjo depende
do seu desempenho!
• Referências:
Incredible machines
Lost Vikings
Lemmings
Krusty fun house
Marsupilami
10. Bboy: Equipe
• Lerê: 9 pessoas ( 7 full time ) x 3 meses
• Objetivo inicial: análise de processo
• Equipe baseada no processo RUP
Engenheiros de software: Mauro Vieira, Telmo Mota, Jorge Ae
Designer gráfico: Francisco Spencer
Game Designer: Marcelo Eduardo
Gerente de projeto: Neildes vieira / Aldenor Martins
Analistas de negócios: Ivan Patriota e Hilmer Neri
11. Bboy: Ferramentas
• Eclipse Ide : experiência da equipe com ferramenta foi crucial.
FREEWARE
• Nokia Developer Suite: Emuladores e conversores. FREEWARE
• WTK 1.4 ( wireless Toolkit da sun ). FREEWARE
• Ant & Antenna : build . FREEWARE
• Proguard: Obfuscador . FREEWARE
• WinCVS. FREEWARE
• Desenvolvimento proprio : Editor de cenário
12. Bboy : Processo de Criação
GAME DESIGN :
Criação do conceito , personagens e
ambientação
1 e 2 semana : brainstorm para criação das
regras macros.
Gera : Documento de Game Design
Cobre : Necessidades Técnicas e artisticas do
jogo
Opcional : protótipo em game Maker
Atenção : às restrições.
13. Bboy: Personagens
Diabinhos : antagonista, tentam evitar que bboy salve as almas
Almas : Cegas e bobas morrem de medo dos diabinhos
Foco: Busca por personagens engraçados e carismáticos. Sempre.
14. Bboy: Fluxo simplificado do jogo
O jogador deve vencer 15 fases salvando o máximo que puder das 10 almas em cada uma delas.
Detalhes que fazem a diferença: Cheat code pra abrir fases. Finais diferentes para 100% e menos que isso
Não existe limite de vidas. O obstáculo mair do jogador é o próprio quebra-cabeça de cada fase.
Tela de entrada Seleção de fases
Fases 1 a 5 fases 6 a 10 fase 11 a 15
Fim 1
Fim 2
O jogo mescla ação com puzzle
Bboy deve correr a fase atrás de itens, protegendo sempre as almas, até que possa
montar o caminho perfeito para que elas possam escapar.
15. Bboy: Ambientação
Criar ambientes diferentes torna a experiência menos repetitiva e envolve
pouco trabalho do time de programadores. Utilizando os 3 ambientes
chegamos ao total de 15 fases.
29 tiles de 16px
20 tiles de 16px
23 tiles de 16px
16. Bboy: Evolução gráfica da ambientação
Foco no alvo: Divertido, carismático, estilo cartoon, não agressivo.
17. Bboy: Level design
Criar fases com progressivo aumento da dificuldade.
Não desanimar o usuário com fases impossíveis.
Tarefa demorada e complicada. Perdura por todo projeto
Ferramenta própria criada : Level Editor em Dhtml ( 2 dias )
18. Bboy: Level design
Gerar fases com progressivo aumento da dificuldade.
Não desanimar o usuário com fases impossíveis.
Tarefa demorada e complicada. Perdura por todo projeto
Ferramenta propria gerada : Level Editor em Dhtml ( 2 dias )
20. Bboy: Recursos de imagens
Grande quantidade de imagens necessárias:
Observar limite ( geralmente da operadora )
21. Bboy: O processo
• Desenvolver jogo pra celular pede um processo enxuto, rápido e flexivel.
• RUP se mostrou inadequado pro jogo
• Sendo que em diversos momentos o projeto chegou a parar por culpa do
processo, e os documentos do RUP foram pouco utilizados.
• Deve se ter em mente: Um processo simples, que se adeque a qualquer tipo de
jogo, pois cada estilo tem suas particularidades e vão pedir documentos
diferentes.
• No final um processo customizado mesclando alguns documentos do RUP e
algumas filosofias do XP, foi criado e utilizado.
• Comunicação é extremamente importante no projeto. Toda equipe deve
conhecer bem o jogo e tudo que se almeja com o produto.
• Mais sobre processo desenvolvimento na Revista: MundoJava
22. Bboy: Tecnologia
• Escolha da plataforma: Symbian ou Java?
– Por quê java?
Grande expertise do C.E.S.A.R
Prazo Curto e orçamento limitado
Foco: analisar o processo de desenvolvimento jogos.
Facilidade de desenvolvimento
Possibilidade de porte para outros aparelhos
Desvantagens :
Performance
Limitaçoes : sons, efeitos etc.
Memória controlada pelo garbageCollector
23. Bboy: Lidando com as limitações
• Desenvolver pra celular é lidar com severas limitações:
1. Memória
2. Armazenamento
3. Processamento
4. GUI
24. Bboy: Lidando com as limitações
• Memória ( execução )
Heap varia de 128kb até 10 megas
Imagens coloridas : 2 Bytes/cor *W*H+68 bytes
Ex: imagem 128x128 ( ~5kb em disco ) : 32kb no heap!!!
Solução: Reutilização de imagens, DirectUtils da nokia.
25. Bboy: Lidando com as limitações
Armazenamento ( em java )
Somente RMS. Limite pequeno em vários aparelhos ( 20kb )
Não pode salvar no sistema de arquivos
Média de tamanho de .Jars = 64kb
Processamento
Grande variação do poder de processamento
Series 60 : processadores ARM 100 mhz : sem suporte a ponto
flutuante
Bboy : Grande complexidade de redesenho, e grande numero de
entidades na tela : ir até o limite da kvm
26. Bboy: Lidando com as limitações
GUI – Interface Gráfica
Diferentes celulares podem ter diferentes implementações
Ex: 7650 3650 e Ngage
30. Bboy: Lições aprendidas
• Se Precisa de alta perfomance, bluetooth ou outro recurso do
sistema na serie 60 utilize C++ nativo
• GC não funciona corretamente. Efeturar controle severo da
memória : memory status
• Teste no aparelho final sempre : 7650 tem RAM do que o 3650
• Utilizar Menos Orientação a objeto : menos classes, evitar
packages
• Evitar uso de intefaces, metodos sincronizados e Strings
• Cacheie a maior parte dos elementos
31. Bboy: Lições aprendidas
• Quando utilizar jogos com tiles evitar utilizar todo o canvas
• Utilize tiles maior que 16x16
• Otimize seu metodo draw para evitar flicks
• Midis consomem muita memória
• Tons com oitavas baixas ( 0 ) não tocam com volume satisfatório
• Evitar uso desnecessário de imagens
• Controlar a equipe e gerentes para não se repetir :
• “ Ah seria ótimo se ele pudesse voar...”