Eu observei que muitos desenvolvedores de jogos grandes e conhecidos geralmente desenvolvem seus próprios mecanismos. Exemplos incluem Valve, Crytek, Ubisoft, Epic Games e Square-Enix.
Poderia ser simplesmente porque eles podem, ou é provável que os motores existentes não atendam a requisitos suficientes, para que possamos desenvolver os nossos? Eu mal posso imaginar um jogo que requer um mecanismo específico. Unity ou Unreal são simplesmente suficientes para criar qualquer tipo de jogo; mesmo se não, eles têm código fonte, que pode ser modificado para satisfazer até algumas necessidades extraordinárias.
Por que um desenvolvedor de jogos escreveria seu próprio mecanismo em vez de usar os existentes?
game-industry
business
PaulD
fonte
fonte
Respostas:
Há várias razões pelas quais um estúdio pode optar por "construir" em vez de "comprar" sua tecnologia:
Em geral, faz sentido possuir e controlar as coisas críticas para o sucesso dos seus negócios e terceirizar as que não são.
Para alguns estúdios, o aspecto de design ou narrativa de seus jogos pode ser o recurso crítico que eles esperam capitalizar para obter sucesso. Para esses estúdios, faz sentido simplesmente comprar tecnologia que permita que seus projetistas realizem a visão apropriada.
Para outros, a tecnologia pode ser a base do sucesso. Os estúdios que constroem MMOs, por exemplo, geralmente precisam construir essa infraestrutura porque são críticos para seu sucesso (e o middleware existente é geralmente inapropriado, pelo menos para títulos "AAA") maiores.
Observe que alguns dos estúdios que você listou (Crytek e Epic em particular) basicamente pararam de tentar dominar diretamente o mercado de jogos e quase certamente fazem muito mais como fornecedores de middleware do que como desenvolvedores de jogos.
fonte
como disse Josh Petrie :
Também estou escrevendo meu próprio mecanismo, e suponho que o motivo será diferente para todos os desenvolvedores existentes, mas, na verdade - geralmente não gosto de trabalhar no código de outras pessoas. Sou compulsivo no sentido de que, se sinto que posso construí-lo, não há sentido em me contentar com outra coisa .
Eu testei vários tipos de mecanismos de jogos, renderizando API e outros, como Ploobs, UNITY WaveEngine, XNAFinalEngine, Love, Ogre, etc. muitos mais ... Eu queria começar a escrever jogos - baixei muito procurando um bom conteúdo e ponto de entrada bem documentado ...
Meu problema, no entanto, era que eu não fazia ideia do que estava acontecendo abaixo do motor. Eu queria um bom controle e uma estrutura que eu conheça como as costas da minha mão. Eu tive a idéia "Ei! Acho que a única maneira de aprender como a coisa funciona e entender é tentar construir meu próprio mecanismo de maneira completa e completa do zero. A maior parte do meu histórico de programação foi com soluções de processamento e web - este foi um jogo totalmente novo para mim.
Foi o que acabei fazendo.
Então, escolhi configurar o XNA já que conhecia C # e comecei a pensar em como ou por onde começar. Eu precisava de uma ideia.
Eu decidi que, não importa o quê, eu iria direto para o 3D .
Descobrir o básico foi legal - o material do lote de sprites, mas à medida que progredi acabei descobrindo novas barreiras e obstáculos - o meu primeiro verdadeiro sendo o limite do lote . Meu objetivo era construir um jogo que pudesse render pelo menos 10000 entidades no view frustum a qualquer momento.
Eu iniciei uma nova jornada de implementação do Shader Based Instancing (e aprendi HLSL enquanto estava no assunto), abandonei os objetos Model and Effect embutidos no XNA para escrever minhas próprias substituições. Eu tive problemas para entender os fluxos VBO no início; Eu quebrei as coisas - fiquei on-line fazendo perguntas sobre o material instanciado e continuei até finalmente entender o que a GPU estava fazendo. Valeu a pena; agora eu tinha mais de vinte mil entidades de teste dando zoom na minha viewport depois de alguns dias depurando meu VBO com PIX (dxsdk).
Agora eu tinha "alguma" idéia de como os pipelines de renderização funcionavam, mas ainda não haviam terminado - acabei criando meu próprio estado de jogo, câmera, pós-efeitos e objetos de entidade, afastando-me do XNA Content Pipeline construindo meu próprio Os carregadores (antipatia pessoal em relação à coisa XNB), criaram uma cadeia de geometria complexa, classificada em profundidade e com estado de mistura, e também instanciava sprites e texto sendo projetados na cena do jogo.
Continuei adicionando, consertando, mudando e experimentando isso continuamente por quase um ano inteiro. No final, saiu muito bom. Agora eu tinha uma compreensão do que está acontecendo sob o capô, porque eu o criei - meu bebê.
Agora meu motor estava praticamente estável e quase acabado. Não é perfeito: o script é honky e a GUI não era ótima. Mas eu ainda adorei. Milhares de linhas de código, ativos e mídia - escondidas em um repositório git privado de 2 GB e todas as dores de cabeça que tive que passar ao tentar fazer um tipo de desenvolvimento que nunca fiz antes. Todo obstáculo que superei foi uma lição aprendida - e um alívio.
Tirei quase tudo o que queria nele.
Mas no final - eu decidi que era hora de colocá-la no chão. Por mais que me satisfizesse escrevendo um mecanismo tão grande sozinho, com conselhos da rede e de outros amigos do jogo, decidi que faria tudo de novo - e melhor - porque agora desta vez eu sei principalmente o que eu estou fazendo.
Esse projeto ainda está escondido no meu repositório GIT.
Minha segunda passagem para escrever um novo mecanismo (desta vez no MonoGame) está progredindo bem. Quando algo quebra, é mais fácil de corrigir. Menos bagunça. Espero mostrar publicamente meu jogo em algum momento deste ano, porque tendem a ser um pouco "muito" apegados ao meu código.
No final, escrevendo meu próprio mecanismo é como aprendi 'como' fazê-lo, enquanto sou capaz de dizer que sei e entendo exatamente o que cada componente faz e como eles devem funcionar. Na verdade, eu odeio ler o código de outras pessoas, especialmente para grandes projetos não documentados. Quero que tudo o que eu use seja construído por mim.
Este sou apenas eu. Duvido que algum dia use um mecanismo pré-fabricado, provavelmente porque acho mais divertido escrever minhas próprias estruturas do que sentar e lidar com o código de outra pessoa - controle total.
fonte
A principal razão absoluta para escrever seu próprio mecanismo (e me surpreende que ninguém tenha dito isso ainda) é a depuração .
Se você escreveu um jogo grande e complicado, e há um bug de falha nele, e você possui o código fonte (e está intimamente familiarizado com esse código fonte em virtude de ter escrito), você pode simplesmente anexar um depurador ao o processo e descubra o que está causando a falha. Feito.
Se você estiver usando o mecanismo comercialmente disponível de outra pessoa e não tiver o código-fonte para esse mecanismo (normalmente não o faz), a depuração de qualquer problema que surgir - mesmo dentro do seu próprio código - continuará ser monumentalmente mais difícil. E se você encontrar um bug dentro do próprio mecanismo, não poderá resolvê-lo sozinho. Como você gostaria de ficar uma semana fora da data de lançamento e pedir para alguém descobrir um bug de falha no mecanismo que você está usando - um bug de falha que você não pode consertar porque está dentro de um mecanismo proprietário ao qual você não tem o código fonte? Vi isso acontecer - você não tem escolha a não ser fazer uma ligação urgente de suporte com o fornecedor e esperar que ele possa (e esteja interessado em) corrigir o problema para você, enquanto você brinca,
O desenvolvimento de jogos é difícil, mas a depuração é uma ordem de magnitude mais difícil. No meu livro, qualquer coisa que dificulte o desenvolvimento de jogos, mas seja mais fácil a depuração, é uma enorme vitória líquida.
fonte
Há respostas muito boas aqui, mas faltam um ponto adicional importante.
Muitos dos mecanismos licenciados de hoje começaram como mecanismos dedicados .
Vamos usar o Unreal como exemplo, porque é tão onipresente.
Hoje, quando você pensa na Unreal, você tende a pensar em um mecanismo licenciado e que pode usar em vez de ter que construir o seu próprio, mas esse nem sempre foi o caso, e uma vez o mecanismo Unreal nem existia como uma entidade separada.
Era uma vez um jogo chamado Unreal . Os desenvolvedores decidiram construir seu próprio mecanismo, em vez de licenciar um mecanismo existente . Avanço rápido em várias iterações e esse mecanismo se torna o mecanismo Unreal que conhecemos hoje.
A questão é que esse é um problema de galinha e ovo. Todo bit de middleware que você pode licenciar começou em algum lugar, e muitas vezes nem começou como middleware (às vezes nem foi escrito com a intenção de se tornar middleware e seu status atual é efetivamente um acidente ). As pessoas escrevem seus próprios mecanismos porque, em última análise, alguém precisa escrevê-lo, e o mecanismo dedicado de hoje pode se tornar o middleware licenciável de amanhã.
fonte
Há outras razões pelas quais um estúdio pode optar por "construir" em vez de "comprar" sua tecnologia:
Também concordo com solicitações / necessidades específicas, e preços de mecanismos e guerras de licenças forçam alguns estúdios a implementar alguns mecanismos.
Os bons motivos para "comprar" ou "usar" outros mecanismos são:
fonte
Razão histórica (principalmente).
Que está relacionado ao preço.
Todos os jogos que você assistiu ao Unreal ou CryEngine nos últimos anos tiveram que pagar uma quantia enorme de dinheiro. Especialmente se você deseja obter o código fonte (ou seja: você queria o UE, não apenas o UDK.)
Mas isso mudou. Agora todos podem comprar motores ainda maiores, quando a corrida de preços começou.
O que isso significa...
No entanto, eles não serão jogos AAA como foram.
Veja o mecanismo Warhammer40k / COH na Relic ou o que os generais usaram na EA.
Portanto, mesmo que alguém possa comprar os motores maiores, eles não necessariamente oferecem uma escolha melhor.
As pessoas adoram por sua facilidade de uso, desempenho rápido e a enorme loja de ativos.
Obviamente, o Unity é capaz de implantar em quase qualquer plataforma.
Então sim. Necessidades, preços no passado e tal.
fonte
(ie.: you want UE, not UDK only.)
?E a organização da equipe?
Por trás do material de depuração estão a documentação e o suporte, não o código, porque no final eu não queria que meu grupo de construção tocasse no código do meu próprio mecanismo. Isso pode ser uma bagunça.
Então, eu preciso de um grupo de apoio para fazer isso. Mas isso aumenta os custos: mais pessoas, mais lugares, mais linhas telefônicas, mais administração ...
Uma solução para isso pode ser terceirizada ... para uma empresa de middleware, liberando recursos para o meu negócio de fazer jogos, ou seja, para o grupo criativo e escritores.
Para uma empresa iniciante, não é uma má opção usar e não construir. E, depois de obter uma massa crítica de renda, pode ser, apenas pode ser, você desejará criar seu próprio mecanismo ...
fonte
bem. para a maioria dos jogos que usam seu próprio mecanismo criado por seus desenvolvedores. frequentemente. eles não podem fazer coisas com o mecanismo de terceiros. então eles fazem o seu próprio para facilitar o desenvolvimento de seu próprio jogo. ou possível, pelo menos.
e muitos jogos que usam seu próprio mecanismo de maneira geral. trabalhe melhor. porque são mais personalizados e 100% adequados à sua tarefa. e o jogo em si parece diferente. é realmente fácil jogar um jogo e dizer que é feito por. motor irreal ou o que quer. geralmente um mecanismo mais personalizado e deve resultar em um jogo único. parece único e funciona de maneira única e deve ter um desempenho melhor do que um jogo criado em um mecanismo pré-fabricado.
fonte
Minha resposta difere das existentes, então eu a adiciono, embora seja tarde:
Se você pegar o exemplo Valve da pergunta ou a série Witcher, o processo foi:
A mesma abordagem é adotada por quase todos os desenvolvedores financeiramente razoáveis que desenvolvem seu próprio mecanismo. Ao modificar um mecanismo, eles adquirem conhecimento de como um mecanismo funciona e se deparam com restrições de design resultantes de um mecanismo licenciado. No final, eles têm o conhecimento interno necessário para criar um mecanismo, o dinheiro para financiar a criação de um mecanismo e um projeto que se beneficiará de um mecanismo dedicado. Nesse ponto, o motivo da construção de um mecanismo é: porque é a coisa mais inteligente a se fazer.
fonte
meu professor de programação nos disse, use apenas APIs / métodos / classes / funções que você sabe criar
porque se você não sabe como construí-lo e está usando as chances de trabalho de outra pessoa, não sabe como funciona e quando não sabe como algo funciona, é muito mais suscetível a erros e problemas, atingindo paredes de confusão
aprender coisas simples pode, quando combinada, resultar em problemas estranhos, muito menos em algo complexo como um mecanismo de jogo, especialmente quando você deve usar esse mecanismo para executar seu jogo, o que pode levar a muitos resultados e problemas inesperados
e o mecanismo de jogo não segue código lógico ou qualquer outra lógica quando eles são criados, com certeza há algumas coisas que podem ser esperadas, mas, na realidade, tudo será construído com base em alguém que entenda e tenha conhecimento de alguma linguagem de programação ou como funciona algum sistema
por exemplo, se eu optar por escrever uma equação matemática, eu posso escrevê-lo de várias maneiras, posso representá-lo com polinômios, cálculo diferencial ou geometria básica ou álgebra ou o que for mais adequado para mim, mas às vezes eu escreveria em uma determinada forma / formato, porque eu quero para poder manipular o que está facilmente disponível, como se eu planejasse fazer muita manipulação de vértices, eu poderia escrever esse modelo matemático usando geometria básica; no entanto, se eu quisesse mudar a curva usando gradientes, poderia me concentrar no cálculo diferencial para poder para manipular facilmente os gradientes, etc, e o mesmo vale para o que quer que eu planeje ter acesso mais fácil a
e, às vezes, o mecanismo de jogo atual pode não me dar a flexibilidade do que pretendo fazer ou até mesmo oferecer a você essa opção, mas é muito difícil fazê-lo porque o mecanismo de jogo se concentra nas forças da física como sua principal fonte de movimento e manipulação de objetos no jogo
de qualquer maneira, espero ter deixado claro o que eu estava tentando apontar
fonte