Ponto V!

Home Arquitetura Programação Level Design para Programadores
Bruno Crivelari Sanches
Level Design para ProgramadoresImprimir
Escrito por Bruno Crivelari Sanches

Apesar de que em projetos modernos e de grande porte programadores não estarem mais envolvidos na criação níveis e cenários para jogos, estes acabam se envolvendo neste trabalho de forma direta definindo como organizar um cenário de jogo e quais ferramentas o designer vai utilizar, além disso, definem como vai funcionar o cenário e os objetos que compõem o jogo. Neste artigo veremos como funciona esse trabalho e as tecnologias envolvidas.

Unreal EdQualquer jogo atual é formado por níveis, alguns utilizam um único cenário dividido em missões, outros possuem diversos cenários, mas conectados entre si utilizando alguma forma de streaming que faz com que o jogador nem perceba que trocou de fase. Mas como essas fases são construídas? É nesse ponto que entra o papel do editor de níveis (às vezes chamados de editor de mapas ou apenas editor do jogo).

O editor de mapas pode ser feito de varias formas, sendo o mais comum um software criado pelo próprio produtor do jogo (geralmente pelo desenvolvedor do motor) ou até mesmo plugins para alguma ferramenta de edição, como o 3d Studio Max. Em alguns casos onde o desenvolvedor não disponibiliza as ferramentas a própria comunidade acaba criando editores de níveis.

Alguns editores famosos incluem o UnrealEd, que é o editor oficial de níveis do motor Unreal e o editor de missões do Starcraft. Existe também um caso especial do GtkRadiant que surgiu a partir de uma versão código aberto do QuakeEd, que era a ferramenta oficial para criação de mapas do Quake e partindo deste editor foi criado o QERadiant, que foi novamente adotado pela Id Software como editor oficial e atualmente existe uma versão de código aberto chamado de GtkRadiant que é a versão interna usada oficialmente pela Id Software.

Criação de Conteúdo e Criação de Níveis

Apesar de alguns jogos utilizarem ferramentas de criação como 3d Studio Max para criação de níveis é importante separar a criação de conteúdo da criação de Níveis. Por criação de conteúdo entenda a criação de modelos 3d, de texturas, sons, etc. Feito por artistas e outros técnicos especializados. Neste ponto os profissionais criam modelos e tudo mais, mas são apenas modelos que mais tarde vão ser usados para compor um nível do jogo. Existem alguns casos onde o nível inteiro é um grande modelo 3d, mas ele certamente passa por um editor ou uma fase onde evolui de um mero modelo 3d para um nível ou mapa de jogo. Podemos resumir essa separação dizendo que um artista vai criar o conteúdo e a base para os níveis e o designer de níveis vai popular cada nível, da mesma forma que uma construtora constrói uma casa e um decorador decora esta com móveis e outros acessórios.

Editor Hammer mostrando algumas entidades A diferença crucial é que um mapa de jogo não possui apenas modelos 3d, ele possui marcações e objetos extras que dizem ao motor do jogo o que deve acontecer naquela região. Além de que o mapa é preenchido com inimigos, itens, armadilhas, etc. Estes objetos geralmente são conhecidos como entidades (em vários motores) ou são chamados apenas de objetos do jogo. Note que varias dessas entidades nem sempre são visíveis ou perceptíveis dentro do jogo, em especial no caso dos triggers (gatilhos), que são entidades que acionam ou dão início a algum evento do jogo (como por exemplo, apagar as luzes ou tocar algum som). Na imagem ao lado temos um cena do Hammer (editor oficial dos jogos da Valve) onde é possível ver diversas “caixas”, que representam entidades do jogo.

Vale lembrar que alguns editores (como o Hammer, Radiant, UnrealEd) permitem também a criação de modelos, em especial, eles permitem que o designer de níveis crie os modelos 3d que formam o mapa, geralmente referido como geometria do mapa. Antigamente esses editores eram utilizados para criar praticamente toda a geometria de um mapa, mas como a geometria criada tinha limitações (devido a ela ser fundamental para o processo de renderização e culling do motor em questão) e a necessidade de se criar cenários cada vez mais detalhados, essa geometria criada nos editores passou a ser vista apenas como forma de criar a base de um mapa, sendo os detalhes e tudo mais feito numa ferramenta mais apropriada e posicionada no cenário utilizando-se o editor de níveis.

Existe também uma linha de editores mais modernos que permitem uma edição do jogo em tempo real, isso acontece em motores como o Unity3d e o CryEngine. Nesses motores a edição do jogo é feita de dentro do próprio jogo, permitindo ao designer testar e ver suas alterações em tempo real, facilitando em muito o trabalho do mesmo.

Objetos de um Nível

Não existe uma regra ou uma fórmula mágica para se construir um nível de jogo, mas a maioria dos jogos possui uma estrutura bem similar ao que iremos explorar aqui. Para começar o nível é definido em um ou vários arquivos. Um jogo como Quake gera um arquivo texto chamado de map. Este arquivo contém a definição das brushes, que é o nome dado as primitivas geométricas utilizadas para compor a geometria do cenário e definição das entidades utilizadas. No caso do Quake em particular, depois de gerado o arquivo map esse arquivo passa por um processo de compilação onde a geometria criada é otimizada e estruturas de dados são criadas para otimizar o uso do cenário, também em algumas versões é feito um pré calculo de toda a iluminação do cenário. A maioria dos motores modernos fazem algum tipo de pré processamento com seus cenários, mas existem alguns casos onde esse passo é pulado ou é feito em tempo real.

As entidades são responsáveis por darem vida ao jogo e a maioria dos jogos utilizam alguns tipos principais:

  • Atores: são os inimigos, NPCs ou apenas bichos que passeiam pelo cenário
  • Itens: são os itens que o jogador pode coletar ou utilizar
  • Gatilhos: são responsáveis por ativar eventos no jogo, quando o jogador os toca ou com a passagem do tempo.

Com esses blocos básicos o designer vai preenchendo o nível e dando vida ao jogo. Certamente existem variações e muitos mais objetos do que estes são precisos, para ilustrar pode-se dar uma olhada na lista de entidades usadas pela Valve nos jogos Half-Life aqui neste site. Perceba que além da quantidade enorme de entidades, estas estão subdivididas em muito mais categorias do que listamos aqui. Podemos dizer que esses são os blocos básicos para se construir um jogo.

O Papel do Programador

O programador atualmente não constrói níveis (ignoranado aqui os níveis para testes), mas tem papel fundamental neste processo que é a criação das ferramentas e definir como os níveis de um jogo vão funcionar. Cabe ao programador projetar como vai ser a criação de conteúdo para o jogo, desde definir quais as melhores ferramentas para o trabalho, levando em consideração facilidade de uso e facilidades para integração com o motor do jogo, além disso, o programador define também como vão ser os objetos do jogo.

Para definir os objetos do jogo o programador tem que ser capaz de abstrair o projeto do Game Designer em pequenos blocos (as entidades) de forma que seja possível a um designer de níveis construir os níveis sem que seja preciso alterar a programação do jogo, obtendo-se assim um Data Driven Design. Assim chega-se num ponto onde o designer pode criar um jogo e modificar a jogabilidade deste sem precisar interferir numa linha de código sequer ou ficar a todo momento solicitando aos programadores que alterem algo. Pode-se também em alguns casos permitir que o designer use alguma linguagem de script para controlar as entidades do jogo.

O programador tem enormes desafios nesta área, sendo os principais:

  • Como organizar os objetos do jogo? Herança? Componentes?
  • Como estes objetos se comunicam internamente? Eventos?
  • Como o designer pode alterar as propriedades de um objeto? Exemplo: dizer qual a energia máxima de um inimigo

Nos próximos artigos iremos explorar em detalhes como organizar a parte de Gameplay de um jogo e ver como resolver estes e outros problemas.

Referências


Comentários (9)
  • Max  - Level Design Beat em Ups
    avatar

    Fala Bruno,
    Você chegou a ter uma idéia de como foi composto o level do Street of Rage 2 por exemplo ?

    Que possui as lojas nas ruas bem definidas e também pontos aonde o player desce e não segue em linha reta mas também faz com que todo o cenário tenha uma perspectiva em diagonal. Cabe também o exemplo de caddilac and dinossaurs.

    Por acaso é feito da forma comum ? (Tilemaps)

  • Bruno Crivelari Sanches
    avatar

    Eu acredito que sejam tilemaps mesmo. Aquela técnica de tiles ortogonais, mas não acho que o Street of Rage use isso.

    Acredito que o macete ali seja a forma como os tiles são construídos.

    Eu nunca me aprofundei muito nesses jogos 2d, então não sei detalhes.

    Já tentou procurar um level editor para Street of Rage ou algum jogo similar? Os editores de níveis dão muitas dicas e nos ajudam entender como o jogo funciona :).

  • Leandro
    avatar

    Ótimo post ;)

  • Bruno Crivelari Sanches
    avatar

    Obrigado Leandro! :)

  • Cesar Alvares Silva  - Editor Beat'n'Up
    avatar

    Referente ao editor para jogos estilo streets of rage existe um projeto chamado Beats of Rage encontrado no site http://www.senileteam.com/

    Não cheguei a ir muito a fundo, mas acredito que ali tenha alguma técnica relacionada a este tipo de jogo mencionado

  • Fernando Mondo  - Muito Bom
    avatar

    O Sanches ja havia me dado altas dicas no forum da Unidev. Parabens cara. Fico no aguardo dos Próximos artigos!

  • Bruno Crivelari Sanches
    avatar

    Obrigado Fernando! Ta no forno! Assim que possível vou postar!

  • Thiago Nardi
    avatar

    Olá Sanches.

    Acabei de ler o seu artigo. Parabéns. Eu leio vários artigos aqui nesta sessão de Arquitetura para ter uma noção geral e recomendo a várias pessoas.

    Seguinte. Estou trabalhando em um menu animado em 3D na unity, e gostaria de saber se você conhece algum tipo de artefato que ajude a visualizar a construção dos estados deste menu. Por exemplo, Um estado inicial poderia ter 3 botões que levassem a outros estados como por exemplo Opções, Créditos, etc. Tenho que elaborar animações em 3D para a transição entre um estado e outro..

    Acho que esta pergunta está mais voltada ao Design de Menus que ao Design de Níveis mas aproveitando este espaço deixo a pergunta: você conhece algum artefato comumente utilizado em jogos que poderia me ajudar a ter uma visão clara sob estes aspectos em que estou trabalhando?

    Abraços! e Parabéns pelo trabalho.

  • Bruno Crivelari Sanches
    avatar

    Eu recomendo UML mesmo. Você pode usar um diagrama de classes, onde cada classe representa um estado do menu ou então um diagrama de estados, em ambos os casos você consegue representar de maneira bem visual essas transições de menu.

    Eu costumo usar o astah: http://astah.net/ (que tem uma versão free)

    Outra opção é papel e caneta mesmo, funciona bem em muitos casos e depois você pode documentar no astah.

    T+

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