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 discplina de programação em C++ da pós graduação do Unicenp. 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 2,7 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 detalhamente 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 penguins 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.

E por hora é só, pessoal!
Outros jogos do Unicenp
Outros jogos desenvolvidos lá na pós graduação de Desenvolvimento de Jogos de Computadores do Unicenp podem ser vistos no blog do curso, mantido pela coordenação. Vale a pena conferir!
UALLL!!!! Parabéns ViniGodoy!!!
Mandou bem demais!!!
Muito bons os teus jogos. Dá pra ver pelo ar profissional de seus jogos que você realmente leva à sério o trabalho de desenvolvedor…
Mais uma vez, parabéns…
Puxa vida Vinícius vendo seus jogos fiquei com mais vontade ainda de qdo acabar meu graduação fazer a pos da UNICENP, porem ultimamente eu to tentando me aprofundar em web games com flash e pelo q sei la na UNICENP e so jogos em C++. Voce sabe se lá ou outro lugar eles dao uma pós aprofundada para o desenvolvimento de jogos em flash?
Fala Vinicius!! Parabéns cara, ficou excelente os jogos, além do mais nós testamos todos né? rsrsrsrs
Abraços
Pois é! A equipe de testes também merece aplausos… hehehehehe
Bruno, Breno, Thiano, obrigado pelos comentários!
Aew.. Parabéns pelos jogos, pena que nunca consegui rodar o Bola Gelada mas estão todos bem legais.
PS: Eu já tinha todos os jogos
, mas ficou melhor organizar para todo mundo que quiser ver também.
Joguei a maioria deles
, e ainda tive a oportunidade de ver os codigos (da qual plagie varios trechos
). Seu trabalho está de parabens (principalmente no codigo)
Gostei de ver !
Tô doido pra jogar o bola gelada !!!
O Caça à bandeira tbm seria muito legal !
Espero por mais jogos… que com certeza serão cada vez melhores !
Nos próximos jogos lembre-se de nós… usuários Linux !
Parabéns msm !
nossa, o Pozzer, legal!
Eu usei ele muito como referencia num trabalho de faculdade sobre storytelling e IA…
[]s
NeoStrider
Grande V
Não tinha sido ainda apresentado ao Bot Bewelejed, os outros eu já conhecia.
Mas adorei todos eles.
Principalmente do Vikanoid, devo ter testado todos os beta, alfa e full version.
Lembro ainda do xadrez que você fez na ET-UFPR, por acaso você não tem ele por ai mais não???
Grande Abraço
Eae Vini, parabéns pelos jogos, ainda não baixei nenhum (discada ^^, mas estão na lista), mas pelas imagens e descrição, da para ver a qualidade dos mesmos!
Assim que eu terminar de baixar os jogos e testar, eu comento aqui!
Parabéns!
Não tenho mais aquele xadrez que fiz em Pascal lá na ET.
Nem sei se rodaria hoje em dia.
Bem legal, além do fato da JGF, que vem nos jogos em Java.
É bem fácil fazer jogos com esse Framework.
Pena que o bola gelada não rodo no meu PC =/
Parabéns pelos jogos, disponibilização dos fontes e divulgação do caminho percorrido para desenvolve-los.
parabéns
espero um dia colocar os meus num site descente também
um dos meus ultimos foi em allegro 2D, no entanto, e usava path finding (no meu caso usei Micropather), tinha network, e uma AI bem fraquinha para os bots (foi amis para testar o lag
)
de quebra ainda fiz um lobby em PHP para o jogo que também acabou saindo quando o site foi despejado
mas deu para treinar HTTP request
ainda não usei nada muito avançado como algoritmos genéticos ou lógica de fuzzy.. a ultima novidade para mim foi máquina de estados – em um que estou desenvolvendo agora, mas quem sabe depois ^^
Ponha sim! Vai ser legal ver os seus jogos também!
Muito bacana seu trabalho, parabéns! Fiquei impressionado, realmente muito bom!
estou a ver k tambem vou criar umm blog meu para colocar meus Jogos..
Qual engine você usa? 3D Game Studio, é?
Não uso 3D Game Studio, ou qualquer outra ferramenta de autoria.
Se você ler ali em cima, falo o que usei para cada jogo, mas basicamente foi Java 2D, SDL e OpenGL.
Vinigodoy, gostei muito dos seus trabalhos. Estou começando a aprender C++, na verdade, comecei ontem, estou estudando sozinho, e eu queria muito saber fazer games, HTML. Eu uso C++ Builder 2007 (Borland), e eu queria saber se você tem MSN, ou email para poder trocar umas idéias, ano que vem eu faço faculdade, vou fazer Programação.
Obrigado.
Tenho sim. Seu MSN é esse que vc colocou quando postou o comentário?
Se não for, põe um comentário novo com o endereço dele que eu te adiciono.
Gostei dos jogos e principalmente de ter um professor que está se especializando na área que eu pretendo seguir. Assim como você eu comecei desenvolvendo o jogo Arkanoid. Porém, ainda não deu tempo de desenvolver outro. Trabalho e faculdade toma todo o nosso tempo.
Gostaria que você desse uma olhada no meu portfólio quando tiver alguns minutinhos.
Ah! Parabéns pelo blog.
Abraços!
Parabéns pelo trabalho ViniGodoy, seu trabalho me inspira.
Ola Vinicius,
Eu tambem ja desenvolvi alguns joguinhos, coisa pequena, gostaria de trocar umas ideias com voce, pode ser?
Meu msn é esse mesmo que preenchi no formulario.
Oi. Pode ser sim. Vou te adicionar. Geralmente eu conecto a noite e no final de semana.
Olá Vinícius, possuo um jogo de poker em minha cpu e precisaria de uma adaptação, não sou programador. Apenas gostaria de uma idéia não sei se seria possível. Se vc puder entrar em contato através do e-mail que deixei no formulário conversaremos com mais detalhes.
Agradeço a atenção.
Olá. Seu jogo suporta adaptações? E que tipo de adaptação você deseja?
Se o jogo suportar extensões e fornecer um mecanismo para que você as crie, não será muito difícil adapta-lo. Alguns jogos que tem tal mecanismo (e que não são de Poker) são os RPGs: Oblivion e Neverwinter Nights.
Se o jogo não suportar, não será um trabalho nada fácil. Na verdade, será tão complexo que dificilmente valerá o investimento. Se você tiver em sua máquina o programa (código-fonte) do jogo, aí o trabalho fica um pouco mais fácil, mas nem por isso será trivial.
Não sei como da primeira vez eu passei batido pelo “bot” !!!
Muito legal criar um bot para Bejeweled.
Como é fazer um bot para um jogo em flash em C++ ?!
Vc captura a tela e manipula o mouse ? Não testei mas tô curioso !
O que vc descobriu com seu bot… é melhor jogar as combinações de cima primeiro (por exemplo)
Também vou querer fazer um bot… é mais divertido que jogar !
O bot estima três jogadas no futuro e joga a que dá a melhor combinação nas três. Quando empata, não há diferença significativa entre priorizar o que está em cima ou o que está embaixo. Estou priorizando as peças debaixo, só porque acho mais divertido ver mais peças caindo.
O bot faz exatamente isso. Tira um printscreen da tela e controla o mouse. Depois baixe os fontes e veja o documento que tem dentro. Ele descreve exatamente como o bot foi feito, que lógica usei, etc.
Olá Vinicius,
Gostei muito do seu trabalho, faço faculdade de Ciencia da Comp. e gosto mto da parte de programação. Como tenho um trabalho em Java para entregar no próximo semestre, acredito que com os links que vc disponibiliza e dicas, eu possa conseguir desenvolver algo bom.
tudo de bom pra vc!!
Oi, quando o assunto é Java, não deixe também de visitar o GUJ:
http://www.guj.com.br
É o fórum que participo!
OPA!
Me adiciona aí no msn
Preciso de contatos de gamedev
…
A propósito, não consegui fazer o teu BOT rodar não…
Roda no firefox?
O.o’
…
PS: parabéns pelos jogos!
Não testei todos ainda, mas vou testar!
Nossa,
Sensacional! Parabéns pelos resultados e pela dedicação. Vejo que você participa de vários fóruns e está sempre tentando ajudar o pessoal! Já vi suas mensagens várias vezes no guj e nos fóruns de desenvolvimento de jogos e gostaria de perguntar o que vc aconselha para um desenvolvimento rápido (tenho que ter um protótipo em 4 meses) de um ambiente tridimensional (na realidade, um consultório médico virtual) onde o paciente, o estudante da área de saúde e o médico irão interagir e, posteriormente, conversar… Eu sei que você prefere JOGL/ LWLGL a Java3D, além disto são suportados pelo JMonkeyEngine… Mas… Por onde devo começar?? Que apostilas você aconselha?
Desde já, muito obrigada!!
Aguardo sua resposta.
Ps: no guj meu login é julia.castro se desejar me responder por lá.
Dotkey, funciona no Firefox sim.
Agora, ele usa printscreen para ver a tela, então você não pode deixar a telinha de “procurando jogo” na frente do jogo! Tem que estar a área livre, para que o bot consiga “ver” a tela.
Ualll !
Sensacional Vini. Os seus trabalhos fornecem uma grande quantidade de informações. Agora me reservo a absorver isso tudo e quem sabe, contribuir também.
att.
Adroaldo J. Pagliari
Ola boa noite sou estudo de tecnologia e gostaria de saber se vc tem ou me indicaria alguns links com apostilas ou tutoriais ou o que for sobre java 3d mas somente para programar pelo codigo sem auxilio de nenhuma engine ou ide especifica para jogos ,
eu utilizo netbeans e os materiais que encontro na maioria são para engines especificas gostaria de saber somente no codigo primeiro
agradeço desde já sua ajuda e aguardo contato .
Clayton G. L. Pereira
Os dois links que eu recomendo são esses aqui:
Killer Game Programming in Java – é um livro inteiro sobre Java 3D que o autor disponibilizou em pdf, de graça. Eu tenho a versão impressa, é excelente:
http://fivedots.coe.psu.ac.th/~ad/jg/
Coke and Code – ótimos tutoriais, fala de JOGL e LWJGL:
http://www.cokeandcode.com/tutorials
Se usar um deles, pode acompanhar o meu blog. Embora seja C++, é quase a mesma coisa, já que o OpenGL é o mesmo.
Falo muito obrigado pela ajuda estou dando os primeiros passos nesse mundo tão complicado que é o de desenvolvimento de jogos .
vini vc sabe mexer em wxwidgets?, assim eu nao sei bem como usar nem sei como intalar no code blocks e nem sei se é bom isso ou é melhor SDL.. SDL da pra usa butao? obrigado cara se puder me add no msn hugufc@hotmail.com.. seria de bastante valia para poder tirar umas duvidas obrigado..ahh achei muito show os jogos!!vc ta de parabens, e vc tbm pode me adicionar no bate-papo do gmail tbm com o email obrigatorio que eu mandei vlw!!!
Oi,
A SDL não foi exatamente projetada para interfaces de janelas, embora existam componentes prontos como o aedgui ou o wgui. Ela foi criada para fazer aplicações multi-mídia, como jogos e visualizadores de vídeo e tocadores de som.
Já a wxWidgets foi criada para se integrar ao ambiente de janelas, e fornecer componentes de forma multi-plataforma. Eu só mexi muito rapidamente com ele, praticamente, só compilei e executei os “hello worlds” do wxSmith. Esse pacote do Code::Blocks permite a confecção de janelas de forma gráfica. Achei bem bacaninha e parece que o próprio Code::Blocks foi desenvolvido nele.
Mas não sou nenhum especialista e nem mesmo posso te indicar referências sobre o assunto, exceto talvez o site do próprio fabricante.
É , eu passei a madrugada toda estudando sdl! cara nao to fazendo a minha bola de futebol se mover pressionando as teclas(setas) sem soltar , ou seja pra ela andar eu prefiro que ficar clicando nas teclas repetidas vezes..vc sabe me ajudar com isso! obrigado
Cara to tendo problemas com o TTF_RenderText_Blended.. Podes me ajudar? valeu
Vinicius,
Simplesmnte fantastico sua evolução como desenvolvedor de jogos
Sou um apaixonado por jogos em c++, embora nao tenha desenvolvido nenhum.
Sou programador em vb6 e vb.net sera que podemos nos comunicar para que vc me de umas dicas de como iniciar no desenvolvimento de um jogo simples como o seu do pinguim?
Olá, sou novo na area de programação, mas a linguagem C++ me chamou muito a atenção por ser suportada por PCs e consoles, também percebi que é possivel usar openGL e directX.
Comprei um livro chamado:”Programação de Jogos com C++ e DirectX”.Andei dando uma lida mas ainda tenho muitas dúvidas e gostaria de aprender a fazer o que o título diz: programar um jogo em C++.
A proposito… Parabens pelos jogos, são realmente d+!
oii mt bons os jogos,porém gostaria de saber se vc pode me ajudar eu estou querendo criar um jogo simples estilo manager mais não sei por onde começar nem que programa usar.Grato
ViniGodoy cara vc tem a manha! Meu Deus impressionante…
boa tarde meu noem é Felipe, sou aluno do tecnico de informatica industrial, nativo de C++, aprendendo java recentemente pelo JAVA como programar. fiquei impressionado com seu trabalho.
Eu atualmente estou com um projeto de desenvolver jogos em JAVA, já fiz alguns em C++, jogos ridiculos em allegro mas me demandaram muito fosfato, gostaria de saber se você pide me dar algumas ideias, porque ainda nao sei por onde começar. estou programando um rpg, a pedido de uma amiga minha, comecei a desenvover a UML e nao sei oq faço, se uso o JAVA2D ou outra ou apis, e essa eh só uma das duvidas… por favor ajude esse iniciante amante da computação 8D. muito obrigado!
vim aqui mais mesmo parabenizar pelo otimo trabalho… tanto em relação aos jogos quanto em relação ao blog… não programo jogos, estou começando a mecher com imagens, estava tendo uns problemas bestas com imagens e pra aprender um pouco mais a respeito vim pq ja vi varios posts seus no guj… esse blog e certos posts respostas seus la no guj me ajudaram bastante…
bom..vim aqui da os parabens e o obrigado…
Que fofo =) amei o joguinho !É bem interessante,eu jogo worms 4 e e realmente parecido xD ficou liindo mesmo =),parabens Vini o/
O que aconteceu com o blog?
Nada. E esse é justamente o problema, não estou conseguindo manter o blog.
Tenho alguns projetos para ele no futuro, mas tudo vai depender de resolver antes alguns problemas pessoais.
que pena.
Tem como vc upar o executavel mesmo, da máquina jogando o Bejeweled, achei muito legal.
Parabéns cara!!
Pelos seus tutoriais e jogos. Estou estudando OpenGL a algum tempo, e gostaria de saber se você tem algum tutorial sobre como carregar modelos MDL do Half-Life (ou Counter-Strike)? Obrigado.
Não tenho. Se achar, compartilhe com a gente!
olha, não entendo muito, mas está legal teu trabalho…
Sucesso p ai
infelizmente parece que os links estão off =(
mesma coisa com a imagem..
flw
Boa noite, cara parabéns pelos jogos e pelo blog. Estou estudando opengl mas pelo blog do nehe productions, mas quero estudar por livros técnicos, e então gostaria que me indicasse alguns livros bons para eu poder ler e aprender. Obrigado e até mais.