Começando do zero - É um erro se eu reinventar a roda?

31

Normalmente, sempre que eu quero iniciar um jogo, acho que tenho uma boa arquitetura básica para renderizar e um melhor loop do jogo do zero. Eu normalmente não quero usar mecanismos existentes. A razão por trás disso é que eu quero implementá-lo sozinho para aprender coisas.

Mas muitos blogs e desenvolvedores dizem que não é uma boa opção ir para reinventar a roda.

Estou esquecendo de algo?

Ayyappa
fonte
Com que frequência você realmente "inicia um jogo"? Se você estiver repetindo ideias rapidamente, faça o que funcionar. Se você está fazendo uma obra magnum em que um passo em falso é caro ou o tempo é limitado, por que perder tempo reinventando a roda? Se você está interessado em aprender como as coisas funcionam, por que não escrever sua própria tecnologia? Quais são seus objetivos aqui?
18711 ChrisE

Respostas:

16

Não, não é uma coisa ruim. O aprendizado e a capacidade de aprender são absolutamente fundamentais para ser um bom programador.

MAS
O importante ao criar algo do zero é finalizá-lo até a conclusão. Não importa o quão hacky e não otimizado seja, se você concluir, haverá uma sensação de satisfação como nenhuma outra. Tudo isso lhe dará uma experiência valiosa e você sempre poderá tornar o código mais elegante ou ter um desempenho melhor posteriormente quando tiver algo funcional. No final do dia, as únicas coisas que separam programadores incríveis e medíocres são experiência e prática.

É claro que quando você faz algo e deseja criar outros jogos, não há razão para reutilizar sua antiga base de código.

Se você deseja iniciar uma carreira em desenvolvimento de jogos, ou qualquer tipo de desenvolvimento, a experiência o levará muito, muito longe. Mas se você deseja produzir jogos de maneira rápida e fácil (relativamente fácil, em comparação com escrever suas próprias coisas), use um mecanismo existente.

Para ser sincero com você, uma combinação de experiência usando seu próprio código E usando uma variedade de bibliotecas e mecanismos diferentes fará de você um codificador muito melhor.

Ray Dey
fonte
Obrigado Ray, isso é útil! mas você pode agradar a lista a mecânica do jogo, bem ...
Ayyappa
Sem problemas. Não estou completamente certo do que você quer dizer no contexto da sua pergunta original. O que você procura em particular?
Raio Dey
É ok eu vou fazer uma pergunta separada. A outra pergunta nesta postagem foi removida (editada), pois não relaciona um pouco o contexto.
Ayyappa
+1 na linha de chegada - na verdade, concluir um projeto é uma boa experiência.
Ciclope
36
i want to implement it on my own to learn stuff.

Essa é provavelmente a coisa mais importante. Se seu objetivo é aprender, escrever seus próprios mecanismos de renderização e loop de jogo a partir do zero é uma ótima experiência de aprendizado. Se seu objetivo é criar um jogo concluído de maneira rápida e fácil, use uma estrutura existente.

Tesserex
fonte
3
+1. Só porque uma API ou biblioteca de terceiros pode abstrair todos os detalhes da implementação não significa que você não precisa conhecê-los. Usar 'rodas prontas para uso' o ajudará a escrever o código final mais rapidamente; mas fazer a sua própria roda vai ajudá-lo a identificar quais premade são os melhores, e mais importante como otimizar e depurar-los quando os raios começar a estalar fora ...
sebf
4
+1 Não reinvente a roda, a menos que esteja aprendendo a fazer rodas.
ZzzzBov
4
lembre-se de que isso melhorará suas habilidades no design de mecanismos de jogos , mas não no design de jogos.
Dave O.
Esta também é uma resposta digna ... obrigado ... mas é ruim que eu não consiga marcar duas respostas :( #
214 Ayyappa
10

Reinventar a roda ensina como as rodas funcionam.

caos
fonte
5

Depende do que você procura. Se você quiser aprender, reinvente quantas rodas quiser. Conheço pessoas que criaram suas próprias JVMs ou PNG loaders para o inferno.

A maioria dos blogs provavelmente dá conselhos sobre como chegar rapidamente às coisas que você recebe, mas não sei se é uma boa estratégia a longo prazo. Se você não sabe com o que está brincando, como saber se é uma boa escolha? O que você fará quando encontrar problemas, reclamar nos fóruns ou conseguir descobrir sozinho?

Jari Komppa
fonte
4

Há muito desânimo sobre essa frase na comunidade de programação geral, mas acho que todos sabemos que muitos de nós amamos nada além de reinventar a roda e encontrar uma maneira de fazê-la girar um pouco melhor, mais rápida e mais fria.

Novas tecnologias estão surgindo o tempo todo e precisam de pessoas para reinventar a roda. O OpenCL e outras linguagens de computação da GPU são um bom exemplo.

Você poderia usar uma estrutura que incluísse os novos recursos deste ano, mas construí-la por conta própria, se você realmente fizer a pesquisa e fizer melhorias no que já existe por aí ... você pode realmente explorar novos campos de desempenho e utilidade.

Depois de ter inventado algumas rodas para fazer você rolar, você conhece suas coisas muito bem como um bônus forte!

Além disso, é muito divertido.

Garet Claborn
fonte
1

E há quem afirme que é mais produtivo justamente porque reinventa a roda.

Caso em questão: Eskil Steenberg, criador do World of Love (excelente vídeo em que ele fala sobre seu jogo, seu mecanismo e ferramentas impressionantes , e sua filosofia: http://vimeo.com/18423305 )

Vai
fonte
1

Se for a sua primeira vez, mesmo que seja apenas para aprender, ainda é melhor usar algum tipo de mecanismo, porque você aprenderá o que o mecanismo pode fornecer para você.

"A roda" usada na metáfora é o conceito, não a implementação. Mesmo que você não reinvente a roda, você ainda precisa escolher se compra ou não uma. Portanto, criar seu próprio mecanismo nem mesmo reinventa a roda, é só você querer criar sua própria roda para algum propósito, que pode ser para aprendizado, baixo custo, tamanho pequeno ou qualquer uso ou requisitos específicos.

tia
fonte
0

O fato é que o que leva muito tempo ao se fazer um jogo é o conteúdo e a criação e o teste reais de ativos - e não geralmente a criação de código. É provavelmente por isso que é fácil pular essa parte e usar um mecanismo existente para poder gastar mais tempo com conteúdo, design de jogos e bugs de nível superior.

Penso que, fazendo coisas do zero para aprender, irá gerar uma boa sensação do trabalho por trás dos motores existentes e melhorar a capacidade de selecionar um mais tarde, se necessário.

Por diversão e aprendizado, faça o que quiser. Se eu tivesse que escrever aulas de pipeline de conteúdo do zero, lidando com todos os detalhes irritantes e casos extremos do sistema de arquivos e dos carregadores de ativos, ficaria louco - desde que aprendesse o suficiente para ter uma compreensão realmente boa de como fazê-lo, Costumo evitar fazê-lo se alguém já o fez bem (embora seja verdade, muitas estruturas e mecanismos não se encaixam na minha própria idéia de "bom", o que seria motivo para reescrever algo). Se eu não sei como fazê-lo, realmente gosto de fazê-lo pelo menos uma vez, apenas para entender os detalhes do que quer que seja - como Ray Dey já declarou.

Oskar Duveborn
fonte
0

É apenas um erro se você não tiver tempo para aprender. Se você tiver tempo, vá em frente. Se não, então não faça.

Tim Holt
fonte