Posts tagged: programação

Octopus Team – desenvolvimento de jogos independentes

Você quer começar a trabalhar com desenvolvimento de games, mas em um mercado brasileiro em crescimento e com muita concorrência, você não consegue experiência nesta área. O que fazer então?

A melhor maneira de conseguir experiência em desenvolvimento de games e montar seu portfólio é fazer jogos, mas isso pode limitar uma pessoa sozinha, pois até mesmo o desenvolvimento de um jogo simples completo (menu, animações, som, efeitos, programação, game design, etc.) é um grande trabalho multidisciplinar, exigindo que você tenha que aprender coisas que não são o seu foco.

Octopus Team

Neste caso, o melhor é criar ou participar de um grupo de desenvolvimento de jogos independentes. Muitos grupos são formandos por estudantes e entusiastas, que querem apenas aprender mais coisas em um ambiente colaborativo e assim poder focar no desenvolvimento de suas habilidades, como programação ou modelagem por exemplo.

Um grupo de desenvolvimento de jogos independentes pode se tornar uma empresa após conseguir um bom entrosamento, conhecimento e experiência. Porém, inicialmente, ganhar dinheiro com jogos não deve ser a motivação de um grupo novo, você deve fazer jogos por que gosta.

Para poder aumentar meu portfólio e ganhar experiência como programador e game designer eu entrei para um grupo de desenvolvimento de jogos independentes, o Octopus Team, liderada pelo Márcio Vinícius Mello de Freitas. Eu encontrei este grupo no fórum da UniDev, entrei em contato com o Márcio, falei das minhas experiências e objetivos e fui aceito. É nos fóruns de desenvolvimento de games que estes grupos são formados e também procuram novos membros. Outro fórum muito bom é o PDJ.

Atualmente estamos trabalhando em um jogo de estratégia em 3D, utilizando o XNA para desenvolver. O projeto já estava iniciado quando entrei neste grupo, então muita coisa estava definida, mas mesmo assim tive liberdade para dar novas idéias. Quando o projeto estiver mais avançado falarei mais aqui sobre ele.

Aproveitando o post, a Octopus Team está procurando uma pessoa para modelar personagens do nosso jogo. Não precisa ter experiência, até por que o grupo serve para aprender, mas é necessário que saiba o básico de modelagem de personagens e animação. Interessados entrar em contato pelo e-mail contato@octopusteam.com.br .

Esboço do Cenário do Jogo

Esboço do Cenário do Jogo

livros de desenvolvimento de jogos

Em outros países, existem diversos cursos para todas as áreas do desenvolvimento de jogos, inclusive universidades com cursos expecializados nisso, como a DigiPen. Aqui, temos poucos cursos voltados para o desenvolvimento de games, alguns cursos superiores que eu conheço estão na seção de links, como a pós-graduação que estou cursando no SENAC.

Se não existem tantos cursos assim no Brasil, como começar a estudar desenvolvimento de games? Existem diversos fóruns sobre o assunto na internet, alguns brasileiros, mas, na maioria das vezes, o fórum serve para tirar dúvidas, buscar ajuda quando você travar em um problema específico, dificilmente você aprenderá do zero os conceitos e técnicas para desenvolver um jogo.

Qual a melhor maneira neste caso? Os diversos livros de desenvolvimento de jogos que existem! Só existe um problema com estes livros: os melhores são em inglês. Se bem que isto não é um problema, já que nesta área temos que ter a lingua inglesa mais incorporada do que o português.

Vou comentar sobre livros que eu tenho, e depois alguns que eu acho interessante mas não comprei ainda.

Um dos melhores e mais claros livros que eu já li sobre o assunto é um dos raros brasileiros. O livro Desenvolvimento de Jogos Eletrônicos, da Novatec, é muito bom para iniciantes. Muitas coisas que eu li no livro eu vi e estou vendo na pós-graduação. A melhor parte do livro é a primeira, pois fala muita coisa de teoria, realmente muito bom e recomendado para quem quer começar com programação de jogos, explica vários conceitos e técnicas básicas. As outras duas partes do livro são boas também, é a parte mais prática do livro, utilizando C++, porém com uma engine desenvolvida pelos autores, que pode ser baixada no site da Novatec.

Desenvolvimento de Jogos Eletrônicos

Desenvolvimento de Jogos Eletrônicos

Um amigo, formado em Design de Games, me recomendou um livro de Game Design uma vez, pouco antes de começar a pós-graduação. Comprei o livro e fiquei impressionado com qualidade dele. O livro Game Design Workshop, de Tracy Fullerton, fala de muitas coisas que envolvem o desenvolvimento de um game além da parte técnica (programação e arte). Existem apenas versões em inglês, e pra mim é uma leitura obrigatória para desenvolvedores de jogos. O livro conta com muitos, muitos exercícios práticos que ensinam conceitos e técnicas para criar jogos, jogabildiades, testar, além de ter partes sobre produção de jogos.

Game Design Workshop

Game Design Workshop

Além destes livros, comprei alguns que não são da área de games, mas são de programação, e são muito bons para programar jogos também, como C++ Primer Plus, Jamsa’s C/C++/C# Programmer’s Bible e Beginning J2ME: From Novice to Professional. Também comprei um de programação de jogos em Java, quando comecei a aprender Java na graduação. É um livro muito bom, mas é voltado para jogos de PC em Java, que não é algo muito utilizado hoje em dia (já foi utilizado algum dia?).

Developing Games in Java

Developing Games in Java

Agora vou falar de alguns livros que eu recomendo, que serão minhas próximas aquisições. Outro livro obrigatório para desenvolvedores de jogos, principalmente para Game Designers, é o Rules of Play: Game Design Fundamentals do Eric Zimmerman. Recentemente ele lançou outro livro, que complementa este, e um professor me disse que é tão bom quanto o primeiro, que é The Game Design Reader: A Rules of Play Anthology.

Rules of Play: Game Design Fundamentals

Rules of Play: Game Design Fundamentals

The Game Design Reader: A Rules of Play Anthology

The Game Design Reader: A Rules of Play Anthology

Existe outro livro de programação de jogos em português que também é bom, mas não fala tanto de conceitos como o primeiro que mencionei. Programação de Jogos com C++ e DirectX da Novatec, como o nome já diz, ensina a programar jogos com C++, começando por jogos 2D até jogos 3D com DirectX, é bom para quem quer programar, mas ainda acho que a primeira opção tem muitos mais fundamentos importantes. Este livro aqui é praticamente um complemento para o anterior.

Programação de Jogos com C++ e DirectX

Programação de Jogos com C++ e DirectX

Existem diversos livros de programação de jogos, bem técnicos, do Jonathan S. Harbour, que também são bons para ensinar a programar, principalmente em C++. Como falei de muitos livros de programação e alguns de design, não posso deixar de lado pelo menos um livro de animação que conheço. O livro The Animator’s Survival Kit não vai te ensinar a fazer modelos 3D em um programa específico, mas contém muitas técnicas de animação. O meu professor de Animação 3D está utilizando os conceitos deste livro nesta matéria.

The Animator's Survival Kit

The Animator's Survival Kit

Pra quem gosta de Engenharia de Software (como eu) e fica imaginando como isso pode ser aplicado ao desenvolvimento de jogos, existe um livro muito bom sobre o assunto. Software Engineering for Game Developers contém muitas técnicas utilizadas em sistemas e como aplicá-las em jogos.

Software Engineering for Game Developers

Software Engineering for Game Developers

Estes livros são muitos bons, a maioria foi indicada para mim por professores da pós-graduação. Muitos links são da Amazon, que envia para o Brasil apenas Livros, CDs, e DVDs. Já comprei alguns livros neste site, inclusive livros usados por um preço muito baixo (o de J2ME comprei por $1,00 + frete), e também é mais barato importar do que comprar nas lojas por aqui, que são muito mais caros. O único problema é que demora um pouco para chegar, os usados demoram ainda mais, mas chegam!

Existem muitos outros livros que conheço sobre áreas mais específicas do desenvolvimento de games, alguns de Game Cultura, por exemplo, usei no meu artigo do post anterior. Em outros posts irei recomendar mais livros, principalmente os que meus professores indicam.

Você já leu algum livro de desenvolvimento de jogos? Comente sobre eles! Até mais!

primeiro projeto de game com SDL e C++

Como havia comentado em outro post, vou falar sobre a matéria de Técnicas de Programação de Games que tive na pós, onde o foco era apresentar as principais técnicas de programação, muitas aplicáveis não somente a games, e fazer um primeiro contato com uma biblioteca específica para games, que neste caso foi a SDL.

Para programar os exercícios, utilizamos o Visual Studio 2005 e a linguagem de programação C++. Ao final desta matéria, tivemos que entregar um game, ou pelo menos uma demo de um game, utilizando os conceitos que foram apresentados nas aulas.

Neste post quero falar um pouco sobre o que vi, sem me aprofundar, e falar sobre o projeto de game que desenvolvi junto com meu grupo. Vou citar alguns dos conceitos, em outro post eu irei tratar mais a fundo estes conceitos e como aplicá-los em programação de games.

Tópicos que foram abordados nas aulas:
- Conceitos gerais de programação com C++
- Estruturas de Dados
- Documentação com UML
- Metodologia de Desenvolvimento Ágil XP (eXtreme Programming)
- A biblioteca SDL
- Técnica de Main Loop (parte do código onde o game é controlado)
- Técnicas de Detecção de Colisão
- Arquitetura de Software para Games
- Máquina de Estados para Games
- DirectX (overview)
- Padrões de Projetos para Games (Design Patterns)
- Conceitos de Otimização de código

Apesar de tudo ter sido apresentado sem muita profundidade, aprendi muitas coisas que não conhecia e que realmente fazem diferença na hora de programar. Foi praticamente o meu primeiro contato com C++, que não foi um “Hello World”.

Vamos ao projeto agora. O nome do jogo foi definido como “Don’t Panic!”, e o objetivo e as características do game deixa claro o por que do nome:
- Jogo de estratégia casual 2D
- Jogador controla um personagem, fazendo-o escapar das rochas que caem aleatóriamente da parte superior da tela
- O objetivo é resistir pelo maior tempo possível sem ser atingido por uma rocha
- As rochas que caem no chão podem ser empurradas, se não estiverem obstruídas por outras rochas nas laterais e em cima
- Se as rochas formarem uma fileira horizontal completa, esta fileira desaparece dando mais espaço ao jogador e pontos
- Se uma fileira de rochas não ficar completa, mais rochas irão cair em cima de outras rochas até o jogador não conseguir escapar
- A pontuação é baseada no tempo em que o jogador resistir, mais um bônus recebido por cada fileira completa que desaparecer

Imagens do desenvolvimento do game, do início ao fim:

Concept Art

Concept Art

Desenvolvimento

Desenvolvimento

Tela de Abertura

Tela de Abertura

Tela do Jogo

Tela do Jogo

Game Over

Game Over

Não conseguimos implementar tudo que queríamos. Criamos um demo, mas sem algumas coisas como pontuação e fazer o personagem pular e ficar em cima dos blocos. Algumas dificuldades que tivemos no desenvolvimento deste game:
- Entender conceitos de movimentação do personagem
- Controlar vários objetos ao mesmo tempo na tela
- Verificar a colisão de cada objeto com os demais e o jogador
- Dificuldades gerais com C++
- Desenvolver arte para o jogo (por isso colocamos o personagem de Alex Kid)
- Incluir música e efeitos sonoros no jogo

Espero um dia terminar este game. Estou pensando em adaptá-la para o DS, já que estou estudando desenvolvimento para esta plataforma (preciso escrever sobre isso também!).

Panorama theme by Themocracy