Quais vantagens o OpenGL bare oferece sobre estruturas / mecanismos para pequenos desenvolvedores? [fechadas]


16

Eu notei uma tendência de desenvolvedores independentes, afastando-se de estruturas e mecanismos, e avançando no uso do OpenGL, ou usando-o combinado com SDL / SFML2. Como desenvolvedor independente, não vejo o que o OpenGL de baixo nível pode oferecer em mecanismos ou estruturas separadas.

A maioria dos mecanismos e estruturas decentes fornece a funcionalidade de que você precisa e nunca entra no seu caminho. Eles também podem abrir a opção de lidar com o OpenGL diretamente. Alguns até oferecem a funcionalidade para compilar multiplataforma!

Entendo a aspiração de aprender o que está acontecendo sob o capô, mas não vejo nenhuma vantagem que o OpenGL possa oferecer aos desenvolvedores independentes por mecanismos ou estruturas.

Você poderia explicar o raciocínio por trás da criação de jogos do zero usando o OpenGL?


Como estudante de graduação em programação de jogos e gráficos, posso atestar as complexidades de aprender OpenGL do zero. Se eu estivesse fazendo um jogo indy hoje, usaria absolutamente SDL ou alguma outra biblioteca. Mas eu também entendo muito mais sobre gráficos hoje do que quando comecei meus estudos, aprender uma API me ajudou bastante a entender como as GPUs funcionam em geral e como o hardware e o software interagem. Mas, para criar um produto comercial, eu usaria absolutamente uma biblioteca de terceiros neste momento.
Philip

Respostas:


23

Essa é uma pergunta / resposta baseada em opinião, portanto, na verdade, não é necessariamente ideal para esta plataforma, mas de qualquer maneira:

Por que nenhuma estrutura / mecanismo como indie? Aqui estão meus dois centavos:

  • Falta de orçamento: este é provavelmente o maior ponto para a maioria dos desenvolvedores pequenos / independentes. Muitas estruturas ou mecanismos não permitirão que você publique seu produto sem comprar uma versão mais cara (supondo que exista uma versão barata ou gratuita disponível) e / ou pagar royalties, algo que você sempre terá que considerar para pequenos projetos. Às vezes, você também precisa pagar uma vez por plataforma.
  • Complexidade: a maioria dos mecanismos ou estruturas se enquadra em uma de duas categorias:
    • Eles são muito limitados para um gênero especial (o RPG Maker é um exemplo típico).
    • Ou eles são genéricos demais com muitas coisas que você provavelmente não usará de qualquer maneira (como o Unity ).
  • Código proprietário: a maioria dos mecanismos não é de código aberto e, para obter o código real, você precisará pagar ainda mais (se disponível). Sem o código-fonte real, portar para outras plataformas pode ser difícil ou até impossível (novamente, o RPG Maker seria um exemplo perfeito).
  • Clunkyness: Essa é minha opinião pessoal, mas pelo menos para mim essa é uma decepção bastante grande, considerando mecanismos e estruturas pré-fabricados, especialmente quando você está construindo apenas um pequeno jogo. Quem quer jogar um pequeno jogo com 200 KB de tamanho, mas com um tempo de execução de 50 MB?
  • Escolha do idioma: alguns mecanismos e estruturas não fornecem bibliotecas para usar em seu próprio código. Em vez disso, eles fornecem uma estrutura ou tempo de execução que usa sua própria linguagem de script ou alguma linguagem definida (como Javascript ou C #). Se você estiver escrevendo seu próprio mecanismo personalizado, poderá usar o idioma que escolher.
  • Proteção do seu trabalho: se você estiver usando um mecanismo ou estrutura pré-fabricada, as chances são altas de que outras pessoas possam ter um tempo muito mais fácil para alterar ou descompilar seu código ou ativos, algo que você pode querer evitar (mesmo que seja apenas para manter seu recorde) limpar \ limpo). O código personalizado e a manipulação de ativos adicionam um obstáculo muito maior, especialmente quando compilados no código nativo.
  • Branding: isso pode ser pequeno para muitos, mas alguns mecanismos e estruturas obriga a mostrar o logotipo ou talvez até anúncios, levando essencialmente sua liberdade para escolher quem / o que promover. Obviamente, isso geralmente depende da licença, das taxas de licenciamento etc.
  • Incompatibilidade com licenças: isso é algo que muitos nem consideram ao escolher um mecanismo, mas dependendo do que você deseja fazer, esse pode ser um fator importante. Mesmo se você comprar algum mecanismo, poderá ser impedido de divulgar fontes ou materiais relacionados. Algo assim pode tornar a modificação impossível, mesmo que você queira que os usuários possam. Tome o mecanismo Source da Valve ( Half-Life 2 , Team Fortress 2 , etc.) como exemplo: eles estão permitindo que os modders usem seu mecanismo em seus próprios projetos. Se esses jogos fossem baseados (por exemplo) no Unreal Engine, isso não seria possível, devido às limitações implícitas nos termos da licença.

11
mais uma coisa: depois de aprender o openGL, você o conhece. Você não precisa reaprendê-lo em cada idioma ou aprender como uma estrutura / mecanismo específico deseja implementá-lo para cada nova estrutura / mecanismo. Isso também leva a uma maior portabilidade
wes 9/08/2013

Não dura o problema mais comum, é possível que, no motor ou quadro a idéia simplesmente não é possível fazer ou seria muito complicado para (ex: minecraft)
akaltar

@akaltar: Verdade, mas ao mesmo tempo, espero que alguém escolha um mecanismo que atenda ao objetivo pretendido. Por exemplo, não use um mecanismo 3D para um jogo 2D e vice-versa.
Mario

9

A maioria dos mecanismos e estruturas decentes fornece a funcionalidade de que você precisa e nunca entra no seu caminho.

Eles? Isso depende exatamente do que você está fazendo, graficamente falando.

Para muitos tipos de jogos, há respostas padrão para perguntas gráficas. O jogo 2D médio, por exemplo, pode ser bem tratado com as proezas 2D de, por exemplo, XNA / MonoGame. São apenas sprites, que podem vir em lotes para terrenos, podem ser girados e assim por diante.

Mas e se o seu jogo costumava ser um jogo 2D médio, você lê sobre alguma técnica interessante, como usar um mapa de altura para criar um impostor que tenha a aparência de profundidade em relação à tela. E você quer fazer isso.

Agora você está empregando mapeamento normal e, possivelmente, mapeamento de paralaxe. Tudo no mesmo contexto de "renderizar sprites", mas exigindo mais do que muitos motores 2D puros podem suportar. Especificamente, ele exige "sprite blitting" com várias estruturas, o que não é algo que muitos mecanismos 2D possam fazer.

O que você faz se seu mecanismo não puder se adaptar a você? Isso significa que você precisa fazer várias passagens, uma para a cor e outra para a iluminação via mapa normal. Mas isso não funciona, porque você precisa do campo de altura do mapa normal para empregar o mapeamento de paralaxe na pesquisa de cores. Então ... e agora? Você precisa do alfa para obter transparência, portanto não pode roubá-lo. E o mecanismo simplesmente não suporta multi-estruturas.

Portanto, você deve escolher um dos seguintes:

  1. Abandone a ideia. Isso significa que seu jogo é funcionalmente limitado pelo seu mecanismo.
  2. Hackeie o mecanismo para ter várias estruturas. Supondo que você tenha acesso ao código-fonte, agora você está tentando cutucar o código de outra pessoa. Isso também significa que você precisa mantê- lo e não quebrá-lo com seus tropeços.
  3. Faça o melhor que puder, dentro das limitações do mecanismo. Portanto, você pode obter paralaxe nos mapas normais, mas não nas cores. Pode não ser exatamente o que você queria, mas é melhor que nada.

Apenas como exemplo, considere Geometry Wars. A maioria dos motores 2D seria uma droga para esses tipos de visuais, já que a maioria deles é criada em torno de desenhar sprites, não de linhas. Esse é um jogo que precisa de um tipo muito especializado de renderizador.

No final do dia, você precisa assumir a responsabilidade pelos elementos do seu jogo que são importantes para as necessidades do seu jogo. Se a aparência visual do seu jogo for desenvolvida principalmente pelo estilo artístico das imagens e modelos que você usa, em vez de efeitos específicos, o uso de uma solução pré-empacotada é adequado. Mas se o estilo visual do seu jogo for definido significativamente pelo código de renderização personalizado, é provável que um mecanismo padrão possa se tornar uma limitação séria se você decidir fazer coisas que estão fora da caixa.

Além disso, há uma questão muito prática: nem todos os mecanismos de jogo são igualmente portáteis.

Com o recente aumento das plataformas móveis, o mercado de jogos está espalhado por vários sistemas operacionais e dispositivos de interface do usuário. Nem todos os mecanismos funcionam em todos os dispositivos. E se o seu mecanismo não funcionar em uma plataforma, você certamente não terá tempo para fazê- lo funcionar em uma. Afinal, é por isso que você usou um mecanismo em primeiro lugar, certo?

Se for importante para você que seu jogo funcione em uma plataforma específica, você precisará novamente se responsabilizar por isso. E a maneira "mais fácil" de garantir o sucesso com isso é fazer você mesmo. Para construir um mecanismo que possa funcionar em várias plataformas, talvez empregando estruturas mais específicas, específicas da plataforma, onde necessário para lidar com alguns detalhes de baixo nível. Dessa forma, se quebrar, é o seu código; você é a melhor pessoa para consertar isso.


Gosto da sua resposta, mas acho muito estranho que você tenha escolhido o XNA como seu exemplo. Ele não sofre nenhum dos inconvenientes mencionados, exceto possivelmente portabilidade.
Seth Battin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.