O polimento do meu projeto atual será uma experiência de aprendizado melhor do que iniciar um novo? [fechadas]

15

Comecei a programar há muitos anos. Agora estou tentando fazer jogos. Eu li muitas recomendações para começar a clonar alguns jogos conhecidos, como galaga, tetris, arkanoid, etc. Eu também li que eu deveria ir para o jogo inteiro (incluindo menus, som, partituras, etc.).

Ontem, terminei a primeira versão completa do meu clone arkanoid. Mas está longe de terminar. Ainda posso trabalhar nele por meses (eu programo como um hobby no meu tempo livre) implementando um alternador de resolução de tela, remapeamento das teclas de controle, power-ups caindo de tijolos quebrados e uma enorme quantidade de etc.

Mas não quero estar sempre aprendendo a clonar UM jogo. Tenho o desejo de chegar ao próximo clone para aplicar algumas idéias de design que encontrei ao desenvolver esse clone arkanoid (ao mesmo tempo, estou lendo o livro do GoF e muito código-fonte do concurso de jogos Ludum Dare 21).

Portanto, a pergunta é: Devo continuar melhorando o clone arkanoid até que ele tenha todos os recursos do jogo original? ou devo passar para o próximo clone (existem jogos quase infinitos para clonar) e começar a consertar as coisas que fiz de errado com o clone anterior?

Esta pode ser uma pergunta muito subjetiva, por isso restrinja as respostas da maneira mais eficaz de aprender a fazer meus próprios jogos (sem clonar idéias de alguém). Obrigado!


ESCLARECIMENTO

Para esclarecer o que implementei, faço esta lista:

Recursos implementados:

  • Capacidade de quicar (a bola quica nas paredes, nos tijolos e na barra).
  • Soa ao pular nos tijolos e na barra e quando o jogador ganha ou perde.
  • Menu básico do título (apenas novo jogo e saída). Também no menu do jogo e menus de ganhar / perder.
  • Apenas três níveis, mas o sistema de mapas é tão fácil que acho que não vai me ensinar muito (estou errado?).

Recursos não implementados:

  • Power-ups ao quebrar os tijolos.
  • Tijolos complexos (com mais de um "ponto de vida" e invencíveis).
  • Melhores gráficos (não sou muito bom nisso).
  • Polimento de programação (use com mais intensidade os padrões de design).

Aqui está um link para a sua página (mínima): http://blog.acamara.es/piperine/ Eu meio que sinto vergonha de mostrá-lo, então, por favor, não me bata demais :-)

Minha pergunta estava relacionada aos recursos não implementados. Eu me perguntava qual era o caminho mais rápido (ideal) para aprender. 1) implemente os recursos não implementados neste projeto que estão ficando grandes ou 2) crie um novo jogo que provavelmente me ensinará essas lições e as novas.


RESPONDA

Escolho a resposta @ ashes999 porque, no meu caso , acho que devo polir mais e tentar "enviar" o jogo. Penso que todas as outras respostas também são importantes a ter em mente; portanto, se você veio aqui com a mesma pergunta, antes de tomar uma decisão precipitada, leia toda a discussão.

Obrigado a todos!

Alejandro Cámara
fonte
Desculpe, mas dizer que é uma pergunta objetiva, não a torna objetiva. Isso dependeria da pessoa , de suas habilidades, objetivos e motivação, se eles deveriam mudar de projeto - tudo isso faz de uma questão subjetiva . Simplesmente não existe uma resposta "certa" para essa pergunta.
Cyclops
Você está certo, pensei em "subjetivo", mas escrevi "objetivo" (isso também acontece comigo com a esquerda e a direita ...). Eu mudei isso.
Alejandro Cámara
Uau, desculpe-me por ouvir isso. No entanto, eu odeio dizer isso, mas ainda não é realmente uma boa pergunta para este site. O objetivo dos sites StackExchange é criar perguntas / respostas úteis para muitas pessoas, não perguntas que se aplicam apenas a uma (ou poucas) pessoas. Além disso, deve (idealmente) haver uma única resposta correta - mas, para as pessoas que encontrarem este post no futuro, algumas podem encontrar uma resposta melhor e outras, melhor.
Cyclops
11
Eu senti que não era uma boa pergunta também. Mas a razão pela qual escrevi de qualquer maneira é porque talvez alguém esteja preso com o mesmo dilema. Mesmo que não exista uma resposta "boa", a discussão pode esclarecer outras pessoas que têm a resposta "certa".
Alejandro Cámara
11
Pessoalmente, acho que o escopo de um projeto de aprendizagem deve incluir todos os recursos do jogo (assim como implementar os power-ups), mas depois disso concluímos o projeto e prosseguimos; não se incomode em polir gráficos.
Jhocking

Respostas:

32

Discordo completamente da resposta de Patrick . Se você deseja ter sucesso como desenvolvedor de jogos, a habilidade número um que precisa aprender é como ter uma idéia e enviar um jogo completo e polido.

O que você perceberá ao longo do tempo (o que percebi depois de vários anos) é que a programação é apenas uma pequena parte do seu jogo. É fácil, porque é divertido. Mas manter apenas a programação deixará você com uma trilha de provas e conceitos incompletos.

Em vez disso, sugiro fortemente que você crie um site e blog (o Wordpress é ótimo para esse tipo de coisa), termine seus jogos (começando com Arkanoid) e os libere para a natureza.

Além disso, é fundamental perceber que, se você fizer isso, controla quando o jogo termina. Se você quer 1000 níveis com 10 recursos principais, tudo bem. Se você quer 10 níveis com 3 recursos principais, tudo bem. (Na verdade, recomendo projetos menores com mais frequência, porque você aprende mais e se concentra muito no polimento dessa maneira).

Edit: Em resposta às pessoas que discordam, sinto que preciso esclarecer. Se você criou um jogo apenas para um propósito / experiência (que eu fazer tudo o tempo todo), por todos os meios, escopo corte e enviá-lo. Ninguém disse que o Arkanoid precisa de 1000 níveis para ser um jogo polido; basta fazer níveis suficientes para que, na sua opinião, seja divertido e siga em frente.

É possível passar anos jogando e nunca enviar. Mas sinto que é muito mais fácil cair no outro buraco de fazer apenas demonstrações e protótipos técnicos para sempre. Levei mais de 10 anos para parar de fazer isso sozinho.

ashes999
fonte
3
+1 "envio é um recurso (obrigatório?)", Embora nesse caso você também possa ver o clone arkanoid como um protótipo, e os protótipos devem ser descartados quando um conceito for comprovado ou refutado.
Oskar Duveborn
2
@Oskar, é mais fácil criar 1000 protótipos do que enviar um jogo. Por fim, o envio fará com que você seja bem-sucedido, enquanto os protótipos apenas aumentam algumas habilidades de codificação.
ashes999
2
Por que descartar "apenas aumentar algumas habilidades de codificação"? Ele está perguntando especificamente sobre a experiência de aprendizado.
Jhocking
@jhocking por causa da resposta de Patrick. Minha resposta é especificamente focar além das habilidades de codificação.
ashes999
11
@Yannbane Se as pessoas jogam e pensam "sim, é um jogo completo", mesmo que seja um jogo curto, está completo. Incompleto geralmente é um jogo quebrado ou com, tipo, um nível. Depois de enviá-lo pela porta, está pronto.
ashes999
8

Eu sugeriria uma síntese das duas respostas anteriores. Basicamente, concordo que é extremamente importante aprender a ter uma idéia e lançar um jogo completo e polido. A internet está repleta de projetos semi-concluídos que alguém começou e depois se cansou. A capacidade de seguir um projeto do começo ao fim, o que eu chamo de "habilidade de finalização", é rara e preciosa, e ganha se forçando a praticá-lo.

No entanto, você ainda não está nesse estágio de aprendizado; Eu não recomendaria fazer isso com o seu primeiro jogo, mas faça alguns jogos menores para aprender antes de trabalhar no seu primeiro projeto completo.

(aparte: eu nunca identifiquei isso antes, mas agora que estou pensando nisso, acho que a capacidade de finalização é a principal coisa que vejo separando desenvolvedores experientes de iniciantes)


ADIÇÃO: Eu acho que muitas das divergências entre respostas se resumem a suposições diferentes sobre onde ele está em seu processo. Por exemplo, quando ele disse "terminei a primeira versão completa do meu clone arkanoid", isso poderia significar muitas coisas diferentes. No meu caso, desde que ele disse anteriormente "Eu também li que eu deveria ir para o jogo inteiro (incluindo menus, sons, partituras"), presumo que ele realmente implementou essas coisas e está perguntando se deveria continuar ainda mais. caso, eu diria que não; conclua o projeto e passe para o próximo projeto.

No entanto, isso é apenas uma suposição da minha parte; na verdade, ele não disse que tinha feito aquilo, apenas que o havia lido. Se ele não fez essas coisas, então eu diria que não siga em frente até que você tenha feito essas coisas.

jhocking
fonte
11
+1 Vença-me! Parece que você está apenas começando, por isso é mais importante criar o máximo possível de coisas e aprender, aprender e aprender. Conforme você melhora, pode se concentrar no polimento. Caso contrário, você passará 2 anos em seu primeiro jogo.
precisa saber é o seguinte
11
Discordo. Você pode passar dez anos codificando e nunca enviar um único jogo. Ou você pode enviar um simples clone arkanoid nos seus primeiros seis meses. Eu sinto que o último faz de você um desenvolvedor mais forte em geral, enquanto o primeiro apenas ajuda suas habilidades em desenvolvimento de software (e não tanto - você nunca pensa em ferramentas, ciclo de vida, etc. apenas em codificação).
ashes999
Bem, eu não disse que há 10 anos, disse? Ainda assim, é uma questão se passar um ano codificando vários exercícios práticos antes do projeto completo de 6 meses é melhor do que fazer diretamente o projeto completo de 6 meses como seu primeiro projeto. Esta é uma questão importante no ensino que faço; é melhor que os alunos passem um semestre realizando um monte de pequenos projetos ou um único grande projeto que leve toda a turma? Pessoalmente, apóio-me em "muitos pequenos projetos para estudantes de graduação, um único grande projeto na pós-graduação".
Jhocking
Minha opinião é que, por mais importante que seja o projeto completo, para que o projeto seja bem-sucedido, é necessário que você já tenha aprendido o básico de vários projetos anteriores.
Jhocking
11
Quais 2 respostas anteriores? A partir de agora, ele está classificado como nº 2, por votos
13/09/11 ADB
5

Eu acho que você tem a idéia certa de que deve avançar para o próximo projeto agora. Eu acho isso porque você já aprendeu com o seu primeiro e deseja aplicar o que aprendeu! Depois que você desacelerar o aprendizado do básico, esse será o momento de clonar recursos mais profundos dos quais você pode continuar aprendendo.

Lembre-se de que você está trabalhando em habilidades de programação, e não em design de jogos, por isso, você poderá programar qualquer design de jogo quando terminar de aprender.

Patrick Hughes
fonte
3
Embora eu concorde com @ ashes999 e você igualmente, sinto que, no contexto declarado do OP, ele está experimentando implementações, aprendendo a escrever diferentes tipos de jogos. Nesse caso, acho que ele deveria favorecer a próxima coisa.
Engenheiro
Na verdade, ele implicava que ele queria aprender design de jogos e não apenas programação de jogos. Em sua última frase, ele disse "a maneira mais eficaz de aprender a fazer meus próprios jogos (sem clonar as idéias de alguém)".
jhocking 12/09/11
2

Por que não tornar o clone "seu"? Adicione algumas novas reviravoltas interessantes que o manterão interessado.

Há uma vantagem em iniciar o "seu próprio" projeto, você sente que nunca foi feito antes. A realidade é que alguém provavelmente já tem algo parecido. A menos que você planeje inventar um novo gênero de jogo, sugiro que você faça esses "clones".

Por exemplo, meu amigo na faculdade criou um "clone" de pong. Ele fez o seu próprio, adicionou um novo tipo de jogabilidade, onde um power-up permitia dirigir um tanque doce por 15 segundos e destruir o máximo de tijolos possível!

A melhor maneira de aprender o desenvolvimento de jogos (arte, código, design) é apenas fazê-lo. Você pode não fazê-lo bem no começo, mas a chave é apenas mantê-lo e escrever mais código, desenhar mais animações e criar mais níveis! Na minha opinião, não importa se você está "clonando" algo, desde que você faça o seu próprio, continue fazendo isso, torne-o interessante e divirta-se!

KRB
fonte
2

Para responder sua pergunta, sim , polir seu projeto atual será uma experiência de aprendizado melhor do que iniciar um novo.

1) Você precisa adquirir o hábito de terminar as coisas. Isso por si só é uma experiência de aprendizado.

2) As tarefas que você tem "muita preguiça de adicionar" (por falta de um termo melhor) podem ter uma tonelada de lições de desenvolvedores de jogos embutidas, nas quais você está simplesmente pulando.

3) Se você está entediado com o Arkanoid, sempre pode deixá-lo de lado e trabalhar em outra coisa por enquanto. Não há nada de errado com isso.

1) Muitas coisas inacabadas são ruins. Você realmente não pode usar seu produto inacabado para mostrar suas habilidades com eficiência.

Isso ocorre porque ter uma série de coisas inacabadas é como ter um armário cheio de lixo. Algumas delas parecem úteis, mas, na realidade, tudo é muito inútil, e a realidade da indústria de jogos é que poucos apreciarão seu "lixo" (jogos inacabados).

Jogos inacabados são muito comuns. As pessoas colocam eles lá fora e ficam tipo, "duh, esse jogo foi divertido como o StreetFighter .. agora você pode ir e voltar .." Não impressionante . Ninguém pode ver na sua cabeça como era o jogo "sapposa". Eles só vêem o que é, inacabado.

Um jogo inacabado é como uma torta pela metade. Algumas pessoas podem apreciar isso, mas na verdade tem um gosto repugnante, e mais 20 minutos no forno podem tornar delicioso o que você já fez pela metade.

2) Os recursos nos quais você está evitando trabalhar podem ter algumas lições muito valiosas.

O que você está recusando ao terminar:

Recursos não implementados:

  • Power-ups ao quebrar os tijolos.
  • Tijolos complexos (com mais de um "ponto de vida" e invencíveis).
  • Melhores gráficos (não sou muito bom nisso).
  • Polimento de programação (use com mais intensidade os padrões de design).

Algumas dessas coisas você pode deixar de fora. Por exemplo, "Use com mais intensidade os padrões de design". Refatorar como esse é um desperdício de tempo para um projeto de estimação. Para aplicar isso, basta iniciar um novo projeto.

Alguns destes são fáceis. Por exemplo, tijolos complexos. Alguns destes são realmente muito trabalho . Os upgrades não são fáceis, eles exigem que você construa coisas como armas, balas, exigiria a adição de código de interseção de raios.

Eu acho que o que você está vendo é "colocar o andaime no lugar foi tão fácil ... e parece que está quase pronto. Terminar seria muito trabalho, e também pode parar agora". Sim, erigir a moldura de madeira para uma casa também é "fácil" e pode ser metade do trabalho. Drywall, eletricidade, encanamento, são todos "detalhes". Mas, ao não terminar a casa, ninguém vai "comprar" o quão boa a casa seria - uma se você a tivesse terminado.

3) Se você está entediado com o que está trabalhando, não há nada de errado em começar outra coisa.

Isso não significa lixo no que você está trabalhando, mas não há mal em passar um mês ou dois pensando em outras coisas ou iniciando um novo jogo. Você pode voltar ao Arkanoid com uma nova perspectiva.

Também um ponto final. Além de criar todos os recursos esperados do Arkanoid, é ainda mais interessante dar uma olhada nele. Então, em vez de interromper seu clone, você deve dar um passo adiante e inovar no jogo original.

bobobobo
fonte
1

A resposta certa realmente depende do que você quer fazer a seguir. Se você seguir para algo novo, poderá se arriscar a resolver os mesmos problemas antigos mais uma vez, sem realmente estender suas habilidades, mas poderá avançar para algo novo. Se você continuar a aperfeiçoar, há coisas úteis a serem aprendidas na breve lista que você forneceu, e elas o ajudarão no futuro, mas você ainda estará trabalhando na mesma antiga base de código.

O que eu recomendaria, e essa é uma opinião puramente pessoal, é passar para algo novo e salvar o polimento para isso. Ao mesmo tempo, tente se alongar com algo novo. Portanto, se você atualmente não está usando uma API 3D, aprenda uma e use-a. Se você estiver usando um, aprenda o outro e use-o. Ou vá para um nível mais avançado no que você está usando. Inclua um melhor som, física ou mecanismo de entrada desde o início. Seja como for, o que considero importante é sair um pouco da sua zona de conforto atual e desenvolver mais habilidades e conhecimentos, enquanto me divirto.

Maximus Minimus
fonte