Quais são os perigos do desenvolvimento de jogos autodidatas? [fechadas]

58

Estou prestes a embarcar em uma jornada para o desenvolvimento de jogos. Após as respostas à minha última pergunta, usarei C # e XNA.

No entanto, eu não conheço pessoalmente nenhum outro desenvolvedor de jogos e não trabalho na indústria, portanto, como tal, será autodidata. A exceção é obviamente a pergunta e a leitura de informações on-line / impressas, mas eu ainda classificaria isso como autodidata.

Com isso, quero estar preparado para problemas que possam surgir por não ter alguém para "me manter sob suas asas".

Como analogia, ao me ensinar a tocar violão, toquei o acorde maior A de tal maneira que dificultou a mudança para um acorde que aprendi mais tarde.

Se você pudesse compartilhar suas lições aprendidas e conselhos sobre o que pode dar errado no meu aprendizado sobre desenvolvimento de jogos, ficaria grato.

Estou ciente de que cometer erros é a maior parte do aprendizado, mas, se houver erros nos quais eu possa estar preparado, ficaria mais feliz com isso.

Ste
fonte
Dê uma olhada, o assunto das lições de compartilhamento pode transformar a questão em aberto e invalidá-la, para que possa ser fechada.
18133 Gustavo Maciel
Este é um bom ponto. Para qualquer visitante, pretendo aceitar uma resposta abrangente.
Ste
Por favor, esteja ciente de que você pode mover uma marca de seleção para outra resposta, se achar que uma nova é melhor. Peço desculpas a Gustavo, não tentando lhe custar a reputação :) Mas o objetivo desses sites, e a votação e a marcação de cheques, é destacar a melhor resposta para uma pergunta. Além disso, embora seja ótimo que você tenha aceitado uma resposta, não é necessário aceitar uma que seja rápida - uma hora após a sua pergunta postada, é um pouco breve. Normalmente, espero pelo menos um dia, talvez mais, antes de aceitar uma resposta. Veja o que aparece.
Cyclops
@ Cyclops - sim, eu não esperava que a pergunta fosse tão popular. Vou revisar na próxima semana. Obrigado a todos pelas ótimas respostas até agora.
Ste
Obrigado por todas as ótimas respostas. Mudei a resposta aceita para a com mais votos positivos. Eu fiz isso para refletir a opinião da comunidade. Espero que você entenda @Gustavo
Ste

Respostas:

54

Desenvolvimento de jogos é como engenharia estrutural

Existem requisitos mínimos para funcionalidade. Os requisitos mínimos não são excepcionalmente desafiadores e muitas pessoas podem aprender como cumpri-los. Essa é a parte da função . É a pequena parte. É aqui que entram as decisões sobre qual idioma usar, qual plataforma desenvolver ou quais bibliotecas utilizar.

A próxima parte é a grande parte. A parte do formulário . Forma é o que realmente distingue os bons jogos dos grandes jogos. Essa é a parte que é a arte do desenvolvimento de jogos. Não estou falando apenas dos ativos sensoriais (gráficos, som, etc?). Estou falando de criar uma experiência. Esta é a parte difícil.

A parte da função vem de tutoriais, bibliotecas e um pouco de tempo. Qualquer um pode fazer isso.

A parte do formulário vem de você. É a paixão que levou você a querer fazer jogos em primeiro lugar. É como contar uma história, uma história inventada (ou uma história verdadeira que você embeleza muito). Quanto mais você conta a história, melhor ela fica. No desenvolvimento de software, chamamos iteração. Sua história é seu código. A primeira vez que você contar, não será muito bom. As coisas ficarão fora do lugar, você perceberá que esse pedaço deve ser colocado lá e aquele aqui. Você descobrirá que as coisas provavelmente fluirão melhor se você organizar as coisas dessa maneira ou expandir esse bit. Assim, como uma boa história, você conta, avalia como é boa e depois a modifica. Isso requer dedicação e isso leva tempo. Não se preocupe se a primeira coisa que você produz não é ouro. Tenho trabalhado muito e bem em muitas partes do meu jogo só para rasgá-los mais tarde, porque eu pensei de uma muitomelhor maneira de fazê-lo. Não se preocupe, tudo faz parte do processo de aprendizado. Você sempre aprende com seus erros e, com frequência, cometê-los é o que o leva à melhor maneira de fazer as coisas.

Então, o que você deve tirar disso é o seguinte:

  • Faça o teste com frequência.
  • Não seja pego na função agora. Não se preocupe muito com a otimização, ou qual biblioteca será a melhor a longo prazo. Apenas obtenha a funcionalidade mínima e itere.
  • Depois que a função estiver concluída, parabenize-se, você é uma pequena fração do processo.
  • Usar protetor solar
  • Essa é uma habilidade que leva tempo para se desenvolver, você sabe que, ao aprender um instrumento musical, isso não é diferente, você vai melhorar.
  • Lembre-se do que você está nisso, a alegria de criar! Se as coisas ficarem chatas, mude para outra coisa (tente alguns congestionamentos de jogos para interromper o tempo de desenvolvimento). Mas não desista apenas porque é difícil.
  • A comunidade de desenvolvimento de jogos aqui no SE é ótima. Você encontrará tudo o que precisa aqui. Você pode postar uma pergunta ou entrar no bate-papo e discutir suas idéias.

A internet está cheia de informações em posts de blog, tutoriais e comunidades como esta. Coletivamente, eu diria que é uma ala muito boa para se estar. Basicamente, os perigos não são graves. Você pode fazer as coisas da maneira "errada" ou difícil por um tempo, mas aprenderá eventualmente. Você parece ter muita experiência em programação, então acho que você entenderá rapidamente a parte da função. Os erros cometidos no desenvolvimento de jogos e no desenvolvimento "regular" se sobrepõem bastante. Sua experiência o ajudará a evitar muitos dos problemas comuns que ocorrem com os novos desenvolvedores de jogos. Eu acho que você vai se sair bem. Boa sorte.

MichaelHouse
fonte
6
+1 para awesomeness, tudo o que está faltando no meu post é encontrado aqui: D
Gustavo Maciel
1
"Usar protetor solar" O que você quer dizer com isso? um idioma "Usar protetor solar"?
Lukasz Madon
4
É uma piada baseada no artigo "Wear Sunscreen", de Mary Schmich . Basicamente, "os benefícios a longo prazo do filtro solar foram comprovados pelos cientistas, enquanto o restante dos meus conselhos não tem base mais confiável do que a minha própria experiência sinuosa". Talvez mais popularmente conhecido na forma desta música .
MichaelHouse
4
Bem, protetor solar não é tão bom assim, na verdade 2 . Apenas fique dentro de casa e continue programando.
bobobobo
28

Sim, não ter alguém que já esteve lá antes para lhe dizer o que fazer, como consertar etc. etc pode ser a pior coisa que você pode passar. Mas sem medos! Você ainda pode ler MUITOS blogs de pessoas que estiveram lá, eles compartilham suas experiências na indústria, como obtiveram sucesso, como um jogo anterior falhou e por que, etc., etc.

Bons exemplos são:

E muito mais!

Minhas últimas palavras são: não tema. Eu também sou autodidata, há 4 anos que fui apresentado ao desenvolvedor de jogos, muitas barreiras surgem, mas nada que você não consiga resolver pesquisando no Google e lendo alguns textos. Boa sorte em sua jornada :)

Gustavo Maciel
fonte
3
Para adicionar isso, mesmo os profissionais têm esse problema com frequência. Desde que você aprenda, e no Google, você pode descobrir praticamente qualquer coisa.
Ashes999
Estranho você ligar o 2Dboy. Tanto quanto sei, eles fizeram poucas coisas além dos portos do World of Goo em todas as plataformas que já existiram nos últimos dois anos. Faz muito tempo desde que li algo relacionado a jogos lá.
TravisG
@TravisG O processo do releasejogo não está relacionado apenas ao desenvolvimento, afinal. É uma boa leitura de qualquer maneira. Postei os links mais como referência, para não seguir o blog. Se você voltar no arquivo, há alguns exemplo de protótipos e todos os que os ajudaram com World of Goo e outros "menos pequenos" protótipos: D
Gustavo Maciel
18

Essa atitude. Essa atitude "não toque, até você saber como fazê-lo perfeitamente". Isso realmente vai te impedir.

Você vê essa atitude entre os desenvolvedores iniciantes de todos os tipos - não apenas nos jogos. Sites também. Ei, um site é um banco de dados com um front-end html com algum javascript. Você aprende as tecnologias da maneira que puder, monta seu primeiro site. Não vai ser fantástico, mas depois de fazer as coisas de uma maneira subótima não é um grande negócio ! Se você fizer "o caminho mais longo" na primeira vez, sempre poderá fazer melhor na segunda vez. O que quero dizer é que não há perigo. Exceto essa atitude, talvez. Essa atitude é o que o impedirá de fazer alguma coisa, porque você sempre se recusará a responder e dirá "Ainda não sei como fazer isso".

A atitude de que existe um "caminho certo" para fazer as coisas. Não existe. As coisas são exatamente como parecem. Você precisa colocar pixels na tela e emitir sons quando as coisas acontecem.

bobobobo
fonte
3
Tão verdade. Isso ainda me impede muito. Embora eu discorde de alguma forma, em termos existem mais "maneiras certas" de fazer e muito mais "maneiras erradas", mas o perfeccionismo e a paralisia da análise são certamente um problema. Ótima resposta!
Petr Abdulin
6

Dependendo de você querer ou não tornar isso sua profissão mais tarde (vou assumir que você está pensando sobre isso e isso não é apenas um hobby), eis o que eu achei extremamente eficaz:

  1. Comece pequeno

Já foi dito antes, mas vou repetir: comece com pequenos pedaços, familiarize-se com um mecanismo, uma estrutura, uma ferramenta ou programa. Depois de entender o básico -> vá aumentando.

  1. Aprenda TUDO

Isso pode parecer um pouco extremo, mas o que quero dizer é aprender o máximo que puder sobre CADA aspecto do desenvolvimento do jogo - não importa se você é um programador, artista ou designer. Conhecer o pipeline é a chave para construir as coisas da maneira mais eficiente. Se você está implementando uma arma -> projete, conceba, modele, implemente, codifique! Obviamente, você não precisa ser um artista conceitual de Grau A, designer e nerd do Pipeline - mas deve estar familiarizado com todas as ferramentas do processo e entender cada etapa da criação. Além disso, confira os sites de jogos para obter notícias e atualizações nos negócios - gamasutra.com, kotaku etc., todos com ótimos artigos sobre tópicos de negócios e técnicas. Não se limite a apenas um campo de desenvolvimento - absorva TODO o conhecimento que puder obter :)

  1. Falhar com freqüência, falhar com força.

Você vai chupar o que está fazendo. No início. É sempre assim (acredite, eu sei.: D), mas só vai melhorar se você continuar e NUNCA deixar de procurar maneiras de melhorar seu trabalho. A internet é uma ótima fonte de tutoriais, referências e ajuda. Você nunca ficará realmente preso, então embarque nas idéias mais loucas, falhe, aprenda com seus erros e torne-se mais durão com esse processo.

  1. Falar com pessoas!

Embora a Internet seja uma ótima fonte, obter feedback pessoal é algo com o qual você precisará lidar MUITO. Portanto, melhorar suas habilidades sociais também é importante. Se você ainda não tem um mentor ou, em geral, não conhece muitas pessoas que trabalham na indústria, deve procurar em sua área encontros indie para desenvolvedores, ir a convenções e verificar outros eventos em que possa começar a criar uma rede pessoal de conhecimentos e contatos. Também ajuda a criar algo com outras pessoas - o autodidata é ótimo, mas o desenvolvimento de jogos é baseado em equipes, por isso verifique os fóruns para um projeto de hobby - por exemplo, o Fórum Épico para projetos UDK, fóruns Unity ou até mesmo os Fóruns CryEngine - todos esses três motores estão amplamente espalhados, há um caminhão cheio de pessoas talentosas trabalhando em projetos paralelos lá, e eles '

Eu acho que é praticamente todo o conselho que posso dar. Espero que isso tenha ajudado você de alguma forma :)

Nils Diefenbach
fonte
Todos os seus pontos são tão importantes que são o número 1 nesta lista! :)
bobobobo
3

Não tenho nenhuma experiência em C # e XNA, mas acho que não me fará mal na seguinte declaração:

É perfeitamente bom aprender programação sem um professor. Se o seu código funcionar *, não importa realmente como foi codificado. Bem, serve para programação colaborativa, mas você não estará mais codificando sozinho, estará? Isso também pode tornar seu código menos legível para você no futuro, dificultando o uso de componentes antigos ou depurando novos erros, mas, a longo prazo, todos os seus erros serão seus pontos fortes. O mais difícil de aprender o design de OOP e MVC é entender por que eu deveria fazer "isso" dessa maneira ". Se você já tem experiência em criar programas ruins, conhecerá os pontos fortes dos padrões e os usará em seu proveito. Se você sempre fez bons programas seguindo os padrões que alguém lhe ensinou, continuará fazendo bons programas (no sentido de código válido), mas, em vez de tirar proveito dos padrões, você ficará limitado por eles, pois não os entenderá o suficiente para fazer modificações úteis. No final, é mais importante que você pratique, não como; portanto, em ambos os casos, mais cedo ou mais tarde, você terá uma experiência bastante semelhante.

* uma coisa é importante! Em caso de segurança, você realmente deve perguntar a alguém com experiência se o seu código foi bem executado, pois as falhas de segurança não exibem alertas de erro.

Markus von Broady
fonte
3

De alguma forma, essa é uma ótima pergunta! :-)

Eu iniciei minha atividade gamedev há pouco tempo e será a segunda vez, para que eu possa compartilhar meus pensamentos. Você está realmente certo sobre isso; é bom ter um mentor. Este mentor será a internet. Portanto, quanto mais informações forem compartilhadas na internet, mais fácil será aprender para você. É por isso que o XNA / C # é uma excelente opção para começar. Há muitos jogadores indie amadores e profissionais que estão compartilhando artigos e na web. Outras coisas a mencionar:

  1. Ir de código aberto! Codeplex, GitHub, Google.Code, Bitbucket. Há muitas coisas valiosas lá.
  2. Vá para a comunidade! Você está aqui, e é uma coisa boa. Mas também há uma grande comunidade Microsoft XNA com algumas boas informações oficiais . O projeto de código também é um bom recurso (no entanto, a atividade gamedev é bastante baixa lá).
  3. Você provavelmente precisará ler / assistir muito. Já mencionado antes. O desenvolvimento de jogos não é apenas codificação. O design do jogo também é importante. Entusiasmo é importante.
  4. Como de costume, não tente morder muito de uma só vez, escrever uma cópia do seu tetris ou fuga é realmente uma boa ideia.
  5. Pode ser difícil no início, o desenvolvimento de jogos não é apenas realmente difícil, também é muito diferente de, digamos, aplicativos "empresariais". Existem muitos aspectos novos, grapics, som, etc. Quanto mais você vai, mais fácil fica (como de costume).
  6. Escreva um blog. Expresse seu processo de desenvolvimento (nesse processo, você encontrará respostas para suas próprias perguntas), armazene links com comentários para artigos valiosos.
  7. Não pense que seu código é a pior coisa que você já viu. O código do jogo é mais difícil de controlar, é sempre um pouco mais sujo do que o bonito código "corporativo". Mas garanto-lhe que vi algumas criações terríveis (em termos de qualidade do código-fonte e organização de jogos) que foram jogos independentes de sucesso. Portanto, não seja duro consigo mesmo, esp. no começo.
Petr Abdulin
fonte
1

Isso se aplica a qualquer disciplina relacionada a uma indústria criativa:

O maior perigo é tentar construir algo "muito grande" ou "épico" fora do portão.

Por exemplo, se você está começando a fazer música, não começa tentando fazer uma sinfonia de 50 peças por 2 horas.

No design de níveis, isso se manifesta como tentando criar o 'maior mapa de todos os tempos' ou usando o sistema de jogo para criar a maior coisa mais complexa que o mecanismo de jogo é capaz de manipular. Na programação, isso pode cair em 'fazer um jogo inteiro sozinho', começando com zero código-fonte. Você realmente precisa de muita experiência e disciplina para começar com a fonte zero, e mesmo assim é incrivelmente difícil, e tomar decisões de design sobre tudo é difícil o tempo todo em que você está elaborando o design de tudo. Até um jogo simplista exige uma quantidade bastante grande de programação em um sistema operacional e linguagem modernos atualmente. Além disso, se você começar com o código de outra pessoa, poderá aprender o que funciona e o que não funciona tão bem; portanto, trabalhar com o maior número possível de mecanismos também é uma grande vantagem.

Então, começando eu recomendaria algo como os seguintes planos:

  • Design de nível: construa uma pequena sala, construa metade de um prédio, construa um prédio inteiro etc.
  • Arte: faça um chapéu para TF2 ou algo similar, simples, ou algumas substituições de textura para Skyrim ou alguma outra tarefa de tamanho de mordida para começar, antes de entrar em malhas esqueléticas ou morph e descobrir como animar ou pintá-las em zbrush bem.
  • Programação: pegue um mecanismo de jogo modificável ou de código aberto existente e modifique parte dele (como uma arma) e, em seguida, crie uma nova arma. Se você não gostar do código da jogabilidade, poderá começar a invadir o mecanismo gráfico.

A melhor coisa a fazer seria pegar um mecanismo pronto existente (modificável ou algum de código aberto) e começar a hackear nele, e fazer isso algumas vezes com vários mecanismos diferentes até encontrar o que você gosta.

Zoner
fonte