nov 282008
 

Para quem não sabe o que foi a FADEJE ou não teve coragem(povo preguiçoso) de ir participar, confira algumas coisas que rolaram no evento.

Lembrando que o evento teve de tudo: cosplay, olimpíada de games, competição de criação de personagens no mugem, palestras, mesas de debate, amostra de demos/jogos e muito mais 😉

Vai ter coragem de perder a 2ªFADEJE?

http://picasaweb.google.com/gdjceara/1FADEJE

out 242008
 

Amigos dias 25 e 26 de Outubro (sábado e domingo) teremos em fortaleza a 1ª FADEJE (Feira de Apresentação e Desenvolvimento de Jogos Eletrônicos em Fortaleza)

Se você curte programação, jogos e melhor ainda os dois! então não deixe de participar do evento, mais informações podem ser vistas nos sites:

http://www.apertastart.com.br

http://gdjce.wordpress.com/fadeje/

out 082008
 

Agora pouco estava, organizando algumas coisas para o 6ºEDJC e para a participação na FADEJE, quando olhando o youtube, sem querer acabei achando o vídeo abaixo.

É uma boa lembrança para aqueles que tiveram o prazer de jogar horas e horas de NES.
Deu vontade de tirar a poeira do meu Turbo Game – CCE 🙂

abr 022008
 

Foi lançado recentemente o FZpong 2.0, o qual faz parte do CDLivre 3.0[1].

O FZPong[2] é um pong com versões para MS-Windows e GNU/Linux, desenvolvido em SDL[3] / GBF[4] e licenciado em GPL, ou seja, você pode estudar o código fonte do FZPong para aprender a programar jogos para computador.

Se antes tudo parecia fácil, agora no FZPong 2.0 as coisas já não estão tão simples assim, o computador ganhou uma nova e melhorada percepção do jogo e que em alguns momentos vai lhe exigir bons reflexos e o uso de estratégias para conseguir vencer.

Como melhorias nesta nova versão temos:

  • Suporte a internacionalização, agora o jogo está disponível em português e inglês;
  • Melhoria na inteligência artificial do computador;
  • Aplicação de novos efeitos na bola de acordo com o local da rebatida;
  • Modificação das regras do jogo;
  • Melhorias no aspecto visual dos textos e janelas de mensagens;

———————————————-

Referência
[1]http://cdlivre.wordpress.com
[2]http://pjmoo.wiki.sourceforge.net/FZPong
[3]http://www.libsdl.org
[4]http://pjmoo.wiki.sourceforge.net/GBF
[5]http://davidferreira-fz.blogspot.com/2007/06/fzpong.html

nov 212007
 

Só pra constar! Depois de Call of Duty 3[1], 25 To Life[2] e Black[3], chegou a vez do Medal of Honor Rising Sun[4], o jogo é composto por 9 missões que vão progressivamente testando seus nervos e pontaria – descobri que sou ruim de mira, minha estatística máxima foi 39% de acertos.

Logo na primeira fase comecei a achar que o jogo era meio sem graça, pois um jogo de “tiro” começava com o jogador dentro de um navio “desarmado”, apenas correndo pra se salvar e usando um extintor para pagar as chamas pelo caminho, após sair do navio começa então um pequeno tiroteio, ou seja, você e seus companheiros atirando nos aviões japoneses.
O próximo ponto que começa a chamar atenção(senão me falha a memória é na segunda missão), é quando você, abordo dentro de um barco(lancha) tem que derrubar a esquadrinha japonesa que ataca (creio que seja Pearl Harbor) a frota americana.

A coisa começa a ficar mesmo complicada quando se chega na terceira missão, ao sair de um comboio na ponte cercado de chamas você é logo pego no fogo cruzado contra os japoneses e tem extermina-los para poder concertar um tanque e sair invadindo a cidade, porém a missão não é tão simples, além de sobreviver ao ataque da orda de japoneses, você tem que escapar dos tiros de um tanque inimigo que aparece repentinamente(não consegui entrar no tanque, aparentemente era possível.) para entrar em um prédio onde pode salvar o jogo e continuar sua missão passando por um estágio de baisebol tomado pelos japoneses, mas seu objetivo nessa missão é tocar o sino da igreja no qual é um sinal para seus aliados detonarem.

Como não tinha pretensão de comentar o jogo, não anotei e nem tenho tudo na cabeça :P, porém apesar de ser de 2003 é um jogo que vale apena ser jogado, o chato é que tem horas que existem muitos quebra-cabeças para serem resolvidos (procurar documentos, quebrar barris de saquê, e muito tiro 😉 regra básica passou na frente atira 😛
Só cuidado para nas missões na selva (a qual começa com você no bote) para não ficar sem munição lá tem muitos inimigos e as balas começam a faltar.

Antes que esqueça, sabe aquele japonês(Tanaka ou é Takana) que lhe ajuda tanto? (em várias missões), pois é, ele tem o pescoço cortado na sua frente.

Última missão, você entrou no porta aviões japonês, abordo de um avião, e você tem como objetivo destruí-lo, nada mais 😉
Ande com cuidado o navio está infestado de marinheiros e muitos possuem espadas, na se assuste ao achar a sala que fica guardado o ouro, assim que você entrar verá tiro pra tudo que é lado e será capturado e interrogado e verá seu amigo (um que aparece de preto em todas as missões) ser espancado, desse ponto em diante o negocio é correr pra sair do porta aviões e embarcar em um avião no convés, porém tem é chão! e muito japona. A última parte acontece quando você está dentro do avião japonês e tem que derrubar os aviões que estão no ar, é tiro que não acaba mais – aparentemente levei tanto tiro, mas mesmo assim meu indicador de life não saiu do verde, então é bom você ir para o convés com o life cheio.

Dicas:

  • Tanques – Eles te acertam se o canhão estiver apontado para você e de longe, próximo eles não disparam;
  • Caixas – Você deve economizar munição, pode quebrar as caixas por meio do golpe de sua arma;
  • Armas – Quando você ver uma arma fixa em algum ponto, cuidado ao pressionar o botão de ação para utiliza-la vai surgir inimigos de todos os lados (na sua frente claro);
  • Mate na Moite – Você pode matar muitos inimigos sem levar tiro, basta atirar de longe antes de acionar as triggers dele. É possível perceber que os inimigos são acionados quando você chega em certas posições, pode pega-los de surpresa atirando antes deles, basta você não sair correndo feito louco.
  • Kamikazes – Cuidado! Samurais e outras criaturas com espada ou facas na arma saem correndo em sua direção, um ou dois golpes é o suficiente pra terminar com sua vida. A melhor arma que achei é a “escopeta” (não lembro o nome correto dela), se eles vinherem correndo e você estiver com outra arma, corra sem dar as costas pra eles e vá descarregando na cara/peito, alguns precisam de diversos tiros para caírem;
  • Life – Sempre que possível volte no caminho na percorrido e complete seu life com itens que deixou para trás, algumas vezes é possível fugir da chuva de balas;
  • Saves – Sempre que você passar por pontos que os “game designer” consideraram críticos(difíceis) irá aparecer um rádio(save) para salvar o jogo, porém as vezes a coisa fica feia antes, então você pode correr um pouco e salvar nos pontos de salvamento anteriores (nada impede de você voltar para a maioria deles)

T+!
Vida Longa e Próspera!

———————————————-

Referência
[1]http://jogos.uol.com.br/analises/playstation3/ult2187u2.jhtm
[2]http://jogos.uol.com.br/playstation2/analises/25tolife.jhtm
[3]http://jogos.uol.com.br/analises/playstation2/ult420u226.jhtm
[4]http://jogos.uol.com.br/playstation2/fichas/mohrisingsun.jhtm

jun 252007
 
Como mencionei anteriormente, foi criado um grupo de estudos sobre desenvolvimento de jogos na UFC, o DoG[1], e mensagens indo e vindo, foi sugerido pelo Felipe Ribeiro (Moderador do Grupo), que as pessoas participantes com ou sem experiência tentassem desenvolver um jogo/demo para que pudéssemos trocar idéias sobre implementação, dúvidas, curiosidades e dificuldades que surgissem no decorrer do desenvolvimento.
Para tentar encontrar pontos comuns para troca de experiência foi proposto dois temas, sendo eles o desenvolvimento de um “Pong” ou de um “Tetris”, e logo em seguida tivemos o primeiro post com o primeiro jogo, era o Pong do Charles[2], o qual de fato acabou servindo de incentivo para mim, e me levou a pensar:

Poderia desenvolver um, serviria tanto pra validar as últimas modificações no GBF[3], quanto a aprender algumas coisas legais e ainda ter a oportunidade de conversar de igual pra igual com as pessoas(já que também era uma experiência nova para mim).

E assim, motivado pela empolgação, desafio e pelo bate-papo, fui levado a desenvolver meu primeiro pong, meio tardiamente, mas fui, e realmente é como falo nas minhas palestras, é uma experiência legal, divertida, simples e viciante, pensei em adicionar mil coisas nele, como sistema de partículas e afins, mas resolvi deixa-lo o mais simples e fiel ao tradicional possível para que quem sabe sirva de exemplo para implementações de quem gostaria de começar a programar jogos.

Experiência

Apesar de já ter desenvolvido o framework GBF[3], e outros demos, não havia feito coisas de concepção simples e divertidas como o pong, e tive que pensar um pouco em como implementar um pong, algumas dúvidas que tive antes e durante o desenvolvimento foram:
  • Como fazer a bolinha rebater na tela;
  • Como fazer com que o CPU jogasse sem acertar todas e que não fosse totalmente burro;
  • Como delimitar a duração do jogo;

Respondendo as essas perguntas comecei então a procurar minhas saídas:

“Como fazer a bolinha rebater na tela”

Fazem anos que não via física, e cheguei a pensar em algo complexo como mudar a direção da bolinha por meio de ângulos, seno, cosseno e etc. Acabei procurando um livro de física para lembrar conceitos relacionados a mecânica, como movimentos uniformes, e etc, pois não lembrava mais nada disso, e nem sabia ao certo se isso resolveria, o fato é que o livro que recorri não era muito explicativo, na verdade era apenas exercícios (esses livros de hoje, parecem não serem feitos para que as pessoas aprendam sozinhas), comecei a ler, e reler, porém não consegui ver de fato a aplicação para o meu caso especifico, o qual seria apenas fazer a bolinha se desviar ou voltar. Sendo assim comecei a procurar pelo Google na esperança de achar alguns sources e acabei foi de fato achando um tutorial/apostila do Silveira Neto[7] (hehehe logo do Silveira, tão próximo e tão longe, ele também é daqui de Fortaleza, tive que ir na Internet para achar o que precisava), e lá tinha justamente o exemplo de uma bola sendo rebatida, aproveitei isso e adaptei para o pong. O fato é que a solução era super simples e eu procurando complicações físicas, bastava no caso inverter os valores de x e y para o que a bolinha voltasse na direção oposta exemplo:

if (bola.y>480){
velocidade.y = – velocidade.y;
}

bola.y+=velocidade.y;

Isso faz com que se a bolinha bater no fundo da tela, volte. Simples não ? pra mudar a direção de X, basta fazer a mesma operação com o eixo X.

“Como fazer com que o CPU jogasse sem acertar todas e que não fosse totalmente burro”

Minhas primeiras idéias foi tentar fazer algo randomico que, quando a bolinha passase do meio da “quadra”, fosse feito um random para determinar se o cpu iria ou não pegar a bola, porém isso pareceu que ia ser baseado muito na sorte e que não ficaria muito natural, então antes de testar, resolvi abandonar a idéia.
Acabei lembrando do PacZero[4], e que eu havia implementado um algoritmo de colisão circular para determinar quando os fantasmas podia “ver” o pacman, e resolvi aplicar o mesmo principio, sendo assim, resolvi criar uma circulo de visão para o cpu, assim, quando a bolinha entrasse em seu raio de visão ele moveria-se para rebate-la. Porém essa alternativa acabou mostrando que com um circulo de visão grande demais, o cpu não erra, e um pequeno demais ele erra muito, então por meio da tentativa, erro e estimativa defini que seu circulo de visão teria um raio de _VALOR_ pixel, e que conforme o cpu ganhe as partidas maior vai ficando seu circulo de visão para assim dificultar a vida do jogador, porém este ponto não ficou muito natural, tem certos macetes (jogadas) que fazem com que o cpu perca.
Esse é um ponto que está muito aberto as melhorias, visto que ficou altamente simplório o pseudo esquema de I.A. do CPU, pontos que eu talvez mude em versões futuras:
  • Fazer com que o cpu se “distraia”, ou que “fique confiante demais” e só vá atrás da bola na última hora, o que causaria o efeito de incerteza se ele acertaria ou não
  • Fazer com que ele decida onde bater na bola, use as três partes da raquete para provocar efeitos diferentes na bola;
  • Fazer com que a visão aumente quando ele perder uma partida, pois assim na será um desafio maior para o jogador;

“Como delimitar a duração do jogo”

Pensando um pouco em como determinar as partidas, acabei me baseando na experiência do projeto de jogo “Pancada”[5](O qual ainda não concluí), que me lembrou do principio de rounds, porém no pancada esses intervalos de partidas são baseados no tempo, e para o FZPong pensei em utilizar o principio de tempo para determinar a duração de cada set, porém acabei chegando a conclusão que seria mais interessante que fosse espelhado em regras como jogos de volley/tenis, assim determinei que para vencer um set, um jogador precisa de ter 5 pontos de vantagem sobre o outro, e para poder vencer a partida, é necessário que um jogador tenha 2 sets de vantagem sobre o outro.

É algo que pode parecerer estranho, a definição desses valores, visto que 5 pontos podem ora parecer muito, mas se levarmos em consideração a Inteligência do “CPU” é algo que fica plausível visto que a velocidade da bola está programada para ir aumentado gradativamente e assim oferecer um desafio mais equilibrado para o jogador.

FeedBack

Esse é um aspecto muito importante, principalmente quando estamos desenvolvendo nos primeiros jogos, protótipos ou quando queremos repassar o conhecimento para as pessoas, por meio deles podemos fugir um pouco da realidade “técnica” e ver quais as reações de jogadores ou de outros desenvolvedores.

Por meio de um desses feedback do Daniel R. Matos do grupo DoG, foi que caiu a ficha de como a figura(sprite) que eu estava usando para representar a bola no jogo estava fora de contexto, isso se deve pq quando iniciei pensei em recriar como o pong fosse um jogo de futebol, porém com meus “grandes dons artísticos”, acabei extrapolando e indo para outra idéia bem oposta, algo que fosse meio que técnico e meio rudimentar, tanto é que podemos observar que as partes da arena do jogo (parte de cima e de baixo) são feitas de pedra, e o fundo do jogo é algo meio confuso/abstrato porém lembra como se fosse um possível gramado e os dois bastões(jogadores/raquetes) são metálicos, e realmente a bola tradicional de futebol ficava destoando o contexto, então depois de receber esse apontamento, corri para o Google a procura de um tutorial(Esfera 3D)[6] que ensinasse como fazer esferas no gimp.

Isso resultou na nova versão do jogo 1.1 só por causa da bola do jogo que agora é uma “esfera metálica” ou similar, bem assim espero eu.
Espero que esse relato possa ajudar ou clarear um pouco o processo de criação do FZPong e que combinado com conversas e o source do jogo possam ajudar no processo de criação e aquisição de conhecimentos relacionados aos jogos.

E por fim temos o download do FZPong[8]:

Código Fonte: FZPong.1.1.src.zip
Versão Linux: FZPong.1.1.bin.linux.tar.gz
Versão MS-Windows e Linux: FZPong.1.1.bin.all.zip

T+!
Vida Longa e Próspera!

———————————————-

Referência

[1] Grupo DoG – http://groups.google.com/group/dog_/
[2] Pong do Charles – http://www.lia.ufc.br/~rockyspirit/pong.tar.bz2
[3] GBF – http://pjmoo.sourceforge.net/wiki/index.php/GBF
[4] PacZero – http://pjmoo.sourceforge.net/wiki/index.php/PacZero
[5] Pancada – http://pjmoo.sourceforge.net/wiki/index.php/Pancada
[6] Tutorial Esfera 3D – http://www.ogimp.com.br/modules/smartsection/item.php?itemid=7
[7] Blog do Silveira – http://www.eupodiatamatando.com
[8] PJMOO Downloads – http://sourceforge.net/project/showfiles.php?group_id=198186

jun 012007
 
Blz!
Pessoal só pra dizer que estarei off nos próximos dias.
Depois de jogar muito SNes, tomei coragem, e consegui comprar meu PlayStation 2 🙂

Porém não esqueçam, dia 07 de Junho em pleno feriado, palestra : “Desenvolvimento de Jogos” no III Sesol

Se você estiver em fortaleza, vá a UFC no auditório da Geografia as 10:00hs !

T+!
Vida Longa e Próspera!

fev 182007
 

SpaceShooter 1.4 e GBF 0.6

Blz!

Pessoal acabei de lançar a versão (correções) no SpaceShooter agora na versão 1.4 (e creio que última deste projeto) e a versão 0.6 do GBF (Framework C++ para jogos multiplataforma).

SpaceShooter, é um jogo clássico no estilo shoot’up, tendo como base a temática de Star Trek.

Para enfrentar tudo isso, o jogador contará com 04 naves estrelares, onde cada uma está melhor adaptada para as diversas zonas, além de contar com um arsenal de phaser ilimitados e de alguns poucos torpedos. Para sua defesa deverá contar com sua habilidade, a velocidade dos motores de warp, além da força dos escudos. O jogo possui 07 fases, onde o jogador terá que enfrentar campos de asteróides, naves inimigas de várias raças, minas espaciais, e diversos outros desafios. Sua missão é destruir a ameaça cibernética, evitando assim que a extinção da raça humana.

Licença:

   SpaceShooter - GPL  GBF - LGPL

Mais informações:

Projeto PJMOO no Código Livre

   http://codigolivre.org.br/projects/pjmoo/

Site do jogo SpaceShooter

   http://pjmoo.codigolivre.org.br/site/spaceshooter/

Wiki do desenvolvimento do SpaceShooter

   http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter