Archive for Artigos

A síndrome do jogo favorito tem cura?

Em qualquer comunidade de estudantes e desenvolvedores de jogos, é incrível o número de pessoas que desejam criar um MMOG (massive multiplayer Online Game) como sendo seu primeiro jogo. Parece um ímã, uma atração inevitável: a pessoa é iniciante, portanto tem que escolher logo o que há de mais complexo!

Na verdade, isso é bastante natural, tendo-se em vista o fato de que MMOG é o tipo de jogo que agrada um grande número de pessoas hoje. Antes da popularização dos MMOGs, eram os FPS (first person shooters) os jogos considerados de maior sucesso, tanto dentre as escolhas dos iniciantes, quanto dentre os jogadores, seguidos de RTS (real time strategy) e tantas outras siglas, formando uma grande sopa de letrinhas.

A escolha por tais gêneros é movida pelos seguintes argumentos:

  • Trata-se do gênero favorito da pessoa como jogadora e todos sempre ouvem que trabalhar naquilo que se gosta é uma das melhores formas de ser realmente produtivo;
  • Não se sabe ainda a real complexidade que há em cada gênero ainda, então se torna difícil saber o quão complexo será o desenvolvimento;
  • Há também uma certa superestimação acerca de nossas capacidades: em nossos primeiros passos, estamos tão certos de que somos capazes de qualquer coisa, que para nós poderíamos construir o Cristo Redentor usando somente um gigantesco bloco de pedra e uma lixa de unhas!

Entretanto, vale salientar que “grandes fracassos levam a grandes frustrações, mas pequenos sucessos trazem uma grande motivação”. Em outras palavras: é preferível começar-se por um projeto muito mais simples e ir gradualmente avançando a começar por um MMOG, tropeçar e não conseguir levantar-se mais.

Lembro-me de ter feito, em meus primeiros passos, vários demos de jogos diferentes: um “pacman” sem fantasmas a perseguir o jogador, um mini-jogo de corrida, alguns space invaders, etc.

Posteriormente, tudo evoluiu, defini mais claramente a plataforma em que desenvolvo até hoje (a plataforma Flash) e comecei a criar jogos mais sofisticados (que agora sim passei a chamar de jogos!), como jogos de nave no estilo R-Type, jogos de corrida com visão top down, jogos de cartas, etc.

Bem, aonde estou hoje? Meus últimos projetos foram vários tipos de jogos de tabuleiro, jogos multiplayer como Buraco, Damas, Botão e Texas Hold’em Poker e o meu último projeto já se encaixa melhor na definição de MMOG, uma vez que se trata de um mundo persistente onde jovens podem construir seu avatar e interagir com outros usuários, seja por meio de jogos, seja por meio de atividades sociais.

Quanto tempo levou para ir “de uma ponta a outra”? Cerca de 12 anos, num processo bastante gradual que, apesar de aparentemente lento, para mim foi mais do que satisfatório – motivo pelo qual sempre recomendo fazer o mesmo, “devagar e sempre”.

E se você deseja fazer a mesma coisa, há algumas poucas coisas que podem ser feitas para acelerar um pouco o processo de aprendizado:

  • Comece pelo mais simples e aumente a dificuldade aos poucos! Você descobrirá que aquele snake game que você achava tão bobo enquanto jogador não é tão fácil assim de criar, no fim das contas, e aprenderá muito com isso;
  • Um bom livro vale mais que 1000 artigos de uma página ou duas! Se você puder adquirir um livro que guia passo a passo como desenvolver um determinado tipo de jogo que esteja tentando fazer agora, esta pode ser uma excelente ideia, pois você aprenderá muito mais por meio da leitura de um livro, que já está organizado para seu aprendizado, do que procurando artigos dispersos na Internet a fim de montar o conhecimento como se fosse um quebra-cabeças;
  • Não baixe livros, compre livros! Tenho percebido que quanto mais livros baixamos, menos lemos! Em contrapartida, um livro comprado em algum momento será lido, tendo em vista o fato de que gastamos dinheiro no mesmo e não queremos “perder aquele dinheiro”, além disso, a leitura de um livro impresso é muito melhor do que a leitura de um livro em um computador;
  • Participação em cursos também pode ser interessante! Cursos possuem uma atuação até mesmo mais direta que o livro, uma vez que passamos a ter um instrutor a nos orientar, a acompanhar os nossos passos;
  • Termine tudo o que você começa! Se você começou a fazer uma clone do Mario e começou a ter muitas dificuldades, continue, desistir somente não é a melhor ideia. Jogos não terminados não contam a seu favor!

A ideia é essa, amigo leitor, e lembre-se: fuja da síndrome do jogo favorito. Apesar de parecer legal em uma primeira instância, você perceberá que algo bem mais gradual o levará realmente a seu objetivo. Pular etapas raramente vale a pena…

Hmmmm… E você, amigo leitor, está com a síndrome do jogo favorito? Deixe-me examiná-lo: abra a boca e diga “ah!”. 🙂

Estrutura do livro “Press Start – Uma introdução ao Game Design”


Olá amigo! Se você está interessado em aprender mais sobre a área de Game Design, talvez já saiba tomou conhecimento de nosso curso de Introdução ao Game Design, mas provavelmente não sabe que temos um livro elaborado especificamente para ele, chamado Press Start – Uma introdução ao Game Design. Talvez você não saiba porque, infelizmente, sempre esquecemos de comentar sobre o mesmo aqui em nosso website.

Desta vez, então, decidi escrever este artigo tal que possa saber mais sobre ele, por exemplo, conhecer a estrutura de seu conteúdo.

Esse livro encontra-se dividido em capítulos, cada qual explanando sobre um dos vários temas aqui abordados.

O primeiro capítulo, A Evolução dos Jogos Eletrônicos, retrata os principais fatos que marcaram a história da indústria de jogos eletrônicos.

O segundo capítulo, Por Dentro do Mercado de Jogos, descreve conceitos importantes para a compreensão do funcionamento da indústria de jogos, citando desde as plataformas de execução dos jogos até a organização existente no processo de desenvolvimento e distribuição de um jogo.

O terceiro capítulo, Jogando o Jogo, é um pouco mais extenso e é focado em fazer uma ampla análise que começa com a importância dos jogos na vida das pessoas e classifica os jogos digitais e seus jogadores a fim de melhor compreendê-los.

Press Start - Uma introdução ao Game Design

O quarto capítulo, Decompondo o Game Design, cumpre duas tarefas: descrever a atividade de Game Design, bem como sua situação no Brasil e no mundo, e estudar minuciosamente cada um dos componentes existentes em um jogo.

No quinto capítulo, Técnicas de Criação, apresento algumas das técnicas que podem ser empregadas no processo de idealização e planejamento do jogo.

No sexto capítulo, Introdução ao Level Design, nossa principal preocupação será com os diversos aspectos necessários para o bom projeto de um cenário, fundamental para uma boa compreensão acerca de Level Design.

No sétimo capítulo, A Interface Jogo-Jogador, o nosso objeto de estudo é a Interação Humano-Computador aplicada a jogos, o que nos levará a uma outra especialidade: o Game Interface Design.

O oitavo capítulo, Formalizando e Informalizando o Aprendizado, possui três preocupações distintas: apresentar o “The 400 Project”, um ousado projeto para listar 400 regras de Game Design; discutir sobre a criatividade nas atividades de Game Design; e falar um pouco a respeito da importância do fator diversão nos jogos.

E por fim, no nono capítulo, Os Jogos e a Sociedade, remetemos à importância dos jogos na sociedade, qual pode ser o impacto cultural de seu uso e como os jogos podem nos ajudar.

Seu apêndice apresenta dois exemplos de documentos que criei em alguns dos meus projetos e quatro estudos de caso de jogos que desenvolvi a fim de analisar alguns dos jogos mais comentados. Diversão garantida! Eu acho.

Se quiser saber mais sobre este livro e o curso, você pode ir até a página sobre o curso de Introdução ao Game Design e, lá, baixar o excerto do mesmo (sim, finalmente estamos divulgando o excerto do mesmo, algo que já devíamos ter feito há muito tempo atrás! Desculpe a nossa falha!).

Distribuição digital de conteúdo

Caso você não tenha se escondido embaixo de uma pedra nos últimos 10 anos, deve ter percebido a importância que a distribuição digital de conteúdo tem conquistado na indústria de jogos. Mas, sabemos quais os impactos positivos e negativos disso?

Em minha infância, durante a “era” Master System, Mega Drive e Super Nintendo, não havia outro jeito: se você queria jogar um jogo, precisava comprá-lo ou locá-lo. Naquela época já havia até mesmo a temida “pirataria”, mas era bem menos popular do lado do consumidor final, já que se tratava da venda de cartuchos não-originais dos jogos. Com a popularização da Internet e dos emuladores, entretanto, quase todos os jogos daqueles consoles (e de tantos outros) tornaram-se disponíveis pela Internet. Bem, podemos dizer que este foi o “lado ruim” da distribuição digital de conteúdo, que facilitou a distribuição dos jogos e conteúdos relacionados por canais não oficiais, prejudicando a lucratividade da indústria dos jogos.

Por outro lado, a distribuição digital de conteúdo reduziu custos (ao eliminar intermediários na distribuição), facilitou acesso aos jogos (jogos podem ser adquiridos em qualquer lugar do mundo tão logo são liberados) e até mesmo permitiu mais facilmente o reúso de títulos antigos. Durante minha infância, os cartuchos mais baratos de SNES custavam cerca de R$ 30,00 (considerando-se a inflação, o mesmo jogo custaria hoje uns R$ 60,00!), mas hoje, alguns dos mais incríveis títulos daquele console encontram-se disponíveis para compra digital por menos de R$ 15,00. Com isso, a indústria de jogos expande um pouco mais seus lucros, o que aumenta as chances de sucesso de pequenas software houses, e ainda promove um pouco da cultura dos títulos antigos à nova geração.

A distribuição digital também trouxe outros inconvenientes. Quem não lembra de jogos da série Tekken com personagens destraváveis na medida em que você atingia certas metas ou completava o jogo um número de vezes? Pois é, hoje muitos jogos da PSN possuem personagens que são disponíveis somente como DLC, isto é, você precisa comprar à parte. Enfim, você compra o jogo e deveria adquirir tudo o que há nele, mas descobre que metade do elenco de personagens jogáveis só estará disponível caso compre os mesmos. Para certos casos, eu até concordo com a venda de conteúdo em formato DLC, mas há certos casos em que isso pode prejudicar a experiência de jogo daquele que não pode comprar todo aquele “conteúdo extra”.

E se observarmos os MMOG (massive multiplayer online games), aí veremos um modelo de negócio que tem dado muito certo apoiado na distribuição digital: o jogo em si e o acesso ao servidor são gratuitos (free-to-play), entretanto há certos itens do jogo que você somente pode adquirir comprando. A não aquisição do item não prejudica sua experiência de jogo, mas a aquisição pode torná-la ainda mais rica por oferecer certas funcionalidades ou benefícios.

A verdade é que não há como voltar atrás quanto à distribuição digital de conteúdo. Basta observar que as grandes first parties (detentoras de patentes dos consoles) Microsoft, Sony e Nintendo concentram cada vez mais esforços em suas “redes sociais para jogadores” e na oferta de conteúdo para os mesmos. E para você, meu amigo, qual a sua opinião a respeito da distribuição digital de conteúdo na indústria dos jogos?

Por dentro do mercado de jogos

Vamos agora apresentar aqui alguns números para que aqueles que ainda não conseguem ter uma noção do tamanho da área possam aprender conosco.

Em 2003, o mercado mundial de jogos teve um faturamento próximo de US$ 22,3 bilhões, sem levar em conta o comércio de acessórios. A previsão é que, se tudo correr conforme o esperado (uma taxa de 20,1% ao ano), o mercado atinja US$ 55,6 bilhões em 2008 (lembre-se, a primeira edição deste livro é de fevereiro de 2008!).

Em dados gerais, 73% dos gastos a nível mundial ocorrem com o mercado de consoles, enquanto que somente 17% correspondem ao mercado de jogos para computadores.

Além da visível supremacia dos consoles sobre os PCs, outro mercado que vem se expandindo e já provou todo o seu valor: estou referindo-me ao mercado de jogos online ou para dispositivos móveis.

Não podemos esquecer também do mercado para os handhelds, os “consoles portáteis”. Esta área vem se expandindo tanto que não mais somente a Nintendo a disputa, mas também a Sony, e uma das vantagens dessa área é a diversidade de jogos, podendo facilmente encontrar desde ports de jogos famosos de consoles e PCs, a jogos casuais desenvolvido por pequenas desenvolvedoras.

Apesar da aparente estabilidade em torno da indústria de consoles, não se deixe enganar: Microsoft, Sony e Nintendo são muito grandes, até mesmo para o mercado de jogos, motivo este que as faz lutar ferrenhamente por status para os seus produtos.

Quem ganha com isso? Todos. Os jogadores, por produtos de grande qualidade e baixo custo. Os desenvolvedores, pois a fim de que seus consoles suportem mais jogos, oferecem mais comodidades e facilidades para as empresas, como GDKs gratuitos ou a custo acessível. Um exemplo disto é o XNA Studio, que permite o desenvolvimento de jogos para as plataformas PC-Windows e Xbox360.

Entretanto, um “porém” a se levar em consideração é o fato de que, com o tempo, o processo de desenvolvimento de jogos foi se complexificando. Foi-se o tempo em que um ou dois adolescentes com um computador recém-adquirido e um manual da linguagem Basic em mãos podiam, depois de um mês de desenvolvimento, ter o seu mega hit no mercado por uma das publishers da época.

Dados da GamaSutra apontam que o desenvolvimento de Neverwinter Nights, lançado em junho de 2002, levou quase 5 anos para ser concluído, atingindo o ápice de 75 pessoas na equipe de desenvolvimento, sendo que na equipe de testes (Quality Assurance, como pode ser conhecida também), existiam outros 40 profissionais. Sem contar que o projeto contou também com mais 20 pessoas na tradução! E então, como encarar esse problema de tamanho astronômico e custos “um pouco” acima dos que podemos arcar?

Bem, as grandes empresas estão tentando de tudo: parcerias, fusões, aquisições de software houses, etc.

No caso de nós, como indivíduos sem tamanho know how ou fundos de investimento, a maior possibilidade é a de investimento em uma área com custos, por enquanto, mais saudáveis: desenvolvimento de jogos casuais, para dispositivos móveis e projetos independentes que busquem mais a inovação em game design que a inovação tecnológica.

Outro fato que vem ocorrendo é o desenvolvimento de novas tecnologias, não somente para jogos, mas para diversas áreas que lidem com grande quantidade de informações, alto grau de interação e capacidades gráficas acima do geralmente exigido por PCs mais modestos. Estamos falando do desenvolvimento de equipamentos que possibilitam novos recursos visuais (como melhores placas gráficas e uso de GPUs), máxima performance em processamento (múltiplos processadores trabalhando paralelamente e, até mesmo, em tarefas específicas cada um), novas formas de imersão e interação com a realidade virtual (óculos 3D, luvas, câmeras e sistemas de detecção de movimento, microfones, etc).

Apesar de toda essa evolução, a área de Inteligência Artificial ainda hoje cresce de forma lenta, o que vem causando a insatisfação de muitos usuários.

Muitos pesquisadores já buscaram formas de aplicação de algoritmos genéticos e redes neurais em jogos a fim de tornar o comportamento dos atores (objetos, personagens, eventos climáticos, etc) mais realistas, mas desanimaram, ao perceber que o custo de processamento e de implementação de tais métodos para um jogo inteiro pode ser muito alto. Mesmo assim, esta área vem crescendo e buscando formas de contornar, principalmente com o avanço cada vez maior da capacidade de processamento e da memória para armazenar as estruturas de decisão.

O Wii permite a conexão com a Internet e por meio de seu browser, é possível executar jogosem Flash. Estaé uma inovação que provavelmente não vai levar muito tempo a se espalhar, ou seja, a capacidade de ofertar novos jogos por meio de outros canais. Prova disso é o Xbox360, que também contará com o Xbox Live Arcade que permitirá ao portador do console adquirir novos jogos.

O que esses dois consoles possuem em comum? Abrem novas oportunidades para desenvolvedores de jogos casuais ou independentes, que não possuem equipe nem recursos suficientes para enfrentar as grandes desenvolvedoras, mas podem atuar nesse novo nicho que está aparecendo.

Vamos agora avaliar um pouco o personagem mais importante de todo esse mercado: o jogador. Nessas últimas décadas o que vem se percebendo é o “envelhecimento do jogador”, isto é, aqueles que jogavam quando crianças amadureceram e continuam jogando, acompanhando assim a evolução da indústria dos jogos eletrônicos. Prova disso é o seguinte gráfico, onde claramente é perceptível que quase metade dos jogadores está na faixa etária de18 a49 anos.

Gráfico sobre a idade dos jogadores a nível mundial

Gráfico sobre a idade dos jogadores a nível mundial (Disponível em http://www.theesa.com/facts/index.asp)

A julgar por esse fato, que tipo de projeto você acha que pode abraçar então uma maior parte do mercado?

Calma, calma, não vamos tomar decisões ainda! Vamos olhar agora que tipo de jogos eles mais gostam de jogar. O gráfico a seguir mostra quais os gêneros de jogos de computador mais vendidos.

Gráfico sobre as vendas dos jogos de computador por gênero

Gráfico sobre as vendas dos jogos de computador por gênero (Disponível em http://www.theesa.com/facts/index.asp)

Após essa análise, percebemos que os três tipos de jogos realmente em alta no mercado para PCs (estamos avaliando as vendas! Possa ser que ao comparar o número de jogos realmente executados, devido à influência da pirataria ou mesmo de novas formas de pagamento, como as mensalidades nos MMOGs, tenhamos sensíveis alterações nesses dados) são os de estratégia, os infantis e os shooters.

Bem, está tudo indo muito bem, mas esses dados todos são a nível mundial, ou seja, não refletem perfeitamente a realidade do nosso país. Sendo assim, é hora de olharmos tudo isso sob a perspectiva verde-amarela!

Considerando-se o fato de que o Brasil se encontra há muito pouco tempo na área (se compararmos com países como EUA ou Japão, somos ainda bebês) de forma realmente efetiva, podemos ser bastante otimistas diante do crescimento que estamos tendo.

De 2003 para 2004, o mercado de vídeo games em nosso país cresceu cerca de 40%, atingindo um faturamento geral de cerca de 100 milhões de reais, segundo dados da Abragames.

E, se levarmos em consideração o avanço no número de empresas e sua produção nos últimos anos, podemos traçar uma projeção bastante otimista que aponta que o Brasil é um país que está se desenvolvendo muito na área de jogos e despertando o interesse de diversos profissionais.

Segundo pesquisas da Abragames, há cerca de 60 empresas desenvolvedoras de jogos nacionais que já possuem receita.

Sinceramente? Pode aumentar um pouco mais esses números, pois pelo que tenho observado, não foram poucas as empresas na área de jogos que nasceram nos últimos anos, sem contar que muitas vezes torna-se difícil para a Abragames identificar todas elas, principalmente as que não são associadas e não estão expostas o suficiente na mídia nacional.

Em outras palavras, há um número muito bom de empresas nacionais, mas este não é o “porém”. O problema está sendo na gerência dessas empresas: atualmente muitas das novas empresas acabam por fechar suas portas nos primeiros dois anos. O que eu acho a respeito? Que muitos acabam correndo atrás do sonho de ter seu jogo no mercado, mas há uma grande diferença entre fazer seu jogo e administrar uma empresa de jogos, e é aí onde muitos acabam falhando, por não possuírem um perfil empreendedor voltado para a gerência de negócios.

Quer uma dica? Se você já está pensando em um dia abrir a sua própria empresa, o melhor é que você então, antes de fazer isso, estude bastante a respeito de empreendedorismo, acompanhe oscilações em nosso mercado sofridas por empresas similares à que você quer criar, busque alternativas para os problemas que porventura virão. É muito mais fácil corrigir uma falha enquanto está tudo no papel do que quando já estiver com a empresa correndo!

Mas, em quais áreas as empresas nacionais têm conseguido atuar com maior facilidade?

Segundo pesquisa realizada pela Abragames (2004), as principais formas de atuação das empresas de desenvolvimento de jogos nacionais são advergames, jogos para dispositivos móveis, jogos para computadores e jogos sob encomenda para o mercado externo (offshore outsourcing). Vamos falar um pouco sobre cada uma dessas áreas de atuação, bem como outras, mais à frente.

Além disso, quem tem frequentado os congressos da SBGames, deve ter observado que nos últimos dois anos a participação de empresas da área de serious games (ou seja, jogos para educação e treinamento) têm aumentado. Bem, se há mais empresas no congresso demonstrando real interesse, então há mais empresas do ramo cada vez melhor financiadas e amadurecidas, sendo assim, acredito que podemos apostar também nessa vertente.

[O conteúdo aqui apresentado é parte do livro “Press Start – Uma Introdução ao Game Design”, que faz parte do nosso curso de Introdução ao Game Design]

A evolução dos jogos eletrônicos

Todos nós convivemos com jogos já há bastante tempo, isso é fato.

Os jogos saltaram das telas dos computadores e consoles e invadiram televisores, celulares e outros dispositivos que, há 10 anos atrás, jamais imaginaríamos ser possível.

Bem, vamos agora fazer aqui um “túnel do tempo” e analisar um pouco do que aconteceu com os jogos.

O desenvolvimento de um mercado de jogos só foi realmente possível a partir do início da década de 70, graças à popularização da informática e redução dos preços dos equipamentos. Nascia assim o período áureo das “empresas de garagem”, onde jogos com capacidade gráfica e game design limitados devido às restrições na tecnologia eram desenvolvidos a nível comercial por todo tipo de profissionais, desde doutores em tecnologia a estudantes de colegial: o que valia era o resultado final e como eram poucos os jogos na época, tudo acabava sendo válido!

Com o tempo, essas empresas foram saindo das garagens e criando cada vez mais equipamentos específicos para jogos, os chamados consoles. O Odyssey foi o primeiro console, lançado em 1972. É nessa época também que os arcades, fliperamas e “máquinas de pinball” tornam-se sucesso.

Vemos aqui já melhorias devido à expansão tecnológica.

No início da década de 80 uma crise em todos os ramos da indústria do entretenimento abalou muitas empresas, fechando as portas de várias delas.

Mais tarde o lançamento dos computadores pessoais (PC) trouxe um novo grande abalo à indústria de jogos para consoles, por ser uma ferramenta com preço acessível e capaz de desempenhar várias outras tarefas além de executar jogos.

O tipo de mídia para armazenamento dos jogos mudou, sendo agora gravados em cartuchos ou CD-Roms. Consoles como Master System, Mega Drive e Super Nintendo (conhecido no Japão como Super Famicon) são lembrados ainda hoje por seus jogos.

Enquanto os jogos evoluíam, os acessórios utilizados também foram desenvolvendo-se a fim de propiciar o máximo de conforto e facilitar. Estamos falando de mouses, teclados, telas LCD sensíveis ao toque, joysticks, etc.

Como na guerra e nos jogos vale tudo, registrou-se a saída da Sega do mercado de desenvolvimento de consoles devido a fracassos financeiros de alguns projetos seus, dentre eles, o Dream Cast; hoje a Sega atua somente no desenvolvimento de jogos.

Por que estudar a História dos Jogos Eletrônicos?

Sim. Eu sei que muito provavelmente você não quer ler a respeito do passado dos jogos, afinal, você não quer fazer um jogo com a cara dos jogos dos anos 1970, não é?

Tudo bem, isso é até compreensível, mas… Por que mesmo que estudamos História nas escolas?

Quem estuda História nas escolas aprende muito a respeito das civilizações passadas, sua organização social, suas ideologias. Mas não é somente isso: aprendemos também quais erros levaram a quais conseqüências, bem como quais foram os fatores que levaram àqueles erros.

Da mesma forma, quando você estuda a História dos jogos, você não está somente olhando o “como eles eram no passado”, mas sim, estudando o momento em que eles surgiram para saber o que permitiu determinados avanços. Assim sendo, quem estuda sua evolução pode perceber mais facilmente fatores que possam levar a mudanças na indústria de jogos (surgimento de um novo gênero, uma nova tendência quanto a equipamentos ou características dos jogos, um novo público se formando, etc).

E como profissionais bem formados e informados que somos, não queremos ser guiados por outros para que possamos perceber isso, mas sim, queremos ter bagagem suficiente para que possamos fazer nossas inferências e, assim sendo, buscar nos destacar na indústria.

Sendo assim, é imprescindível um bom estudo a respeito da evolução dos jogos eletrônicos a fim de que possamos “compreender melhor o presente e o futuro a partir da análise do passado”.

Antes de começar a falar realmente sobre nosso assunto, quero comentar que, quem estiver interessado a saber mais a respeito, pode procurar por fontes como os escritos dos pesquisadores Lynn Alves e Ricardo Santos, reportagens do UOL JOGOS e a Wikipedia Inglesa, que foram o ponto de partida deste trabalho.

Além destes, se você estiver particularmente interessado na evolução dos jogos eletrônicos brasileiros, um bom ponto de partida é o GameBrasilis, um catálogo da produção nacional, confeccionado e distribuído pelo Senac-SP. Uma observação: já faz algum tempo que o Senac-SP publicou e distribuiu este catálogo, portanto, pode ser “um pouco muito difícil” conseguir encontrá-lo. Eu já tenho o meu!

Até 1950 – A Era das Sombras

Tudo bem, tudo bem, eu sei. Não foi um período tão ruim assim, mas… Não havia computadores nem vídeo games… Ora, o que eles faziam para se divertir?

Apesar de acharmos que aqui nada temos, podemos encontrar facilmente os antecessores de nossos jogos digitais, como os jogos de tabuleiro, cartas e tantos outros, sendo o mais próximo deles o Pinball.

Xadrez, Damas e Go são apenas alguns dos tantos jogos de tabuleiro que já existiam nesta época e que seriam mais tarde implementados em jogos digitais.

A característica competitiva é uma máxima dos jogos de tabuleiro dessa época, e não falamos somente dos jogos mais recentes, pois mesmo jogos pertencentes a civilizações antigas já possuíam essas características, como é perceptível no jogo Senat, pertencente à civilização egípcia, e o jogo de Ur.

Jogo Senat (à esquerda) e Jogo Real de Ur (à direita)
Jogo Senat (à esquerda) e Jogo Real de Ur (à direita)

Em 1931, David Gottlieb criou o Baffle Ball Machine, considerada a segunda máquina de Pinball, responsável não só pela popularização do mesmo, mas também pelo impulso que viria a dar na indústria de jogos eletrônicos (o Pinball é um dos responsáveis por começar a criar um público receptivo a esse tipo de diversão).

Outro fator responsável pelo surgimento da indústria dos jogos foi a evolução tecnológica capaz de reduzir as dimensões dos computadores (como o advento dos transistores) e melhorar a forma como as informações eram passadas do sistema para o usuário (como a criação de tubos de raios catódicos).

[O conteúdo aqui apresentado é parte do livro “Press Start – Uma Introdução ao Game Design”, que faz parte do nosso curso de Introdução ao Game Design]

Por que um livro sobre Game Design?

Não se acanhe! Pode se aproximar, sentar-se em uma poltrona e sentir-se em casa, pois se você está lendo estas linhas agora é porque você tem um interesse em comum comigo: o desenvolvimento de jogos, mais especificamente a área de Game Design. E se temos algo em comum, sinta-se desde já meu amigo e convidado a conversar, discutir sobre isso (só não fale muito alto, pois alguém pode estranhar ao vê-lo falando com um livro, ok?).

Falar que no Brasil há empresas e pessoas interessadas no desenvolvimento de jogos é dizer aquilo que já é óbvio – de serious games a jogos para dispositivos móveis, temos diversas empresas atuando no ramo de entretenimento.

Claro, se há indústria, se há pessoas interessadas, deve haver algum meio dessas pessoas conseguirem acesso a informações sobre isso. No caso, se há pessoas querendo desenvolver jogos, alguém deve lhes dizer como conseguir isso!

Falamos então de cursos, livros, sites, artigos, congressos e tantas outras coisas que vêm tratando desse assunto tão produtivo. Produtivo do ponto de vista financeiro, por se tratar de uma indústria bilionária, e do ponto de vista cultural, uma vez que se trata de levar às pessoas a satisfação por meio da diversão. Esta é ou não é uma atitude nobre?

Entretanto, toda vez que eu vou a uma livraria ou um congresso e verifico o que anda acontecendo, só ouço falar de programação, técnicas de renderização, algoritmos para redes e inteligência artificial, modelagem 3D, etc. Mas… e quanto ao Game Design?

Uma área tão importante como essa, que lida com todo o projeto do jogo, envolvida diretamente com o planejamento da experiência contida em um ambiente virtual, deveria ser ao menos um pouco mais discutida, não acha?

Então acho que a pergunta certa não seria “Por que um livro sobre Game Design?”, mas sim “Por que NÃO um livro sobre Game Design?”.

A indústria brasileira de jogos está amadurecendo e acredito que está mais do que na hora de mostrar que sabemos não somente programar ou modelar – também somos capazes de projetar os jogos.

A literatura sobre Game Design no Brasil é bastante escassa. Sei que minha contribuição não será suficiente para suprir toda essa deficiência, seria arrogância demais pensar isso. Se fosse possível, áreas de estudo já bem consolidadas como programação em C++ não teriam mais novos livros sendo lançados periodicamente, como vemos ocorrer.

Espero, sim, que meu livro possa ser mais um a apresentar ao leitor esta área tão nobre e interessante.

O que você pode aprender aqui

Uma vez que muitas pessoas que estão lendo esse livro podem estar “caindo de pára-quedas” aqui, ou seja, sem muita experiência sobre como funciona o mercado de jogos e o processo de desenvolvimento, decidi trazer aqui algumas informações capazes de guiá-los para melhor compreender como funciona o mercado de jogos e cada uma das áreas que atuam no processo de desenvolvimento de um jogo.

Só isso já seria assunto bastante para um livro e não podemos esquecer que nosso objetivo aqui é discutir sobre Game Design e, sendo assim, devemos responder algumas perguntas fundamentais: O que é jogo? Por que jogos digitais? E por que as pessoas jogam?

Bem, só falar o que é jogo não basta. Não para você, interessado em Game Design e que em breve poderá estar atuando neste mercado. Você precisa conhecer cada um dos componentes de um jogo, então discutiremos sobre os princípios que há por trás de cada jogo, bem como sobre as partes que o compõem.

Espero também que, por meio da leitura desse livro, você conheça um pouco da área de Game Design, bem como algumas de suas especialidades, como Level Design e Game Interface Design. Nesse estudo temos não somente a teoria, mas também a apresentação de alguns dos artefatos gerados durante suas atividades, como o game design document – ou documento de projeto de jogo, se preferir o termo em português.

O que você não pode aprender aqui

Uma das coisas que me perguntam é se com o que discutiremos aqui se pode criar jogos. Sim e não.

Na criação de um jogo, temos várias atividades e algumas delas são reservadas para a área de Game Design, ou seja, estamos discutindo aqui principalmente sobre parte do processo, não sobre o todo.

Você não aprenderá aqui, neste livro, como programar um jogo, por exemplo. Falamos sobre artes, sons e algumas técnicas, mas não mostramos como aplicá-las em ferramentas de edição gráfica ou sonora.

O que você vai precisar

Se você pretende desenvolver algum projeto de jogo enquanto lê esse livro (e eu aconselho fortemente a fazer isso a fim de melhor fixar e compreender cada detalhe), você pode necessitar de algumas ferramentas.

Não, não vou lhe pedir para adquirir uma licença milionária de um mega-software. Vou lhe indicar o que você realmente irá empregar: qualquer software para edição de imagens (para as imagens que compõem um protótipo de interface em papel) e um processador de texto (para o game design document).

Infelizmente cobrimos muito pouco da parte de level design, trazendo somente alguns dos vários conceitos presentes na área, mas são suficientes caso você queira criar algum cenário e ver em prática como a teoria se comporta na prática. Para isso, você pode escolher trabalhar com qualquer ferramenta para modificação de jogos ou criação de mapas. Você pode conseguir isso em vários deles, como os jogos das séries Unreal, Quake, Half Life e Warcraft (por falar nisso, Dota é um mapa para Warcraft 3, uma das modificações mais jogadas atualmente, creio que perdendo somente para o Counter Strike, uma modificação de Half Life).

Estrutura do livro

Este livro encontra-se dividido em capítulos, cada qual explanando sobre um dos vários temas aqui abordados.
O primeiro capítulo, A Evolução dos Jogos Eletrônicos, retrata os principais fatos que marcaram a história da indústria de jogos eletrônicos.

O segundo capítulo, Por Dentro do Mercado de Jogos, descreve conceitos importantes para a compreensão do funcionamento da indústria de jogos, citando desde as plataformas de execução dos jogos até a organização existente no processo de desenvolvimento e distribuição de um jogo.

O terceiro capítulo, Jogando o Jogo, é um pouco mais extenso e é focado em fazer uma ampla análise que começa com a importância dos jogos na vida das pessoas e classifica os jogos digitais e seus jogadores a fim de melhor compreendê-los.

O quarto capítulo, Decompondo o Game Design, cumpre duas tarefas: descrever a atividade de Game Design, bem como sua situação no Brasil e no mundo, e estudar minuciosamente cada um dos componentes existentes em um jogo.

No quinto capítulo, Técnicas de Criação, apresento algumas das técnicas que podem ser empregadas no processo de idealização e planejamento do jogo.

No sexto capítulo, Introdução ao Level Design, nossa principal preocupação será com os diversos aspectos necessários para o bom projeto de um cenário, fundamental para uma boa compreensão acerca de Level Design.

No sétimo capítulo, A Interface Jogo-Jogador, o nosso objeto de estudo é a Interação Humano-Computador aplicada a jogos, o que nos levará a uma outra especialidade: o Game Interface Design.

O oitavo capítulo, Formalizando e Informalizando o Aprendizado, possui três preocupações distintas: apresentar o “The 400 Project”, um ousado projeto para listar 400 regras de Game Design; discutir sobre a criatividade nas atividades de Game Design; e falar um pouco a respeito da importância do fator diversão nos jogos.

E por fim, no nono capítulo, Os Jogos e a Sociedade, remetemos à importância dos jogos na sociedade, qual pode ser o impacto cultural de seu uso e como os jogos podem nos ajudar.

Nosso apêndice apresenta dois exemplos de documentos que criei em alguns dos meus projetos e quatro estudos de caso de jogos que desenvolvi a fim de analisar alguns dos jogos mais comentados. Diversão garantida! Eu acho.

[O conteúdo aqui apresentado é parte do livro “Press Start – Uma Introdução ao Game Design”, que faz parte do nosso curso de Introdução ao Game Design]

Desenvolvimento de jogos em Flash é um bom negócio?

Muitos se perguntam se o desenvolvimento de jogos em Flash é ainda um bom negócio. Vimos o Flash despontar muito forte no início da Era “Jogos na Web” e hoje parece que a “poeira acalmou” bastante em torno da ferramenta. Com isso, a dúvida surge: vale a pena desenvolver jogos em Flash? Ou será que essa plataforma está com seus dias contados?

Bem, enquanto escrevo este artigo estou jogando Edge World, um jogo social em Flash que pode ser executado a partir do Google Plus, a nova rede social do Google. O jogo apresenta alguns bons pontos fortes em seu Game Design que me fazem voltar a jogá-lo todos os dias (estou jogando-o há pouco mais de uma semana), mas hoje não é sobre Game Design que queremos falar, não é? É sobre jogos em Flash, então vamos seguindo…

Muitos já devem saber que a Adobe interrompeu o desenvolvimento do Flash Player para browsers de dispositivos móveis. Em contrapartida, ela própria já se pronunciou focada em oferecer um melhor suporte (por meio de ferramentas e serviços) a Flex developers para desenvolverem aplicações AIR a serem executadas nos dispositivos móveis e em obter uma melhor experiência para a web, principalmente em jogos. Essa escolha foi muito interessante em minha opinião, pois lhe permite utilizar-se, no caso de dispositivos móveis, de um padrão adotado pela maior parte dos dispositivos (HTML5) e melhorar aquilo que ela possui melhor (para jogos, claro) – a plataforma Flash para a web em PCs.

E, em minha opinião, ela não está fazendo uma péssima escolha: jogos sociais estão se tornando cada vez mais populares e rentáveis (eu mesmo já estou pensando em gastar USD 10.00 ou USD 20.00 no que estou jogando!) . No SBGames 2011, por exemplo, tivemos uma palestra bem interessante, sobre jogos sociais e possibilidades de monetização dos mesmos.

Muitos querem criar seus próprios jogos, publicá-los e talvez ganhar dinheiro com eles. Um dos caminhos mais rápidos (sem perder a ética e o profissionalismo, claro) para conseguir tal objetivo, em minha opinião. Agora, o que muitos de nós (e aqui estou me incluindo também!) precisamos aprender é que muitas coisas mudaram. Quem visa um jogo em Flash como um produto comercial, isto é, algo com o qual espera ganhar dinheiro e não somente “aprender a fazer um jogo”, precisa levar isso em consideração do início ao fim do desenvolvimento de seu jogo, desde a fase de concepção. Muitos dos jogos sociais amadores se esquecem disso – e é por isso que muitos deles acabam por desaparecer da web, meses após seu lançamento.

Este é o ponto fundamental! Muitos reclamam dizendo que atuar na área de desenvolvimento de jogos em Flash está mais difícil, menos rentável, talvez. Em minha opinião, ela está amadurecendo: jogadores querem jogos com maior qualidade, pois muitos jogos com qualidade já estão sendo desenvolvidos em Flash! Infelizmente, alguns jogadores ainda encaram jogos em Flash com ceticismo, mas o inverso também acontece: há grupos de jogadores que não curtem jogar em um console ou mesmo jogos desktop. Isso deve ser levado em consideração.

Então, se você deseja atuar nessa área, algumas dicas para você:

  • Aprenda o máximo que puder sobre Flash e desenvolvimento em Flash. Não somente desenvolvimento de jogos, mas tudo o que puder;
  • Aprenda o máximo que puder sobre Game Design. Conversei com Roger Tavares, do Game Cultura, e pelo que me pareceu da entrevista (ainda vou publicá-la aqui, calma!) ele concorda com a importância de um conhecimento sólido em Game Design para todos aqueles que trabalham com programação ou design gráfico, uma vez que, no Brasil, muitas empresas não possuem um funcionário ocupando o papel claro do Game Designer. E por isso, pretendo expandir ainda mais o conteúdo do nosso curso Introdução ao Game Design e, se possível, teremos um workshop ou algo do tipo sobre o assunto em 2012;
  • Estude sobre o modelo de monetização de jogos web, casuais e sociais, pois são alguns dos principais tipos de jogos desenvolvidos para a plataforma Flash (temos também jogos educativos, serious games e advergames… Se quiser, pode estudar também estes, ok?);
  • Leve tudo isso em consideração do início ao fim! Do momento em que você define como será o jogo ao momento em que irá lançá-lo, tudo isso deve ser bem planejado a fim de conseguir a máxima diversão por parte do jogador, sem esquecer de oferecer certos benefícios para quem está disposto a pagar um pouco. 😉
Bem, é isso pessoal! Espero que este artigo sirva para falar um pouco sobre o que podemos esperar quando falamos sobre o futuro do desenvolvimento de jogos em Flash a nível de mercado. Até mais!

Powered by user: A importância da geração de conteúdo por usuário

Podemos dizer que a indústria dos jogos também foi afetada pelo conceito de web 2.0, isto é, um ambiente mais colaborativo. Se no passado tínhamos muitos jogos com geração de conteúdo procedural, a palavra de ordem hoje é geração de conteúdo por usuário.

A geração de conteúdo procedural

A geração de conteúdo procedural foi uma ideia genial: antes dela, se você quisesse um jogo com cinquenta cenários diferentes, teria que criar manualmente os cinquenta cenários diferentes – e tudo isso deveria ser criado pela equipe de desenvolvimento do jogo.

Imagine então o que aconteceria caso a equipe desejasse criar um jogo com inúmeras possibilidades diferentes? 200 cenários, por exemplo, o que aconteceria? Eles teriam 4x mais trabalho não?

Geração de conteúdo procedural é o processo de geração de conteúdo (cenários, gráficos, músicas, efeitos sonoros, diálogos, etc.) de forma automatizada a partir de certas regras, definidas em procedimentos (procedures).

Desta forma, se eu quiser desenvolver um jogo de estratégia onde possamos ter inúmeras áreas para batalhas, posso definir um procedimento que calcula qual deveria ser o layout do cenário a partir de certos parâmetros e, dadas as regras sobre como o relevo deveria se desenvolver, posso ter em questão de segundos (ou mesmo em milésimos de segundo) um mapa totalmente novo.

A ideia é genial, o problema é a dificuldade para validar tais objetos gerados proceduralmente: como garantir que, para um parâmetro qualquer, o cenário seja realmente jogável?

Outro problema é a repetitividade: como são gerados sem seguir determinados objetivos de game design, é bem provável que tais cenários tornem-se, rapidamente, cansativos, “iguais demais”.

A geração de conteúdo por usuário

Geração de conteúdo por usuário não é uma ideia realmente nova: trata-se tão somente de dar ao jogador ferramentas suficientes para que ele mesmo possa criar novos cenários, novos gráficos ou até mesmo missões completamente novas, com novos objetivos totalmente distintos!

Tudo começou com jogos que ofereciam ferramentas para edição de mapas e, hoje, já encontramos jogos que oferecem sistemas de scripting para que o jogador possa “programar” sua própria modificação do jogo, ou MOD, como se tem convencionado chamar.

Unindo a geração de conteúdo procedural e por usuário, temos então um arsenal completamente novo – o “jogo ganha vida”, passando a crescer de forma totalmente independente da equipe de desenvolvimento do jogo.

Podemos citar, por exemplo, Warcraft 3, um jogo para o qual ainda hoje se desenvolvem novos mapas, sendo o mapa de DoTA um dos mais famosos – tão inovador que originou vários outros jogos do mesmo estilo!

Em meio a tudo isso, temos uma pergunta…

Qual o novo papel do Game Designer?

Se o próprio jogador é capaz de criar novos mapas, novos “jogos” a partir de tais ferramentas, qual deve ser o papel do Game Designer nesse novo cenário?

O Game Designer ainda apresenta a tarefa de Level Design, entretanto passa a assumir também um papel muito mais importante: definir ferramentas que sejam realmente usáveis pelos jogadores e capazes de criar uma experiência totalmente nova, até mesmo diferente daquela esperada pela própria equipe de desenvolvimento – como ocorrera com certas modificações, como Counter Strike e o DoTA, como falamos anteriormente.

Diferente do que se pode imaginar, dar poder ao jogador não reduziu o poder do Game Designer, muito pelo contrário, acrescentou novos desafios que precisam ser encarados a fim de levar a indústria dos jogos a um novo nível, onde a figura do jogador passa a mesclar-se com a figura do desenvolvedor, do distribuidor, etc.

Enfim, estamos dando mais poder a quem o deseja – e isso só tem trazido benefícios a todos. 🙂

Desenvolvendo Jogos em Delphi

Autor: Christiano Lima Santos

Um grande “olá” a todos!

Demoramos, mas não falhamos em publicar aqui mais um tópico e hoje é a vez de apresentar um pouco do mundo da programação de jogos em Delphi.

Não, não será este um curso completo de programação em Delphi + criação de jogos em Delphi. Acho que está mais para um bate-papo sobre o que pode ser feito com a ferramenta e onde procurar informações que o nortearão neste processo de aprendizagem, ok?

Aos que não conhecem, uma apresentação sobre a ferramenta: Delphi não é uma ferramenta desenvolvida ESPECIFICAMENTE para a criação de jogos. Delphi trata-se de uma IDE (Integrated Development Environment) para a linguagem Object Pascal (os mais xiitas dizem ser uma variação da Object Pascal a linguagem com que Delphi trabalha). É uma ferramenta RAD, ou seja, para o desenvolvimento rápido de sistemas, e talvez isso explique por que esta ferramenta popularizou-se tanto dentre o pessoal de programação.

Por ser uma ferramenta RAD, o desenvolvimento de sistemas tradicionais é feito muito rápido nessa ferramenta, já com jogos, nem tanto, mas também não é nenhum bicho de sete cabeças!

Na verdade, considero o desenvolvimento de jogos em Delphi mais fácil do que em outras linguagens, mas não vou me prolongar mais a fim de evitar atritos desnecessários, como a “guerra das linguagens”.

O Borland Delphi é uma ferramenta paga, mas a Borland lançou o Delphi Explorer, uma versão free de seu software e que pode ser usado livremente.

Você deve estar se perguntando: e o que será que serei capaz de criar em Delphi? Será que há bons jogos desenvolvidos nisso?

Até há!

Um exemplo que já foi muito citado anos atrás são os jogos da série Age of Wonders. Quem quiser conhecer um pouco, pode ver o jogo Age of Wonders 2. Nos sites abaixo (o primeiro é o da empresa desenvolvedora) você poderá encontrar várias informações e telas dele:

http://www.triumphstudios.com/ageofwonders/

http://aow2.heavengames.com/

Um lugar cheio de informações e jogos desenvolvidos em Delphi pode ser encontrado no seguinte site:

http://www.delphigamer.com/main.php

Bem, se você quer criar jogos em Delphi, pode ser uma boa idéia primeiro conhecer a ferramenta, não? Algumas pessoas me perguntam se não há um curso pronto, onde ensine Delphi e desenvolvimento de jogos nesse ambiente. Olha, pode até ter! Se quer em português, o único lugar onde você deve encontrar é a Tilt.net .

Na PDJ nós temos alguns tutoriais, mas nada ensinando o básico de programação em Delphi, então o jeito é ou procurar na Internet (salve Google!) ou correr atrás de alguma empresa/escola que ofereça isso.

Uma vez que você já conhece um pouco a feramenta (aprendeu sobre como ela funciona e fez alguns programas para testar esse aprendizado) você estará apto a começar a pesquisar e estudar sobre a criação de jogos nele.

Uma boa ideia é começar vendo um pouco sobre como desenvolver jogos sem uso de APIs, bibliotecas, etc. voltados ao desenvolvimento de jogos. Por quê? Assim você não se prende aos “vícios” que nos acostumamos quando aprendemos a criar somente com um determinado conjunto de bibliotecas.

A revista ClubeDelphi apresenta esporadicamente artigos e tutoriais sobre criação de jogos, então você pode procurar por edições que sejam do seu interesse. Como já foi citado, a Tilt.net também pode lhe ser de bastante ajuda. Além disso, não se esqueça de nosa querida PDJ.

Você pode encontrar alguns tutoriais sobre jogos em Delphi no seguinte link:

http://www.programadoresdejogos.com/forum/viewtopic.php?t=5758

Se você vai começar estudando desenvolvimento de jogos em Delphi do zero ( o que acho excelente!), você provavelmente vai começar desenhando tudo diretamente no Canvas.

Canvas é uma superfície de um objeto na qual podemos desenhar, por exemplo, quando você coloca uma bitmap para aparecer num TImage, é no canvas do mesmo que ele desenha! Dá para se desenhar no canvas de diversos componentes: TForms, TImages, TPaintbox, etc.
Se você for trabalhar puramente com o Delphi, sem nenhuma biblioteca em especial, experimente brincar de desenhar no canvas do TPaintBox.

O Canvas possui um atributo Pixels, que é um array bidimensional, onde cada ponto representa a cor de um determinado pixel naquele objeto. Pronto! Você precisará mexer com esses pixels para desenhar no canvas.

Desenhe sempre o que vai ficar “por baixo” antes do que vai ficar “por cima”, porque o que você desenha sempre vai cobrir o que já estava lá antes!

Como desenhar um personagem com fundo transparente? Simples! Vamos supor que o preto é a nossa cor transparente… Então para cada ponto que você for desenhar você verifica se aquele pixel é da cor preta, se for, desconsidere-o, caso contrário, pinte no Canvas (plotar um pixel, eis o termo mais usado).

Legal, mas você está querendo criar uma esfera semi-transparente que irá ficar em volta do personagem, dando a impressão de ser um escudo, né? Bem, depois de plotar o seu personagem, você vai, para cada ponto da sua esfera (lembrando de só plotar os que não são parte do fundo!) fazer a média entre a cor que pertence à esfera e a cor que já está na posição em que você vai plotar. Desta forma, você consegue plotar algo com 50% de transparência. Bem, mas você talvez não tenha entendido direito esse cálculo, ou queira que seja plotada a imagem com outro percentual de transparência, então… Vamos a uma rápida fórmula para fazer esse cálculo, ok?
R1,G1,B1 -> são os valores RGB da cor de um dado pixel da esfera
R2,G2,B2 -> são os valores RGB da cor de um dado pixel no canvas
P -> percentual de transparência (0 a esfera não aparece, 100 a esfera aparece sem transparência)
RF,GF,BF -> são os valores RGB da cor que nós plotaremos no pixel
RF = (R1*P + R2*(100-P))/100
GF = (G1*P + G2*(100-P))/100
BF = (B1*P + B2*(100-P))/100
Pronto, ae é só pegar os valores RGB, converter para a cor e jogar nesse pixel!

Agora, você deve perceber que quando for aparecer na tela, ela às vezes ficará piscando. Por que isso? É que enquanto ainda está sendo desenhado no seu PaintBox, o formulário já está sendo desenhado na tela, ae fica mostrando a imagem se formando ainda (flickering ou cintilação, esse é o nome do efeito).
Para resolver isso é só ativar a dupla bufferização nos componentes sendo utilizados. Dependendo de qual o componente usado para desenhar, ativa-se no formulário ou no próprio componente. É só dizer: nome_componente.doublebuffered := true;
Dupla bufferização (ou double buffering) é uma técnica que usa uma superfície auxiliar para desenhar, enquanto que exibe somente a principal. Após concluir o desenho, essas superfícies são trocadas. Assim, o que sempre é visto na tela é uma superfície já totalmente desenhada.

Bem, mas você precisa que tudo isso seja executado infinitamente, num laço. O Delphi te oferece, para isso, um componente Timer. Ajuste o intervalo para que fique razoável a velocidade. Nele você deverá:
1. Verificar quais teclas foram pressionadas;
2. Apagar a tela;
3. Cálculos de colisões, física, etc;
4. Movimentar objetos;
5. Redesenhar a Tela;
6. Validações de vitória, derrota, etc;

Pronto! É algo mais ou menos assim!
Treine bastante a parte de manipulação gráfica e cálculos para detecção de colisão. Após “maestrar” a parte gráfica, cuide da parte sonora.

Como seu objetivo nos primeiros projetos será fazer tudo sem bibliotecas extras, você pode usar o componente MediaPlayer que devem estar em seu Delphi.

Depois de um ou dois projetos completos assim, você deverá ter compreendido as dificuldades que há no desenvolvimento de jogos sem as facilidades das APIs e bibliotecas auxiliares.

Há várias opções para quem está interessado em criar seus jogos em Delphi, algumas delas são:

DelphiX

– Jedi-SDL

– Jedi-DirectX

– GLScene

Eu já usei bastante a DelphiX. Thiago Martinez (W_Snipes) já estudou a GLScene. Enfim, todo mundo que já estudou Delphi para jogos já se envolveu com alguma delas e conhece um pouco de suas vantagens e desvantagens, então querendo conversar sobre, é só falar, ok?

Quando você começar a criar seus jogos, vai perceber que irá precisar de um editor de mapas para criar mais cenários facilmente. Se precisar, pode usar o editor de mapas que eu criei para os meus projetos de jogos 2D tiled. Se bem me lembro, já está com o código-fonte, então você poderá estudá-lo e desenvolver o seu próprio, se preferir.

Bem, como disse, este não é um tutorial. Acho que está mais para um guia falando sobre o que você irá precisar e onde pode encontrar algo sobre. Quem souber tirar proveito pode conseguir com isso um excelente pontapé em seus estudos.

É isso. Até breve!

LuaJava – uma ferramenta de scripting para Java

Autor: Edmar Souza Jr.

Hoje vamos falar sobre como estender a linguagem Java usando a linguagem Lua. Mostraremos o Lua Java e como usá-lo para as principais operações.

Lua

Hoje não estamos aqui para falar do satélite natural da Terra, mas sim da linguagem de scripting Lua. Desenvolvida totalmente em território tupiniquim pelo time da TecGraf (Pontifícia Universidade Católica do Rio de Janeiro – Puc-rio). Lua é leve, veloz, é basicamente procedural, tipada dinamicamente, tem suporte a threads e possúi suporte a Orientação a Objetos usando metamecanismos (LuaTables!!).

Lua já foi empregada com sucesso em vários jogos comerciais, entre eles MDK2, World of Warcraft e Grim Fandango.

Você pode obter mais informações sobre Lua em www.lua.org.
LuaJava

Não, a Nasa não descobriu uma ilha chamada Java na Lua, nem tão pouco os cientistas da ilha de Java estão indo para a Lua. LuaJava é uma biblioteca que permite estender a linguagem Java usando Lua como ferramenta de scripting.

A grande jogada da biblioteca LuaJava é permitir interoperabilidade total entre o ambiente Java e o ambiente Lua. Você pode, por exemplo, criar classes em Lua e usar uma interface para instanceá-las em Java, ou então “importar” uma biblioteca escrita em Java (seja ela criada por você ou do pacote padrão) e usar em seus scripts Lua.
Indo para Lua com Java

A primeira coisa que precisamos para dar início a nossa viagem é do LuaJava, que pode ser adquirido em: http://www.keplerproject.org/luajava/.

Existem dois arquivos necessários para o funcionamento de LuaJava: luajava-x.x.jar e luajava-x.x.dll (libluajava-x.x.so para usuários do Linux)

Para instalar a biblioteca basta copiar o arquivo luajava-x.x.dll para a pasta bin no diretório do seu Java runtime (ou no diretório bin do seu Jdk), o arquivo luajava-x.x.jar deve ficar em algum caminho do CLASSPATH.

Feito isso você estará com o LuaJava instalado e funcionando.

Iniciando o LuaJava

A primeira coisa que você que já programou com Lua em C ou C++ antes deve saber é que as funções da API Lua estão totalmente disponíveis aqui através da classe org.keplerproject.luajava.LuaState. Entretanto, quem não tem intimidade com a API Lua, não fique desesperado. A LuaJava oferece várias funções que facilitam a integração de Lua com Java.

A Classe LuaState

O principal objeto da LuaJava é o LuaState. O LuaState guarda uma referencia para a máquina virtual Lua, e é a partir dele que você vai carregar arquivos de script, registrar classes, chamar funções, etc.

Para iniciar o LuaJava, você deve criar uma nova instância do objeto LuaState. Você pode também opcionalmente abrir as bibliotecas padrão do Lua. O seguinte trecho de código mostra um programa completo que abre uma nova instância da LuaJava e imprime Hello World na tela usando a função print do Lua.

package testeluajava;
import org.keplerproject.luajava.*;
public class Main {
	public static void main(String[] args) {
		LuaState l = LuaStateFactory.newLuaState();
		l.openLibs();
		l.LdoString("print \\"Hello World\\" ");
		l.close();
	}
}

Claro, não precisamos nos fixar a executar comandos com o LdoString. Podemos usar o LdoFile para executar nossos arquivos de Script:

package testeluajava;
import org.keplerproject.luajava.*;
public class Main {
	public static void main(String[] args) {
		LuaState l = LuaStateFactory.newLuaState();
		l.openLibs();
		l.LdoFile("teste.lua");
		l.close();
	}
}

//teste.lua

print "Entre com seu nome:";
local nome = io.read();
local texto = "Hello " .. nome;
print (texto);

O forte do LuaJava como dissemos anteriormente é permitir a interoperabilidade entre o ambiente Lua e o ambiente Java.

Usando classes Java em Lua.

Para usar classes escritas em Java no ambiente Lua, o LuaJava nos fornece duas funções: luajava.bindClass e luajava.new.

A função luajava.bindClass permite importar uma referencia para uma classe escrita dentro do ambiente Java, isso é feito da seguinte maneira:

//teste.lua

JFrame = luajava.bindClass("javax.swing.JFrame");

O único parâmetro que a função bindClass recebe é o nome completo (incluindo os pacotes) para uma classe Java. No exemplo acima JFrame agora é uma referencia para a nossa classe javax.swing.JFrame. Para podermos usar esta referencia para instancear um novo objeto, basta usar a função luajava.new da seguinte maneira:

//teste.lua

c = luajava.new(JFrame);

Após isso, podemos trabalhar com o objeto normalmente como se fosse uma classe nativa do Lua. O código abaixo cria uma janela com o título “Hello PDJ” com 300 x 300 pixels e que encerra a aplicação quando fechada.

//teste.lua

JFrame = luajava.bindClass("javax.swing.JFrame");
f = luajava.new(JFrame);
f:setTitle("Hello PDJ");
f:setSize(300,300);
f:setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f:setVisible(true);

Também podemos importar classes criadas por nós mesmos. Vamos considerar como exemplo a seguinte classe:

//PdjBlog.java

package testeluajava;
import java.util.ArrayList;
public class PdjBlog {
	private ArrayList<String> posts = null;
	public PdjBlog() {
		this.posts= new ArrayList();
	}
	public void newPost(String post) {
		this.posts.add(post);
	}
	public void printPosts() {
		for (int i = 0; i < this.posts.size(); i++) {
			System.out.println(this.posts.get(i));
		}
	}
}

Em Lua podemos usá-la da seguinte maneira:

//teste.lua

PdjBlog = luajava.bindClass("testeluajava.PdjBlog");
blog = luajava.new(PdjBlog);
blog:newPost("Teste Lua Java!!");
blog:newPost("Usando Lua com Java!!");
blog:newPost("Outro Teste Lua Java!!");
blog:printPosts();

Usando classes Lua em Java

Assim como é possível criar classes em Java e usá-las em Lua, também é possível fazer o contrário, definindo classes em Lua e usando-as em Java.

O processo para usar classes Lua em Java já é um pouco mais complicado. Para usar as classes você deve definir ma interface em Java que descreva a classe Lua que você deseja utilizar.

Podemos pegar como exemplo a seguinte interface:

//INpc.java

package testeluajava;
public interface INpc {
	void setNome(String nome);
	void falar();
}

Em Lua esta interface poderia ser definida como a seguinte classe:

//npc.lua

Npc = {
	Nome = "";
	setNome = function(nome)
		Nome = nome;
	end;

	falar= function()
		local texto = "Olá eu sou um npc, meu nome é " .. Nome;
		print (texto);
	end;
}

Para usar esta classe precisamos pegar sua referencia através do método getLuaObject da classe LuaState, como no código a seguir:

LuaObject obj = l.getLuaObject("Npc");

A função getLuaObject recebe um parâmetro que é o Nome do objeto no ambiente Lua, ele retornar uma referencia para esse objeto com o qual podemos trabalhar. Porém ainda não estamos aptos a usar a nossa classe Lua. O LuaObject pode ser qualquer coisa adquirida do ambiente Lua. Podemos por exemplo criar uma função no ambiente Lua e chamá-la do nosso código Java da seguinte maneira:

//teste.lua

function HelloWorld()
	print "Hello world from Lua function";
end;

//Código java

package testeluajava;
import org.keplerproject.luajava.*;
public class Main {
	public static void main(String[] args) {
		LuaState l = LuaStateFactory.newLuaState();
		l.openLibs();
		l.LdoFile("teste.lua");
		try {
			LuaObject func = l.getLuaObject("HelloWorld");
			func.call(null);
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}
		l.close();
	}
}

Voltando a nossa classe npc, para podermos usá-la precisamos criar uma “proxy” para ela, ou seja, precisamos dizer ao LuaJava que a nossa Interface INpc é compatível com nossa classe npc e que podemos usá-la para manipular nosso objeto. Fazemos isso através da função createProxy, como mostrado a seguir:

INpc npc = (INpc) obj.createProxy("testeluajava.INpc");

A função createProxy recebe como parâmetro o nome da Interface que desejamos fazer a Proxy (note que novamente precisamos passar o nome do pacote junto). A função retorna um objeto o qual fazemos casting para INpc. Uma vez feito isso podemos chamar as funções da classe normalmente. Aqui vai a listagem completa do código Java.

package testeluajava;
import org.keplerproject.luajava.*;
public class Main {
	public static void main(String[] args) {
		LuaState l = LuaStateFactory.newLuaState();
		l.openLibs();
		l.LdoFile("npc.lua");
		try {
			LuaObject obj = l.getLuaObject("Npc");
			INpc npc = (INpc) obj.createProxy("testeluajava.INpc");
			npc.setNome("Supersayajin");
			npc.falar();
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}
		l.close();
	}
}

Note que, como estamos lidando com código externo a nossa aplicação é sempre bom tratar possíveis exceções. A função createProxy ainda nos obriga a tratar possíveis LuaException e ClassNotFoundExceptions.

Passando objetos por parâmetro

Quando trabalhamos com proxys chamando classes Lua no ambiente Java não precisamos chamar a função luajava.bindClass para usarmos em Lua uma classe Java que estejamos passando por parâmetro para algum método, a tipagem dinâmica do Lua cuida disso para nós, altere a INpc adicionando um novo método void postarNoBlog(PdjBlog blog); e implemente essa rotina na sua classe em lua:

postarNoBlog = function(blog)
	blog:newPost("Post do Npc ".. Nome);
end;

Quando chamarmos a função postarNoBlog podemos passar para ela um objeto do tipo PdjBlog, sem precisarmos usar a função luajava.bindClass. A seguir segue todo o código fonte para esse exemplo:

//PdjBlog.Java

package testeluajava;
import java.util.ArrayList;
public class PdjBlog {
	private ArrayList<String> posts = null;
	public PdjBlog() {
		this.posts= new ArrayList();
	}
	public void newPost(String post) {
		this.posts.add(post);
	}
	public void printPosts() {
		for (int i = 0; i < this.posts.size(); i++) {
			System.out.println(this.posts.get(i));
		}
	}
}

//INpc.java

package testeluajava;
public interface INpc {
	void setNome(String nome);
	void falar();
	void postarNoBlog(PdjBlog blog);
}

//Main.java

package testeluajava;
import org.keplerproject.luajava.*;
public class Main {
	public static void main(String[] args) {
		LuaState l = LuaStateFactory.newLuaState();
		l.openLibs();
		l.LdoFile("npc.lua");
		try {
			PdjBlog blog = new PdjBlog();
			LuaObject obj = l.getLuaObject("Npc");
			INpc npc = (INpc) obj.createProxy("testeluajava.INpc");
			npc.setNome("Supersayajin");
			npc.postarNoBlog(blog);
			blog.printPosts();
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}
		l.close();
	}
}

//npc.lua

Npc = {
	Nome = "";
	setNome = function(nome)
		Nome = nome;
	end;

	falar = function()
		local texto = "Olá eu sou um npc, meu nome é " .. Nome;
		print (texto);
	end;

	postarNoBlog = function(blog)
		blog:newPost("Post do Npc ".. Nome);
	end;
}

Bom pessoal, esta foi uma pequena introdução ao que é possível fazer com LuaJava. Mais detalhes e tutoriais sobre o LuaJava podem ser conseguidos no site oficial do projeto www.keplerproject.org/luajava

Espero que tenham gostado.

Abraços e até a próxima. 😉