Por que um mecanismo como o Unity3D é enfatizado em uma biblioteca nativa como o OpenGL para iniciantes? [fechadas]

25

Eu sou apenas um iniciante em jogos 3D, minha plataforma preferida é o Android. Eu postei uma pergunta em outro fórum sobre "O que usar: OpenGL ou Unity3d?" Todos enfatizaram o Unity3D e usaram seus recursos e ferramentas embutidos, que eu teria que codificar para mim mesmo se usasse o OpenGL. Mas então alguém diz que a maioria dos jogos complexos exige mecanismos personalizados. Por que eu usaria um mecanismo como o Unity3D sobre o OpenGL?

Aman Grover
fonte
15
Duas palavras: gratificação instantânea. Você pode obter algo "útil" feito com a unidade sem saber muito, enquanto o desenvolvimento de um aplicativo OpenGL requer algumas linhas de código e compreensão de uma ampla gama de conceitos.
Jari Komppa
5
Talvez possamos explicar isso neste tópico e todas as perguntas "que tecnologia devo usar" desaparecem para sempre. Também quero um unicórnio
jhocking
8
"a maioria dos jogos complexos exige mecanismos personalizados" - na verdade, um número surpreendentemente grande de jogos AAA altamente bem-sucedidos são criados em mecanismos de ações como o mecanismo Unreal .
Philipp
2
Além disso, um iniciante não será capaz de tornar um jogo complexo o suficiente para precisar de um mecanismo personalizado.
Christian
Isso acabou de aparecer no Gamasutra e, embora não seja uma resposta direta a essa pergunta, é relevante: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - em particular, será muito difícil para um projeto do qual você constrói o início com OpenGL para ser um primeiro projeto 'modesto'.
Steven Stadnicki

Respostas:

30

Acho que você já respondeu a essa pergunta. Você disse: "Eu sou apenas um iniciante em jogos 3D" . Além disso, você disse "... o Unity3D e o uso de recursos e ferramentas integrados, que eu teria que me codificar para usar o OpenGL" .

Essencialmente, isso significa que se você estiver usando o OpenGL sozinho, estará escrevendo um mecanismo de jogo e, potencialmente anos depois, escrevendo seu jogo. Se você deseja se concentrar em um jogo, utilize os recursos disponíveis para chegar o mais perto possível desse objetivo. Usar um mecanismo de jogo é a melhor maneira de concentrar seus esforços na criação de um jogo, em vez de escrever todo o material necessário para criar um jogo.

Veja esta pergunta relacionada: Qual é a diferença entre uma Biblioteca e um Mecanismo e este? O que é uma estrutura de jogo versus um mecanismo de jogo?

MichaelHouse
fonte
então o OpenGL é apenas para gráficos e o unity3d é uma estrutura completa que possui gráficos e requisitos de física para o meu jogo?
Aman Grover
11
A união é muito mais que isso, mas sim, essa é a diferença.
Jhocking 29/04
3
@AmanGrover: também percebe que com o GL "apenas para gráficos" é realmente "apenas para enviar comandos para a GPU". Todo o trabalho duro real dos gráficos ainda precisa ser feito pelo programador, enquanto o Unity possui todos os importantes recursos e algoritmos gráficos incluídos e prontos para uso.
Sean Middleditch
2
Não escreva motores, escreva jogos. Foi o que me disseram para abordar. O que quero dizer com alguém cria um mecanismo de jogo enquanto você cria o jogo real. Portanto, esse é o ponto em que discordo do Byte.
precisa saber é
28

Porque os iniciantes, por definição, não sabem o que estão fazendo .

O OpenGL tem uma enorme curva de aprendizado. Claro, você pode emitir alguns comandos do glBegin, se empolgar ao colocar alguns triângulos na tela e sair do fundo do poço com algo mais complexo que você nem está pronto para enfrentar. Essa não é uma ótima maneira de aprender. Uma analogia (um pouco exagerada) pode ser aprender um pouco de física básica do ensino médio e depois ser encarregada do Large Hadron Collider. Não é nadar ou afundar, é nadar ou deixar um grande buraco radioativo no chão.

Supõe-se que a maioria das pessoas pergunta "Eu quero fazer um jogo, o que devo usar?" A pergunta realmente quer fazer um jogo (caso contrário, eles teriam feito uma pergunta diferente, com certeza?) Portanto, a resposta é adaptada à pergunta e o uso de um kit de ferramentas, estrutura ou mecanismo preexistente é uma maneira de ajudá-los a alcançar essa ambição. sem se distrair com a agonia sobre se uma UBO ou glUniform chama é preferível para atualizar uma única matriz.

Trata-se de dar um passo de cada vez, facilitar o processo de aprendizagem e oferecer a você algo gratificante no final. Tentar aprender como criar um jogo e como usar adequadamente uma API 3D madura e poderosa ao mesmo tempo provavelmente é demais para um iniciante. É como o efeito Dunning – Kruger menos as conotações negativas. Você não sabe o que não sabe; portanto, não tem realmente nenhum tipo de imagem realista do que estaria assumindo.

Por outro lado, se seu objetivo é aprender OpenGL, você não quer realmente fazer um jogo! Você quer aprender OpenGL, e fazê-lo no contexto de criação de um jogo pode ser uma maneira divertida de aprender, mas criar um jogo é um meio para um fim, não um fim em si mesmo (e certamente não é a única maneira de aprender o OpenGL ) Você provavelmente nunca o lançará, e quase definitivamente olhará para trás em alguns anos e ficará terrivelmente envergonhado por algumas das coisas estúpidas que fez.

Maximus Minimus
fonte
22

Realmente depende do que você deseja obter deste projeto. Se seu objetivo principal é se concentrar no design do jogo, provavelmente você está melhor com um mecanismo pré-construído, porque isso o levará à parte de criação de jogos muito mais rapidamente. Se seu objetivo é aprender sobre a parte da programação de criação de jogos (especialmente se você estiver tentando se preparar para um emprego na indústria), provavelmente descobrirá que trabalhar com o OpenGL será uma experiência mais valiosa. Lembre-se de que nenhuma das instruções anteriores é verdadeira 100% do tempo.

Realmente não há regra ao decidir sobre esse tipo de coisa. A maioria das respostas que você ouve nesse tipo de pergunta são opiniões e muito poucas serão completamente relevantes para o seu próprio projeto e conjunto de habilidades.

RyNo
fonte
Obrigado e, sim, estou procurando um emprego nesta área e, portanto, irei com o OpenGL.
Aman Grover
9
Discordo vigorosamente de que trabalhar com o OpenGL 'vazio' será mais valioso para quem entrar na indústria de jogos. O Unity fornece um excelente exemplo de um mecanismo de jogo moderno e relativamente maduro; entender a funcionalidade que ela fornece (com o objetivo de aprender como você pode fornecer uma funcionalidade semelhante) é uma excelente maneira de entender o processo de desenvolvimento de jogos, enquanto o OpenGL está longe de ser específico ao jogo em qualquer sentido.
Steven Stadnicki
Isso apenas mostra como realmente não existe uma regra sobre essas coisas, apenas opiniões. Tudo depende do que você precisa / deseja.
Jhocking
5
@AmanGrover - então não faça um jogo! Você terá mais facilidade em aprender uma coisa de cada vez. Faça um simulador de sistema solar. Aprenda a desenhar primitivas básicas, aprenda a traduzi-las e rotacioná-las, coloque os planetas em um VBO para desenhá-los mais rapidamente, use alguns shaders para criar nuvens animadas neles e você estará a uma boa distância para entender os fundamentos.
Maximus Minimus
3
@KamikazeSoctsman Novamente, discordamos aqui. Não estou dizendo que o OGL é inútil - longe disso! - mas na última década, usei meu conhecimento de OpenGL apenas algumas poucas vezes em breves ajustes e partidas. Pelo contrário, como os mecanismos de gráficos de jogos tendem a ser tão sensíveis ao desempenho, na minha experiência, eles são um dos lugares menos comuns para um novo programador iniciar. Você deve conhecer absolutamente a matemática 3D e entender os princípios da renderização - mas isso é muito diferente de aprender OGL.
Steven Stadnicki
6

A diferença é simples. Unidade é uma carruagem com quatro rodas redondas que podem levá-lo a lugares. O OpenGL é uma serragem que você pode montar em uma loja e potencialmente usar para moldar um carro e rodas melhorados e mais modernos. Ou seja, se você investir muitas horas do seu tempo aprendendo o que as pessoas antes de você ter feito primeiro.

Seu objetivo como iniciante deve ser o primeiro estudo das carruagens existentes e seus designs. Não faz sentido jogar tudo pela janela e começar do zero. Primeiro aprenda o que existe e obtenha um conhecimento completo dele. Se não, como você conhece suas limitações e se você não conhece as limitações, como você pode quebrá-las? Qual o sentido de tornar algo medíocre inútil e ignorante de todas as vibrantes ferramentas existentes que já estão disponíveis?

As etapas de um desenvolvedor iniciante de jogo são:

  1. Domine uma estrutura / mecanismo modernos e obtenha uma compreensão profunda dela (isso também o ajudará a aprender sobre os diferentes aspectos do design de jogos, gráficos e OpenGL não são tudo o que existe).
  2. Faça um pequeno jogo com ele e aprenda mais no processo.
  3. Encontre obstáculos e limitações organicamente no motor.
  4. Saiba mais sobre o assunto.
  5. Trabalhe para melhorar as áreas que você considera que precisam melhorar.

Trabalhar sozinho em fazer algo que já foi feito não o tornará um desenvolvedor valioso para ninguém, porque você não será produtivo na verdade ou um bom aprendiz, basta copiar os bits existentes do código e talvez aprender a leia e entenda. Como diz o velho ditado Pokemon, "Não é muito eficaz ...".

A pior parte é que esse tipo de abordagem não é fácil de acompanhar, porque não há gratificação; portanto, você está utilizando a força de vontade bruta, que foi cientificamente comprovada como um recurso limitado para os seres humanos. Você precisa fazer algo que ofereça gratificação diária ou provavelmente não será capaz de mantê-la.

Portanto, para resumir, um mecanismo é enfatizado porque você pode fazer as coisas com um mecanismo e é muito mais provável que tenha sucesso dessa maneira. Até grandes criadores de jogos confiaram no trabalho anterior de outra pessoa e essa é a natureza do progresso. Você precisa entender o cenário geral e saber como brincar com as peças de Lego fornecidas por outras pessoas antes de criar suas próprias peças de Lego personalizadas.

wolfdawn
fonte
4

Assumindo que o seu objetivo é criar um jogo, o cara que falou sobre motores de medida sejam obrigados estava errado. De qualquer forma, jogos complexos exigem um mecanismo maduro que foi projetado, implementado, otimizado, testado e mantido por profissionais que estão no setor há muito tempo - ou que podem corresponder à sua qualidade (pelo menos para os fins de um determinado jogo) , se isso for possível.

Os grandes desenvolvedores de jogos constroem mecanismos internos, mas ainda os reutilizam fortemente para seus futuros jogos. Mas lembre-se de que seus orçamentos, tamanhos de equipe e muitos outros fatores são muito diferentes dos desenvolvedores independentes - pode fazer muito mais sentido para os negócios criarem seu próprio mecanismo, mesmo que os existentes não fiquem aquém tecnologicamente.

Obviamente, ainda existe o equívoco, porque muitos recursos não existem prontos para uso nos mecanismos existentes, que eles não podem ser implementados nesse mecanismo, mas isso geralmente é impreciso.

Lembre-se de que alguns dos jogos modernos mais inovadores, como Portal e Antichamber, foram criados usando os mecanismos existentes. Alguns jogos online bastante complexos, como o Aion e o TERA, foram criados usando os mecanismos existentes. Alguns dos jogos mais bonitos visualmente, como Bioshock Infinite e Thief, foram criados usando os mecanismos existentes. E, claro, alguns não eram. Mas o ponto é: nada que eu já vi realmente exigia um mecanismo personalizado.

Por outro lado, se seu objetivo é aprender conceitos de programação gráfica, é claro que o OpenGL é o caminho a seguir. Mas, mesmo assim, lembre-se de que estar familiarizado com alguns mecanismos existentes o ajudará tremendamente a entender o que você está fazendo e o que deve procurar.

TC
fonte
11
-1. Grandes afirmações sobre a indústria de jogos. A maioria deles é imprecisa. Eu gostaria de poder polvilhar seu post com cerca de uma dúzia de citation neededs #
Panda Pyjama
11
@PandaPajama Há praticamente apenas uma afirmação sobre a indústria de jogos na minha resposta. Se isso lhe incomoda muito, você pode corrigi-lo ou até removê-lo completamente.
TC
Minha experiência (limitada) me mostrou que, se há algo que não se pode fazer generalizações, é a indústria de jogos. Cada empresa tem uma maneira diferente de ver as coisas, mesmo equipes diferentes dentro de uma empresa podem ter políticas muito diferentes sobre tudo. Nesse caso específico, os mecanismos internos geram custos e trazem algumas vantagens e desvantagens. Se o resultado líquido é de economia ou despesa, é extremamente difícil de calcular e variará entre os projetos. Além disso, o orçamento, embora importante, não é o único elemento levado em consideração na criação de jogos.
Panda Pyjama
@PandaPajama Concedido, veja minha edição. Eu simplesmente disse que pode fazer mais sentido comercial para eles em geral, o que inclui o fator de orçamento e o que mais ajuda a moldar sua decisão, apontando que pode não ser uma limitação técnica dos mecanismos existentes.
TC