segunda-feira, 16 de junho de 2008
Linguagens de programação para jogos
No post de hoje irei falar sobre linguagens de programação para jogos. É importante saber quais fatores ajudam na escolha da linguagem em um projeto, tais como:
* Plataforma Alvo - Aquela para o qual o projeto irá ser desenvolvido (Console, Mobile, Windows, etc... ).
* Familiaridade da equipe - É considerado um risco de projeto se a equipe não tiver familiaridade com a linguagem escolhida.
* Requisitos de desempenho e/ou portabilidade - Somente serão elegíveis as linguagens que atenderem esses requisitos.
Bom, diante desses fatores as linguagens de programação mais comuns em jogos são:
Linguagens de baixo nível - Responsáveis por características do núcleo do jogo
* C++ - Linguagem OO(Orientada a Objeto) muito poderosa devido a manipulação direta de memória (através de ponteiros). Esta é de longe a linguagem mais usada na industria de jogos (90% a 95% do mercado) devido ser OO e ao seu excelente desempenho (compilando em binario para a plataforma escolhida). Possui uma curva de aprendizado lenta e está propensa (se não for programado com cuidado) a ter vazamentos de memória (memory leaks) devido a manipulação direta de memória. Visual Studio, Visual C++, Code Blocks, Carbide C++ e Eclipse (com o plugin) são alguns exemplos de IDEs para se trabalhar com C++.
* Java - Linguagem OO de fácil aprendizado e de imensa popularidade. Ganhou grande destaque devido a sua portabilidade. Possui grande aceitação no mundo dos jogos para dispositivos móveis. Apesar de todas essas vantagens Java ainda não é considerada uma linguagem elegível para jogos em algumas plataformas devido ao alto uso de memoria e seu desempenho ser bem inferior ao C++ (porém com a evolução do hardware em alguns anos talvez seja possível). Eclipse e Netbeans são alguns exemplos de IDEs para se trabalhar com Java.
* C# - Linguagem OO de fácil aprendizado e grande popularidade. Com as investidas da microsoft de popularização da plataforma .NET juntamente com o projeto XNA, esta linguagem tem ganhado cada vez mais espaço, mesmo que seja ainda entre hobbistas, estudantes ou indies. Assim como Java, C# possui alto uso de memoria e desempenho inferior ao C++. Visual Studio e Visual C# Express são alguns exemplos de IDEs para se trabalhar com C#.
Linguagens de Script de Alto nível - Responsáveis em geral por implementações de game play. Algumas dessas são criadas especialmente para o projeto da engine, grande parte delas com sintaxe parecida com C.
* Torque Script - Exclusiva para a Torque Engine.
* Unreal Script - Exclusiva para a Unreal Engine.
* LUA - Linguagem de script 100% nacional. Robustez, simplicidade, boa performance, pequena, gratuita, são algumas das qualidades dessa linguagem. Possui sintaxe procedural e semantica extensivel.
* Python - Linguagem de multiplos paradigmas (OO, funcional e imperativo). Produtividade e legibilidade são algumas das qualidades dessa linguagem.
* RUBY - Tambem de multiplos paradigmas, esta linguagem foi criada para aumentar a produtividade dos programadores atravez da minimização de problemas encontrados.
Linguagens de Shaders - Utilizadas na criação de alguns efeitos que são processados na GPU. Todas a seguir possuem sintaxe parecida com C.
* Cg - Linguagem de shader da NVidia.
* GLSL - Linguagem de shader utilizada com OpenGl.
* HLSL - Linguagem de shader utilizada com DirectX.
Vale lembrar que é possivel fazer jogos em linguagens como Action Script (para programar em Adobe Flash) em caso de jogos casuais, ou mesmo fazer jogos simples em qualquer linguagem como VB, Delphi (com object pascal), C, Pascal, etc.
Bom pessoal, espero que tenham gostado. Até o proximo post.
terça-feira, 10 de junho de 2008
3º Tutorial - Criação de texturas - Parte 2

- Abra a imagem acima no photoshop.


sexta-feira, 6 de junho de 2008
3º Tutorial - Criação de texturas - Parte 1
Atendendo a pedidos e para quem está achando o blog interessante, vou mostrar como é feita a criação de alguns tipos de texturas simples para jogos e CGs.
Bom, existem várias formas de se fazer texturas, são elas:
- Usando Fotos Digitais : Você pode tirar fotos com sua propria câmera digital (com lente de boa qualidade, é claro) e fazer as devidas adequações na imagem no seu software preferido(Photoshop, Fireworks, Paint Shop Pro, Gimp, etc...). Livros e tutoriais na internet dão boas dicas de como não estragar sua foto digital(exemplo: O ideal é tirar a foto em dia nublado e evitar a foto no horário do sol nascente ou poente, evitando o alaranjado na imagem, etc...).
- Passo a passo : Através de aplicações de filtros (Noise, Clouds, etc), camadas e efeitos de alguns dos softwares citados acima é possivel obter excelentes resultados.
- Pintura digital : Através de mesas digitalizadoras ou com o velho e bom mouse (pixel art ou não), desenhistas fazem a arte necessária.
Vou mostrar os dois primeiros métodos, pois o 3º exige conhecimento de desenho, o qual eu não tenho :).
Lembrando que usaremos o photoshop CS2 e será necessário um conhecimento básico da ferramenta para executar esse tutorial.
Criando uma textura de lava
- Abra o photoshop
- Escolha File->New e nomeie sua textura de forma significativa (para que você possa acha-la facilmente no futuro). Em width e height, escolha potencias de 2 (256, 512, 1024) para manter o padrão de texturas em jogos (devido ao tile das imagens, o qual mostrarei na parte 2).
- Mantenha a cor do foreground branca e do background preta.
- Selecione a opção Filter->Render->Clouds.
- Selecione a opção Filter->Render->Different Clouds algumas vezes até ter um resultado parecido com este
- Duplique a layer que acabamos de trabalhar, e deixe ela selecionada (a mais acima).
- Selecione Filter->Stylize->Emboss com os seguintes valores, angle = 135, height = 3 pixels e amount = 500%
- Vá em Filter-> Filter Galery e escolha plastic wrap filter com as opções Highlight Strength = 15, Detail = 10 e Smoothness = 5.
- Ainda com a 1ª camada selecionada mude a opção de blending de normal para overlay.
- Selecione a camada de baixo e escolha a opção de menu Image->Adjustments->Color Balance. Ajuste o Color Levels para +50, 0 e -50 para os 3 Tone Balances (Shadows, Midstones e Highlight).
- Aplique o filtro plastic wrap nesta camada da mesma forma que a anterior (com os mesmos parametros).
Bom pessoal na parte 2 deste tutorial eu falarei da criação de texturas através do 1º metodo e como fazer o tile (junção lado a lado) delas corretamente para jogos.
Até o próximo post.
2º Tutorial
Use a imaginação trocando os tipos de objetos deste exemplo e faça a sua propria arte.
Espero que tenham gostado. Até o proximo post.
quarta-feira, 4 de junho de 2008
O projeto KAMUR
Fiz uso de algumas caracteristicas do flash, como animação com glow para alguns efeitos, alterações de cor, efeitos de alpha e muito mais.
Bom pessoal, é isso. Espero que vocês tenham gostado. Até o proximo post.
terça-feira, 3 de junho de 2008
Plataformas
Quando vamos desenvolver jogos temos que definir para qual plataforma iremos faze-lo. O objetivo desse post é esclarecer quais plataformas as existentes e como está o mercado brasileiro em relação ao desenvolvimento de cada uma delas.
* Consoles - A criação de jogos para consoles é extremamente restrita. Na maioria dos casos é necessário a compra de um SDK (Software Kit Development) por um preço salgado e também ter outros cases de sucesso. O mercado brasileiro ainda não possui maturidade nessas plataformas.
* PC
Windows - Jogos para windows compoem grande parte do mercado mundial. Existem diversas ferramentas (incluindo engines, SDKs, IDEs, etc) para desenvolvimento de jogos para windows:
2D
- GameMaker
- XNA
- Mugem
- Flash
- RPG Maker
3D
- Unreal Engine
- Torque Engine
- Ogre
- Irrlicht Engine
- Crystal Space Engine
- XNA
- Blender Game Engine
- Quest 3D
Linux - Apesar do crescimento de usuários linux para desktop, o mercado para esse Sistema Operacional ainda é muito evitado, salvo algumas exceções.
Infelizmente o mercado brasileiro ainda não compete de igual pra igual com os grandes produtores de jogos (como EUA, alguns países Europeus e asiáticos) devido ao orçamento de alto custo para produção de jogos realmente de ponta. Devido a isso o mercado brasileiro se detem muito em jogos 2D ou 3D de baixo orçamento, como jogos educacionais, por exemplo.
* Dispositivos Móveis - Essa é a melhor plataforma para o mercado brasileiro atualmente. Equipes pequenas desenvolvem projetos de boa qualidade e com retorno rapido. Grande parte dos jogos é desenvolvida em Java, porém também existem jogos feitos em Symbian C++, Brew e Flash lite. O ganho no poder de processamento dos dispositivos e o aumento na largura de banda (com tecnologia 3G, por exemplo) tornam esse mercado ainda mais atrativo.
* TV/ TV Digital - Jogos interativos para TV convencional são dificeis de encontrar mas existem. Já a TV DIGITAL por ser uma tecnologia recente, ainda está em processo de amadurecimento, porém já temos algumas ideias se concretizando.
Entao é isso pessoal, até o proximo post.