Por que é difícil portar jogos de consoles para PC? [fechadas]

27

As portas para PC dos jogos de console geralmente saem um mês ou dois depois. Por que é isso?

Os jogos são escritos em idiomas que também são compilados em PCs, portanto, a lógica do jogo deve compilar sem problemas. O que os está segurando naquela época? Está renderizando código ou o quê?

Hemograma
fonte
3
Provavelmente é devido a ofertas de publicação. Eles são pagos, por exemplo, pela Sony por criar um título exclusivo para ps3 / ps4.
Aurus
Estou falando de jogos lançados para alguns consoles. Eles dizem que a 'porta' sairá X meses após o lançamento do console. A questão é qual é a razão pela qual eles esperam. Quero dizer, o marketing pode ter algo a ver, mas estou interessado do lado do programador.
Bloodcount 15/08/13
Mas Aurus está certo, essa é a resposta mais provável. Portar código dos consoles para o PC não é trivial por vários motivos. A maioria dos jogos lançados brevemente para o PC após o lançamento do console foram projetados para o PC em primeiro lugar, ou pelo menos a tecnologia subjacente suporta uma porta fácil. Caso contrário, um par de meses, provavelmente não seria suficiente
Grimshaw
Em relação ao seu comentário "os jogos são escritos em idiomas que são compilados no PC" nem sempre é verdade. Em particular, gostaria de modificar uma citação famosa: "Consoles e PCs podem ser todos computadores, mas nem todos os computadores são criados da mesma forma".
kurtzbot

Respostas:

47

Existem várias razões pelas quais uma porta de PC pode demorar um pouco. (Peço desculpas se pareço estar me repetindo em algum lugar; isso é meio que escrito na hora.)

Adaptação de controles e jogabilidade

Quando você está jogando em um console, isso por si só impõe certas limitações ao que você pode fazer, já que tudo que o usuário possui é um gamepad.

Criar apenas mapeamentos 1: 1 entre as teclas do teclado e as entradas do controlador nem sempre é uma boa idéia - se é que é possível -, por vezes, leva mais tempo para descobrir uma boa solução.

Abstração / Fragmentação de Hardware

Quando você desenvolve, por exemplo, um Wii U, sabe exatamente como um Wii U se comporta, porque todos os Wii Us são idênticos. Isso não é verdade para PCs; você tem muitas placas gráficas e CPUs diferentes e, às vezes, algo não funciona em algumas delas. São necessários muitos testes para descobrir esses bugs, e corrigi-los também leva tempo.

Se você nunca usou seu mecanismo para criar uma versão para PC, também precisa codificar sua abstração de hardware de acordo. Alguns jogos desejam oferecer suporte a várias versões do DirectX e OpenGL para Linux / Mac, e tudo isso leva tempo para ser escrito, se isso não tiver sido feito antes.

Contenção de recursos

Em consoles, o jogo não precisa competir com um sistema operacional por recursos etc. - não há muita coisa acontecendo em segundo plano.

Em um PC, você tem o sistema operacional, uma infinidade de programas em segundo plano, e tudo isso significa que você não terá o compartilhamento tão grande quanto esperava. Isso significa que às vezes você precisa realizar otimizações adicionais, especialmente para jogadores em sistemas de gama baixa

Melhorando ativos

Com um console, você tem um alvo fixo, então escreve shaders etc. para corresponder a esse alvo.

Em um PC, algumas placas gráficas suportam recursos mais avançados e talvez você queira usar um shader melhor para eles. Bem, isso significa que você terá que escrever esse sombreador.

Coisas específicas da plataforma

Os SDKs do console podem ter muitos recursos convenientes que não mapeiam facilmente para um PC - por exemplo, pode fornecer acesso a temporizadores de hardware ou uma boa API de som.

Geralmente, essas coisas não estão disponíveis nos PCs; você precisa usar outras maneiras de realizar essas coisas e talvez isso mude como você precisa abstrair as diferenças de plataforma.

Michael Madsen
fonte
4
Em relação aos controles, à interface do usuário, você ainda pode ver muito isso, onde o menu na área de trabalho de um PC nem funciona com o mouse; por exemplo, eles fizeram o mapeamento 1: 1 do d-pad para o teclado. Outro problema potencial são os idiomas de sombreador e o suporte ao driver.
Casper Beyer
11
Boa resposta exagerada. No entanto, nos casos em que os desenvolvedores desejam obter o máximo desempenho dos consoles, uma camada de baixo nível de código específico da plataforma geralmente não é suficiente, o próprio jogo deve ser projetado para aproveitar os fortes atributos do hardware do console, o que não é '' necessariamente a solução ideal para o PC também!
Grimshaw
6

Um motivo simples é que um console tem um único conjunto de hardware que é o mesmo por console.

Seu XBox, PS3 e Wii têm o mesmo hardware que seus vizinhos XBox, PS3 e Wii. No entanto, o seu computador possui uma CPU diferente, uma placa gráfica diferente, uma quantidade diferente de RAM, de fato, toda a configuração e os parâmetros do sistema operacional; os drivers instalados podem ser uma permutação completamente única que nenhuma outra pessoa no mundo possui.

É isso que torna difícil portar para um PC. Você precisa prestar contas de todas as peças de hardware possíveis dentro dos requisitos mínimos do sistema e acima. Esse é um processo complicado e difícil de programar e depurar. É muito difícil para os desenvolvedores conhecer todas as configurações para programar e quase impossível executar testes nessas configurações.

Depois que eles o desenvolvem para PC, há extensos testes feitos internamente pelos desenvolvedores, mas também podem depender dos testes beta dos usuários por mais de algumas semanas a alguns meses. Essa terceirização de testes com jogadores beta antes do lançamento oficial da porta para PC é o motivo pelo qual você vê a lacuna nas datas de lançamento entre os consoles e o PC.

Tom 'Blue' Piddock
fonte
5

Portar código para uma nova plataforma leva tempo. Criar um cronômetro de nanossegundos para o Xbox 360 (que nunca desenvolvi no XNA) precisará de uma implementação diferente do mesmo cronômetro de nanossegundos no Linux, Mac ou Windows. Agora imagine que você tenha centenas desses tipos de funções que precisam de portabilidade, milhares se o mecanismo for suficientemente grande.

Pode demorar um ou dois meses de codificação para adicionar essas implementações diferentes para as novas plataformas. Além disso, nem sempre é possível usar as mesmas bibliotecas no Xbox 360 como no Windows, Playstation 3 ou alguma outra plataforma. Isso significa que você potencialmente precisará usar uma biblioteca totalmente nova para fazer a mesma coisa que fez na versão Xbox 360.

No geral, esse tipo de coisa resulta em uma grande quantidade de tempo. Portar para uma nova plataforma raramente é fácil para grandes títulos AAA.

TorbenC
fonte
3

Não tem quase nada a ver com ser difícil em muitos casos.

Apenas não é uma prioridade. Eles estão em marcha para mal sair pela porta a tempo. Cada diferença minuciosa leva tempo para explicar. Se você pode liberar em alguns consoles ou no PC dentro de um prazo, faça isso primeiro e depois encerre as portas. Solte cedo, ganhe mais dinheiro. Geralmente, os consoles se saíram melhor nos jogos de caixa nesta última geração, embora tenha começado a mudar - os novos consoles podem mudar isso.

Além disso, em alguns casos, os fabricantes de consoles oferecem benefícios a lançamentos exclusivos, de modo que o editor obtém um desconto ou algo parecido se lançar em um console específico primeiro e em outras plataformas posteriormente. Nada de técnico nisso.

Sean Middleditch
fonte
1

Inicialmente, os jogos são mais difíceis de fazer em um console do que no PC. Além disso, os consoles têm especificações muito diferentes e hardware diferente entre nintendo, sony e microsoft, o que resulta não apenas em desempenho diferente, mas também em diferentes problemas de gargalo.

Normalmente, o jogo apenas ajusta seu mecanismo para maximizar a qualidade e o desempenho em cada console.

Ao se adaptar ao PC, há outros problemas. Os consoles são homogêneos, o que significa que todos os consoles têm o mesmo hardware (todos os PS3 têm o mesmo desempenho). Ao criar seu jogo para PC, você define uma especificação mínima, mas também permite que o usuário aumente a qualidade de PCs mais poderosos. Os jogos direcionados para PCs são menos otimizados, mas são mais fáceis de criar para programadores.

A programação no console tem uma vantagem: permite que os programadores maximizem o desempenho; portanto, qualquer jogo de console sempre terá um bom desempenho.

Em um PC, é pior, porque há muitos hardwares por aí, mas, concedida, é mais liberdade, o melhor jogo resultante sempre estará no PC, porque o PC está sempre no limite, a um custo.

Portar um jogo do console para o PC pode ser complicado, porque o console é projetado para o desempenho do jogo, enquanto o PC não é, mas no geral, é muito mais fácil portar um jogo do console para o PC do que o oposto, porque o console tem muito menos memória, algo como 2 ou 4 vezes menos.

Alterar o código para se adaptar a essa restrição de memória geralmente significa sempre uma reprogramação completa.

Não acho difícil portar um jogo do console para o PC, é apenas uma questão de API. As empresas e programadores que trabalham apenas com consoles terão dificuldade em migrar para o PC, porque não estão acostumados a isso, mas também porque se adaptam constantemente à API do console, o que significa que seu código geralmente responde à restrição do compilador do console e não necessariamente se preocupam com apis de PC.

Obviamente, os mecanismos podem ser programados para rodar em todos os consoles e PCs; assim que isso for mais fácil, é melhor do que dizer aos programadores para portar o mecanismo para o PC depois de saberem que nunca foi planejado por 3 ou 4 anos.

Os consoles TL; DR são homogêneos e a última geração de console, os PCs são heterogêneos e o hardware e a API evoluem constantemente. Os custos são distribuídos entre a programação e a construção de hardware, que são compromissos.

Uma coisa boa seria permitir que todo o hardware execute tudo, mas os preços dos consoles são compensados ​​porque as empresas de jogos pagam uma licença aos fabricantes de consoles, para que bloqueiem seu hardware para executar apenas empresas de jogos que pagam. É bagunçado.

jokoon
fonte