Como os desenvolvedores não-indie podem parar de reinventar a roda?

8

Parece que o status quo na indústria de jogos é escrever a maioria dos softwares internamente, talvez excluindo o mecanismo, se você usar um dos doze ou mais grandes. Antes de trabalhar aqui, eu era principalmente um desenvolvedor de código aberto, então essa mentalidade parece completamente louca para mim. Existe alguma maneira boa de pararmos de criar coisas como visualizadores de log, diagnóstico de rede e sistemas de patches?

coderanger
fonte

Respostas:

15

Podemos parar de reinventar a roda ... deixando de reinventar a roda. Use bibliotecas externas, mecanismos de jogos etc.

Tenho a sensação de que as pessoas não reinventar a roda para:

  • Evite direitos autorais, royalties, etc. em bibliotecas ou códigos emprestados
  • Evite pagar por um mecanismo de jogo (para um jogo AAA completo, isso pode ser extremamente caro)
  • Manter familiaridade íntima com toda a base de código - adicionar bibliotecas externas, vincular a mecanismos de jogos, etc., significa apenas mais código para se familiarizar e possivelmente manter
  • Escrever todo o seu código significa que você pode otimizá-lo especificamente para o seu jogo
  • Esse código pode ser licenciado para outras pessoas, se desejado, reutilizá-lo para outros projetos, etc. enquanto você mantém o controle proprietário
Sean James
fonte
Eu concordo com tudo isso! Eu mesmo tive que reinventar algumas coisas para evitar código patenteado, também tive que evitar pagar por um mecanismo de jogo e, finalmente, muitas vezes tenho problemas que não são minha culpa (como meu jogo atual que tem três defeitos, um é que o mecanismo de física tem um comportamento contra-intuitivo ... isso significa que precisarei ler sua fonte profundamente ... o outro é que o mixer parece ter uma maneira arbitrária de escolher prioridades e, finalmente, o próprio mecanismo de jogo com o editor de mapas, aleatoriamente segfaults quando eu descarrego um mapa ... Novamente, esse varredor de código médio ...) #
speeder
A questão é mais social, como podemos incentivar isso? Existem, por exemplo, ferramentas para correção que não agem em jogos? Existem alguns algoritmos e bibliotecas subjacentes para manipulação de dados (algoritmo rsync, zlib), mas não sei de nada que vá até uma interface do usuário.
Coderanger
11
Você perdeu realmente a capacidade de investigar e corrigir problemas nas bibliotecas durante a crise de lançamento sem precisar levar em consideração o tempo de resposta de terceiros em seu código fechado e otimizar as bibliotecas para o seu caso de uso preciso. Esses podem ser bem valiosos.
moonshadow
1

Depende. Eu acho que na verdade existe uma quantidade razoável de produtos intermediários por aí, que é usada, ... se você estiver disposto a pagar.

Ao mesmo tempo, às vezes, é fácil hackear algo para ficar realmente rápido sem tantas dependências externas, se o escopo for pequeno.

Eu acho que, no final, você precisa comparar empresas como EA e Ubisoft com outras grandes empresas de software, como Apple, Google, Facebook, o que você tem.

Todos eles escrevem uma quantidade muito grande de código personalizado, quando existem alternativas existentes, porque desejam obter uma vantagem competitiva.

Como o @Sean James disse que existem razões legais e várias outras, mas acho que, mesmo que não houvesse obstáculos, as empresas de software inventivas ainda desenvolveriam alternativas personalizadas aos componentes de software existentes, se achassem que poderiam melhorá-los.

No entanto, eu também concordo que sempre há espaço para iniciar alguns projetos dos quais todos nós poderíamos nos beneficiar. Por exemplo, acho que precisamos substituir o COLLADA por algo muito mais simples, baseado em JSON. Talvez algo que lide apenas com malhas arbitrárias, mas nada mais. Acho que realmente precisamos de um formato de malha melhor.

Jonathan Fischoff
fonte
Não há apenas a vantagem competitiva de escrever seu próprio 'middleware', mas também significa suporte interno. Isso pode ser útil em momentos de grande crise ou quando é impossível reproduzir um bug sem entregar o jogo inteiro.
Kaj 29/07
Sem mencionar se a empresa de motores de jogos é comprada ou se o código é pirateado, a lista continua. Dependendo código de outra pessoa é um passivo que pode ser difícil de quantificar, não há muitos usuários, que é o caso com um monte de middleware especialista
Jonathan Fischoff
Eu não acho que o código personalizado vá embora, mas a falta de um formato viável para o compartilhamento de dados não está ajudando no desenvolvimento de ferramentas.
Jonathan Fischoff
Muito tempo, na minha empresa, pelo menos, as pessoas preferem reconstruir as coisas internamente, apenas porque o número de funcionários já está orçado e a compra de middleware comercial não é (e é mais fácil pedir aos programadores que trabalhem 10 horas por dia do que é necessário). obter o QG para autorizar grandes despesas de capital). Os benefícios da colaboração mais livre não seriam um benefício maior do que a vantagem competitiva das ferramentas proprietárias?
Coderanger
Eu acho que pode ser melhorado, mas acho que é um problema que se estende além das empresas de jogos. Há muito menos reutilização de código do que deveria, em geral, não apenas nos jogos. No nível pessoal, eu adoraria ajudar alguns projetos.
Jonathan Fischoff
1

Existe alguma maneira boa de pararmos de criar coisas como visualizadores de log, diagnóstico de rede e sistemas de patches?

Na minha experiência, essas coisas são tratadas como extras simples que podem ser associados à sua programação 'real'. Obviamente, eles estão longe de ser simples e longe de 'extras', sendo partes complexas e importantes do sistema, mas a essa altura já há muito investimento na versão sob medida.

Existem boas bibliotecas de código aberto ou comerciais que fornecem esse tipo de funcionalidade? Não sei se existem, e até que alguém dê um passo e forneça um, continuará assim. Os desenvolvedores de negócios geralmente não conseguem produzir bibliotecas adequadas para jogos ("o que, você quer dizer que não é possível remover completamente todas as chamadas em uma compilação do Release ?! ") e os desenvolvedores de jogos geralmente não têm interesse em fazer esse tipo de ação. como um pacote independente quando eles têm um jogo para começar.

Kylotan
fonte