Quais tecnologias são usadas para o desenvolvimento de jogos hoje em dia? [fechadas]

14

Sempre que faço uma pergunta sobre o desenvolvimento de jogos em um fórum on-line, sempre recebo sugestões como aprender algoritmos de desenho de linha, manipulação de imagem no nível de bits e descompressão de vídeo etc.

No entanto, olhando para jogos como God of War 3, acho difícil acreditar que esses jogos possam ser desenvolvidos usando essas técnicas de baixo nível.

A enorme grandiosidade de tais jogos desafia qualquer metodologia de programação compreensível (para mim).

Além do hardware de jogos é realmente um monstro hoje em dia. Portanto, é lógico que os desenvolvedores trabalhariam em um nível mais alto de abstração.

Qual é a mais recente metodologia de desenvolvimento na indústria de jogos? Como é que uma equipe de 30 a 35 desenvolvedores (dos quais a maioria é de gerência e marketing) é capaz de criar jogos tão incompreensíveis?

Se a pergunta parecer muito geral, você poderia explicar a arquitetura de God of War 3? Ou como você produziria um clone? Que eu acho que deveria ser objetivamente responsável.

Monika Michael
fonte
2
Alguém se importaria de explicar o voto negativo?
Monika Michael
2
Os votos negativos se devem à questão de não ser "construtiva". Para citar, "esta pergunta não se encaixa bem no nosso formato de perguntas e respostas. Esperamos que as respostas sejam apoiadas por fatos, referências ou conhecimentos específicos, mas essa pergunta provavelmente solicitará debate, argumentos, pesquisas ou discussões prolongadas" . Ou seja, a pergunta não pode ser respondida com precisão. Ainda acho que sua pergunta tem mérito, mas precisa ser reformulada.
9000
2
@ 9000 E como esta pergunta se qualifica como não construtiva?
1
@ delnan: provavelmente os que recusaram não ficaram satisfeitos com frases como "Qual é a mais recente metodologia de desenvolvimento na indústria de jogos?" . Para mim, "como você produziria um clone" é muito melhor.
9000
4
Isso não faria mais sentido em gamedev.stackexchange.com ?
Dan is Fiddling por Firelight

Respostas:

12

Disclaimer: Eu não sou desenvolvedor de videogames. Mas eu tenho um interesse "hobby" por isso.


A maioria dos jogos AAA que você vê são feitos usando motores. Eles não são escritos do zero. Pense em um mecanismo como uma estrutura. Você possui o .NET framework, o Java SDK, o cacau toolkit.

Tudo para facilitar o trabalho de criar software e abstrair o código da pia da cozinha. É necessário, mas escrevê-lo toda vez é muito improdutivo.

Usando esses mecanismos, o desenvolvedor pode criar seu jogo e não precisa se preocupar com parte do código subjacente. ( Não se engane, o desenvolvimento de jogos é um dos ramos mais difíceis da engenharia de software. )

Por exemplo, o Unreal Engine 4 possui um kit e um estúdio de desenvolvimento matador:

http://www.youtube.com/watch?v=MOvfn1p92_8

insira a descrição da imagem aqui

Existem muitos motores diferentes por aí. Alguns pagam, outros grátis, outros mais para o metal, outros oferecem uma abstração mais alta.

Por exemplo:

  • OGRO
  • Unreal Engine
  • Unidade
  • Fonte
  • e muitos mais...
sergserg
fonte
5

Em referência ao comentário de gbjbaanb, algumas das coisas que tornam a programação de jogos divertida são a vida útil limitada da base de código e a falta de exigir precisões. Por exemplo, se você está criando um jogo FPS, e seu algoritmo de movimento às vezes coloca o personagem do jogo a alguns pixels de distância, não é grande coisa e as chances são de que ninguém notará. Se você está projetando um software comercial e, ocasionalmente, sua função de soma lhe oferece alguns dólares, isso é um bug muito mais sério. Portanto, ao projetar jogos, alguns aspectos podem ser muito menos precisos (e precisam passar apenas por testes em humanos, em vez de um conjunto de testes automatizados que verifica se as respostas estão exatamente corretas).

Minha experiência tem sido que a programação de jogos, especialmente para jogos em tempo real, é uma experiência muito diferente de ... quase qualquer outro desenvolvimento de software que eu tenha feito, talvez exceto pelo trabalho da GUI. É algo que você tem que tentar!

Ivan
fonte
4

A resposta é "motores". Muitos jogos são construídos sobre vários gráficos e mecanismos de jogabilidade que são basicamente grandes bibliotecas ou estruturas.

No mundo OSS, dê uma olhada no Ogre, por exemplo, para jogos comerciais, você tem coisas como o Source.

Existem outros fatores em jogo, como grande parte do código é descartável e não passaria despercebida em um ambiente de negócios - mas isso ocorre porque a vida útil limitada de um jogo e as escalas de tempo de desenvolvimento aceleradas significam que o código é (quase) projetado apenas para trabalhar, não para ser mantido.

gbjbaanb
fonte
Obviamente, esses mecanismos são abstrações regulares de criação de código C / C ++ (embora altamente otimizadas) no topo de APIs de nível inferior (por exemplo, DX ou OpenGL para gráficos).
Mas é uma boa idéia ter experiência na criação de um jogo muito simples usando C ou C ++, apenas para que o autor tenha uma idéia de como é o desenvolvimento do jogo.
amigos estão dizendo sobre kelio
4

O Unity3D é muito bom. Aqui estão alguns pontos que eu gosto sobre isso:

  • permite criar jogos de uma maneira independente da plataforma e, em seguida, cria automaticamente implementáveis ​​para Windows, Mac OS X, Android e IOS. Isso vale para a versão atual (3.x). Aparentemente, a versão 4 também permitirá que você implante no Linux:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

  • Mesmo que você precise de uma licença paga para usá-la (comercialmente), você pode fazer o download de uma versão gratuita na qual pode usar a maioria dos recursos (por exemplo, não é possível, por exemplo, criar implementáveis ​​para as plataformas móveis). É uma ótima maneira de visualizar a coisa antes de decidir comprá-la ou não:

http://unity3d.com/unity/licenses

  • Funciona com a maioria dos softwares de modelagem 3D (prefiro o 3d Studio Max, mas também suporta outros):

http://unity3d.com/unity/editor/importing (role um pouco para baixo)

  • A codificação (script) pode ser feita em C #, que é uma linguagem interessante, com uma boa API e verificações de tempo de compilação. Vem com um bom ambiente de desenvolvimento (IDE e tudo). Se você quiser algo diferente, ele também suporta Javascript.

  • Tem muito bom suporte físico (colisões, gravidade, forças, etc.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Possui uma loja de ativos que permite comprar vários modelos, scripts, animações, etc.

  • Por último, mas não menos importante, é decentemente rápido. Confira as demos móveis, IMHO eles se movem muito bem e têm gráficos muito decentes:

http://unity3d.com/gallery/made-with-unity/game-list

Aqui está um bom projeto do Unity que estou esperando atualmente:

Área deserta 2 de Brian Fargo

Eles têm uma boa entrada no blog sobre por que escolheram o Unity , bem como outros discutindo como o trabalho com ele ocorre .

Shivan Dragon
fonte
3

A ID Software é um dos fornecedores que geralmente publica jogos de última geração. Alguns anos depois, eles geralmente os liberam como código aberto. Em http://fabiensanglard.net/quake3/index.php, você pode encontrar uma análise do código fonte do Quake3. Esta é uma descrição bastante detalhada e, embora o Quake3 seja bastante antigo, os conceitos ainda devem ser relevantes para os jogos modernos.

E sim, se você deseja criar um mecanismo de jogo rápido e competitivo de ponta, precisará conhecer todas essas peças de baixo nível. Se você não quer se preocupar com isso: existem mecanismos diferentes (mecanismo quake3 ou os de outras respostas) disponíveis, mas bem, então você não está criando um novo jogo revolucionário ;-)

johannes
fonte
Do ponto de vista dessa análise, o Quake 3 é anterior a algumas técnicas vitais de "baixo nível" do desenvolvimento de jogos de hoje. Para iniciantes, shaders (fornecidos com OpenGL).
O quake 3 foi lançado em 1999. Sim, faz muito tempo. Mas mostra como as pessoas trabalham e tentam ir ao limite do que era possível na época. A maioria dos outros mecanismos disponíveis se inclina mais para a reutilização, código "limpo" etc., em vez do desempenho máximo. (Isso não significa que os outros motores são ruins e lento, mas acho que ainda vale a pena olhar para ele, se você quiser saber mais sobre 3D arquitetura do motor de jogo e implementação)
Johannes
Outro artigo relacionado sobre matemática binária de baixo nível em jogos 3D, usando o Quake como um exemplo: blog.quenta.org/2012/09/0x5f3759df.html
johannes
1

Como muitas respostas mencionam, mecanismos de jogos e bibliotecas desempenham um papel importante. No entanto, observe que isso se aplica a jogos comerciais de médio e grande porte mais do que a pequenos jogos "independentes".

Por exemplo, em plataformas móveis, a maioria dos jogos é escrita usando apenas um conjunto de bibliotecas relativamente primitivas, em vez de depender de mecanismos de jogo completos e estruturas. Eles existem, mas, na maioria das vezes, é sobre reutilizar seu próprio código de projetos anteriores.

zxcdw
fonte