1- Introdução
Não faz muito tempo que o desenvolvimento
de jogos começou a ganhar algum destaque
aqui no Brasi. Até final da década
de 90, pouco se fazia ou mesmo se comentava
a respeito, e uma indústria nacional
nessa área parecia algo tão distante
quanto bizarro. Quase que simultaneamente, porém,
esse ramo começou a despertar interesse
tanto na academia quanto no mercado, e hoje
em dia temos um protótipo do que seria
uma indústria brasileira de jogos eletrônicos.
No ano de 2000, iniciou-se uma empreitada no
congresso da SBC (Sociedade Brasileira de Computação)
em Curitiba, o embrião do que viria a
ser o Workshop Brasileiro de Jogos e Entretenimento
Digital (WJogos), hoje um evento já bem
estabelecido no calendário de congressos
de computação no país,
embora ainda não devidamente reconhecido
por seu valor. Já nessa época,
a Continuum, empresa paranaense formada por
originalmente por estudantes da UFPR, trabalhava
no desenvolvimento do Outlive, jogo tido como
marco da indústria brasileira de jogos,
e que atingiu relativo sucesso no mercado externo.
Não aconteceu exatamente um "boom"
no interesse pela área no Brasil, mas
certamente esse cresceu bastante a partir dessa
época. Muito se debateu e se debate até
hoje, e há muito mais erros do que acertos
principalmente devido à total falta de
preparo daqueles que resolvem
se lançar por esse caminho. Um dos muitos
mitos que cercam o
desenvolvimento de jogos é o de não
é necessária formação
teórica para
tal, basta saber programar e ter designers competentes.
Pura
ingenuidade. Os principais desenvolvedores do
mundo concordam que é
fundamental uma formação forte,
de preferência em Ciência da
Computação ou Engenharia de Computação,
e que um mestrado já não é
mais apenas uma opção mas, sim,
quase que uma obrigação para aquele
que deseja se tornar um profissional competente.
O estudo é fundamental em qualquer área
profissional que se siga, mas
num mercado extremamente competitivo em que
bilhões de dólares são
investidos e que contempla um público
extremamente exigente, não há
espaços mais para amadorismo, para entusiastas
sem a formação
adequada. Desenvolver jogos lida com quase todas
as áreas da
computação, e não apenas
programação e computação
gráfica, como muitos
imaginam, como veremos a seguir.
2- Formação de um bom Desenvolvedor
As várias áreas estudadas em
computação têm grande aplicação
no
desenvolvimento de jogos, e dominá-las
é muito mais do que puramente
uma questão de orgulho pessoal, é
praticamente uma necessidade de
sobrevivência na área! Analisemos
algumas delas e suas aplicações:
* Computação Gráfica:
talvez a área mais óbvia de todas,
já que é fundamental para a apresentação
do jogo e a interface com o jogador.
* Inteligência Artificial: fundamental
para o controle das diversas entidades do mundo
em que o jogador está inserido, na interação
entre elas e para a percepção
de realidade.
* Compiladores: muitos jogos lidam com linguagens
de scripts para personalização
do mundo de jogo, bem como para extensão
e "mods". Muitas vezes tal possibilidade
pode garantir o sucesso de um jogo.
* Grafos e Algoritmos: é comum programadores
entusiastas não saberem lidar com algoritmos
clássicos, porém fundamentais,
desde a mais simples busca em largura até
a implementação de um algoritmo
de menor caminho de Dijkstra usando uma heap.
Conhecer e dominar essa área pode ser
a diferença entre um jogo lento e mal-feito
para um otimizado e
bem mais adequado.
* Arquitetura: não apenas em otimizações
de baixo nível, mas principalmente na
programção específica para
determinadas plataformas, o conhecimento de
arquitetura de computadores e de linguagens
de baixo nível pode ser um requisito
obrigatório. Não acredita? Olhe
na página
de empregos da Nintendo!
* Redes: hoje em dia todo jogo que se preze
deve ter a opção "multiplayer"
para jogos pela Internet. Saber lidar com latência
e limitações de banda é
fundamental. Conhecer bem determinados algoritmos
e protocolos pode tornar um jogo viável
para multiplayer.
* Programação: sim, é fundamental
dominar a programação de computadores,
e não apenas uma linguagem. Ao decorrer
do desenvolvimento de um jogo, pode-se deparar
com várias linguagens e APIs diferentes.
Conhecer todas é impossível, mas
saber programar bem independe de linguagem,
e aquele que tem tal domínio possui uma
vantagem inestimável sobre os "programadores
de mão cheia" que tanto existem
por aí, mas pouco sabem de programação
realmente. Saber usar e manipular estruturas
de dados complexas, saber como implementar algoritmos
e ter a noção clara de como a
teoria de complexidade se
aplica na prática é uma necessidade.
* Cálculo e Física: se você
é daqueles que sempre reclama de ter
de estudar física e cálculo na
computação, desiste de desenvolver
jogos, a não ser que você queira
programar jogo da velha pro resto da vida. Sistemas
de partículas e outros simuladores físicos,
que contam com o
apoio teórico de cálculo, são
necessários para se criar um ambiente
mais realista possível, e uma experiência
realmente cativante para o jogador. Mesmo jogos
simples como o velho Mario Bros necessitam de
tais esquemas, afinal, mesmo derrotando o temível
Koopa, Mario não
consegue se livrar dos efeitos da gravidade
quando pula. ;)
Poderíamos nos alongar em outras áreas,
mas já foi possível dar uma amostra
do que como é fundamental uma formação
forte, teórica e prática, para
se aventurar nessa área de desenvolvimento
de jogos.
3- Áreas de Desenvolvimento de Jogos
Existem diversos segmentos diferentes de programação
de jogos, cada qual com suas características
próprias, vantagens e desvantagens. Qual
deles seguir muitas vezes não depende
apenas de vontade, mas, sim, de oportunidade.
* Consoles: Já tem quase 10 anos que
se previu a morte dos consoles, principalmente
a partir do momento em que os jogos de computador
passaram a ser mais complexos e avançados.
Depois de mais uma profecia furada, os gurus
de plantão argumentam que os consoles
só sobrevivem porque atingem um público
mais infantil, o que também é
conversa fiada, uma vez que a Sony está
prester a lançar seu Playstation 3, sabidamente
para o público mais velho. A Nintendo
ataca com o Revolution (nome ainda provisório)
a ser lançado em 2006, enquanto que a
Microsoft desfila com seu novíssimo XBox
360 nas feiras de entretenimento pelo mundo.
A entrada da gigante do software nesse segmento,
inclusive, prova que tal filão está
longe de secar.
Vantagens: desenvolve-se para uma plataforma
fechada, com todo o apoio da equipe criadora
da arquitetura, não tendo os problemas
de compatibilidade que acontecem com os PCs.
Desvantagens: é necessário um
investimento muito grande, pois as licenças
pagas para desenvolvimento não são
baratas.
* PCs: esse é outro mercado bem estabelecido,
e muitas desenvolvedoras lançam versões
de seus jogos originalmente para consoles para
os computadores. Vantagens: abrangência
muito grande, pois hoje em dia o computador
é um componente quase que obrigatório
nas casas. Desvantagens: muita pirataria e incompatibilidade
entre máquinas e sistemas.
* Dispositivos Móveis: essa é
a menina dos olhos do desenvolvimento de jogos
no Brasil, principalmente para celulares. Tal
desenvolvimento não requer grandes investimentos
e tem-se a possibilidade de lutar de igual para
igual com grandes desenvolvedoras pelo mundo.
É um mercado em expansão, mas
já se acredita que não vai tardar
muito e a bolha vai estourar, e então
poucos continuarão no mercado. Vantagens:
pouco investimento inicial, pouca pirataria
(normalmente os jogos são voltados para
o uso de serviços da operadora de telefonia).
Desvantagens: plataformas muito limitadas.
4- Pesquisa em Jogos
Por que usar jogos para pesquisa científica?
Há muitos motivos, como o apelo da área,
mas há também a aplicação
e integração de várias
áreas da computação (como
já foi visto aqui) e a possibilidade
imensa de aplicação e teste de
inovações tecnológicas
e científicas. Afinal, que
teste melhor (e mais intenso) um algoritmo de
Inteligência Artificial pode ter do que
jogar contra a máquina mais inteligente
que existe (o homem)?
A possibilidade de testes exaustivos e bem
difundidos (ainda mais hoje em dia, com a popularidade
da Internet) torna o uso de jogos eletrônicos
como forma de pesquisa acadêmica bem atrativa.
O uso dos mesmos em atividades de aprendizado
já vem obtendo a devida atenção,
e aqui no NCE já temos dissertações
defendidas e pequisas avançadas nesse
sentido. Além disso tudo, a possibilidade
de integração de diversas áreas
é algo que também chama a atenção.
Há, é claro, algumas desvantagens.
Uma delas, talvez a mais clara, seja a dificuldade
de aceitação. É difícil
pedir verba de pesquisa para um jogo. E se for
pedido financiamento para compra de um video-game,
ou mesmo para um placa gráfica com aceleração
3D? Será que
alguma agência de fomento levaria tal
pedido a sério? Bem, verdade seja dita,
tal preconceito vem sendo quebrado aos poucos,
a resistência à área vem
diminuindo de maneira promissora.
Outra desvantagem é a questão
da qualidade do jogo. Com as super-produções
a que os jogadores estão acostumados,
pode ser difícil conseguir muitos voluntários
para ajudar a testar um jogo bem mais simples,
mas que tenha alguma característica científica
(ou mesmo um
algoritmo de Inteligência Artificial novo)
que precise ser testado.
Jogando tudo na balança, contudo, a
pesquisa em jogos é bastante vantajosa
e vem ganhando terreno com velocidade, o que
é bastante promissor.
5- Conclusões
A área de desenvolvimento de jogos ainda
engatinha no Brasil, e há muito oba-oba
por parte da imprensa e dos próprios
desenvolvedores. Não há qualquer
resultado realmente significativo que justifique
qualquer projeção animadora quanto
ao futuro, mas ainda temos de passar por um
momento de retração (esperar "a
poeira baixar") para ter uma real idéia
do que temos capacidade de fazer aqui. A falta
de recursos maiores para investismentos ainda
é um grande problema, e a quantidade
de "entusiastas" despreparados (no
sentido da base de formação como
foi visto aqui) também atrapalha muito.
Mas tais estágios são necessários,
e esperamos que em breve tenhamos uma indústria
amadurecida, bem como uma respeito adequado
na academia com relação à
importância do desenvolvimento de jogos.
|