O que é uma boa plataforma inicial para um programador de jogos para adolescentes? [fechadas]

32

Meu filho (15) decidiu que quer seguir uma carreira como programador de jogos. Eu disse que ele deveria começar agora com um jogo simples. Ele ainda não tem experiência em programação, mas eu sou um programador (aplicativos de negócios, não jogos) para poder ensiná-lo a programar, mas qual seria uma boa plataforma para ele começar? Inicialmente, estou procurando algo que possa fornecer resultados rápidos, para manter o entusiasmo dele.

O que você sugeriria?

gkrogers
fonte
13
Fechadas? Você só pode estar brincando! Eu fiz essa pergunta no ano passado, teve pelo menos 19 votos positivos, suas respostas votadas tiveram pelo menos 86 votos positivos, 5 pessoas a marcaram como favorita. E as respostas envolvem fatos, referências ou conhecimentos específicos. Finalmente, tem sido incrivelmente útil para mim e, eu sugiro, para outras pessoas também. Como apelo a essa decisão?
precisa saber é o seguinte
1
Você pode fazer um post sobre isso na meta, se realmente quiser. meta.gamedev.stackexchange.com
Tetrad

Respostas:

30

O XNA é uma boa solução para um programador bastante confiante. Seria uma boa meta almejar no futuro.

O Unreal Development Kit é uma maneira de obter resultados com muito mais rapidez e facilidade e pode ser um bom lugar para começar. Os comentários indicaram que o UDK é realmente uma alternativa muito ruim , então não posso recomendá-lo.

A unidade é uma alternativa, será executada em telefones, algo que o UDK não pode fazer (tanto quanto eu sei). Então, se ele gosta de programar jogos para telefones, talvez a unidade seja melhor?

Martin
fonte
4
Eu concordo com isto. A unidade é uma alternativa ao UDK, embora eu ache um pouco mais difícil de descobrir. Veja se você pode fazê-lo mexer com algum UnrealScript (a linguagem de script do Unreal Development Kit). XNA é definitivamente a primeira linguagem de programação de jogos verdadeira que deve usar; é o mais fácil (relativamente falando; não para iniciantes) e eu adoro a criação de protótipos, porque você pode rapidamente começar a desenhar as coisas na tela.
Ricket 2/10/10
2
+1 para a sugestão do XNA. Se ele se esforça para aprender bem e tem boas idéias, ele pode facilmente fazer alguns jogos de gastar dinheiro de venda para o Zune / WP7 / XBOX 360.
2
Unidade funciona no iPhone e no navegador, por isso é uma boa maneira de distribuir o jogo para as pessoas a testar e obter uso a ser inflamado no início
Chris S
4
Evite o UDK. Pode ser muito poderoso, mas também é uma dor enorme. Está cheio de "truques" e restrições não documentadas.
Peter Ølsted
4
Também tenho 15 anos, aprendi primeiro pascal aos 10, depois C e depois C ++. Tentei programar alguns jogos em C ++ e allegro em 12 + -, sem muito sucesso, eu poderia fazer muitas coisas, mas não conseguia pensar em como construir um jogo inteiro. Isso me manteve acordado. Com o XNA, as coisas eram muito mais fáceis, e também, o fácil tratamento de erros das exceções de C # mostradas no momento da depuração ajuda muito para ajudar você a saber onde está fazendo algo errado. é claro, outras línguas também têm, mas acho que o Visual C # tem a melhor ferramenta de depuração.
Gustavo Maciel
20

Eu também tenho 15 anos, então acho que isso poderia ajudar? : P

Recentemente, comecei a aprender Python (pratico C ++ há mais ou menos um ano) e estou achando muito mais fácil aprender do que C ++. Existem muito menos armadilhas e você precisa de pouco código para exibir algo na tela - o que eu acho que faz você querer continuar.

E existem wrappers como Pygame e Pyglet sobre SDL / OpenGL para o lado gráfico.

Antes que ele comece a fazer jogos simples, eu recomendaria aprender um idioma por pelo menos alguns meses. (É claro que jogos baseados em texto, como adivinhar o número e o carrasco, são bons exercícios durante esse período)

O Pato Comunista
fonte
9
Python e Pygame foram uma lufada de ar fresco para mim depois de escrever jogos em C por muitos anos. Imaginei que poderia fazer o mesmo em cerca de 10% do tempo em Python, devido ao aspecto de nível superior de tudo.
Dash-tom-bang
Eu sei, estou me sentindo o mesmo (e venho fazendo C ++ há um ano).
The Duck comunista
+1. Devo dizer que, apesar de estar um pouco familiarizado com o Python, é minha primeira recomendação para programadores iniciantes. Agora só precisamos de robôs python! Também são boas sugestões para, por exemplo, carrasco. =)
leander
Cara, você deve aprender uma linguagem .net (eu não gosto muito de C #, F #, vb.net é bom. O boo não é compatível com estúdios visuais :(). As linguagens são menos propensas a erros que o C ++ e você recebe exceções quando faz algo errado (uma coisa muito boa. C ++ deve fazer mais disso.) E você pode aprender a usar a pilha de chamadas, observar variáveis, pontos de interrupção (presumo que os pontos de interrupção funcionem em um IDE python?) e você poderá depurar rapidamente . O que é ótimo quando você escrever código iniciante instável.
13

Uma resposta pouco ortodoxa aqui:

Editor de galáxia de Starcraft II.

Você pode fazer quase qualquer jogo no Starcraft 2.

Ele também ensina a maioria das construções de programação, como loops e instruções if de uma maneira centrada na GUI.

Uma vez que ele esteja confiante com o básico, você pode ter coisas para ele.

Se ele é bom nisso, e acha isso interessante, ele vai adorar a programação de jogos adequada.

Nailer
fonte
3
Eu estava prestes a sugerir Warcraft III. Começar em uma linguagem de script simples é realmente um bom caminho a percorrer. Tanto o Warcraft III quanto o Starcraft II têm uma GUI que você pode usar para se sentir confortável e uma função para exibir o código como um script bruto, para ver o funcionamento interno.
William Mariager 24/11
2
Caminho certo . Começar com QUALQUER editor de níveis é o melhor caminho a percorrer. Ele pode pular todos os andaimes e dificuldades e ir direto para a parte interessante de tecer um cenário e projetar um nível.
bobobobo
De longe, uma das melhores respostas que já vi para esse tipo de pergunta, comecei a fazer o jogo primeiro quando era muito pouco com o MS powerpoint através de hiperlinks e jogando um jogo chamado "o clube do robô"; que por sua jogabilidade ensina um monte dos conceitos básicos de programação giantbomb.com/the-robot-club/3030-29776
Jim Jones
10

Eu dividiria aproximadamente as ferramentas de desenvolvimento de jogos em três grandes categorias:

  1. Fácil de aprender e usar, mas limitado. Game Maker, Game Salad, RPG Maker, Adventure Game Studio se enquadram nessa categoria.
  2. Poderoso, mas com uma curva de aprendizado acentuada. C ++ e outras linguagens de programação "hardcore" se encaixam aqui.
  3. Linguagens intermediárias, geralmente linguagens de script como Lua, Python e ActionScript, que dividem a diferença exigindo que você realmente escreva algum código, mas cuidando dos detalhes mais obscuros, como gerenciamento de memória para você.

Para pessoas sem experiência em programação, geralmente aconselho que iniciem na primeira categoria, apenas para começar a fazer ALGO. Quando eles se sentem confortáveis ​​com uma determinada ferramenta de criação, mas realmente sentem que as limitações estão superando os benefícios, é hora de aprender algo na próxima categoria.

Ian Schreiber
fonte
9

Eu sei que isso vai me namorar um pouco, mas quando eu realmente gostei de P-Robots . Há um objetivo muito simples (vencer os outros robôs), uma API simples e um curto período de tempo entre as alterações no código e a visualização dos resultados. Ele segue para IA, padrões de design e estrutura de código ainda maior (alguns desses robôs podem ficar bem grandes - e quanto ao compartilhamento de código entre robôs?). Se você puder encontrar algo semelhante, mas mais recente, seria uma boa maneira de obter a parte "começando a programar". Sugestões:

Uma vez feito isso, considere optar por um jogo de tiro em 2D realmente simples, de plataforma ou outro jogo "estilo arcade" - você pode usar SDL ou XNA ou o que for mais familiar. Mesmo colocar um clone de pong em funcionamento não é totalmente trivial. Isso fornece um pequeno eco de como é criar algo "básico".

Depois disso, explore: um mod para um jogo em 3D existente (um novo objeto, ou um bot ou algo assim) para dar uma pequena ideia dos mecanismos maiores.

As chaves, pelo que vi, parecem ser:

  • iteração rápida: a capacidade de ver resultados rapidamente
  • protótipos: muitas pequenas experiências para obter experiência e confiança (tudo bem, como faríamos um jogo de mármore? e invasores do espaço? etc)
  • exploração: aprender a amar olhando como os jogos de outras pessoas são construídos, aprimorando-os etc.
leander
fonte
2
+1 para tempestades mentais, mas eu usaria o ROBOCODE ( robocode.sourceforge.net ) em vez dos P-Robots.
Callum Rogers
@Callum: brilhante, irá atualizar a resposta =)
Leander
Eu usaria LegoMindstorms com NXC
Joe the Person
6

Meu conselho é criar jogos baseados na web. Por quê? Bem, antes de tudo, o JavaScript é uma linguagem bonita que ensinará a ele todos os conceitos básicos de programação e você pode realmente criar um jogo excelente, competente e multiplataforma. Também o qualificará para muitas outras coisas além de apenas fazer jogos ... Se você, por algum motivo, não quiser que seu filho entre no desenvolvimento da Web, sugiro usar o Python, com um módulo chamado PyGame. Eu também tenho experiência com isso, e é incrível. O que eu não sugiro é começar com C / C ++, foi o que fiz e é horrível e pode deixá-lo desmotivado para a programação.

Em outra nota, você provavelmente é um pai incrível, parabéns!

jcora
fonte
1
Boas sugestões. Dito isto, comecei com C (não que houvesse alternativas reais naquela época) e realmente não foi tão doloroso; claro, isso não é um motivo para usá-lo agora que existem idiomas de nível superior.
o0 '.
1
Obrigado! Além disso, eu não comecei com jogos, e meu argumento era que ele, depois de aprender uma linguagem de nível superior, entenderia melhor o conceito geral de programação e não perderia sua motivação. E, claro - eu estava exagurating um pouco ali;)
jcora
1
Nessa idade, poder compartilhar minhas criações facilmente com os amigos era um motivador. Jogos na Web são mais facilmente compartilhados. Você publica seu URL no Facebook e pede a seus amigos para experimentá-lo. O Actionscript / Flash ou Javascript / HTML5 são provavelmente as suas melhores apostas para poder compartilhar facilmente, com Java ou Unity por um segundo.
amitp
5

O Mindstorms Roboter é muito legal. Temos alguns NXTs na escola e, na semana passada, começamos a programar coisas como seguir uma linha e essas coisas. Você pode obter resultados facilmente.

Também achei www.3dgamestudio.de há um tempo atrás. Eu não entrei mais nisso, mas foi realmente interessante. Você pode programar com lite-C, que é:

Lite-C é uma linguagem de programação para aplicativos multimídia e jogos de computador, usando um subconjunto de sintaxe da linguagem de programação C com alguns elementos da linguagem de programação C ++

No http://tutorial.3dgamestudio.net/, você entra nele. E também há um editor de nível, modelo e terreno.

ps: tenho 16 anos e comecei com um amigo programando um site e personalizando um servidor de jogos programado. Então, isso também pode ser interessante para ele.

Melzon
fonte
Uma documentação muito fácil de como, parece muito fácil de lidar.
Prix
4

Não posso sugerir isso o suficiente, mas construindo seus próprios níveis para seu jogo favorito .

Para alguém dessa idade / nível de habilidade, eles devem começar construindo níveis em seu mecanismo de jogo favorito de sua escolha .

Muitos ótimos jogos vêm com um editor de níveis que permite muitos graus de liberdade.

RPG : série de ferramentas elétricas NWN 2 da Obsidian , Elder scrolls

O editor de níveis de RTS : Warcraft III é um fantástico editor de RTS e até criou seu próprio jogo ( liga de lendas e heróis da atualidade ).

FPS : Martelo por meia-vida 2. O Counterstrike era originalmente um mod de meia-vida.

Comece aqui . A criação de níveis para o seu jogo favorito é provavelmente o melhor lugar para começar.

bobobobo
fonte
3

Embora todas as informações aqui sejam úteis, eu queria mencionar que o STEM Challenge (uma competição nacional de jogos promovida pela Casa Branca e pela ESA) tem algumas sugestões sobre plataformas http://www.stemchallenge.org/about/Default.aspx

Gamestar Mechanic, Gamemaker, Kodu, Scratch, PBS KIDS Pronto para Aprender Stream

Sinto que existem recursos da comunidade sobre essas plataformas especificamente no que se refere ao STEM.

Veja também este excelente tutorial sobre python e pygame (que também é um livro on-line) http://inventwithpython.com/chapters/ aqui está o PDF da sequela do livro especificamente sobre pygame http://inventwithpython.com/blog/making -games-with-python-pygame /

Aqui está outro artigo do NYT http://www.nytimes.com/2011/11/10/technology/personaltech/computer-programming-for-children-minus-cryptic-syntax.html?_r=2&sq=mitchel+resnick&st=cse&adxnnl= 1 & scp = 1 & adxnnlx = 1322489239-tMp1Wjl9FUcI8rLaJ6cbOw

Atualização: aqui está uma discussão do slashdot http://ask.slashdot.org/story/11/12/27/152228/ask-slashdot-tools-for-teaching-high-school-kids-how-to-make-games

idiotprogrammer
fonte
2

O Game Maker é uma excelente opção para pessoas sem experiência em programação. Tem uma versão gratuita e uma versão paga relativamente barata. Ele permite que você faça jogos rapidamente com uma interface de arrastar e soltar, mas inclui suporte para scripts mais avançados.

Gregory Avery-Weir
fonte
5
Não vou diminuir o voto disso, mas o GameMaker e o Visual Basic são ferramentas que ensinam sintaxe ruim (VB) e o GameMaker não é realmente muito bom. Por um lado, você não tem acesso a bons IDEs como o VS, a criação de jogos de arrastar e soltar não ensina nada.
Joe the Person
1
Não sei por que você está mencionando VB; O Game Maker é basicamente baseado em C. Independentemente disso, o Game Maker é uma boa maneira de progredir, sem saber nada e entender o tipo de pensamento necessário para os desenvolvedores de jogos. Respondendo a eventos, mantendo um ciclo de jogo, usando as relações entre recursos gráficos e código, trazendo um projeto da ideia à publicação; tudo isso você pode aprender com o desenvolvimento de arrastar e soltar. Concordo que o GML é uma linguagem limitada, mas o sistema como um todo é um bom ponto de partida.
Gregory Avery-Weir
1
Estou mencionando o VisualBasic por causa do DarkBASIC, que é outra ferramenta de programação horrível.
Joe the Person
O Game Maker é definitivamente um bom caminho para o ensino orientado a resultados. Não há necessidade de aprender física ou renderização. Basta usar os recursos internos. E a mudança para o C ++ é fácil, pois você pode começar criando dlls e usá-las no Game Maker e, posteriormente, abandonar completamente o Game Maker.
precisa
Nunca, sugira GameMaker a alguém com mais de onze anos ... Se ele tem quinze anos, ele pode muito bem entender a programação.
jcora
2

Como Martin mencionou, o UDK é provavelmente a maneira mais rápida de fazer algo funcionar, pois vem com tantas coisas pré-fabricadas como IA, modelos e também uma grande variedade de livros. Possui um editor de mapas muito bom, e a linguagem é semelhante ao Java (e ao script ECMA).

Uma alternativa pode ser tentar fazer jogos em Flash ou Silverlight - comece com jogos 2D simples. Qualquer que seja o gênero de jogos que ele goste dita o kit de ferramentas.

Chris S
fonte
1
Não! Não é UDK! É: buggy, lento, propenso a erros, complexo, etc. Vá com o Unity.
Joe the Person
@ firedude67 Buggy UDK, propenso a erros? brincando?
Quazi Irfan
bem, na minha experiência, ficou incrivelmente lento, tudo o que eu criei deu BSOD e não consegui encontrar nenhuma documentação útil. Nem mesmo os projetos de exemplo foram executados.
Joe the Person
1
Eu nunca encontrei o UDK com erros, mas eu NÃO o recomendo para programadores de jogos. Um artista, sim, mas um programador, não. A 'documentação' é uma piada, e para encontrar quais classes você deve subclassificar, você precisa abrir a classe pai, pois elas decidiram não fornecer uma referência de API. Além disso, é necessário muito trabalho para criar diferentes tipos de jogos, já que é um mecanismo de FPS no coração.
dman
1

Vindo de 14 anos, esse conselho pode ser útil. Acho que, a melhor maneira de escolher uma plataforma, é a plataforma mais adequada ao objetivo. Eu já fiz este post muitas vezes antes.

Do Reddit -

Escolha um idioma adequado ao seu objetivo. A maioria dos jogadores não se importa com o idioma em que o jogo está programado. Eles se importam se podem ou não jogar. Eles se importam se ele roda rápido no computador. Eles se importam se o jogo não tiver 10 GB de tamanho. Eles não se importam se é um exe ou jar.

Veja jogos como o Minecraft. Certamente, está escrito em Java, uma linguagem que possui uma participação de mercado extremamente pequena no setor de desenvolvimento de jogos. Os consumidores se importam? Não. Eles se preocupam com a funcionalidade.

No entanto, como seu filho não tem experiência em programação, sugiro aprender uma linguagem rápida para codificar como Python, ou usar uma plataforma existente, como XNA. Pessoalmente, adoro o Slick2D com Java, mas acho que essa é a minha preferência ...

liamzebedee
fonte
0

Fui apresentado à programação em tenra idade (com menos de 15 anos) e meu pai decidiu usar o VB (1.0). Fizemos uma versão distorcida do pong usando um objeto timer e desenho GDI. Gostei disso porque começamos com uma tela em branco e pudemos aprender o básico de estruturas de programação enquanto tentávamos fazer algo divertido.

Hoje, acho que escolheria o XNA e escolheria um jogo 2D simples. C # e XNA são bastante diretos e deixam muito espaço para crescer e são gratuitos.

John McDonald
fonte
-4

Se ele só quer fazer jogos, então ele deve usar XNA, Unreal, Unity etc. Se ele quiser ser um programador de jogos, ele deve aprender C / C ++ e OpenGL / SDL ou D3D primeiro.

XNA, Unreal, Unity, etc, são ótimos para criar jogos, mas são muito ruins em fazer muito por você. Tenho certeza que as pessoas vão discordar de mim sobre isso, mas isso basicamente o transforma em um programador preguiçoso e, quando chegar a hora de aprender coisas como pontos em C ++, será mais difícil porque você optou primeiro pelas opções mais fáceis.

Peronally, eu nunca sugiro outra coisa em C / C ++ como a primeira linguagem a aprender se você quer ser um programador de jogos. O principal motivo é que, mesmo que você aprenda C # / XNA, se estiver realmente interessado em se tornar um desenvolvedor de jogos, precisará conhecer C ou C ++ em algum momento, porque ninguém o contratará. Então, se eles são sérios sobre a profissão, você está apenas atrasando o aprendizado do que se espera de você.

Dispositivo desconhecido
fonte
10
Quando uma criança de 15 anos está pronta para ser empregada profissionalmente (daqui a oito anos), não vejo razão para supor que todos estarão usando C ++. Oito anos atrás, o C ++ estava começando a entrar em uso nos jogos e obtendo seu primeiro padrão realmente prático, e quase todo mundo estava embarcando com C. Oito anos antes, o C ++ estava em um estado ridiculamente ruim para o desenvolvimento de jogos e a ordem do dia foi C e ASM. Daqui a oito anos, a maior parte da programação de jogos provavelmente se parecerá muito mais com o XNA do que com o C ++ 03. (continuação)
8
O elemento chave é tornar - se um bom programador , independente de qualquer linguagem individual. Para novos programadores, o C # os motivará mais rapidamente. Eles voltarão e aprenderão as coisas mais detalhadas se quiserem ser boas, mas você precisa conectá-las por tempo suficiente para chegar a esse estágio.
5
Os detalhes importantes na programação de jogos são SIMD, não SSE; linhas de cache, não o layout padrão do C ++; hash, não std :: unordered_map; polimorfismo, não funções virtuais. Essas últimas coisas são minuciosas e incidentais, não fundamentais. Quando você conhece o primeiro, o segundo tende a seguir trivialmente.
2
Começar com C ++ é uma má ideia, geralmente. É uma linguagem difícil, e mais ainda como primeira.
The Duck Comunista
4
Comecei o C ++ aos 15 anos e, embora esteja feliz com a situação atual, começar com algo mais fácil provavelmente teria sido muito menos doloroso e me permitiu focar no desenvolvedor de jogos real, em vez de ponteiros e segfaults ...
Riley Adams