Por onde começar com o desenvolvimento de jogos? [fechadas]

65

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.

stevendesu
fonte
3
+1 Bom conhecimento de programação em busca de necessidades específicas.
Marcouiller
6
+1, essa é uma pergunta bem pensada e pesquisada sobre como iniciar o desenvolvimento de jogos. Além disso, sinto sua dor em relação ao Unreal SDK.
James
Eu recomendo verificar os tutoriais de Raven67854 para o UDK. Eles estão listados em vídeos, as pessoas parecem gostar deles.
Jesse Dorsey
Meu conselho é apenas começar a fazer alguma coisa. Normalmente, as pessoas que fazem esse tipo de pergunta querem abrir caminho linearmente (porque uma vez eu fiz esse mesmo tipo de pergunta). No entanto, da minha experiência anterior, a curva de aprendizado de desenvolvimento de jogos é uma curva não linear. Normalmente, passo de um problema para outro - se eu ficar preso, peço / procure por resposta. Portanto, basta experimentar, aprender com tentativa e erro. Geralmente começo com os tutoriais. No entanto, esses tutoriais nunca fornecem detalhes suficientes, por isso devo pedir / pesquisar / experimentar respostas.
User1542 #

Respostas:

38

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 Studiode ter um controle sobre o desenvolvimento de jogos. Em seguida, avançando para o que você deseja alcançar como conhecimento / tecnologia. XNAme 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.

  1. Por onde começar a escrever jogos, tutoriais ou algo parecido?
  2. Quais são os fundamentos do desenvolvimento de jogos? (Pergunta interessante, IMHO)
  3. Separando a física e a lógica do jogo do código da interface do usuário
  4. Movendo meu sprite no XNA usando classes

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. =)

Will Marcouiller
fonte
11
Desculpe pela resposta atrasada =) Eu estava lendo cada uma das postagens para as quais você me redirecionou (Além disso, uma das postagens vinculadas a uma página do MSDN sobre como fazer jogos em 3D com o XNA, que me interessaram desde que a página do mecanismo de jogo do XNA parecia originalmente foi estritamente para jogos 2D). Definitivamente, acho que este é um bom ponto de partida. Obrigado. Vou baixar o XNA hoje à noite e ir para a cama, então espero que amanhã eu possa tentar fazer Pong ou algo assim.
stevendesu
@ Steven: Não há problema! Publiquei esta resposta para ajudar um desenvolvedor entusiasta como eu, que pedi orientação! Eu realmente espero que você goste de fazê-lo! Meu primeiro e ainda desafiador é desenvolver um jogo simples do tipo Arkanoid, onde eu tenho que trabalhar para detectar colisões enquanto escrevi minhas aulas uma para cada nave espacial, a bola de energia e o tijolo. Então, minha Game1classe é 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.
que você precisa saber é o seguinte
Talvez eu esteja fazendo outra pergunta muito em breve (amanhã) xx O XNA Game Studio 4.0, baixado, foi instalado ... E não havia instruções óbvias para o que fazer em seguida. Todo o site oficial da XNA diz apenas "crie jogos para o Windows Phone 7" por todo o lado - nada sobre criar jogos para o Windows. Vou descobrir de manhã ou perguntar aqui se não posso. Hora de dormir =)
stevendesu
11
Crie um novo projeto usando o Visual Studio e, em seguida, escolha XNA em algum lugar em que você possa escolher o tipo de projeto. Então, comece a fazer jogos para o Windows! Seu modelo de projeto de jogo XNA (novo projeto) será compilado e executado no Windows nativamente. XNA é a biblioteca da Microsoft para desenvolvimento de jogos; portanto, você pode desenvolver jogos para Windows e XBox.
Will Marcouiller
11
Para o futuro, vale ressaltar que o XNA é essencialmente obsoleto, mas o Monogame continua vivo. Na maior parte, o mesmo código funcionará.
Magus
8

Você pode experimentar o Unity 3D , porque

  • pode ser programado em JavaScript, C # ou Boo
  • tem um bom tutorial aqui
  • sua curva de aprendizado não é tão acentuada
  • há o Unity Answers , onde você encontra ainda mais recursos.

(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. ;)

xeophin
fonte
3
O que é impróprio sobre isso?
lathomas64
Eu também estou curioso.
Jesse Dorsey
Talvez o fato de que (como Flash ou Java) exija a execução de um programa de contêiner, então ele o considera "impróprio", pois não pode ser apenas compilado e distribuído para um grande público sem problemas? De qualquer forma, estou analisando o XNA agora. Posso verificar o Unity3D se o XNA for muito difícil.
Stevendesu 04/03
Bem, ouvi pessoas dizendo que, para um design de jogo "adequado", o Unity não deve ser levado a sério. Como disse antes - eu mesmo estou usando e estou muito feliz com isso. Em alguns casos, o Unity apenas torna as coisas suspeitamente fáceis, eu acho ...;) Eu estava apenas me protegendo, porque não sabia como as pessoas reagiriam aqui ao mencionar o Unity. Talvez isso tenha causado o voto negativo?
precisa saber é
@steven_desu: Na verdade, você só precisa de um programa de contêiner para o webplayer. Jogos compilados para rodar no Windows ou Mac são totalmente independentes.
precisa saber é o seguinte
2

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!

jokoon
fonte
2

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.

Brian
fonte
Os tutoriais valem uma leitura, mesmo se você não estiver usando o mecanismo. Existem também bons tutoriais sobre algumas matemáticas em 3D.
dman
2

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.

user9471
fonte
1

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.

user5877
fonte
1

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.

Triang3l
fonte
1

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.

NetSquirrel
fonte