Ponto V!

Home Arquitetura Programação Os softwares de um jogo
Bruno Crivelari Sanches
Os softwares de um jogoImprimir
Escrito por Bruno Crivelari Sanches

Um jogo nada mais é do que um Software multimídia e apesar de todo conteúdo de arte, som, vídeos não passa de um software, assim como vários outros programas que costumamos usar (Bloco de Notas, navegadores, Calculadora, etc).

A construção do software de um jogo a principio segue o mesmo estilo de qualquer outro software, é feito um projeto, definido linguagens, arquitetura, realiza-se a codificação, testes, etc. O grande diferencial desse software é a tarefa que este realiza e como a realiza. Mas vamos primeiro ver como este software pode ser organizado.

Um software de jogo costuma ser dividido dois módulos principais: Engine e jogo. O engine ou motor é o software que podemos encarar como o sistema operacional do jogo, ele é quem cuida de carregar os arquivos de arte para a memória, realizar os desenhos, tocar sons, etc. Além de que costuma cuidar de tarefas mais especificas, como a física do jogo, sistema de IA, comunicação via rede em jogos multiplayer, provendo assim toda a infra-estrutura que o jogo precisa. Já o jogo como o nome mesmo já nos da entender é onde esta todo o código de gameplay, é neste ponto que tarefas básicas como contar pontos, ver se alguem morreu ou não e etc são realizadas. Além de que é comum ao jogo dizer ao motor quais arquivos carregar, qual fase deve estar na memória, etc.

Além do jogo em si, existem outros softwares envolvidos em um jogo, geralmente o jogador acaba utilizando apenas o jogo, mas durante o desenvolvimento vários outros softwares acabam sendo envolvidos, são as ferramentas de criação. Existem as mais variadas ferramentas, desde um simples editor de texto como o Bloco de Notas a um editor de níveis feito pela própria empresa como o UnrealEd do Unreal. Note que muitas ferramentas podem ser ferramentas comuns do mercado e outras são desenvolvidas especificamente para o jogo.

Engines

Nos primórdios da industria não havia um definição clara entre motor e jogo, tudo era simplesmente o jogo. Com a evolução e aumento da complexidade dos jogos a tecnologia por trás de um jogo começou a se tornar tão valiosa quanto o próprio jogo (ou até mais que este), as empresas começaram a perceber que além dos lucros com a venda dos jogos, poderiam lucrar um bom dinheiro com a revenda da tecnologia para outras empresas.

Tudo indica que os motores começaram a surgir de duas necessidades principais:

  • Era preciso separar o código “genérico” que podia ser usado em outros jogos, para assim um comprador do motor poder utilizar o código com facilidade.
  • Era preciso uma melhor separação entre módulos do software para redução de acoplamento e facilitar o desenvolvimento e manutenção do próprio jogo.

Ou seja, colocando-se uma separação clara entre motor e jogo conseguia-se ter um ganho de produtividade da equipe de desenvolvimento e ainda por cima facilitar a comercialização da tecnologia, sem dizer que tendo o código "genérico" ajudava a própria empresa a fazer re-uso de código nos seus vários projetos.

Note que quando uma empresa adquire um motor, a licença deste já costuma incluir as ferramentas para a criação de conteúdo do jogo, que podem vir a ser apenas plugins para exportar arquivos de arte de algum editor famoso (como 3d Studio Max) ou um editor de níveis e varias outras ferramentas, como editores de animação, gerenciamento de conteúdo, etc.

Atualmente os motores estão se dividindo em sub-motores conforme a complexidade vai aumentando, hoje podemos destacar:

  • Game Engine: que é o engine do jogo, como Unreal, IdTech, etc, sendo o grande destaque destes o motor 3d
  • Física: software responsável por gerenciar a simulação física do jogo, como Bullet, Havok, etc.
  • IA: software que cuida da inteligencia artificial, como o SpirOps, PathEngine
  • Sound Engine: software que cuida dos efeitos sonoros, como o Fmod

Um detalhe é que alguns motores já incluem um ou mais destes “sub-motores”, um exemplo é o IdTech 5 que inclui um motor de física próprio.

Além destes, existem algumas tecnologias que sugerem que em breve teremos mais motores específicos, como por exemplo o SpeedTree que cuida apenas de criação e desenho de árvores 3d.

Algumas destas tecnologias nem sempre são considerados motores, mas para não entrar na discussão filosófica do termo e simplificar vamos dizer que são motores especialistas.

Sobre a programação destas tecnologias no passado C e Assembly reinavam absolutos, mas conforme o C++ foi se tornando uma linguagem madura e popular este começou a dividir espaço com o C (embora o Assembly ainda continue existindo). Segundo pesquisas e comentários de pessoas da industria o C++ se tornou a língua franca de desenvolvimento de motores, sendo que assembly ainda é utilizado, mas a redução no seu uso tem sido bem intensa devido aos compiladores estarem gerando código cada vez mais otimizado e as CPU’s modernas serem cada vez mais complexas. Existem inclusive relatos de especialistas em otimização que muitas vezes otimizando-se a nível de algoritmo os ganhos tem sido mais significativos. Isso indica que as otimizações estão cada vez mais concentradas nos algoritmos do que em construções especificas.

Fora do mundo PC e dos consoles o C++ já não é tão popular, sendo que o Java domina a maior parte do mercado de portáteis e o Objective C tem se tornado popular devido ao iPhone.

Atualmente algumas empresas estão se tornando especialistas apenas no desenvolvimento de motores, como por exemplo o Unity ou o Torque, que são motores de empresas que atualmente desenvolvem apenas os motores, enquanto a maioria das empresas desenvolve um jogo e depois revende o motor deste.

Um detalhe interessante do mercado atual é que os motores vendidos por empresas possuem diversas configurações e preços, muito diferente do passado onde as empresas simplesmente forneciam a tecnologia que estavam usando, em alguns casos isto consistia em simplesmente "zippar" o diretório de fontes e enviar ao comprador.

Jogo

Nesta parte do software é onde implementamos o famoso “gameplay”, este é o software que vai dizer, por exemplo, quantos pontos o jogador ganha ao matar um inimigo, controla as ações dos inimigos, etc.

O software do jogo pode ser implementado usando-se a mesma linguagem do motor, como, por exemplo, C ou C++. Mas tem se tornado cada vez mais popular o uso de linguagens de script como a brasileira Lua. Esse tipo de linguagem é adotada pois o uso destas é muito mais simples do que C ou C++, isso aumenta em muito a produtividade dos programadores. Outras linguagens além desta podem ser utilizadas como C#, Javascript, Java, Python, além de casos onde é criada uma linguagem própria, como o UnrealScript ou o QuakeC.

Existem alguns casos onde foram usadas alternativas bem fora do tradicional, como a empresa Naughty Dog que construir uma linguagem funcional chamada GOAL que foi baseada em Lisp. Outro caso não muito comum é o Quake 3, onde o código do jogo que era escrito em C (assim como o motor) podia ser compilado em forma de Dll e usado como qualquer outra dll, ou executado dentro de uma maquina virtual utilizando-se o bytecode derivado do gerado pelo compilador LCC.

Ferramentas

A maioria dos jogos não disponibilizam as ferramentas utilizadas no desenvolvimento, sendo as mais cobiçadas os editores de níveis, que permitem aos jogadores criarem seu próprios níveis. Mas existem vários jogos que disponibilizam tais ferramentas, sendo que algumas acabaram se tornando bem populares, como o editor do motor Build, UnrealEd, etc. Outros jogos ao invés de disponibilizarem ferramentas deixaram disponível a documentação de como são os arquivos do jogo, permitindo que a comunidade cria-se suas próprias ferramentas, um dos pioneiros neste ramo foi o Doom, que disponibilizou o formato dos arquivos WAD, que armazenavam fases, texturas, sons, etc. A partir desses dados houve uma explosão na criação de ferramentas para o doom.

As ferramentas utilizam as mais variadas linguagens na sua criação, a escolha depende muito do projeto e da familiaridade dos desenvolvedores com estas. Atualmente nota-se que as empresas tem dado preferência ao uso de linguagens mais de simples de se trabalhar como C# ou Java.

As principais ferramentas de um jogo são o editor de níveis e os plugins para exportação ou importação de conteúdo.

O editor é utilizado para criação dos níveis, costuma ser principal ferramenta de edição do jogo, sendo que nos primórdios dos jogos poderia ser um simples editor em modo texto a uma aplicação com janelas bem rudimentar. No mercado atual como a necessidade de criação de conteúdo tem sido cada vez maior as ferramentas tem se tornado um grande diferencial entre os motores, sendo que hoje temos editores como o CryEngine Sandbox, que permite ao designer pausar e alterar o jogo em tempo real, uma grande evolução se compararmos com os primeiros jogos 3d onde era preciso compilar um nível e aguardar varias horas até este estar pronto para testes.

Outras ferramentas que tem se tornado comuns são editores de animação facial, editores de áudio, etc.

Além destas temos as ferramentas clássicas como modeladores 3d como o Autodesk 3ds Max, editores de imagens como o Adobe Photoshop. Aqui temos duas categorias de ferramentas, o modelador 3d e o editor de imagens. O modelador é usado para se construir os modelos 3d do jogo, criar animações, etc. Já o de imagens é usado para texturas, arte de menus, etc. Um detalhe interessante é que as empresas não fornecem estes diretamente, mas costumam fornecer junto com os motores plugins que permitem converter o conteúdo destas ferramentas para um formato que o motor do jogo possa utlizar. Isto é feito pois muitas vezes os arquivos nativos destes editores (em especial dos modeladores 3d) possuem muita informação que o jogo não precisa, ou então é feito um pré-processamento destes arquivos para que possam ser otimizados. Outro fator que pesa contra o uso dos formatos nativos da ferramenta é que estes formatos podem ser proprietários e é claro temos a questão da portabilidade: ao invés de inserir código no motor para se ler vários formatos de arquivo, é mais simples e produtivo manter pequenos programas que convertam esses vários formatos para um formato comum.

Outros Softwares

Além destes um jogo pode possuir outros software que não se encaixam bem nas categorias acima. Um exemplo seriam os servidores de um MMORPG, que é o software que cuida de todo o gameplay de um MMO e gerencia conexões, jogadores, etc. Temos também casos como o Steam, que além de ser uma plataforma de venda de jogos serve como central de jogos multiplayer, provendo interfaces para comunicação entre jogadores, controle de licenças, ranking, etc.

Existem varias outros softwares envolvidos na produção de um jogo, mas o objetivo desse artigo era focar principalmente nos softwares que formam o jogo em si e ferramentas que são desenvolvidas especificamente para estes. Com a evolução da industria certamente novas ferramentas e novas categorias vão surgir, como por exemplo as ferramentas de geração conteúdo procedural que estão cada vez mais populares e sofisticadas, mas isso fica para um outro artigo.


Comentários (25)
  • Felipe  - Muito Bom!
    avatar

    :woohoo:
    Impressionante!

  • ArchV
    avatar

    Orra, impressionante. Eu sempre quis saber um pouco mais essas engines.

    Obrigado.

    ArchV.

  • Thalles R.  - Do Terror.
    avatar

    :D Muito massa, parabéns. Muito bem escrito e informaçṍes claras e precisas. É um bom artigo para ser começar a entender o mundo bilionário dos games do ponto de vista do desenvolvimento.

  • Bruno Crivelari Sanches
    avatar

    Pessoal, muito obrigado! É muito bom ver que os artigos tem ajudado e trazido informações!

  • Mario Biague  - Slicitação de apoio!
    avatar

    Boa tarde, Bruno!
    Vim lendo os seus artigos, que gosto muito de ler. Pois, gostaria se podesse me apoair nom seguinte:
    com algum exemplo de desenvolvimento do jogo multi-player passo-a-passo.

    De antemão agradeço a atenção!

    Mário F. Biague

  • Ruan  - Meu sit
    avatar

    :woohoo: :evil:

  • nei mauricio dos santos  - Valor
    avatar

    :cheer: Quanto fica para fazer um swftware de umk jogo patenteado

  • nei mauricio dos santos
    avatar

    Quanto custa para fazer um swftware de jogo

  • Bruno Crivelari Sanches
    avatar

    Depende totalmente do projeto, da plataforma(s), etc. Não tem como dar um custo para qualquer projeto. De algumas centenas de dolares a milhões.

    A patente não sei exatamente quando custa, mas o valor não costuma ser alto comparado com o custo total do projeto.

  • nathan  - porque vc não cria um jogo do super onze para xbox
    avatar

    porque vc não cria um jogo do super onze para xbox 360 inazuma eleven go tembem e bom veja os animes e se basei neles veja inazuma eleven go legendado e super onze

  • Anônimo
    avatar

    Porque não gosto de futebol e nem de anime...

  • Anônimo
    avatar

    :woohoo: :woohoo: :woohoo: :woohoo: :woohoo: :woohoo: :woohoo: :woohoo: cara voce e fera

  • Bruno Crivelari Sanches
    avatar

    Obrigado :)

  • mkassas  - Ferramenta
    avatar

    Bruno ,gostei do seu site parabens, tenho uma dúvida e me da uma luz por favor .. eu desenvolvo jogos em flash e queria fazer em outra ferramenta jamais abandonarei o flash ,porem queria tentar outras dizem que o Game Maker 8 pro e profissional?? claro q xna,unity e mais poderoso porem o xna achei muito complicado pq e so na unha so codigo de uma opinião qual ferramenta adquiro obrigado,

  • Bruno Crivelari Sanches
    avatar

    Não conheço o GameMaker, mas me parece uma ferramenta apenas para jogos 2d se quer 2d acho que vale a pena.

    Eu iria de Unity, que nem precisa ser comprada de inicio, pode ir usando a versão indie por um bom tempo.

    T+

  • Ruan  - Ana
    avatar

    Cara por que que vc nao fas ums jogos para celulares da marca /meu:)\??????

  • Anônimo
    avatar

    e muito legal mas nao pegol no mel celular

  • Anônimo  - software
    avatar

    o software e uma parte logica ou virtual do computador :lol: View image

  • u.u  - :3
    avatar

    :whistle: lega fera vida loka dimaiiis'
    , B) :woohoo:

  • Ruan  - Auue
    avatar

    Vc acha?cara isso e muinto doido cara vc e burro???? :angry: :angry:

  • Ruan  - No:ahan
    avatar

    Nossa cara isso e muinto louco mesmo de morrer!!!! :woohoo: :woohoo:

  • Anônimo
    avatar

    A TUA PRIMA :evil: :whistle

    :S :whistle: :whistle:

  • Anônimo  - re:
    avatar
    Anônimo Escreveu:
    A TUA PRIMA :evil: :whistle



    :S :whistle: :whistle:


    A TUA MAE

  • Anônimo
    avatar


    gostei, um espetáculo digo eu :woohoo: :pinch: :( :shock: :X :angry: :0 :confused: :) :cheer: :P

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter