sábado, dezembro 30, 2006

Mais Novidades no Pacman

Antes de mais nada, aí vão os links pra baixar a nova versão do jogo (sim "os links", já que muita gente teve problemas ao baixar o pacman eu resolvi disponibilizá-lo em mais um formato):

http://diego.cbarboza.googlepages.com/Pacman_beta3.zip
http://diego.cbarboza.googlepages.com/Pacman_beta3.7z


Agora sim, vamos às novidades:

Primeiro: Incluí alguns efeitos sonoros retirados do pacman original.

Segundo: Cansado de jogar no teclado? Seus problemas acabaram (ou quase)! Estou adicionando suporte aos joysticks no jogo. Por hora, só é possível usar o joystick para mover o pacman (ele não serve para navegar pela interface ainda), mas tem um probleminha: na minha máquina, o jogo só reconhece os comandos do joystick depois que eu aperto pelo menos um tecla do teclado e eu não faço a mínima idéia do motivo, portanto comentem aí se o problema acontece com vocês.

Terceiro: Adicionei botões à interface do jogo, o que torna as coisas mais amigáveis do que simplesmente cair diretamente no labirinto do jogo ao clicar no executável.

Na tela principal agora temos três botões: Iniciar, Opções (ainda não há nada aqui, mas futuramente será possível configurar coisas como a velocidade do jogo, o valor das pastilhas e a duração das pastilhas de força), e Sair. Com a inclusão dos botões Iniciar e Sair, fica dispensada aquela mensagem que perguntava ao jogador se ele queria jogar novamente, agora, ao terminar uma partida, ele volta ao menu principal e faz sua escolha.

Os gráficos dos botões foram feitos usando o gerador de botões do cooltext.com, vejam em http://cooltext.com/Buttons . Vale à pena.

Quarto (e muito importante): Os botões do menu principal foram programados com a Rapid GUI, uma biblioteca para interface gráfica que eu estou escrevendo. A Rapid GUI será usada para criar interfaces gráficas especialmente para jogos (coisas simples como botões e caixas de texto) .

A parte relativa aos botões está praticamente pronta, e terminando de documentar eu irei disponibilizar o código aqui. Posteriormente irei adicionar outros elementos de GUI usados em jogos, como caixas para entrada e saída de textos, e botões de opção (muito usados para configuração dos jogos).

Aguardem novidades.













Como de custume, segue um pequeno screen. Desta vez, o Menu.

sábado, dezembro 23, 2006

Novidades no Pacman

Muitas novidades hoje, vamos a elas:

1°: Baixe aqui a nova versão do jogo: http://diego.cbarboza.googlepages.com/Pacman_beta2.zip

2°: Finalmente passei o jogo para um modo gráfico usando bitmaps. Os bitmaps ainda não estão animados, mas isso será corrigido em breve.

3°: O sistema de recordes está funcionando. Já é possível colocar seu nome no ranking dos 10 melhores. Dica: Aperte R para zerar os recordes.

4°: Ao terminar de jogar (morrendo ou comendo todas as pastilhas) agora é possível jogar novamente sem ter que fechar o jogo. OBS: Muito raramente tem acontecido um erro na hora de fechar o jogo definitivamente (apenas uma mensagem de erro do Windows).

Bem, até onde me lembro, é só isso por enquanto. Estarei trabalhando agora pra deixar os fantasmas mais espertos. Aguardem.
















Ai vai uma screen do modo gráfico.

domingo, dezembro 17, 2006

Pacman

Nesse período eu tinha que fazer um pacman para a faculdade. A idéia era a seguinte: na matéria de Projeto de Programas, conforme a gente estudava modelagem em UML, a gente ia desenvolvendo os diagramas do jogo e no final os alunos deveriam implementar o projeto.


Pois bem, não deu tempo pra que meu projeto ficasse pronto, então eu fiz um trabalho escrito (que era a outra opção pra nota de conceito), mas agora que o período terminou eu consegui um tempo e estou implementando o jogo.


Estou disponibilizando uma demonstração de como esta ficando o jogo e, assim que o projeto estiver concluído, irei liberar o código (não que eu ache que ele vai ser muito útil). Também estou disponibilizando os diagramas do jogo.
Pegue a primeira versão do jogo (juntamente com os diagramas) no endereço: http://diego.cbarboza.googlepages.com/pacman_beta1.zip.


E pra quem estiver interessando em modelagem de software, meu professor fez um site com as apostilas que ele escreveu pra aula: http://www.projetodeprogramas.kit.net/. Só fiquem avisados que está é uma matéria bem básica, então o site só tem os conceitos iniciais de modelagem.

Aí vai um screen, só pra ver como o jogo está no momento. Estou desenvolvendo ele assim (em um "modo-texto" no allegro pra acertar toda a lógica e depois vou passar para modo-gráfico, usando bitmaps.

quarta-feira, dezembro 13, 2006

Saiu o Java 6.0

Tenho um amigo (o José) que vai se contorcer com esta notícia, mas aí vai:

O Java SE 6.0 já está disponível em http://java.sun.com/javase/downloads/index.jsp.

Aproveite e pegue o NetBeans 5.5, que agora possui um plugin para C/C++ (se alguém souber como faz isso funcionar, me avisa), http://www.netbeans.org/products/ ou peça o CD em http://www.netbeans.org/about/cd-form.html.

É isso aí, baixem e mãos à obra.

domingo, dezembro 10, 2006

Projeto de Museu Interativo

Hoje eu queria falar um pouco sobre um projeto que nós fizemos pra faculdade - o MIH.

A idéia era fazer um software educativo. No início, nós pensamos em fazer algo do tipo Medal of Honor, mas passado na época do descobrimento e em outras épocas importantes de nossa história. Nada educativo, de fato. Depois de muito pensar, chegamos finalmente à idéia de criar um museu tridimensional e interativo, onde o visitante (neste caso o jogador) poderia andar livremente e interagir com as atrações.

Fizemos apenas algumas coisas até o momento, já é possível andar pelas instalações do museu e clicar nos objetos, onde se consegue informações extras sobre os assuntos expostos. As propostas futuras incluem a implementação de recursos multimídia, onde poderíamos reproduzir sons e vídeos, e a adição de simulações virtuais (como a possibilidade do jogador pilotar um avião exposto ou participar de uma exploração virtual da selva amazônica, por exemplo).

O MIH - Museu Interativo de História (nome provisório) - foi desenvolvido em C++, usando o motor gráfico Irrlicht, além do Audiere para o som. A modelagem foi feita usando o 3DS Max e o Deled, e as texturas foram criadas no Corel Draw.

Seguem alguns screenshots:


A equipe de criação.


Logotipo da nossa equipe.


Exibindo as instruções enquanto o jogo carrega.


Porta do museu (não, não dá pra ir embora).


Um dos quadros da Sala dos Presidentes.


O começo da modelagem de Brasília.


Essa plaquinha limita o acesso às áreas não concluídas.

Bem, por hora é isso.

quarta-feira, novembro 08, 2006

Você sabe que seu jogo está em perigo quando...

Um pouquinho de humor pra descontrair. Espero que gostem.

Você sabe que seu jogo está em perigo quando...

...quando um dos seus engenheiros pergunta, “Isso é uma explosão ou uma árvore?”
...quando seus engenheiros começam a plantar mensagens subliminares nas texturas dizendo “Esse jogo não é um lixo.”
...quando a licença de direitos autorais ocupa mais espaço em disco do que o código do jogo.
...quando você ouve o level designer exclamar, “O editor de mapas faz isso!? Nossa, isso teria nos poupado meses!”
...quando você aprende sobre os recursos do seu jogo lendo entrevistas do seu publisher num site de jogos uma semana antes do lançamento do beta.
…quando você percebe que enviou acidentalmente a versão completa do jogo para todos os sites de demonstração e revistas de jogos.
...quando você pergunta sobre Inteligência Artificial ao seu produtor e ele responde, “Aqueles geradores de números aleatórios podem fazer qualquer coisa.”
...quando o produtor diz “minha mulher não gosta disso, então nós teremos que mudar”.
...quando você navega na internet e encontra um jogo freeware similar ao seu, mas melhor.
…quando você pega seu programador-chefe numa loja comprando uma cópia de “Começando com o Visual C++ 6.0”.
...quando a tela de título do jogo requer mais código que o jogo em si.
...quando o site que faz propaganda do jogo tem 95% do orçamento.
...quando o GIF promovendo seu site é mais legal que a tela de título do jogo.
...quando você começa a pensar em uma maneira de otimizar seu contador de quadros por segundos para ganhar alguns quadros por segundo.
...e você dobra os quadros por segundo ao fazer isso.
...quando alguém lhe pergunta as horas e você responde “oh, 0000 e 1001”.
...quando você decide desistir e escrever o jogo como um único arquivo em batch bem grande.
...quando você pede ao artista para usar o mínimo de cores possível e ele entrega seu trabalho em preto e branco.
...quando seu chefe diz, “Eu encontrei uma forma de reduzir nosso tempo de desenvolvimento”, enquanto segura uma cópia de Klil and Play.
....quando seu time de desenvolvimento se diverte mais jogando paciência do que seu jogo.
....quando você tem que implorar por patrocínio de uma empresa para *alugar* um scanner por uma semana.
...quando você acha que seu jogo pode ser mais commercial se for vendido como um protetor de tela.
...quando você constantemente checa as livrarias procurando pelo novo livro de programação “Como programar (nome do seu jogo)”, com o código-fonte completo incluso.
…quando o computador dá pau e destrói todos os vestígios do jogo e de seu desenvolvimento.
...e todos ficam aliviados com isso.
…quando uma companhia rival envia uma cópia do código deles por pena.
…quando nem mesmo a IA do jogo quer joga-lo – ela simplesmente se apaga.
...quando seus artistas estão discutindo o uso correto de listas encadeadas.
...quando seu programador-chefe diz “É trivial”, e é mesmo, menos pra ele.
...quando você gasta mais tempo sonhando em estrangular o produtor do que programando.
…quando misteriosas caixas de diálogo “Você deseja registrar agora ou mais tarde?” começam a surgir no seu servidor.
...quando a versão alfa cheia de bugs feita há um ano é melhor que a versão final.
...quando você vai mostrar a versão final ao cliente e aparece a mensagem “Seu período de registro expirou”.
...quando executar seu jogo é uma maneira mais rápida de reiniciar o computador.
…quando um amigo diz que os gráficos estão perfeitos... para o rádio.
...quando, após nove meses de desenvolvimento o produtor diz “Vocês sabem aqueles royalties que nós prometemos... primeiro de abril!”.
...quando você pergunta ao seu chefe sobre o pagamento e ele responde “Pense na glória!”.
...quando o produtor diz “ache um site de pirataria” sempre que você pede por algum programa de desenvolvimento.
...quando você dá uma olhada no seu algoritmo de pathfinding e vê algo do tipo “direção = random(4)”.
...quando seu site diz, “Nós não fornecemos patches, já que não fazemos código com bug”.
...quando seu produtor diz, “Nós simplesmente não temos tempo pra planejar as coisas”.
...quando o programador-chefe vem até você e pergunta, “Então, o que é essa tal ‘classe’ de que eu tenho ouvido falar tanto?”.
...quando a descrição do designer de sua nova idéia quente para um jogo começa com “Bem, é muito parecido com Quake...”.
...quando o programador-chefe vê “Aprenda C++ em 10 Minutos” como uma referência completa.
...qunado você tem que colocar uma almofadinha no botão de reset.
...quando seus computadores não cumprem os requisitos mínimos do jogo.
…quando o código de uma das bibliotecas que você está usando diz “#ifdef 19_DE_SETEMBRO”.
…quando você ouve o produtor dizer ao seu chefe “Sombras em tempo real num 386? Sem problemas.”
…quando seus programadores acham que estão sendo espertos ao nomear uma variável int como “eger”.


Seleção, tradução e adaptação por: Eu mesmo ^^ (Diego).
Essas frases fazem parte de uma coleção (bem mais extensa) que pode ser encontrada em http://www.gameai.com/youknow.html.

domingo, outubro 08, 2006

Macros de Debug

Aí vai um pequeno código pra ajudar no debug dos seus programas. O código foi originalmente postado na Allegro wiki por James Lawder Andrews. O que eu fiz foi dar uma editada no código e inserir comentários em português pra que todo mundo entenda.

Espero que seja útil. Comentem.

/* ======= debug.h =======
Conjunto de macros que permitem escrever informações de debug em um arquivo se DEBUG estiver definido */


#ifndef _DEBUG_H_
#define _DEBUG_H_

/* Caso a macro DEBUG esteja definida, será definida a macro DEBUGOUT que permite gravar no arquivo informações de debug. Caso contrário, será definida uma macro vazia que não irá entrar no código no processo de compilação. */
#define DEBUG

#ifdef DEBUG
#include <fstream>

/* Esta macro é usada para gravar no arquivo de debug.
'message' pode ser uma string (entre aspas) ou uma variável.
As macros __FILE__ e __LINE__ são pré-definidas pelo compilador e representam, respectivamente, o nome do arquivo e a linha. */
#define DEBUGOUT(message) debug << "(" << __FILE__ << ":" << __LINE__ << ") " << message << std::endl << std::flush;
#else
/* Se chegar até aqui, significa que DEBUG não foi definida, portanto define-se uma macro vazia DEBUGOUT que não faz nada. */
#define DEBUGOUT(message)
#endif


#ifdef DEBUG
/* Aqui é indicado para o compilador que o objeto debug vai ser declarado em outro arquivo.*/
extern std::ofstream debug;
#endif

#endif


/* ======= teste.cpp =======
Aqui testamos nossa macro pra ver se ela realmente funciona. */

#include <iostream>
#include <debug.h>


using namespace std;

int main(){
#ifdef DEBUG
/* Se DEBUG estiver definido, precisamos declarar o objeto debug que foi declarado através de um extern no arquivo debug.h.
O argumento neste caso é o nome do arquivo que queremos gravar.
Este é o único teste que deve ser feito de maneira explícita. Todas as outras chamadas relativas ao DEBUG só serão incluídas na compilação se a macro estiver definida. Caso se deseje compilar sem o debug, pode-se comentar a linha #define DEBUG (em debug.h). */
ofstream debug("debug.txt");
#endif
int x = 10;

DEBUGOUT("ERRO"); // Gravando uma string no arquivo
DEBUGOUT(x); // Gravando o conteúdo de uma variável no arquivo.
}