Eu perguntei isso anteriormente neste tópico no stackoverflow.com. Um dos primeiros comentários me redirecionou aqui para gamedev.stackexchange.com, então estou repostando aqui.
Pesquisando perguntas relacionadas, encontrei uma série de perguntas muito específicas, mas receio que elas tenham se revelado infrutíferas para mim e, após 4 horas no Google, não estou mais perto do que comecei, então senti que estender a mão para uma comunidade poderia ser em ordem.
Primeiro, meu objetivo: nunca fiz um jogo antes, embora tenha confundido a possibilidade várias vezes. Decidi finalmente me sentar e começar a aprender a codificar jogos, usar mecanismos de jogos etc. Tudo para que um dia (espero que em breve) eu seja capaz de criar jogos funcionais (embora simples). Posso começar a adicionar complexidade mais tarde, pois agora ficaria feliz em ter uma câmera controlada por teclado se movendo em um mundo 3D sem interação além disso.
Minha experiência: trabalhei em várias linguagens de programação que variam de PHP a C ++, a Java e ASM. Não tenho medo de nenhum desafio que venha com o aprendizado da nova sintaxe ou limitações inerentes a um novo idioma. Toda a minha experiência em programação passada, no entanto, tem sido estritamente não gráfica e geralmente com pouca ou extremamente simples interação durante a execução. Criei algoritmos extensos e brilhantes para resolver problemas lógicos e matemáticos, bem como problemas gráficos. No entanto, em todos os casos, a entrada foi definida em um arquivo, transmitida de um formulário HTML ou digitada no console. A interação em tempo real com o usuário é algo com o qual não tenho experiência.
Minha pergunta: por onde devo começar tentando criar jogos? Melhor ainda - por onde devo começar tentando criar um ambiente 3D navegável pelo teclado? Ao pesquisar on-line, encontrei vários recursos vinculados a mecanismos de jogos, gráficos e físicos. Aqui está um breve resumo de minhas experiências com alguns mecanismos que eu tentei:
SDK da Unreal: os vídeos tutoriais pressupõem que você já tenha conhecimento profundo de modelagem 3D, mecanismos gráficos, animações etc. A página "Introdução" não oferece uma explicação formal do desenvolvimento do jogo, mas mostra como a Unreal pode otimizar os processos, considerando que você já está familiarizado. Depois de baixar o SDK e iniciá-lo para ver se as ferramentas eram tão intuitivas quanto alegavam, fui recebido com cerca de 60 botões e um vazio em branco para minha modelagem 3D. Clicando em "adicionar volume" (para tentar adicionar um cubo básico), recebi um menu de 30 opções. Em pânico, fechei o editor.
Crystal Space: o site parecia bastante informativo, explicando que o Crystal Space era apenas para gráficos e o software complementar, CEL, fornecia lógica de entidade para a criação de jogos. Foi fornecido um jogo de demonstração, construído com o "CELStart", sua ferramenta simples para pessoas sem conhecimento de programação de jogos. Lancei o jogo para ver o que poderia criar. Ele congelou várias vezes, os menus estavam com erros, houve milhares de falhas gráficas, os inimigos não reagiram aos danos e, quando eu fechei o jogo, ele trancou. Desisti desse motor.
IrrLicht: O tutorial assume que eu tenho o Visual Studio 6.0 (eu tenho o Visual Studio 2010). Seguindo as instruções, não consegui importar adequadamente a biblioteca para o Visual Studio e não consegui chamar nenhuma das funções que eles continuavam usando. Cópia manual de arquivos de cabeçalho, arquivos de classe e DLLs na pasta do meu projeto - o projeto falhou ao compilar corretamente.
Claramente, não estou começando bem e estou andando em círculos. Alguém pode me apontar na direção certa? Devo começar baixando um programa como o Blender e aprendendo modelagem 3D, ou devo aprender a usar um mecanismo gráfico? Devo procurar um mecanismo de jogo com tudo incluído ou é melhor tentar codificar minha própria lógica de jogo? Se alguém realmente fez seus próprios jogos, eu preferiria saber como eles começaram.
Além disso, ter aulas na minha escola não é uma opção. Nada é oferecido.
Respostas:
Eu fiz essa pergunta quando entrei para a GD. Aqui estão alguns links que podem ser do seu interesse e espero que o guiem em direção ao seu objetivo.
Em resumo, eu gostaria
XNA Game Studio
de ter um controle sobre o desenvolvimento de jogos. Em seguida, avançando para o que você deseja alcançar como conhecimento / tecnologia.XNA
me ensinou a trabalhar com sprites e me permitiu aplicar um pouco do meu conhecimento desde o início da minha curva de aprendizado, para que eu pudesse entender rápido o suficiente para entender como eu deveria projetar meu jogo para usar classes enquanto trabalhava com injeção de dependência e assim por diante. Então, eu estou mantendo você esperando mais.Por que XNA você vai perguntar? Simplesmente devido ao seu background Java. O XNA usa C #, que é semelhante ao Java de várias maneiras, e também é uma estrutura simples de usar que abstrai o Game Loop e outras coisas, para que você possa se concentrar no que é importante.
Eu realmente espero que isso ajude você a começar. =)
fonte
Game1
classe é usada como um controlador de jogo, que na minha opinião é a classe que deve controlar e informar as outras classes o que fazer, etc. Eu explico um pouco esse aspecto no link # 4 e # 5.Você pode experimentar o Unity 3D , porque
(Isenção de responsabilidade: não tenho nenhuma relação com os criadores do Unity, apenas o uso pessoalmente e achei uma ótima ferramenta para aprender o básico).
Mas sim - você se prepara para algumas tarefas. Agora estou no meu sexto semestre estudando design de jogos, e ainda não sinto que arranhei mais do que a superfície. Não é de admirar que a indústria tenha especialistas para praticamente todas as facetas do processo de criação de um jogo.
Edit: Houve um comentário sobre o Unity ser visto como não um mecanismo de jogo "adequado", que poderia ser mal interpretado como eu dizendo isso - gerando os comentários abaixo. Não era minha intenção sugerir que o Unity não pudesse ser usado para criar um design de jogo adequado, pelo contrário. Eu mesmo uso e gosto. ;)
fonte
Bem, se você teve problemas com o irrlicht, tente também o Ogre3D; não é mais fácil, mas pode funcionar melhor se você dedicar algum tempo. O importante que você precisa entender é o que é um ouvinte de quadro, como obter o tempo desde que o último quadro foi exibido, e essa é praticamente a única coisa que você precisa entender para fazer esse aplicativo de que está falando.
Eu também tive algumas dificuldades com o irrlicht, os tutoriais não estão muito atualizados, mas você deveria ter experimentado as amostras!
Eu também corri muito em círculos no começo, brincando com o panda3d e outras coisas, como pygame etc. Tente se concentrar em alguma idéia de jogo e implementar uma coisa de cada vez.
E tente se lembrar de alguma matemática matricial, ela terá alguma utilidade em 3D!
fonte
Recentemente, comecei a mesma busca que você. Encontrei um mecanismo java puro chamado jMonkeyEngine, que me levou a um fantástico conjunto de tutoriais. Eu não sei se isso realmente explica o design de jogos em grande medida, mas ajuda você a começar na frente gráfica.
Ele sugere / links para ferramentas que você pode usar para modelagem e possui exemplos bem descritos para copiar e colar, para orientá-lo ao colocar uma caixa na tela para configurar o mecanismo de física.
Definitivamente vale a pena ler - eu tinha uma boa idéia do que estava fazendo depois de apenas algumas horas.
fonte
Você realmente deveria experimentar o Flixel http://flixel.org/ Eu fiz meu primeiro jogo de "demo" usando o flixel. Boa comunidade, bons tutoriais.
Não é 3D, mas possui muitos recursos interessantes que facilitam seus primeiros passos no ambiente de programação de jogos.
De modo que: Exiba milhares de objetos em movimento
Colisões básicas entre objetos
Agrupe objetos para simplificar
Gere e emita partículas facilmente
Crie níveis de jogo usando mapas de mosaico
Exibição de texto, salve jogos, rolagem
Entrada do mouse e teclado
Utilitários matemáticos e de cores
E é gratuito para uso comercial, o que é incrível.
fonte
Se você ainda não trabalhou com gráficos, antes de aprender open gl ou direct x é o começo. Programei meu primeiro jogo dessa maneira. Os motores de nossa empresa estão em casa e a maioria dos sistemas suporta GL aberto de alguma forma. Aprendi durante o trabalho a examinar o código escrito antes de começar a trabalhar. Você pode dar uma olhada em alguns projetos de código aberto para ver como uma estrutura de jogo é configurada e começar a modificá-los até que você se sinta à vontade para iniciar suas próprias coisas. Eu também sugiro "Game coding complete" como uma ótima referência para todos os pequenos pedaços de programação de jogos que você não percebe, como estrutura de arquivos e gerenciamento de recursos adequados.
fonte
Experimente o Source Engine . É fácil desenvolver jogos e você pode obter a plataforma de distribuição (Steam) e vender seu jogo gratuitamente, se assinar um contrato com a Valve Corportaion.
fonte
Eu recomendaria começar com jogos em flash, pois você realmente tem tudo o que precisa em um pacote para criar jogos simples. Existem muitos blogs com orientações, como o de Emanuele Feronato, por exemplo. Ele ainda tem um livro com 10 jogos completos ou mais.
Estou usando o FlashDevelop, o que é suficiente para o desenvolvimento.
Chris Moeller, "Criando um jogo em flash de asteróides", é um excelente exemplo, com uma abordagem passo a passo completa usando o flash develop.
Para jogos baseados em blocos , há um excelente tutorial em Ironcoding .
Armado com tudo isso, minha recomendação é encontrar um lugar onde haja um desafio de videogame, com uma comunidade de pessoas criando jogos. Crie um videogame por mês, concentrando-se em algo pequeno que você possa finalizar, aperfeiçoar e apresentar antes de iniciar seu próximo projeto. Estou participando de um desafio mensal de videogame aqui .
Mantenha-o pequeno para poder finalizá-lo e soltá-lo.
fonte