Desenvolvendo Jogos em Delphi
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/
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 idéia é 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!

dezembro 29th, 2007 at 5:16 pm
Acho muto legal o incentivo no uso de Delphi para programação, Parabens pelo artigo!
Muita gente fala mal do Delphi para jogos mas eu acredito que a melhor linguagem para se criar jogos é aquela que vc domina melhor, não adianta tentar fazer um jogo numa linguagem que vc não conhece pq não vai sair nada..rs
no meu site http://www.zgames.com.br estou colocando a evolução do meu jogo de corrida 3D feito em Delphi
tem videos fotos e o jogo é claro…
pra quem tem duvidas…pode apostar que da pra fazer muitos jogos no Delphi!
dezembro 30th, 2007 at 6:24 am
Muito legal. Já programei por 2 anos em Delphi 5/6. Também trabalhei por pelo menos dois anos com o C++ e com o Java.
Posso afirmar que nenhuma linguagem é melhor que a outra. Todas tem pontos fortes e pontos fracos.
Tenho muitas saudades do Delphi, e achei muito bacana o artigo. Também gostei muito dos links de exemplos de jogos. Ótimo trabalho!
dezembro 30th, 2007 at 10:17 am
Bom artigo mas fica meio difícil sem saber delphi. Por isso corri atras de um material que consegui a muito tempo na internet sobre programação em delphi(não programação de jogos em delphi). São diversas apostilas explicando mta coisa do delphi, componentes, linguagem etc e o material é totalmente legal. É de um professor que disponibiliza em seu site as apostilas que ele administra no curso..mto bom.
http://www.professorfabio.com.br/pdelphi2.html
Da pra aprender todo o básico do delphi com as apostilas que tem no site. Mas tem que varrer o site atrás delas pq estão todas espalhadas entre “1° semestre”, “2° semestre”, etc e misturadas em diversas sessões do site, mas é só baixar tudo e depois organizar que vale a pena. Deu trabalho pra achar o site denovo. Fica aí mais uma dica além do artigo.
janeiro 1st, 2008 at 3:47 pm
Olá
Muita gente não gosta do Delphi (tanto para programar jogos, como para outras tarefas).
Já desenvolvi muito em Delphi (tanto jogos quanto aplicativos comerciais) e já vi bastante do potêncial da ferramenta, basta saber usar, e BOOM, vc tem uma ótima ferramenta em mãos que não deixa nada a desejar para o C++ ou C#.
Ótimo post.
[]’s
janeiro 1st, 2008 at 4:51 pm
Belo post! Já desenvolvi muito em Delphi. Trabalhei com a ferramenta durante 1 ano e meio, e fiz um jogo de Quiz para um evento do qual participava, fora outros projetos que desenvolvi com a linguagem. É muito prática e fácil de utilizar, fora que vc não precisa se preocupar com a parte gráfica das coisas. Acredite, ter que fazer janelas de programas utilizando a win32api é um saco! E o Delphi proporciona isso tudo pra vc. Como já disseram é uma ótima linguagem e tenho ele aqui como meu help para toda a vida!
Para quem vai se aventurar nos deleites do Object Pascal, podem baixar o Delphi sem medo! É uma ótima pedida!
[]’s!
janeiro 1st, 2008 at 8:51 pm
Belissimo texto de uma pessoa que foi importantissima para que eu desenvolvesse jogos em delphi..
Cristiano foi muito importante pra mim (embora nem saiba de minha existencia) pois quando eu comecei delphi ouvi boatos de que jogos nele seriam obsoletos.. e foi ai que eu achei jogos do cristiano (tal como familia quase perfeita, no qual eu desenvolvi um similar (que me deu uma tremenda experiencia).. embora tenha entrado em contato para perguntar se estava liberado da publicação do mesmo, nunca cheguei a publicar..
Voltei a programar fazem umas 3 semanas, e comecei (ao voltar) a trabalhar com delphix, e desenvolvi um “semi-jogo” (embora funcional, nao é bem um jogo, pois não tem tela de inicio, pra no minimo escolher “novo jogo”) no qual eu tenho um personagem (com movimentação [sprites]) e um inimigo (que tem 2 ataques, 1 especial), e da preu matar o inimigo que me da dinheiro as vezes, que teoricamente seria usado para algo..
E fiz ele para aprender pro meu jogo esse ano (que pode ser o mais tosco e zuado possivel, mas que eu farei!)
O que eu quero falar eh 2 coisas
1-) Nunca queiram comecar (como eu, e como a maioria) por um MMORPG
Facam pequenos jogos para aprendizado (como esse que citei) para que você junte experiencia para desenvolver um novo jogo..
2-) Eu escolhi DelphiX, mas nunca trabalhei com GLScene, então não sei dizer se um eh melhor pra um ou pra outro, mas pelo q sei GLScene é mais proprio para 3D
Bem, por fim:
Otimo texto.. E boa sorte para que for desenvolver jogos em delphi, eu recomendo
janeiro 13th, 2008 at 4:10 pm
Poutz, estou super feliz com quão bem recebido foi este meu tópico, inclusive conheci agora o Mog, que pôde dar seus primeiros passos em jogos em Delphi com nossa ajuda, o que mais eu poderia dizer?
É esse apoio que recebemos de vocês que nos motiva a escrever, criar e ajudar cada vez mais.
Às vezes a gente está tão ocupado escrevendo, publicando, organizando, etc. que a gente nem tem tempo de falar direito com vocês, realmente peço desculpas por isso.
Mas fico super feliz, mesmo, quando vejo que nosso trabalho está ajudando outras pessoas.
Espero realmente que possamos continuar ajudando a todos vocês!
Alguns websites e blogs estão nos linkando, como o Cuba Games (cujo link está em nosso blog também), fico muito feliz mesmo!
Acredito que não é a ferramenta quem nos limita, mas nossos temores. É por isso que sempre incentivo o pessoal a enfrentar aquilo que teme ou acha que vai falhar. A guerra está perdida se você a enfrenta pensando assim. Em contrapartida, se você luta certo da vitória, já conquistou o seu prêmio!
Um abraço a todos e continuemos com nossos estudos!
janeiro 21st, 2008 at 1:58 pm
Eu sou programador em Delphi, como o nosso amigo aqui supersayajin disse, ele é uma ótima ferramenta, tanto para jogos quanto para programas comerciais, e não deixa nada a desejar. Tem até suporte LUA.
fevereiro 23rd, 2008 at 3:53 am
Olá!
Sou programador em delphi, admito q é uma ótima ferramenta.
Porem mesmo com 2 anos desenvolvendo software sempre quis fazer um jogo.
Porém sem sucesso.
Estou acompanhando o site, gostaria de fazer um jog se alguem quiser me ajudar favor entrar em contato: fernandoklabunde@gmail.com
abraço
abril 2nd, 2008 at 5:05 pm
Cara topissimo esse site!
estou entrando agora nessa area de jogos,
e na procura de material para estudo, este site nao
deixa nada a desjar.
Este site é na verdade um grande estímulo,
para os iniciantes como eu.
Parabens!
vlw!
maio 6th, 2008 at 12:28 am
Oi,estou começando a trabalhar com Delphi e estou adorando,sei quase nada,mas pretendo dominar a
linguagem,sei que não é fácil,mas com muita dedicação
conseguimos quase tudo>Adorei a página pois tem
exemplos com fontes isso é muito importante para
que está começano,tenho muita facilidade em aprender utilizando exemplos.Vocês estão de parabéns.