O desenvolvimento de jogos é a melhor maneira de aprender programação? [fechadas]

21

Ouvi recentemente um instrutor dizer que o desenvolvimento de jogos era a melhor maneira de aprender programação. Além do fato de que tudo tinha que ser criado em código, ele disse que você realmente experimenta e implementa totalmente o OOP em seus programas. Em outras palavras, tudo o que você cria em um jogo é um objeto literal, tanto tecnicamente quanto em conceito. É seguro fazer essa suposição? Ou sempre há exceções ao aprender programação?

note que foi voltado para o desenvolvimento .net / xna / c #.

Edward
fonte
3
"o fato de que tudo teve que ser criado em código". E os modelos 3D, texturas, sons e outros recursos? Você pode criar um mecanismo de jogo sem eles, mas um jogo completo com muito poucos recursos, mesmo que não seja impossível, será um grande desafio.
POSIX_ME_HARDER
@Cheshire: Bem, você pode programar aqueles com coisas como Processing. Não estou dizendo que é muito prático.
Anto 27/04
2
@Cheshire: Sim, algumas pessoas enfrentam esse desafio diretamente, criando tudo processualmente. Não é muito comum em jogos comerciais (tanto quanto eu sei), mas é popular apenas para provar que isso pode ser feito e já vi algumas demos impressionantes como essa.
FrustratedWithFormsDesigner
6
Supondo que essa pergunta signifique 'desenvolvimento de jogos' em vez de 'jogar jogos' quando perguntamos sobre jogos? Não pode deixar de dar o salto intelectual de Call of Duty para C ++ ...
HorusKol
1
Se você quer que o jogo seja jogável, você pode achar que precisa comprometer o design OO puro em favor da velocidade.
Peter Taylor

Respostas:

25

O desenvolvimento de jogos é um dos desenvolvimentos mais desafiadores que existem, na minha opinião. Vejamos todos os conceitos que uma pessoa que cria um jogo de tiro em primeira pessoa precisa saber:

  • Gráficos
    • Cálculos 3d
    • Otimizações de velocidade
    • Interface com hardware gráfico
  • O jogo
    • Estruturas de dados
    • Formatos de arquivo para salvar
    • Design geral, ou você criará uma bagunça impossível de adicionar recursos ao
    • Conhecimento de rede se o jogo for multiplayer
  • Algoritmos de IA
    • Encontrando o caminho
    • Luta de batalha
  • Publicação
    • Conhecimento do SO, como o funcionamento dos instaladores
    • Possivelmente desenvolvimento web para divulgar

Você vê, um jogo pode cobrir muitas áreas simultaneamente. Isso o torna uma excelente ferramenta de aprendizado se você estiver disposto a gastar o tempo e torná-lo bom.

Quanto à OOP, esse é um padrão que funciona bem. Você pode usar um jogo como uma ferramenta de aprendizado para praticar boas técnicas de design.

Para responder sua pergunta, porém, não é a única maneira de aprender programação. Depois de se tornar um desenvolvedor intermediário, a criação de um jogo permitirá que você toque em muitos conceitos e níveis de programação. Além disso, é divertido!

Michael K
fonte
12
Você esqueceu uma coisa, uma história para esse jogo e, às vezes, a história é tudo o que importa.
Mahmoud Hossam
Isso pressupõe que é um jogo em 3D.
Adam Harte
1
@ Adam: Sim, mas 2D também tem seus cálculos. Agora estou excluindo propositadamente RPGs baseados em teste;)
Michael K
1
@Mohmoud A história NUNCA é "tudo o que importa". É um erro tão grande quanto ter uma história ruim / faltando. Existem muitos aspectos que fazem um bom jogo. Eu não quero jogar um jogo chato, não importa quão grande seja a história. Também os jogos de quebra-cabeça mais bem-sucedidos não têm uma história.
Adam Harte
A teoria dos jogos também é útil.
VirtuosiMedia
46

Não deve ser tautológico, mas a programação é a melhor maneira de aprender programação. Se você está interessado em jogos de computador, a programação de jogos pode ser uma ótima maneira de aprender programação.

Eu não ligo para jogos, mas eu amo matemática, muitos dos meus projetos de aprendizagem eram de natureza muito matemática.

A conclusão é que você precisa encontrar maneiras de resolver problemas com o código, e os jogos funcionam para muitas pessoas.

Eric Wilson
fonte
isto é o que eu pensava originalmente. Mas considere seu absolutamente novo em programação. O jogo parece ser uma excelente ferramenta para aprender muitos conceitos diferentes. Michael lista alguns deles. Para ser sincero, eu gostaria de ter aprendido OOP de uma perspectiva de jogo primeiro. Mas isso pode ter sido devido ao fato de ter sido mal explicado ou pelo desenvolvimento de aplicativos de negócios tornar um pouco mais difícil de entender o conceito. É definitivamente interessante observar os dois argumentos.
Edward
@penguin De que maneira jogar Call of Duty ou Halflife ensinaria a programação?
usar o seguinte comando
13

É uma maneira de aprender programação, entre outras maneiras. Quando você escreve código, aprende coisas. Agora, é o melhor caminho? Não tão certo.

Pelo menos, os dois motivos apresentados pelo seu professor não são válidos .

  • "tudo tinha de ser criado em código" : quando você escrever um aplicativo de negócios, você está realmente escrever o código. Não será escrito por mágica. Sim, existem ajudantes que permitem usar o código gerado automaticamente. Não, não é obrigatório usá-los. A propósito, as partes geradas automaticamente são geralmente as mais irritantes da programação (não é adicionando controles ao controle do Windows Forms que você aprenderá algo interessante e útil).

  • "você realmente experimenta e implementa totalmente o OOP em seus programas" : alguém precisa me explicar por que isso é válido apenas para jogos, mas inválido para qualquer outra coisa. Se você entende OOP e deseja usá-lo, também pode usá-lo em aplicativos de negócios. Se você não o obtiver ou não quiser usá-lo (e preferir usar a programação funcional, por exemplo), o desenvolvimento de jogos não o forçará a mudar.

Mas:

Desenvolver jogos pode ser divertido . A maioria dos jovens gosta de jogos, então eles gostariam de desenvolver um jogo em vez de escrever um aplicativo de negócios, o que será extremamente chato para a maioria deles. Vendo isso, os professores podem começar a acreditar que, na verdade, jogar é a melhor maneira de aprender programação e, em seguida, tentarão encontrar uma explicação lógica para isso.

Dito isto, esses professores acabam tornando o desenvolvimento de jogos tão chato para os jovens quanto o desenvolvimento de aplicativos de negócios. Se eles acreditam que o jogo deve ser feito para aprender OOP, etc., eles pedirão aos alunos que façam o tipo de projetos que não são agradáveis. Este foi um dos maiores erros dos meus professores quando eu estava na faculdade. Eles nos deram muitas vezes projetos de jogos para escrever no Ada no modo console. Sem gráficos. Não é divertido. Nenhuma experiência do usuário. Em toda a minha vida e carreira, nunca vi projetos tão chatos assim.

Arseni Mourzenko
fonte
4
Jogos trabalhar bem com OOP, porque é muito fácil ver como cada BadGuy, Weapon, PowerUp, e outros itens em um jogo pode facilmente ser um objeto. Você pode programar interações entre os objetos e vê- los na tela. Eu acho que a parte visual é o que a torna tão atraente. Aplicações de negócios que têm hierarquias tipo de ServerTaskScheduler, AbstractDataProcessor, UserQueryAgent, etc ... não são tão emocionante , mesmo que eles podem ensinar os mesmos conceitos OOP como em jogos.
FrustratedWithFormsDesigner
4
@FrustratedWithFormsDesigner: talvez eu só não entendo porque eu passei muito tempo o desenvolvimento de aplicativos de negócios, mas eu não entendo por que seria mais difícil de ver como Customerou Productou Transactionpodem ser objetos. Mas entendo que é muito mais agradável lidar com BadGuys do que com chatos Transactions.
Arseni Mourzenko
Tem mais a ver com o nível do pensamento abstrato. Alguns programadores dependem muito de nomes porque não têm idéia do que se relacionar. Por exemplo, eu conheci alguns desenvolvedores que não têm idéia do que isso Transactionimplica.
Spoike
7

A programação de jogos é a melhor maneira de aprender a programação de jogos. Se você quiser aprender o desenvolvimento da Web, faça isso, se quiser aprender a programação de sistemas, faça isso e assim por diante.

A programação de jogos é desafiadora e provavelmente ensina muitas coisas (Michael notou muitas em sua resposta, e muitas delas são muito desafiadoras e utilizáveis ​​fora dos jogos). Criar um RPG ou magnata (ou jogo similar) ensinará muito sobre o design de POO, porque eles se prestam muito bem a esse paradigma. Você também poderá aprender muito sobre considerações de desempenho, algumas matemáticas graves para jogos, etc., dependendo da complexidade de seus gráficos e física.

É uma boa maneira e a melhor maneira de aprender algumas coisas, mas não é uma maneira superior de aprender programação. Não importa quantos jogos você programou, ainda é provável que você não tenha idéia de como criar um sistema operacional. Eu acho que a maioria dos desenvolvedores ainda pode ganhar algo desenvolvendo um jogo, mesmo que não faça isso como sua principal disciplina de programação, desde que tenha tempo.

Anto
fonte
7

Pergunta: Qual é o melhor método para aprender programação

Resposta: O método que você realmente faz

Ou seja, ao aprender ou fazer alguma coisa, não importa muito qual método você escolhe há tanto tempo que é um método que você realmente segue.

Se o jogo é algo que parece realmente divertido para você, vá em frente. Se você acha que resolver problemas de matemática é mais satisfatório, comece com isso. Existem muitos tipos diferentes de programação e cada um exige habilidades diferentes; portanto, uma boa aposta é começar com a que você achar mais interessante, provavelmente com a qual você estará trabalhando.

... Mas sim, jogar é uma boa maneira de aprender uma ampla variedade de programação, pois incorpora matemática, simultaneidade, algoritmos, oop, gráficos, etc, etc.

Homde
fonte
4

Se você gosta de jogos, escrever jogos seria uma boa maneira de começar o desenvolvimento, mas eu não diria que é o melhor caminho. Eu acho que a melhor maneira é um curso de pós-graduação, seguido de um emprego em uma empresa de software que investirá em treinamento e orientação de funcionários juniores.

Além dessa resposta reconhecidamente bastante pomposa, sim, o desenvolvimento de jogos ensinaria muitas boas habilidades, e se você gosta de jogos de computador, manterá você interessado no processo de desenvolvimento. Deve ser mais interessante do que muitos outros aplicativos simples que você vê nos livros.

Steve
fonte
2

Eu diria que a melhor maneira de aprender a codificar é diverti-lo. Não precisa ser um jogo real, mas algum tipo de jogo para você. Para mim, é um jogo para resolver alguns problemas de matemática, desenvolvendo algoritmos de uma maneira que eu possa resolver um problema complexo da maneira mais rápida possível. Seja desafiador, eu me torno um codificador melhor a cada tentativa de resolver um problema. Quanto mais difícil o problema, melhor.

Quanto ao aprendizado de código (melhores práticas), eu diria que você teria que enfrentar desafios maiores. Desafia a exigir muito mais a entrada / saída única

IvoC
fonte
2

Eu nunca ouvi falar de alegações de que jogar Halflife ou Call of Duty ensina habilidades de programação.

Programar eles pode, mas programar algo assim não é algo que um iniciante deve tentar um pouco. E especialmente os iniciantes costumam ter a impressão de que podem criar o próximo sucesso de bilheteria com seu conhecimento de programação inexistente. Diga a eles para tentarem criar um clone do PacMan ou Tetris primeiro e eles gritarão que não é isso que eles querem fazer e que você deve 'me dar zuh koduz'.

jwenting
fonte
1

Não, realmente não. Não existe um melhor tipo de projeto para aprender programação. O melhor tipo de projeto é relevante para seus interesses.

Por exemplo, tentei aprender a programar de duas maneiras diferentes, incluindo aprender a programar jogos. Apenas nunca pareceu grudar.

Então, quando eu precisava aprender a programar para o que estava fazendo na minha pesquisa? No momento, estou confortável o suficiente para dizer que conheço dois idiomas e estou trabalhando em um terceiro. Por quê? Porque era relevante para os meus interesses. Eu tinha um motivo para continuar, um motivo para aprender e mais problemas para tentar do que apenas o "Exercício 8" do livro.

Aliás, isso não significa que programar modelos epidêmicos seja a melhor maneira de aprender programação. Mas foi o melhor caminho para mim. Encontre o seu. Pode ser jogos, mas pode muito bem não.

Fomite
fonte
+1 para "o melhor tipo de projeto é relevante para seus interesses". Um homem.
Bryan Oakley
0

Na minha própria experiência, ao escrever um jogo (supondo que você esteja fazendo isso por conta própria / pequena equipe de desenvolvedores), você é forçado a pensar não apenas na parte algorítmica / analítica da programação, mas também na experiência e no design do usuário.

Além disso, se for um jogo razoavelmente complexo, você trabalhará nisso por alguns meses e perceberá a importância de documentar tudo o que faz - o que mais tarde fará de você um membro melhor de uma equipe.

rdasxy
fonte
... mas se você escrever algum tipo de programa que interaja com um usuário, não será forçado a pensar na experiência e no design do usuário? Você está dizendo que, com um aplicativo cliente tradicional, você realmente não precisa pensar nessas coisas, mas o jogo o força ? E os aplicativos de desktop grandes também não podem durar vários meses e exigem que você faça alguma documentação? Como isso se aplica aos jogos, mas não a outros tipos de programação?
Bryan Oakley
0

Eu concordo, exceto ...

É tão provável que a primeira experiência de programação que muitos já tiveram foi a construção e programação de um robô Lego (Mindstorms).

Embora o termo geral "jogo" possa definir uma categoria tão grande que abranja quase toda a programação, quando usado no contexto do pôster original, sempre parece significar "escrever jogos no estilo Doom".

Como foi afirmado aqui antes - a melhor maneira de aprender programação é ter algo que você realmente deseja que exija um programa. Ou seja - aprenda a programação escrevendo o programa que deseja.

Um dos meus primeiros programas para Windows foi um controlador MIDI, porque eu realmente queria um programa controlador MIDI, e o Windows parecia o ajuste perfeito (controles deslizantes, botões, suporte a SDK para MIDI etc.). Eu aprendi muito sobre a programação do Windows (isso foi no Win 3.1 dias) com esse programa.

Eu nunca fui parcial na programação de jogos pelas razões mencionadas aqui também - eu não desenho muito bem, então qualquer jogo que eu fizer terá gráficos mais pobres que os de um artista. Eu quero aprender a programar, não a gerenciar uma "equipe de criação de jogos" (exercício louvável, mas totalmente diferente).

No final, discordo totalmente da afirmação do professor. A melhor maneira de aprender programação é escrever o programa que você realmente deseja.

-R

Huntrods
fonte