como disse Josh Petrie :
" Síndrome não construída aqui ;"
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.