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?
software-engineering
Trevor Powell
fonte
fonte
Respostas:
É 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.
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.
fonte
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.
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.
fonte
fonte
Além dos recursos específicos do jogo que as pessoas comentaram, você também deve considerar algumas perguntas gerais.
fonte
Uma pequena folha de dicas para avaliar bibliotecas, estruturas, mecanismos e SDKs e escolher as melhores
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.
fonte
Vá aqui .
Apesar do número de mecanismos de jogos por aí, você realmente não tem muitas opções.
fonte