|
Neste artigo, trago a vocês alguns dos jogos desenvolvidos integralmente por mim. Infelizmente, não sou detentor dos direitos de projetos maiores, mas o conteúdo aqui é bem interessante e didático.
Vikanoid
Um remake de Arkanoid foi o primeiro jogo que eu desenvolvi. Foi criado em Java. Motivo?
Era a linguagem que eu mais tinha contato na época.
Boa parte do conteúdo do programa foi baseado nos livros Killer Game Programming in Java (também disponível online), do Andrew Davidson e Developing Games in Java, do Dave Brackeen. Também estudei um bocado o tutorial do Space Invaders, do site Coke and Code. Particularmente, acho o Java uma linguagem excelente para quem está aprendendo a programar jogos: não tem as diversas das complicações do C++, tem uma poderosa e bem estruturada API para gráficos 2D e tem farta disponibilidade de bom material online na Internet.
Os fontes do jogo podem ser baixados aqui. Se você está só interessado em joga-lo, os binários podem ser baixados aqui. Para rodar o jogo, é necessário ter o Java 6 instalado. O jogo pode é jogado preferencialmente com o mouse, mas o teclado também pode ser usado.
Batalha Estelar
Desenvolvi o batalha estelar para a disciplina de programação em C++ da pós graduação das Faculdades Positivo. Ele foi desenvolvido em C++, usando também a SDL. Peço desculpas por parte do código estar tão “java like”, mas eu tinha recém voltando para o C++. O design gráfico foi feito pelo pessoal da Troupe Comunicações.
O jogo é fortemente baseado em Star Control 1 e 2, principalmente no modo de batalha, jogo que eu fui muito fã. Aliás, um grupo de fãs como eu produziu um remake chamado Ur-quan Masters, que vale a pena ser baixado.
As músicas do jogo são as originais do Star Control 2. As versões remixadas foram feitas por um grupo que se intitulou Precursors, e podem ser livremente baixadas aqui.
O jogo foi desenvolvido para ser jogado em dois jogadores. Cada nave possui uma forma de tiro e um poder especial diferente. Usar qualquer um deles demanda energia, que se recupera gradualmente com o tempo.
A rápida nave laranja, movimenta-se pelas teclas A, D, W, atira usando o shift da esquerda e fica invisível pressionando-se o control da esquerda. Como no caso dos Klingons no Jornada nas Estrelas, a nave volta a ficar visível caso dispare. Seus disparos são feitos através de dois canhões rápidos, mas de pouco dano.
Já a nave verde move-se lentamente, atira lentamente, mas tem um tiro poderosíssimo. Use as setas e o shift e control direitos para controla-la. Seu poder especial é recuperar vida, mas para isso ela gasta uma enorme quantidade de energia. Para sair do modo de batalha pressione x.
Você pode baixar os fontes do jogo aqui, os fontes não contém a pasta com os recursos, que pode ser obtida baixando um dos binários. Existem duas versões do jogo, uma delas com músicas em baixíssima qualidade e com apenas 1.3MB e outra com músicas em ogg de alta qualidade, de 24MB. Clique na quantidade de megas desejada para baixar. O jogo foi desenvolvido em 2 semanas de trabalho intenso (pelo menos 3 dias durante a semana + final de semana). Usarei esse jogo como protótipo de tecnologia para o meu trabalho final do curso, uma engine de IA para jogos. O processo de produção da engine, chamada Sofia IA, está disponível num blog próprio.
Jogador de Bejeweled
Esse programa não é exatamente um jogo, mas é tão interessante que não pude deixar de cita-lo aqui. O desafio da disciplina de Inteligência Artificial, do professor César Pozzer foi fazer um bot para jogar bejeweled. O programa joga diretamente no site da popcap. Simplesmente inicie um jogo novo, rode o programa, feche a janela dizendo que ele detectou a tela e observe ele jogando. Ele consegue manter-se por vários minutos, e faz jogadas de tirar o fôlego. Usei para ele usa árvore de busca com apenas 3 níveis de profundidade, isto é, ele é capaz de analisar a melhor combinação de 3 jogadas consecutivas.
O screenshot ao lado foi retirado após eu acompanhar o programa por 1 hora. Quem já jogou bejeweled sabe que um milhão de pontos é uma marca impressionante, o que dizer então de 3,3 milhões?
Os fontes foram feitos em C++ e podem ser baixados aqui, já os binários, aqui. Juntamente com fontes está o trabalho que entreguei para o professor, descrevendo o algoritmo utilizado em detalhes. Os binários contém dois arquivos executáveis. O bejeweled_smooth mostra a movimentação do mouse com mais suavidade e permite que você acompanhe as jogadas. Já o outro é o jogador hardcore, que move o mouse instantaneamente a atinge marcas impressionantes de pontos.
O bot foi desenvolvido em 6 horas de trabalho.
Caça à bandeira
O Caça a Bandeira é um jogo para programadores de IA. Os jogadores usam o editor de mapas para criar um cenário, e então, podem degladiar-se com seus 10 soldados, 3 médicos e seu general. O único problema? Quem controla esses personagens são scripts, feitos em groovy pelos próprios jogadores, que usam o framework do jogo para programar sua IA. A melhor IA vence.
O objetivo é simples: pegar a bandeira do adversário e levar até o x, posicionado no seu lado do campo. Somente o soldado pode carregar a bandeira (seja a sua própria ou a do adversário). Tanto o soldado, quanto o general podem atacar. O médico não ataca, mas cura soldados feridos. Soldados e médicos podem falar uns com os outros, desde que esses estejam em seu campo de visão, ou com o general, onde quer que ele esteja.
Os fontes do jogo podem ser obtidos aqui, enquanto os binários, aqui. É necesário Java 6 para rodar. Juntamente com ambos os arquivos existe um documento de texto, descrevendo detalhadamente como o programa funciona e quais comandos estão disponíveis para os escritores do script. Os binários também acompanham scripts de exemplos, bastante burrinhos por sinal. A mesma lógica é usada para cada time.
Esse programa foi feito em Java. Eu posso pensar em uma série de aperfeiçoamentos para ele, desde otimizações de código, até um esquema melhor para movimentação e ataques.
Um detalhe interessante é que os soldados deslocam-se usando o famoso algoritmo A*. A imagem do jogo também foi produzida pelo Troupe Comunicações. O jogo foi produzido pouco mais de duas semanas de trabalho realmente intenso e em dupla com um colega, o Marcos Y. Moribe.
Dica: Se o programa rodar muito lentamente no seu micro, experimente remover o fundo.
Campeonato Bola Gelada
Finalmente, meu primeiro jogo 3D. O Campeonato Bola Gelada foi fortemente inspirado pelos jogos Worms 3D (de onde tirei a imagem da mira, a música e o contador de tempo) e QuickBasic Gorilas. O jogo é para dois jogadores e nele dois times de pinguins brincam de atirar bolas de gelo um no outro. O jogo foi desenvolvido em C++ utilizando-se também OpenGL.
As imagens dos pinguins foram retiradas do site Polycount e são modelos do Quake 2 gratuitos. Nenhuma engine foi usada no jogo e todas as classes, inclusive a da carga dos modelos, são criação minha. Os skyboxes vieram desse site.
O jogo implementa 3 tipos de câmeras. Uma que persegue o pinguim enquanto ele anda, outra em primeira pessoa, para o momento do tiro e a última aérea, para que o jogador possa acompanhar a bola. A movimentação dos pinguins é feita através das teclas A D W. A mira é feita com o mouse, segurando-se o botão do mouse pressionado também controla-se a força. A bola é atirada ao soltar o botão ou quando a força máxima é atingida. É possível pressionar espaço para alternar entre a mira e a caminhada, desde que ainda reste tempo disponível para a atividade.
Ainda faltou acrescentar um placar. Outro probleminha é que faltou esperar a animação do pinguim atingido terminar para só então passar para a vez do próximo pinguim. Mas, no geral, o jogo ficou bem satisfatório, pois só foi desenvolvido em 3 semanas (poucos dias na semana, maior parte só nos finais de semana).
Além das aulas do Unicenp, também usei para o estudo esse tutorial sobre os modelos MD2, essa especificação dos modelos. Também usei o tutorial de câmera do site APRON, embora eu tenha adaptado o código para usar minha própria classe de vetores 3D. Adquiri no processo os livros Beginning Open GL Game Programming (que acabei nem usando nesse caso), do Dave Astle, 3D Math Primer (bem útil) do Fletcher Dunn. Também usei o clássico OpenGL Red Book, que está na minha lista de favoritos até hoje.
Aliás, não parei de estudar OpenGL quase nenhum segundo desde então.
Os fontes do jogo podem ser baixados aqui e, como no caso dos demais, não contém a pasta de recursos, disponível apenas nos binários. O jogo em si pode ser baixado aqui.
Outros jogos da Positivo e PUC/PR
O curso de especialização da Universidade Positivo deixou de existir. Entretanto, sua coordenação e parte da equipe pedagógica formaram a especialização e o curso superior tecnológico de jogos digitais da PUC/PR. No blog do Binder, coordenador desses cursos, você pode ver jogos desenvolvidos por outros alunos. Vale a pena conferir!
Outros jogos
Você pode também conhecer os jogos do Bruno Sanches, clicando nesse link.
-
14/03/2010 14:26:17 |SAdministrator| Vinícius Godoy de Mendonça - Valeu

Valeu. O do pinguim e o batalha estelar são grandes por causa das músicas.
No caso do pinguim tem também os modelos MD2 que ocupam bastante espaço.
-
14/03/2010 17:30:50 |189.78.60.xxx| Intentor

Bacana sua iniciativa de disponibilizar os games com seus fontes!
Parabéns!
-
15/03/2010 10:38:10 |189.78.100.xxx| MarkyHitchhiker - AI

Meu favorito é o Caça a Bandeira.
Quero ter tempo para implementar minha AI que duvido alguem vencer.
-
15/03/2010 10:58:20 |SAdministrator| Vinícius Godoy de Mendonça - Caça à bandeira

Eu tenho idéias para esse projeto. Começando por otimiza-lo e definir prazos máximos de processamento de IA.
Atualmente, ele também está rodando a IA em todas as passadas do game loop, e eu gostaria de reduzir isso.
Também penso em talvez jogar a IA para uma thread separada. Já que ela não é desenvolvida por mim, e sim por um terceiro, parece ser uma boa.
-
11/04/2010 14:20:41 |189.82.5.xxx| Amauri Barros - Eu adimiro os teus conhecimentos

Eu queria no minimo aprender a fazer jogos pra celular, só por hobby mesmo.
Se poder me dar umas dicas eu agradeço.
-
18/04/2010 12:03:28 |189.13.191.xxx| pedroroxd - jMonkeyEngine

Opa, queria dar uma sugestão, para deixar o site mais completo... Tou começando com jMonkeyEngine agora, e tá muito difícil achar tutoriais para fazer jogos simples. Essa sua iniciativa de deixar o código nos jogos é bem legal... Enfim, o que eu estou sugerindo, é tutoriais sobre o jME3 com códigos..
Vlws =)
-
18/04/2010 12:13:41 |SAdministrator| Vinícius Godoy de Mendonça - JME

A idéia é cobrir o básico de Java, que é mais relacionado a teoria geral de jogos e depois partir mesmo para o JMonkey.
Aí levaremos a sessão de Java mais focada no Indie e Mobile, enquanto a de C++ fica para o programador hardcore.
-
20/05/2010 21:33:01 |200.137.237.xxx| Deivid - Parabens

Cara parabens pelo seu trabalho!
Eu queria saber:voce ganha o suficiente mexendo com programacao?
Foi demorado fazer o Campeonato bola gelada?
Eu to fazendo um curso tecnico em redes que envolve programacao, ja tem eu acho 1 mes e meio que eu comesei, eu fiz um jogo da forca sozinho usei comandos muito basicos e ele ainda e so um projeto.
Se quiser da uma olhada nele ai e terminar ele ,to deixando o codigo .Ta em c++!Voce tem que digitar uma palavra por vez.
#include
main(){
char n1, p1=63, p2=63, p3=63, p4=63, p5=63, p6=63, p7=63, p8=63, f1=8, f2=8, b1=8, b2=8, b3=8, b4=8, b5=8, b6=8;
const char j1=2, j2=62, j3=60, j4=35, j5=47, j6=92;
int i=1;
while(i
-
21/05/2010 08:42:47 |SAdministrator| Vinícius Godoy de Mendonça

Legal.
Eu não acho o salário da área ruim. Fora que é uma das profissões que vc nunca fica desempregado.
-
02/06/2010 11:45:38 |189.73.210.xxx| Isabel - Parabéns!

Olá Viny! Na minha facul eu aprendi quase nada de C, foi tudo focado em Java. Eu queria saber quais as reais vantagens da programação de jogos em C?
Sei que a maioria esmagadora é feita em C.
Imagino a linguagem C como bem mais complexa que Java
Obrigada e Parabéns!
Te conheço de um fórum de java( nao sei se posso falar o nome) e voce já me salvou várias vezes rsrs
-
02/06/2010 12:02:28 |SAdministrator| Vinícius Godoy de Mendonça - Java vs. C++

Oi Isabel, pode falar o nome do fórum sim. Seria o GUJ? Aqui não temos fórum, só esse mecanismo de mensagens simples.
Eu já escrevi esse artigo, que compara a programação de jogos em Java com C++.
Basicamente, as vantagens do C++ em relação ao Java são:
a) melhor integração com o sistema operacional e com hardwares como joysticks, manches, volantes, etc.b) Um número absurdamente grande de bibliotecas;
c) Possibilidade do uso de DirectX (não tem binding dessa biblioteca no Java);
d) Única linguagem suportada em todos os consoles (o java não é suportado em praticamente nenhum console);
e) Maiores possibilidades de otimização.
Porém, programar em C++ é bem mais difícil que a programação em Java. Você precisará se preocupar com alocação de memória e detalhes de hardware que são totalmente abstraídos por lá. Por isso, ainda recomendamos o Java ou o C# como boas linguagens de estudo, para o desenvolvimento de jogos Indie.
-
02/06/2010 14:59:11 |189.72.141.xxx| Isabel - Jogos

É do Guj mesmo(valeu pelo JImagePanel !), eu sou iniciante no Java(construo sistema de estoques, refeitorio..o 'feijão com arroz'- por enquanto rsrs). Mas na verdade sempre amei os jogos, minha paixão desde os 6 anos de idade
.
Como moro no interior de MT, fica difícil, pois não tem facul específica de Computação Gráfica.
De qualquer forma Viny, eu vou estudar por fora mesmo, vou dar uma olhada nos jogos que voce disponibilizou, tentar entender e começar a estudar física( Física tá no sangue, meu pai é engenheiro civil
)
Vou começar com Java, depois C# e finalmente C++..Aprender C++, vai ser um desafio maravilhoso!
Muito Obrigada
-
02/06/2010 18:32:08 |SAdministrator| Vinícius Godoy de Mendonça - Games

Existem muitos cursos de especialização em jogos. Um deles é aqui no Paraná, na PUC-PR, onde dou aula. Quem sabe no futuro você não faz um?
Enquanto isso, por que não tenta um game como trabalho de conclusão de curso? Se quiser, posso ser seu co-orientador à distância, como fiz com o David Buzzato, do JMario.
Desafio é o que não falta nessa área.

-
23/06/2010 05:33:11 |200.101.114.xxx| Kleber Kruger

Caracaas! que massa... num sabia que tu desenvolve jogos... Parabéns!!!
vou baixar os fontes pra estudar seus códigos! ;p
Brigadão mesmo
quando eu crescer quero ser igual vc
=Dhahaha
-
24/06/2010 14:47:35 |187.76.216.xxx| Elton - Parabéns!!!!

Parabéns pelos jogos são fantásticos algum dia quero desenvolver alguns.
Você conhece alguns cursos de linguagens de programação que podem ajudar?abraços boa sorte!
-
24/06/2010 15:40:48 |SAdministrator| Vinícius Godoy de Mendonça

O ideal é fazer uma faculdade inteira, de ciência da computação. Dê uma lida nesse artigo aqui, que vai te esclarecer melhor esses pontos.
Mas existem boas escolas com cursos bons de linguagens específicas, como é o caso da Caelum, mantenedora do GUJ, ou a Elaborata, aqui em Curitiba.
-
01/07/2010 14:34:09 |187.115.140.xxx| Rodrigo - muito bom

Parabéns pelo trabalho Vinicius, eu admiro o potencial de quem desenvolve games.
Você conhece alguma pós online para games?
-
02/07/2010 17:22:18 |SAdministrator| Vinícius Godoy de Mendonça

Curso de pós graduação online, infelizmente, não conheço nenhum. Se ouvir falar, compartilhe aqui com a gente.
-
10/08/2010 00:54:29 |187.90.61.xxx| Rafael Manzi

Parabéns Vinícius, show de bola !!!
Achei o site através do GUJ dos seus Posters, estava olhando os fóruns porque e para que ??
Bom... Sou de pernambuco, faço ciência da computação e estou no 5º... enfim tenho alguns amigo de sala e juntamente comigo querendo formar uma equipe para fazer o projeto para montar um jogo MMORPG( RPG ), nós temos alguns histórias para o jogo e tal... pensamos de primeira mão fazer um jogo estilo lineage 2 ou Aion ou WOW... Só que sei, que ainda não temos conhecimento para isso, pois não vimos cadeira importantes com computação gráfica, AI e etc...
Se tiver como você ajudar, vi alguns indicações de livros para estudo suas... seria bom mesmo para iniciastes estudar por eles?
Qual linguagem seria a ideal para começar C ou JAVA?
Detalhe: aqui estudamos C o curso quase todo e também JAVA, estávamos pensando e começar aprendendo com JAVA à fazer jogos, até porque JAVA temos acesso aos materiais + fácil.Gostaria de uma opinião sua, até porque acho essa área muito interessante!
Aguardo uma resposta...!?Agradeço desde já!
Abraço.
-
10/08/2010 00:55:13 |187.90.61.xxx| Rafael Manzi

....Continuação....
Gostaria de uma opinião sua, até porque acho essa área muito interessante!
Aguardo uma resposta...!?Agradeço desde já!
Abraço.
-
10/08/2010 01:04:45 |187.90.61.xxx| Rafael Manzi


Ops... iniciastes não é iniciantes, erro ai! xD
Desculpa se tiver +, o sono é maior! xDabraço.
-
10/08/2010 01:09:17 |SAdministrator| Vinícius Godoy de Mendonça - Dicas

Você já fez algum jogo? Se não fez... ESQUEÇA O MMORPG.
Bom, pelo menos por enquanto. Comece fazendo jogos mais simples.
Qualquer jogo é muito mais complexo que as aplicações de cadastro e relatório que você deve estar acostumado. Faça jogos mais simples para testar linguagens, como o Java, o C++ e o C# e ver qual você mais se adapta.
Comece com um jogo 2D single player. Pode ser um de plataforma, como o mário, ou um puzzle, como o Tetris. Não implemente sinuca!!
Depois, parta para um jogo 3D simples, como o Worms.
Em seguida, estude redes e faça um jogo multiplayer, para 2 ou 3 jogadores, rodando em rede local. Porte então esse jogo para internet e estude as técnicas para disfarçar o lag.
Só então, comecem o MMO. Lembre-se que o primeiro "M" do MMO é de "Massive". Portanto, você terá que estar preparado para otimizar muito o servidor. Uma coisa é fazer um jogo para 5 jogadores numa LAN, outra completamente diferente é fazer para 8000. Logo aparecerão os problemas de gargalos de banda, latência e performance no server.
O caminho é longo, mas é muito prazeroso. E se um dia puder, venha fazer a pós de jogos na PUC/PR aqui comigo! Será um prazer te-lo como aluno.












Opa
Parabéns pelos jogos..
O do penguin é o mais loko! xD
17 mb O_o