Criar um Game Engine do zero ou usar um existente?
Vamos começar definindo o que é um game engine: um software que vai ter diversos aspectos técnicos pré-prontos, tais como poolling the comandos para controle, criação de delimitações de tamanho de tela(resolução), sobrescrever o refresh rate(frames por segundo), e pode ter outras facilidades, como ferramentas de desenho e métodos de acesso a memória do computador (não se esqueça que um console nada mais é que um computador dedicado a uma única funcionalidade: executar jogos). Sua necessidade se deu bem cedo na história dos games. Imagine que você é um programador, em 1981. Não existem engines e você acaba de codificar Pac-man. Algumas semanas depois, seu chefe vira pra você e diz: "Pac-man é um sucesso. Vamos fazer outro jogo igualzinho, mas com um gato e um rato." Bom, lá vamos nós, escrever tudo de novo, copiando e colando tudo o que é comum a todos os jogos... "Ah! mas esse jogo precisa de um detalhezinho diferente!" E essa história se repete para os próximos 5 jogos lançados. Chega uma hora que se perde mais tempo codificando coisas que são comuns a todos os jogos do que desenvolvendo o jogo em si. (Se você tem curiosidade sobre as histórias da época, procure a história da criação do famicom e das suas ferramentas de desenvolvimento, é interessante ver como a escolha do processador forçou o desenvolvimento de uma engine).
Hoje em dia existem várias engines no mercado, algumas gratuitas, outras com preços acessíveis, e outras cuja licença de uso só pode ser adquirida por grandes empresas. Você pode escolher uma se baseando nas necessidades do(s) seu(s) projeto(s). Ou, você pode escrever sua própria engine... O que eu acho completamente desnecessário. A não ser que você tenha uma necessidade MUITO específica, e esteja fazendo algo muito diferente com o seu jogo, escrever uma engine do zero vai ser um grande teste de paciência, de capacidade de programação, de poder de resolução de problemas lógicos, e um enorme dreno do seu recurso mais importante: tempo. Durante este tempo você não estará desenvolvendo o seu jogo. Por que uma engine não pode se fechar para atender somente a um jogo. Então todas as idéias que você tiver que sejam específicas demais, você vai ter que anotar e deixar pra quando a engine estiver pronta. Sua engine vai ter que ser pensada para ser genérica o suficiente para atender várias situações, e muitas vezes você não vai nem saber que situações são essas.... vai ser um exercício de tentativa e erro misturado com um pouco de "bola de cristal". Então, criar um jogo =/= criar uma game engine. Talvez você já deve ter ouvido a máxima "Não reinvente a roda". É isso que se ouve o tempo todo num curso de programação. Então, se você for um programador e quiser criar jogos, crie jogos. não reinvente a roda. "Ah, mas eu não sou programador." 2 opções: contrate um, ou aprenda. Quer aprender? https://inventwithpython.com/ Aprenda os básicos aqui, para entender o que é necessário, e depois volte aqui, por que eu vou falar sobre a escolha de linguagens de programação e game engines.