Projeto de Jogos para Dispositivos Móveis Gutenberg Neto gutenberg@fuze.cc
Apresentação Graduado em Ciência da Computação UFPB Mestrado em Informática UFPB IA em Jogos Eletrônicos 6 anos de experiência com programação e pesquisa em sistemas distribuídos e de alta complexidade C, C++, Objective-C, Java... Sócio/Desenvolvedor Fuze 3 anos de experiência no desenvolvimento de aplicativos móveis Objective-C 3 anos de experiência em desenvolvimento comercial de jogos programação e game design 20+ anos de experiência como gamer :-)
Projetos Anteriores
The Fish Dies in the End (2011/2012) Desenvolvimento independente Lançamento original Abril/2011 Lançamento posterior (Fuze) Janeiro/2012 1º Lugar App Store BR (+100.000 downloads)
Luiza no Canadá (2012) Jogo baseado no meme da Luiza no Canadá http://luiza.fuze.cc Desenvolvido em 16 horas Primeiro lançamento da Fuze Destaque em mídia nacional TV Record (Hoje em Dia) Folha de S. Paulo Estadão... ~1.000.000 de plays
Sobre o Curso
Objetivo Conceitos relacionados ao desenvolvimento de jogos Conceitos gerais Jogos 2D Jogos em dispositivos móveis Utilização de ferramenta Construct 2 Foco prático Aplicação de conhecimento Criação de jogos
Avaliação A nota final da disciplina será composta por dois componentes 30% - Participação em aula 70% - Projeto final Desenvolvimento de jogo em grupo
Projeto Final Desenvolvimento de um jogo com o Construct 2 Detalhes: Projeto em grupo Tema livre Podem ser utilizadas imagens e sons encontrados na web Haverá duas apresentações 08/03 Apresentação simples de 10 minutos com explicação do game design, ideia e concepção do jogo, expectativas para o desenvolvimento... 22/03 Entrega final, apresentação de 20 minutos com detalhamento sobre o processo de desenvolvimento (e dificuldades encontradas) e demonstração do jogo
Antes de começarmos...
Um pouco mais sobre a turma Quantos costumam jogar video games? Quantos possuem interesse em desenvolver jogos? Alguém já desenvolveu algum jogo?
Algumas estatísticas
Jogos em dispositivos móveis Representam a categoria mais popular de apps Responsáveis por mais de 80% da receita gerada por dispositivos móveis em 2012 Em 2013, os 10 apps mais rentáveis da App Store foram todos jogos, na Google Play, 9 entre os 10 mais rentáveis foram jogos Em média, usuários de smartphones passam 32% do tempo de utilização do dispositivo em jogos 64% dos usuários de smartphones acessam pelo menos um jogo diariamente Entre os usuários que pagam por algum app móvel, 93% pagam por jogos Espera-se que a indústria de jogos móveis alcance US$54 bilhões em 2015
Público Média de idade 28 anos Média de idade (jogos sociais) 39 anos 53% mulheres x 47% homens
Conceitos
O que é um jogo?
O que é um jogo? Definição muito difícil Atividade estruturada, executada por diversão ou prazer Sistema no qual os jogadores envolvem-se em um conflito artificial, definida por regras, que determina um resultado quantificável Katie Salen e Eric Zimmerman Atividade entre dois ou mais tomadores de decisão independentes que procuram atingir os seus objetivos em um contexto de limitação Clark Abt Forma de arte na qual os jogadores tomam decisões, a fim de gerir os recursos através de elementos de jogo na busca de um objetivo Greg Costikyan Uma série de escolhas interessantes Sid Meier
Jogos Eletrônicos Existem desde a década de 1960 Spacewar! (1962) Originalmente com gráficos monocromáticos extremamente simples (ou apenas texto) Popularizaram-se com os arcades a partir da década de 1970 Asteroids Space Invaders Pac-Man
Jogos Eletrônicos Nos arcades, cada sessão de jogo é controlada com o uso de moedas ou fichas Necessário haver alta rotatividade de jogadores para que os jogos deem lucro Jogos simples Fácil aprendizado Rápidos Sessões com duração medida em minutos (ou até segundos!)
Jogos Eletrônicos A partir da década de 1980, popularizam-se os consoles e PCs como maneiras de jogar video games Sessões passam a durar mais tempo Não há necessidade de rotatividade de jogadores Jogos ficam mais complexos Histórias Personagens mais bem elaborados Sessões de jogo medidas em horas Corrida por gráficos cada vez mais realistas
Jogos Eletrônicos Consoles portáteis e dispositivos móveis marcaram um retorno a jogos no estilo arcade Jogabilidade mais simples Sessões de jogo mais rápidas Gráficos também simplificados Inicialmente por limitações tecnológicas Posteriormente, por adequação aos estilos de jogos favorecidos nessas plataformas
Gêneros Jogos eletrônicos podem ser divididos em diversos gêneros Cada gênero define um estilo de jogabilidade Muitas vezes carrega expectativa de estilo gráfico, controles, cenário, etc. Muitos jogos pertencem a múltiplos gêneros
Ação Jogos que desafiam os reflexos e coordenação motora do jogador Exigem pensamento rápido Muitas vezes possuem alguma forma de combate Subgêneros Ação-aventura jogos que também possuem um componente de resolução de problemas, coleta e utilização de itens, etc. (e.g., Prince of Persia, Tomb Raider) Stealth (espionagem) focados em rotas sorrateiras, evitando inimigos (e.g., Metal Gear, Splinter Cell) Luta focados em batalhas em arenas de luta entre dois ou mais oponentes (e.g., Street Fighter, Tekken) Beat em up batalhas sequenciais contra diversos inimigos em sequência, ao longo de caminhos pré-definidos (e.g., Double Dragon, Streets of Rage)
Ação
Aventura Jogos que se baseiam mais na resolução de problemas e enigmas, coleta e utilização de itens, desvendar de mistérios Subgêneros Aventura em texto nos primórdios dos jogos eletrônicos, os jogos de aventura pioneiros não possuíam gráficos, com descrições de cenários e história inteiramente textuais, e utilização de comandos de teclado para controle por parte do jogador (e.g., Colossal Cave Adventure, Zork) Point-and-click jogos de apontar e clicar, muito populares nas décadas de 1980 e 1990, passaram a possuir gráficos e o jogador utilizava o mouse para interagir com o jogo (e.g., Monkey Island, Day of the Tentacle)
Aventura
Tiro Baseados em atirar projéteis diversos em inimigos, assim como jogos de ação, exigem reflexos e resposta rápida dos jogadores Normalmente divididos de acordo com a visão da câmera Subgêneros First person shooter (Tiro em primeira pessoa) câmera em primeira pessoa, dando a perspectiva direta do personagem, representam tradicionalmente os jogos mais populares para consoles e PCs (e.g., Half-Life, Doom) Third person shooter (Tiro em terceira pessoa) câmera por trás do personagem, dando uma visão mais impessoal, mas oferecendo melhor perspectiva do ambiente (e.g., Grand Theft Auto, Gears of War) Shoot em up jogos de tiro tradicionais na época de arcades, normalmente com visão 2D do topo ou lateral, onde é necessário atirar e matar inúmeros inimigos por vez, ao mesmo tempo em que desvia de vários projéteis (e.g., Contra, Space Invaders)
Tiro
Plataforma Jogos onde o protagonista deve percorrer um cenário, correndo e pulando entre diversas plataformas, desviando de obstáculos e inimigos variados Durante a década de 1980, representava o gênero mais popular entre os video games Subgêneros Plataforma 2D jogo de plataforma com gráficos bidimensionais, normalmente com visão lateral,também chamados sidescrollers (e.g., Super Mario Bros., Sonic) Plataforma 3D jogo de plataforma, com gráficos tridimensionais, adiciona elemento de controle de câmera e cenários mais complexos (e.g., Super Mario 64, Crash Bandicoot)
Plataforma
Estratégia Jogos baseados em pensamento e planejamento, muitas vezes envolvem coleta e gerenciamento de recursos, pesquisa de tecnologia, recrutamento de unidades, etc. Costumam ter câmera no topo, provendo uma visão geral do ambiente para o jogador Subgêneros Real-time strategy (Estratégia em tempo real) todos os jogadores executam as ações ao mesmo tempo, exige reflexos e capacidade de rápida tomada e execução de decisões (e.g., Starcraft, Warcraft) Turn-based strategy (Estratégia baseada em turnos) jogadores executam as ações um por vez, ganha quem tiver melhor capacidade de tomar decisões e bolar estratégias a longo e curto prazo (e.g., Civilization, X-Com)
Estratégia
RPG Baseados em RPGs de caneta e papel (e.g., D&D) Focados em desenvolvimento de personagem, evolução de atributos e habilidades, escolhas diversas, etc. Subgêneros RPG de único jogador jogos voltados a contar uma história, onde o jogador controla um personagem em um mundo povoado por NPCs (personagens não-jogáveis), resolvendo missões diversas e ganhando experiência (e.g., Final Fantasy, Fallout) MMORPG RPG em um mundo persistente com múltiplos jogadores (muitas vezes centenas ou milhares), cada jogador segue sua história individual, que é geralmente ligada a uma história maior, envolvendo facções ou grupos diversos (e.g., World of Warcraft, Ultima Online)
RPG
Simulação Jogos que buscam simular de maneira detalhada uma atividade qualquer de forma a conciliar da melhor maneira possível o realismo e qualidade da simulação com a diversão necessária a um jogo de sucesso Subgêneros Construção e gerenciamento jogos que simulam comunidades ou projetos diversos que o jogador deve gerenciar com recursos limitados (e.g., SimCity) Simulador de vida o jogador deve controlar uma ou mais formas de vida artificial, lidando com seus desejos e necessidades e gerenciando sua evolução ao longo do tempo (e.g., The Sims, Spore) Simulador de esporte permite ao jogador vivenciar a experiência de um esporte, controlando equipes ou participantes individuais (e.g., FIFA, Pro Evolution Soccer)
Simulação
Puzzle (Quebra-cabeça) Focados na solução de um quebra-cabeça qualquer (e.g., Tetris, Candy Crush Saga) Exigem várias habilidades do jogador, como lógica, reconhecimento de padrões, etc. Muitas vezes mais abstratos, não costumam possuir personagens ou história
Puzzle (Quebra-cabeça)
Jogos Sociais Jogos com fortes componentes sociais (e.g., FarmVille, SongPop) Costumam utilizar os amigos ou rede de contatos do jogador Cooperação Bônus diversos Vidas extras Mais tempo de jogo Geralmente integrados a redes sociais Normalmente gratuitos e casuais Voltados a um público não-tradicional dos jogos eletrônicos Não representam exatamente um gênero Existem jogos sociais de estratégia, puzzle, etc.
Jogos Sociais
Jogos Sérios Jogo criado com propósito além do entretenimento Educação Informação Treinamento Publicidade... Ao fazer o jogador se engajar com o jogo, faz com que o aprendizado ou informação que se queira passar seja absorvido mais facilmente Mercado em crescimento constante US$1,5 bilhão anuais Expectativa acima de US$2 bi para 2017 Em boa parte por conta dos dispositivos móveis Também não são exatamente um gênero
Desenvolvimento
Desenvolvimento O processo de desenvolvimento de jogos é muitas vezes bem mais complicado do que outras categorias de software Engenharia + Arte Não basta desenvolver um produto tecnicamente competente Divertido Interessante Capaz de prender o jogador Muita iteração
Papéis Em uma equipe de desenvolvimento Arte Áudio Game Design Produção Programação Especialização em equipes maiores Level Design Programação de IA...
Papéis No nosso caso Simplificação de papéis Utilização de ferramenta para desenvolvimento rápido Construct 2 Aproveitamento de assets Foco em aplicação de conceitos de desenvolvimento
Game Design Ato de decidir o funcionamento de um jogo Gênero Mecânicas Narrativa Personagens Inimigos/Obstáculos Ações Cenários/Níveis Monetização...
Gênero Em qual (ou quais) gênero(s) o jogo se encaixa? Como serão aplicados os componentes fundamentais do gênero nesse jogo específico? O jogo trará alguma novidade ou inovação dentro do gênero ou será mais tradicional?
Mecânicas Quais são as regras que definem a jogabilidade? De que maneira será estruturada a jogabilidade? Em turnos Em tempo real Podem haver vários jogadores em uma mesma partida? Como eles interagem entre si? Cooperação Disputa De que maneira o jogador se comunica com o jogo e como o jogo dará uma resposta ao jogador? Entrada/Saída O jogo possui um fim ou condição de vitória? Como o jogador chega a esse ponto?
Narrativa O jogo possui uma narrativa? Como essa história será contada para o jogador? De que maneira a narrativa será integrada à jogabilidade?
Personagens O jogo possui personagens bem definidos? Quais são esses personagens? Características Personalidade Habilidades Como haverá a comunicação do jogador com cada personagem? Personagens controlados pelo jogador NPCs
Inimigos/Obstáculos Quais são os inimigos ou obstáculos que o jogador irá encontrar durante o jogo? Que desafio cada um vai proporcionar ao jogador? No caso de inimigos, como será o seu comportamento?
Ações Que ações poderão ser executadas pelo jogador? Pular Atacar Correr Agachar... Como cada ação deverá ser utilizada no decorrer do jogo?
Cenários/Níveis De que maneira será dividido o jogo? Níveis Cenários... Haverá algum tema unindo os cenários (e.g., mundos de Super Mario)? Como se dará a progressão no jogo? E a dificuldade?
Monetização Relativamente novo na indústria de jogos Antigamente, não havia muitas opções, jogos em geral eram criados para serem vendidos por um preço único Hoje em dia há diversas opções Preço fixo Free-to-play (F2P) Microtransações DLC (Downloadable Content) O esquema de monetização terá efeito profundo no design do jogo Um jogo F2P não deve ser projetado da mesma maneira que um jogo pago
O que faz um jogo ser bom? Não há fórmula para criar um bom jogo É preciso conhecer e jogar video games Algumas boas características Desafio Idealmente o jogo deve oferecer desafio crescente ao jogador, mas sem nunca ser injusto Progressão O jogador deve se sentir em constante evolução à medida em que passa mais tempo com o jogo Inovação Não é preciso (e muitas vezes nem recomendado) ser inteiramente inovador, mas um toque de inovação ajuda
O que faz um jogo ser bom? Algumas boas características (cont.) Polish Deve ser bem trabalhado, com transições e animações fluidas, gráficos apropriados, jogabilidade refinada Expectativa O jogo deve causar uma boa expectativa no jogador em relação ao que há de vir (novos níveis, inimigos, recursos), deixando o mesmo na iminência de ser surpreendido positivamente Fantasia Jogos são muitas vezes utilizados como uma forma de escapismo e devem permitir ao jogador explorar mundos, situações e pontos de vista aos quais não teria acesso de outras maneiras
O que faz um jogo ser bom? Alguma outra característica desejável?
O que faz um jogo ser bom? É difícil prever o que os jogadores desejam Mais do mesmo? Jogos/conceitos revolucionários? Jogos de alto orçamento, produzidos por grandes equipes muitas vezes são fracassos de vendas Jogos independentes, produzidos por equipes pequenas (ou mesmo por um único desenvolvedor) podem se tornar grandes sucessos Exemplo recente: Flappy Bird
O que faz um jogo ser bom? Existe algum segredo para se tornar um bom desenvolvedor de jogos? Prática > Teoria A melhor maneira de evoluir é praticar sempre Desenvolver jogos constantemente Protótipos Game jams Mods Clones (para aprendizado!)...
Pergunta Alguém já possui alguma ideia para um jogo? Conceito Gênero Jogabilidade
Jogos 2D
Jogos 2D Jogos limitados a duas dimensões Durante um longo tempo o carro-chefe da indústria
Perspectivas Top-down Visão de cima Principais gêneros Ação/Aventura Corrida RPG Simulação
Perspectivas Visão lateral Principais gêneros Luta Plataforma Shoot em up
Jogos 2D 1990s - Decadência Jogos 3D Doom e seus filhos N64, PSX Morte do 2D? 2000s - Ressurgimento Mobile Indies Distribuição digital Jogos sociais
Jogos 2D Por que desenvolver jogos 2D? Aprendizado Rapidez Tempo Simplicidade Uma ordem de magnitude mais simples! Equipes menores Base para 3D
Elementos Básicos Engine Código/Lógica Input (Entrada) Sprites Tiles Outros Áudio IA UI...
Sprites Imagens que fazem parte do jogo Geralmente referem-se a imagens que serão animadas/movimentadas, ou terão algum tipo de interação Personagem principal Inimigos Obstáculos
Tiles Geralmente utilizados como elementos do cenário/imagens de fundo Estáticos Não possuem interação ou animação
Construct 2
Construct 2 Ferramenta para criação de jogos 2D Ferramenta visual Abstração de código Game Loop Display Atualização de estado... Utiliza lógica de programação Eventos Customização de comportamentos Loop de condicionais
Construct 2 Gratuito (com limitações) HTML5 Jogos multiplataforma Interface Drag and Drop Livre de Código Programação via eventos Comportamentos padrão (Behaviors) Ex: Plataforma Suporte a plugins Homepage: http://www.scirra.com/construct2
Construct 2
Construct 2
Recursos Download (versão r158.2): http://bit.ly/construct2r1582 Tutoriais: http://www.scirra.com/tutorials/ Guia para iniciantes: http://bit.ly/iniciantesc2 Expressões e Operadores: http://bit.ly/expressoesc2 Manual (em inglês): http://bit.ly/manualc2 Sprite Pack: http://bit.ly/c2spritepack Scirra Arcade: http://www.scirra.com/arcade
Criação de um novo projeto Projeto vazio Projetos configurados Mobile Facebook Windows... Templates Plataforma Tiro Corrida... Exemplos Iluminação Efeitos...
Layouts Telas do jogo Levels Menus... Layout Size Tamanho total da tela Window Size Tamanho da janela de jogo O que pode ser visto pelo jogador
Layouts O que significa ter um Layout Size maior do que o Window Size? E com o mesmo tamanho?
Layouts O que significa ter um Layout Size maior do que o Window Size? E com o mesmo tamanho? Um layout maior indica a existência de conteúdo fora da vista do jogador Scrolling pode ser utilizado para que o jogador eventualmente avance de posição e visualize o restante do layout Com o mesmo tamanho, obrigatoriamente não há scrolling, a visão do jogador ocupa todo o espaço do layout
Layouts Contêm os componentes do jogo Para inserir um componente Clique duplo no layout Botão direito -> Insert new object Exemplos de componentes Sprites Tiled Backgrounds Texto Objetos de Entrada...
Layouts Vamos adicionar alguns componentes Sprites (Ex: http://bit.ly/sprite1c2 ) Tiled Background (Ex: http://bit.ly/bgtile1c2 ) Editor de Imagem
Layouts Diferenças entre Sprites e Tiled Backgrounds Tiled Backgrounds não possuem animação Ao aumentar o tamanho do Tiled Background, a imagem se repete Alguns atributos Name Position Size Opacity Visibility UID
Tipos de Objeto e Instâncias Tipo de objeto Classe de objeto, indicando as características principais que os objetos daquela classe vão possuir (imagem, animação, behaviors, etc.) Criado ao inserir um novo objeto no Construct 2 Instância Representação individual de um tipo de objeto Todas as instâncias compartilham das características do tipo de objeto No jogo, instâncias comportam-se individualmente
Tipos de Objeto e Instâncias Na imagem, há dois tipos de objeto Jogador (Uma instância) Monstro (Oito instâncias) Todas as instâncias possuem a mesma imagem, animação, regras de comportamento, entre outros Durante a partida, comportam-se de maneira autônoma Se uma instância morrer, as outras continuam no jogo
Tipos de Objeto e Instâncias Para criar novos tipos de objeto Inserir novo objeto Para criar novas instâncias Copiar e colar um objeto Duplicar um objeto Arrastar da janela de objetos para o layout
HandsOn Crie um projeto com três diferentes tipos de objeto Tipo 1 (Tiled Background): Uma instância Tipo 2 (Sprite): Duas instâncias Tipo 3 (Sprite): Três instâncias Todas as instâncias devem estar visíveis na janela do jogo Nos tipos com mais de uma instância, as instâncias devem ter tamanho e opacidade diferentes Insira um texto com seu nome no meio da janela de jogo
HandsOn Exemplo de solução http://bit.ly/c2handson1
Tipos de Objeto e Instâncias Em um jogo como Super Mario, quais são alguns dos tipos de objeto que podemos identificar?
Tipos de Objeto e Instâncias Em um jogo como Super Mario, quais são alguns dos tipos de objeto que podemos identificar? Mario Goomba Tartaruga Nuvem...
Variáveis de Instância Variáveis associadas a cada instância de uma classe Cada instância possui diferentes cópias da mesma variável Valor individual Ex: Vida de inimigos Atributos: Name Type Initial value
Variáveis de Instância Possíveis tipos de variáveis no Construct 2 Boolean Valor booleano true / false Número Valor númerico inteiro ou decimal Text Valor textual
HandsOn Adicione uma variável de instância de cada tipo aos sprites criados no exercício anterior
HandsOn Exemplo de solução http://bit.ly/c2handson2
Variáveis de Instância Em um jogo como Super Mario, quais são algumas das variáveis de instância que o Mario poderia ter?
Variáveis de Instância Em um jogo como Super Mario, quais são algumas das variáveis de instância que o Mario poderia ter? Super : Boolean Power-up : Number VelocidadeX : Number VelocidadeY : Number...
Propriedades de Tipos de Objeto Imagens Animações Behaviors Variáveis de instância Eventos...
Propriedades de Instâncias Posição Ângulo Tamanho Transparência Valores de variáveis de instância...
Layers Camadas de componentes Melhor organização do projeto Background Interface do Usuário Inimigos...
Layers Janela de Layers Nome Identificação do layer Índice Maiores índices desenhados por cima Ordem Z Visível/Invisível Visibilidade do layer (e componentes) Trancado/Destrancado Editável ou não Indicação de layer ativo Layer onde são inseridos componentes
HandsOn Adicione dois novos layers ao projeto do HandsOn anterior Adicione ao menos uma instância a cada um dos layers
HandsOn Exemplo de solução http://bit.ly/c2handson3
Behaviors Comportamentos e características padrão providos pelo Construct 2 Podem ser customizados através de atributos Buscam cobrir algumas das funções mais comuns em jogos 2D
Exemplos de Behaviors 8-Direction Movimento em oito direções Jogos top-down Controlado pelo jogador Platform Movimento de jogos plataforma Andar para os lados Pular Jogos side-scrolling
Exemplos de Behaviors ScrollTo Faz a câmera seguir o objeto Bound to Layout Garante que o objeto não poderá deixar a área do jogo Destroy Outside Layout Caso o objeto deixe a área do jogo, é destruído Solid... Economia de memória Deixa o objeto sólido Impassável
HandsOn Crie um novo projeto Faça um esboço de jogo plataforma Um personagem principal Comportamento padrão de jogos plataforma Pelo menos três plataformas separadas por espaços vazios Acessíveis com o pulo do personagem Compostas de sprites diferentes Pelo menos uma plataforma deve conter um obstáculo Pelo menos uma das plataformas deve estar fora da janela de jogo inicial Acessível por scrolling Scroll deve acompanhar o personagem principal Nomeie os tipos de objeto
HandsOn Exemplo de solução http://bit.ly/c2handson4
Eventos Execução de ações de acordo com determinadas condições Análogo a condicionais (programação) Event sheet Lista de eventos Uma lista por layout Eventos avaliados pela ordem de listagem Uma vez a cada tick (frame do jogo)
Eventos
Eventos Event sheet é um loop 1. WHILE (JogoRodando) 2. IF (CONDIÇÃO1) 3. AÇÕES 4. IF (CONDIÇÃO2) 5. AÇÕES 6....
Condições Derivadas de objetos Objetos do Construct 2 (ex: Sistema, Teclado, Mouse) Objetos do usuário (ex: Sprites) Podem haver múltiplas condições em um evento Todas devem ser verdadeiras para que o evento aconteça Lógica AND
Exemplos de Condições System -> Every tick Sempre verdadeira ações executadas a cada tick System -> On start of layout Verdadeira no início do layout ações executadas uma vez System -> On end of layout Verdadeira no final do layout Mudança para novo layout Fechamento do jogo System -> Every X seconds Condição verdadeira a cada X segundos
Exemplos de Condições Keyboard -> On key pressed/released Verdadeira quando determinada tecla é pressionada (pressed) ou liberada (released) Disponível apenas se inserir o objeto Keyboard no projeto Keyboard -> On any key pressed/released Verdadeira quando qualquer tecla é pressionada (pressed) ou liberada (released) Mouse -> On click Verdadeira quando determinado botão de mouse é clicado Disponível apenas se inserir o objeto Mouse no projeto Mouse -> On any click Verdadeira quando qualquer botão de mouse é clicado Mouse -> On object clicked Verdadeira ao clicar em algum objeto do jogo
Exemplos de Condições Sprite -> On created/destroyed Verdadeira no momento em que é sprite é criado (created) ou destruído (destroyed) Sprite -> Compare X/Y Verdadeira de acordo com o valor da posição X ou Y do sprite Sprite -> Compare instance variable Verdadeira de acordo com o valor de determinada variável de instância
Condição Else Utilizada se as condições anteriores de um evento não forem verdadeiras IF-ELSE Para adicionar Botão direito no evento -> Add Else
Invert Faz com que a condição seja ativada se for falsa, em vez de verdadeira Lógica NOT Para ativar Botão direito na condição -> Invert
Ações Aplicadas a um objeto Objetos do Construct 2 Objetos do usuário Executadas se todas as condições do evento forem verdadeiras Ações disponíveis dependem de: Classe/Tipo de objeto Behaviors Variáveis
Exemplos de Ações System -> Create object Cria uma instância de determinado objeto System -> Go to layout Troca o layout atual para algum outro layout do projeto Sprite -> Set angle Muda o ângulo de rotação do sprite Sprite -> Set visible Faz o sprite ficar visível ou invisível Sprite -> Set opacity Define o nível de transparência do sprite
Exemplos de Ações Sprite -> Set X/Y Muda o valor da posição X ou Y do sprite Sprite -> Set Size Muda o tamanho do sprite Sprite -> Destroy Destrói o sprite Sprite -> Spawn another object Cria outro objeto de determinado tipo Sprite -> Set value (Instance variables) Define o valor de alguma variável de instância do sprite
HandsOn Crie eventos para Detectar se o personagem caiu de uma plataforma e reiniciar o jogo Fazer o personagem morrer (e reiniciar o layout) após bater em obstáculos cinco vezes Fazer o personagem piscar caso bata em um obstáculo e não esteja piscando atualmente Dica: Behavior Flash Desafio: Fazer com que o personagem seja controlável também com as teclas WAD Ação: Personagem -> Simulate control
HandsOn Exemplo de solução http://bit.ly/c2handson5
Parâmetros Podem existir tanto em condições quanto em ações Indicam o valor de atributos relacionados à condição/ação Ex: (Ação) Mover objeto para posição Parâmetros: X e Y Possíveis valores: Estáticos: X = 25, Y = 100 Valores de variáveis: X = Touch.X, Y = Touch.Y Funções: X = random(25), Y = sin(100) Expressões: X = (Mouse.X + random(25))/2
Exemplos de Funções sin(x) Seno de X cos(x) Cosseno de X tan(x) Tangente de X asin(x) Arco seno de X acos(x) Arco cosseno de X atan(x) Arco tangente de X sqrt(x) Raiz quadrada de X random(x) Número aleatório de 0 a X floor(x) Maior número inteiro abaixo de X ceil (X) Menor número inteiro acima de X
Parâmetros Para visualizar expressões disponíveis
Variáveis Globais Apenas uma cópia em todo o jogo Valor único Pode ser modificado via eventos Disponível em todos os layouts Ex: Pontuação do jogador Opcionalmente constante Valores globais imutáveis Ex: Gravidade Para adicionar Botão direito no event sheet -> Add global variable
Variáveis Globais
HandsOn Armazene em uma variável global a última plataforma alcançada pelo personagem antes de morrer Ao reiniciar o jogo, faça o personagem começar nesta plataforma Crie um texto que indique a vida restante do personagem Mantenha o texto sempre acima dele Desafio: Fazer o personagem se movimentar com o mouse/toque (utilizar objeto Touch) Personagem deve andar na direção do toque enquanto estiver pressionado (para a direita ou esquerda) Dica: System -> Compare two values
HandsOn Exemplo de solução http://bit.ly/handson6mobile
Link para download dessa aula http://bit.ly/mobileaula1