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.
sexta-feira, 30 de maio de 2008
1º Tutorial
•Modelando um copo
–Abra o blender.
–Apague o cubo inicial (basta selecioná-lo e clicar DELETE).
–Na visão TOP (Aperte Numpad 7), adicione um círculo(ADD > MESH > CIRCLE) com 16 vértices.
–Com todos os vértices selecionados pressione E para fazer uma extrusão (Escolha Only Edges) e logo em seguida S para diminuir a escala do novo círculo.
–Pressione CTRL+N para recalcular as normais do nosso objeto.
–No painel EDITING (F9), encontre o sub-painel LINK AND MATERIALS e pressione o botão SET SMOOTH.
–Mude a visão para SIDE (NumPad 3) e então faça uma nova extrusão pressionando E (Escolha Region) restringindo ao eixo Z e mova os vértices para cima. Ainda com os vértices selecionados pressione S (Scale) e mova o mouse para longe do centro, fazendo com que aumente a boca do copo.
–Volte ao modo de visão TOP (NumPad 7) e com o ALT pressionado selecione o grupo de vértices mais interno.
–Faça uma nova extrusão pressionando E (Only Edges), depois pressione S (Scale) e logo após 0 do teclado numérico. Isso irá fechar o fundo do copo.
–Aperte W e escolha a opção REMOVE DOUBLES do menu. 15 vértices devem ser excluídos.
–Pressione A para tirar a seleção de todos vértices.
–Volte ao modo de visão SIDE (NumPad 3) e selecione todos os vértices que compõem a parte de baixo do copo. Para isso utilize o BOX SELECT (Atalho b).
–Faça uma nova extrusão pressionando E (Region), restrinja ao eixo Z e e mova um pouco para baixo. Isso irá corrigir o fundo do copo.
–Pressione A para tirar a seleção de todos vértices. Pressione A novamente para selecionar todos os vértices.
–Pressione CTRL+N para recalcular as normais do nosso objeto.
–Pressione TAB para ir para o OBJECT MODE.
–Verifique o copo nas mais diversas posições segurando o ALT+ botão esquerdo do mouse.
–Verificamos que a parte superior do copo ficou com a borda “fina” devido a subdivisão, então volte ao EDIT MODE (Pressionando TAB).
–Volte para a visão SIDE (NumPad 3). Faça um novo corte na malha (LOOP CUT, Ctrl+R) e suba o corte para a parte superior do copo.
–Mude para OBJECT MODE (TAB), e visualize seu objeto.
–Pressione F12 para renderizar.
Tente utilizar a mesma técnica empregada aqui para fazer um personagem de jogo como a hemacia do jogo HEMOÇÃO.
Espero que tenham gostado, até o proximo post.
Como tudo começou...
Áreas de atuação em Jogos
Quando se decide deixar de ser apenas um jogador e passar a desenvolver jogos, nos deparamos com algumas dúvidas tais como os jogos são feitos, quais as áreas existentes para se trabalhar com jogos, entre outras. A 1ª pergunta será respondida ao longo do tempo, com vários posts e exemplos de trabalhos. Já a 2ª eu irei abordar nesse post.
Basicamente as áreas primarias de atuação de jogos se resumem em:
* Game designer - Aqui se define o roteiro do jogo, criação de personagens (personalidades), cenários, entre outros elementos do jogo. Em grandes empresas de jogos essa área é subdividida em várias outras, como por exemplo Character Designer, Level designer, etc. Pessoas que atuam nessa área devem ter conhecimentos de psicologia. É importante ressaltar que para ser um bom game designer deve-se limpar a mente de certos vicios, como querer basear seu jogo em titulos antigos de sua preferencia (tente buscar inovação).
* Artist - Costumo dizer que existem 2 tipos de artistas, o que cria e o que monta. O 1º é aquele que cria seus concepts (desenhos em mesas digitalizadoras ou da maneira tradicional), possui forte conhecimento da influencia das cores, brilhos, equilibrio, etc. O 2º é aquele que captura ideias e compila em novos layouts através do uso de ferramentas como photoshop e fireworks. O papel do artist também é subdividido em grandes empresas, ficando conhecido como Character Artist, Environment Artist, UI Artist, etc. Vou mostrar em posts e tutoriais mais a frente que é possivel criar designs sem mesmo ter noção de desenho, basta um pouco de esforço.
* Programmer - Como não poderia faltar, o programador é quem reúne a arte criada pelo game designer e feita pelo artist e faz com que tudo ganhe vida. Existem várias sbudivisões como, Network programmer, UI Programmer, GamePlay Programmer, AI Programmer, etc. Nesta área é importante conhecimentos matemáticos e físicos e ter boa lógica de programação (as vezes nao basta resolver o problema, você deve resolve-lo da melhor forma possivel).
* Sound Artist - Como no artist, existem os 2 tipos, criadores e montadores. Fazem desde trilhas extensas a efeitos especiais sonoros. Trabalha juntamente com o Game Designer para expressar o sentimento da criação do companheiro. Nao confundir esse papel com o Sound Programmer por exemplo, que faz com que o som criado pelo Sound Artist seja executado de acordo com o ambiente em que está usando propriedades físicas e matemáticas (Exemplo: Uma granada explodindo dentro da agua tem resultado diferente do que se estivesse dentro de uma sala).
* QA - É o tester do jogo. Jogos são softwares como outros e por isso passam por processos de engenharia de software como qualquer outro. É necessário garantir que o jogo seja distribuido com o mínimo de bugs possiveis (já que nenhum software está livre de bugs). Muitas pessoas acham que ser tester de jogos é uma missão simples, porém na verdade o tester deve ter conhecimento do processo inteiro para fazer analises precisas de detecção de erros.
Temos como área de atuação secundária:
* Publisher - Logo após o seu jogo estar pronto, você com certeza vai querer que ele vire um sucesso de vendas, entao para isso você deverá entrar em contato com um publisher (Empresa ou pessoa). Responsável pelo papel de negócios do jogo. O publisher é uma empresa ou pessoa influente dentro do ramo.
* CG Artist - Grande parte dos jogos tem historias contadas atraves de CGs (animações gráficas), que possuem o processo de criação parecido com de criação de filmes de animação. Caracteristicas dessa area incluem criação de efeitos especiais, edição de vídeos, composição, etc. Alguns dizem que esta área tem os dias contados, já que a evolução do processamento no jogo já está ganhando qualidade aceitável, ou talvez semelhante.
Ao escolher sua área e começar a estudar, tente criar sua rede de contatos e amizades com pessoas de interesse similar ao seu. Você deve lembrar de sempre aprender com as outras pessoas (algumas mais outras menos), nao importa o tipo de trabalho. Participe de foruns e exponha sua opinião para os outros. Isso tudo irá ajudar a caminhar mais rapido em busca do seu objetivo.
Até mais,
Kick Off
Seguindo o conselho de alguns amigos e pegando carona na criação do blog do meu amigo roberio http://roberiogomes-it.blogspot.com/, estou criando o meu também.
O intuito do blog é falar sobre jogos em qualquer segmento (PC, dispositivos móveis, TV Digital, TV convencional, Consoles, etc...) e tudo relacionado a eles. Vou passar algumas dicas de problemas vivenciados em projetos de desenvolvimento de jogos pelo qual passei e falar de novas tecnologias do mundo dos jogos.
Como grande curioso que sou acabei desenvolvendo skills em diversas áreas, o que me torna capaz de opinar em diferentes setores de desenvolvimento de jogos. Estarei falando aqui sobre modelagem 3D, animação 2D e 3D, criação de texturas, programação em diferentes linguagens, tais como Java, C++, C#, Action Script e outras linguagens de script de engines, como torque ou unreal, alem de algumas linguagens de shaders. Falarei um pouco sobre edição de filmes com after effects, criação de musicas com fruit loops e edição de sons com o sound forge.
Darei também dicas de mercado de jogos e comentarei sobre algumas noticias.
Bom, por enquanto é isso pessoal, até o próximo post :).