O que devo considerar ao avaliar bibliotecas, mecanismos e estruturas para criar um jogo?

10

Eu vou fazer um jogo. Percebi que existem muitos mecanismos, bibliotecas e estruturas de jogos disponíveis no mercado, e estou tendo um pouco de dificuldade para decidir qual usar.

Eu já sou muito bom com algumas linguagens de programação, mas existem outras que eu não conheço. Não sou contra o aprendizado de novas linguagens de programação, se isso ajudar, mas meu verdadeiro objetivo é apenas fazer meu jogo.

Quais critérios devo usar para comparar mecanismos, bibliotecas e estruturas entre si, para que eu possa decidir qual deles me permitirá ser o mais produtivo para terminar meu jogo?

Trevor Powell
fonte
11
Para o que vale, eu uso uma abordagem em duas etapas: (1) escolha uma arbitrariamente; (2) lamentar a decisão posteriormente. A vantagem é que você passa o primeiro passo rapidamente.
Cameron Fredman
2
Isso não deveria ser uma pergunta do Wiki da Comunidade?
Marton
Fico feliz que isso seja transformado em uma pergunta do Wiki da Comunidade, mas não há opção disponível para fazer isso. Suponho que a CW em questões seja apenas um moderador nos dias de hoje.
Trevor Powell
@ Martin Por que você acha que deveria ser uma CW?
MichaelHouse
1
@ Byte56 Porque esta pergunta sempre surge quando alguém quer começar o desenvolvimento de jogos. Já existem muitas estruturas / mecanismos por aí, e uma entrada genérica no Wiki "o que considerar" seria realmente útil. Acho que responderia a muitas perguntas sobre "qual mecanismo devo usar" que serão exibidas neste site. O último fraseado tornaria tais perguntas "não construtivas".
Marton

Respostas:

14

É como escolher um carro ou um computador. Ou praticamente qualquer coisa que possua diversos recursos, alguns dos quais você se preocupa muito, outros que você não se importa e outros que talvez você nem queira incluir.

  1. Faça uma lista dos recursos de seu interesse. Por exemplo, suporte 2D / 3D, iluminação, física, usa um idioma que você conhece bem, etc.
  2. Classifique-os com base na importância para você, com base no seu projeto atual.
  3. Pesquise suas opções e, para cada opção, tente classificar seus recursos de suporte com base em quão bem eles se alinham aos objetivos do seu projeto.
  4. Use o que melhor combina com seus objetivos. Como alternativa, você pode selecionar os primeiros e fazer um test-drive. Implemente algum recurso simples do seu jogo e veja qual você gosta mais.

Eu acho que muito disso se resume a realmente saber o que você quer. O que significa que você precisa ter uma boa ideia do jogo que está criando. O que provavelmente significa que você precisará de um plano bastante detalhado de como implementar seu jogo e o que ele incluirá. Como bônus, ter todas essas informações detalhadas na verdade o ajudará a concluir seu jogo. É muito mais fácil seguir um plano e verificar as coisas da lista do que apenas ter uma idéia para um jogo e começar a escrever o código.

MichaelHouse
fonte
3

Primeiro, você deve ter no mínimo uma idéia aproximada de qual será o seu jogo e do que ele precisará. Existem perguntas comuns, como se seu jogo precisará ou não de física. Depois, há as perguntas inter-relacionadas, que são principalmente sobre o ambiente em que seu jogo será desenvolvido e executado e quão comercial é ou não.

  • Quais plataformas você suportará? Em qual plataforma você está desenvolvendo seu jogo?
  • Em quais linguagens de programação você pretende implementar seu jogo?
    • Isso é influenciado pelas plataformas que você pretende suportar.
  • Que tipo de gráficos, áudio e entrada o seu jogo terá?
  • O seu jogo é freeware ou de código aberto, ou é comercial?
    • Se for de código aberto, você desejará comercializar mais tarde, com seu jogo ou com outro jogo que use o mecanismo do seu primeiro jogo?

Se você for apenas Windows, as bibliotecas baseadas em DirectX e C # são fortes candidatos. Se você deseja ser multiplataforma, consulte bibliotecas baseadas em OpenGL e C / C ++, ou Flash, se o seu jogo for 2D e você puder adquirir as ferramentas da Adobe. Como sua plataforma, sua linguagem de programação influenciará suas bibliotecas disponíveis. Um programa escrito em C ++ dificilmente chamará uma biblioteca Java.

Se o seu jogo for comercial, considere comprar um mecanismo como o Unity. Se o seu jogo é freeware ou de código aberto, você quer se concentrar em bibliotecas que também são de código aberto ou, pelo menos, gratuitas para projetos não comerciais. Bibliotecas de código aberto também são úteis para projetos comerciais, é claro. Ao analisar as bibliotecas de código aberto, verifique sua licença. Algumas licenças exigem que você crie partes de seu próprio software de código aberto, dependendo de como você usa uma biblioteca. Restringir-se a bibliotecas de código aberto obviamente colocará outro limite em quais bibliotecas você pode usar.

Ao olhar para uma biblioteca, verifique se o desenvolvimento e a comunidade são ativos. Confio em uma biblioteca conhecida e mantida ativamente em mais de uma que está hospedada na página da universidade de alguém que não é atualizada desde 1999.

Uma pergunta final, especialmente se esse não é o seu primeiro projeto de jogo, é se há ou não aspectos em que seu jogo precisará e que você sabe que terá dificuldade se tentar fazer isso sozinho. Porque esses aspectos, em particular, são candidatos a encontrar uma biblioteca. Se o seu jogo precisa de detecção de colisão e você sabe que não pode implementar a detecção de colisão (como eu não posso), considere adquirir um mecanismo de física e aproveitar os recursos de detecção de colisão nele.

Aaron
fonte
1
  • A biblioteca faz o que você precisa?
  • É especializado para fazer o que você precisa? Quanta desordem está ligada a ele?
  • Como é projetado? Você quer vomitar quando o vê? Se sim, provavelmente não é a melhor escolha para sua saúde e sanidade.
  • É flexível o suficiente para suas necessidades? Não é bom notar que a biblioteca não funciona depois que você já escreveu metade do seu código.
  • Qual a prova do futuro da biblioteca? O desenvolvedor está adicionando recursos ao longo do tempo? Ele está consertando as coisas? Ele está melhorando as coisas? Isso pode fazer muita diferença se for provável que o desenvolvimento do seu jogo esteja demorando alguns anos. Não é tão importante para pequenos projetos que você terá em um mês.
  • O tamanho é apropriado? Para pequenos projetos, pode fazer uma grande diferença se o player precisa baixar 20 MB ou 200 MB. Projetos maiores provavelmente são grandes o suficiente para que o tamanho do middleware faça pouca diferença.
API-Beast
fonte
1

Além dos recursos específicos do jogo que as pessoas comentaram, você também deve considerar algumas perguntas gerais.

  1. estrutura de suporte - mesmo que o mecanismo de jogo seja perfeito, talvez o suporte seja muito caro ou inexistente.
  2. quão fácil é aprender - você pode não querer algo muito grande, pois o tempo para aprender pode ser proibitivo.
  3. isso cobre seus planos futuros - talvez você não queira investir tempo aprendendo um mecanismo perfeito para agora, apenas para reaprender um novo mecanismo do zero para o próximo projeto. Ou talvez você queira isso.
  4. licença - se você estiver criando um jogo de código fechado, verifique se a licença do mecanismo não é de código aberto.
Alex
fonte
0

Uma pequena folha de dicas para avaliar bibliotecas, estruturas, mecanismos e SDKs e escolher as melhores

  • Bibliotecas, estruturas, SDKs de mecanismos e assim por diante são ferramentas destinadas a resolver problemas para você ou ajudá-lo a resolver problemas e atender a certos requisitos.
  • Avaliar significa descobrir qual deles atende a mais requisitos.

Portanto, antes mesmo de começar a avaliar, você precisa esclarecer em que cenário você está e quais requisitos você tem / deseja ter, pois essas são as perguntas que devem ser respondidas pela avaliação.

O cenário define de onde vêm os requisitos (quem decide o que é um requisito e o que não é).


Os cenários típicos são:

O cenário mais hobbiest do projeto

Você, sozinho ou com alguns amigos, deseja criar seu (talvez primeiro) jogo. Perfeito, você pode decidir tudo por conta própria e está limitado apenas a descrições técnicas básicas e requisitos técnicos (deve ser um jogo para celular, um jogo para PC, um jogo para console, um jogo na Web, ...). Você pode decidir o que quiser.

Os requisitos implícitos serão que você pode querer aprender algo específico (um idioma, uma estrutura / mecanismo específico)

O cenário do aluno

Os requisitos podem vir do seu professor. Requisitos típicos que eu tinha nesse caso: o jogo precisa ter alguns elementos de física e suporte à rede multiplayer. Ou tem que ser escrito em C ++. Portanto, avaliar se torna fácil. Você está procurando um mecanismo de jogo que permita codificar em c ++ e que já pode incluir um mecanismo de rede e física.

Um requisito mais maligno (da vida real): tudo precisa ser escrito do zero (mas o uso de bibliotecas é permitido). Portanto, nenhum editor é permitido (por exemplo, Unity3D). Portanto, você não está procurando por engines / sdks, mas por bibliotecas.

O cenário do jogo indie

Você quer ganhar dinheiro com o jogo mais tarde. Portanto, você precisará vendê-lo de alguma forma, o que o levará a verificar quais requisitos são provenientes da loja na qual você deseja vender seu jogo.

Permite jogos Java, jogos HTML5, ....)

Requer que você inclua bibliotecas específicas (se sim, em quais idiomas essas bibliotecas estão disponíveis)

O Google Playstore exigirá que você escreva seu jogo como jogo Android, a Apple AppStore exigirá que você escreva seu jogo como aplicativo iOS. Ou você tem o requisito de escolher um mecanismo multiplataforma.

O cenário profissional

Você não possui apenas uma loja fornecendo requisitos, mas provavelmente um editor ou cliente com imagens próprias dos requisitos. Nesse cenário, você também terá uma equipe maior de desenvolvedores empregados. Dependendo do conjunto de habilidades, surgem novos requisitos (nossos programadores só podem escrever c ++, portanto, não podemos usar um mecanismo de jogo Java / Android puro sem que eles precisem (muito) de tempo para aprender algo novo).

Não entro em detalhes esse cenário, uma vez que você conseguiu formar uma equipe de funcionários e encontrar um cliente / editor que já sabe o que procura ao avaliar as coisas.


Como decido quais são meus requisitos quando sou mais indiferente ou indi e mais ninguém me diz?

Faça suas próprias perguntas sobre seus objetivos e seu jogo?

  • Qual deve ser o meu jogo? dispositivos móveis, pc, web (html / Js), que controladores vou usar (tela sensível ao toque, giroscópio, consola de jogos)

  • O que há de novo no meu jogo e o que outros jogos também têm. As partes que os outros jogos também possuem (renderização, áudio, manipulação de entrada) serão feitas pela maioria das ferramentas (mecanismos de jogos) que você pode encontrar ou é fácil agrupar bibliotecas com essa funcionalidade em seu próprio mecanismo de jogo ou jogo.

  • Qual é a dimensão do meu projeto: pássaros bravos ou skyrim? O Angry Birds pode ser feito em quase todas as ferramentas e o skyrim seria limitado a ferramentas de alto desempenho com (presumido) anos de personalização adicional (os mecanismos de terreno de alto desempenho não são fáceis)

  • Meu único objetivo é apenas terminar um jogo? sim? perfeito, você pode usar algo altamente avançado, como Unity, Unreal, ... tendo um editor útil e uma grande comunidade fornecendo tutoriais e respondendo suas perguntas. Ele tira o fardo de lidar com tarefas de baixo nível, como carregamento de malha, implementando suas próprias funções matemáticas, ....

  • Meu objetivo é aprender algo específico? sim? o que você quer aprender?

  • Qual idioma devo escolher? Se o objetivo ainda é apenas concluir o jogo, escolha aquele que você / sua equipe conhece melhor? Se você quiser aprender um idioma específico, escolherá uma ferramenta nesse idioma.

  • A ferramenta X terá desempenho suficiente para o meu jogo? Talvez você nunca saiba. Mesmo em grandes produções, a fase de otimização e polimento leva muito tempo e é um grande esforço para fazê-lo. Comece a se preocupar com o desempenho quando encontrar problemas de desempenho. Você não sabe o desempenho da ferramenta, a menos que atinja seus limites. Tudo no site do desenvolvedor de ferramentas é apenas um palpite. Depois de anos avaliando ferramentas, parei de acreditar em qualquer coisa no site dos desenvolvedores.


Responder a essas perguntas leva você aos requisitos. A avaliação está encontrando uma lista de ferramentas e TESTANDO (e não apenas lendo a página inicial) o que a ferramenta pode fornecer ou não.


Os requisitos não são cortados em pedra, mas são dinâmicos. Eles vão e vêm durante o desenvolvimento. Se o jogo precisa de física ou não, por exemplo, depende do design. Se o design mudar, o requisito também pode mudar.

Aceite os requisitos que você possui e comece. Os requisitos em mudança são o pão diário do sofrimento, ahm, desenvolvedores felizes, independentemente do tamanho do projeto e do nível de experiência.

monty
fonte
0

Vá aqui .

Apesar do número de mecanismos de jogos por aí, você realmente não tem muitas opções.

  1. restrições de licença. Alguns mecanismos prejudicam sua capacidade de lançar seu produto sem primeiro pagar grandes taxas de licenciamento, por exemplo , o Unity , usado para cobrar uma taxa adicional para compilar no iOS, por exemplo (isso mudou em 2016 )
  2. plataformas. Você se preocupa em segmentar várias plataformas? Quais?
  3. 2D ou 3D? Alguns motores atendem ao 2D.
  4. Requer física? Alguns motores fornecem física
  5. FPS, RTS? Pode ser aconselhável usar um mecanismo especializado para o tipo de jogo que você está criando.
  6. Obviamente, você gostaria de trabalhar no seu idioma favorito. Não gosta de C? Então não use Allegro!
  7. Você é um grande padrão de design, fã de OOP? Padrões conhecidos de "overuses" do OGRE
  8. Desenvolvimento ativo? Você deve considerar a troca entre a disponibilidade dos recursos de borda de sangramento (DX11 / OGL 4) versus a estabilidade de um motor cujo desenvolvimento diminuiu alguns anos atrás
  9. Base de usuários? Uma grande base de usuários geralmente significa melhores fóruns, sendo mais fácil responder suas perguntas
bobobobo
fonte