Quais são os bons jogos para "ganhar suas asas"? [fechadas]

305

Acredito que, para se tornar um bom desenvolvedor de jogos, você precisa criar jogos.

Da perspectiva de um programador , quais são alguns bons jogos de nível básico para sujar as mãos? Que habilidades e desafios cada um desses jogos ensina?

Drew
fonte

Respostas:

217

Saia

Jogo fácil, já que você não tem muito estado para se preocupar (é uma variedade de valores de tijolo - se você tiver apenas uma cor de tijolo, é uma variedade de sinalizadores), não há IA e você poderá fazer um um pouco de física para fazer a bola quicar corretamente.

Solitário

As regras são um pouco mais complexas que o Breakout e a interface é muito diferente. Obriga você a pensar em diferentes métodos de implementação de um jogo. ou seja, o que funciona em um jogo não é necessariamente o que você usaria em outro.

Pac-Man

Esse é legal porque você trabalha com um pouco de IA. Fazer com que os fantasmas sigam o jogador (mas não muito bem - você quer que o jogador tenha uma chance) pode ser implementado rapidamente, e você terá um joguinho divertido que você pode ajustar e mostrar aos amigos e à família (feedback positivo é sempre uma coisa boa quando você está começando).

Acho que se você procurar inspiração nos primeiros jogos de vídeo, poderá encontrar toneladas de idéias que são relativamente simples de implementar. Além disso, você pode se safar de obras de arte e sons super simples porque, de qualquer maneira, está copiando algo tão simples. Isso permite que você se concentre no básico primeiro - colocando o jogo em funcionamento, descobrindo como colocar seus pixels na tela, tocando um som, mantendo a pontuação, recebendo a entrada do jogador no jogo.

Quase realmente não importa qual jogo você escolhe primeiro - apenas escolha algo simples com o qual possa obter resultados rápidos, para que você possa se mover no dia seguinte e fazer outro. E outro. E outro - quanto mais você faz, mais se esforça e, eventualmente, estará criando jogos complexos antes que perceba.

Dennis Munsie
fonte
49
+1 em Breakout. Muitos desenvolvedores de jogos profissionais me disseram que sempre que obtêm uma nova peça de tecnologia, eles aprendem primeiro criando Breakout.
21410 Jeff
2
+1 Breakout foi o primeiro jogo que fiz =). Além disso, concordo em tentar recriar os primeiros jogos de vídeo (com suas próprias reviravoltas!). Concentre-se em conceitos, não em ativos.
precisa saber é o seguinte
16
@PhillC, não, não vale a pena dividir
Simurr
13
Você se esqueceu de tetris: foi o segundo jogo que eu implementado para trás na escola do hight :)
Emiliano
2
todos vocês poderiam fornecer links para suas fugas? eu amei esse jogo e gostaria de tentar todos os remakes
fent
256

Eu recomendo fortemente que programadores iniciantes comecem com o jogo mais simples que eles realmente desejam escrever . Como mencionado por Matt Rix, uma grande parte da escrita de um jogo vs. uma demo está levando à conclusão - créditos, menus, testes de jogo, altas pontuações, pausa, teste de jogo, níveis de dificuldade, transições limpas de estado do jogo, jogo testes, etc. Esse material leva pelo menos metade do tempo que você vai colocar e simplesmente não é divertido. Não é. Portanto, a menos que você ame o conceito e esteja realmente motivado, desistirá e seguirá em frente antes que o jogo seja um jogo .

Se você quer escrever um RPG, descobrir o conceito de RPG mais simples, mais gerenciável que você pode vir até com que você quer fazer e fazê-lo. Mesmo se você quiser fazer um jogo de ficção científica, um jogo de plataforma com tema de terror, ou o que quer. Escolha algo que você vai terminar, que você ainda vai querer terminar depois de tudo divertido, mas você ainda está olhando para dezenas de horas de trabalho antes de realmente terminar.

O melhor jogo para "ganhar suas asas" com? O que você completou. Não me importo com quantas demos PONG / Breakout / Galaga / Tetris que você já escreveu, você não é desenvolvedor de jogos até ter lançado um jogo completo.

Além disso, ninguém quer jogar mais uma versão desses jogos de 40 anos, e pelo menos parte do objetivo de escrever jogos é para as pessoas jogarem , certo?

Bob Montgomery
fonte
3
Quero tripple votar nesta resposta!
Iain
2
+1 no comentário sobre realmente lançar um jogo. Colocar um jogo em funcionamento é apenas cerca de 30% do processo, IMO. Repetindo constantemente a mecânica, aprimorando tudo para parecer apresentável, perseguindo os bugs desagradáveis ​​que ocorrem apenas em cenários muito específicos e, na verdade, ser capaz de focar apenas o que precisa ser feito são os outros 70%.
Dennis Munsie 28/10/10
1
+1 por dizer o que quero dizer. Meu primeiro jogo foi palmgadget.com/palmgo.html Isso poderia ser feito porque eu amo o jogo Go e realmente o uso para gravar meus jogos no clube. "Coçando sua própria coceira" primeiro.
ohho
16
Eu gosto deste conselho, mas pode ser perigoso. Afinal, essa mentalidade é precisamente o motivo pelo qual tantas pessoas vão aos fóruns de desenvolvedores de jogos e dizem: "Eu nunca fiz um jogo antes, vou começar um MMORPG". Eu diria que você deve começar com um jogo de que gosta em uma seleção limitada de bons projetos iniciais. Então, tipo, se você realmente odeia Tetris, tudo bem, não faça isso. Mas faça Breakout, não apenas qualquer jogo aleatório que agrada a você.
jhocking
185

Eu publiquei essa escada na TIGsource há um tempo atrás. Começa do muito básico ao muito complexo.

  • "Adivinha o número" / Hangman (interface básica, selecione dados de um banco de dados)
  • Tic-Tac-Toe / Rock-Paper-Scissors (jogabilidade baseada em turnos, IA do oponente)
  • Arkanoid / Pong (colisões, taxa de quadros estável, pontuação, níveis)
  • Tetris (estruturas de dados e como elas se relacionam com os jogos)
  • 1942 / Shoot-em-up (inimigos, balas)
  • jogo de plataforma / pinball simples se o seu motor fizer plataformas (colisões por gravidade)
  • Bomberman / Pacman (movimento baseado em peças, IA inimiga complexa)
  • Jogo para dois jogadores de qualquer um dos tipos acima (entradas para dois jogadores)
  • Roguelike / Diablo (Gerenciamento de inventário, várias IAs inimigas, salvando e carregando estados de jogo complexos)
  • Faceball / Wolfenstein 3D (movimento e renderização 3D básicos)
  • Jogo baseado em turnos em rede (rede básica)
  • Jogo de plataformas em terceira pessoa 3D enigmático (física, movimento 3d complexo)
  • Jogo em rede em tempo real (sincronismo cliente-servidor, atraso)
  • MMORPG (mundo persistente)
zaratustra
fonte
7
Você poderia explicar melhor o que deveria aprender aqui. Suas notas concisas não são muito descritivas / úteis.
SpoonMeiser
57
Mesmo sendo o último, acho que o MMORPG precisa ir mais longe. Lista impressionante. +1
は る と
6
Ótima lista, embora eu ache que todo o aspecto da escada se divide depois de Pacman. Nesse ponto, você sabe o suficiente para fazer qualquer tipo de jogo; Eu não acho que você precise desenvolver Diablo antes de desenvolver Wolfenstein. Tudo até Pacman você deve fazer em ordem.
Jhocking
5
O "mundo persistente" subestima de fato as diferenças entre um MMORPG das opções anteriores.
Malabarba 14/10
1
Você também pode lidar com o "Mundo Persistente" em um não MMORPG (por exemplo, um roguelike).
ashes999
64

A regra mais importante de aprender programação de jogos: aprender programação é difícil. Aprender design de jogos é difícil. Aprender a criar boas artes ou áudio de jogos é difícil. Tentar fazer todas essas coisas ao mesmo tempo é uma receita para o fracasso. Aprenda uma coisa de cada vez.

Corolário: programa um jogo em que o design, a arte e o som já estão concluídos. Faça clones, não jogos originais.

Nas minhas aulas, eu sempre recomendo esses jogos para começar, em ordem:

1) Tetris. A arte é retângulos coloridos, que até um total de klutz pode desenhar no Microsoft Paint. Você não precisa de som. A programação é relativamente simples, mas ainda requer algumas coisas importantes: entender a diferença entre o estado interno do jogo e o que é desenhado na tela; ser capaz de desenhar na tela, ponto final (provavelmente envolvendo sprites e blitting); poder aceitar a entrada do usuário em tempo real, em vez de usar apenas getch () ou scanf (), onde você deve esperar por eles.

2) Breakout / Arkanoid. A arte ainda é retângulos coloridos e você ainda não precisa de som. Usa todos os conceitos básicos do Tetris, além de alguma detecção básica de colisões e física 2D, pois a bola precisa se mover e saltar suavemente.

3) Tipo Gradius / R. Você provavelmente pode encontrar alguns tilesets de freeware para fazer isso. Aqui o fundo está rolando, então você precisa aprender um pouco mais sobre como a memória gráfica funciona, usando técnicas como inversão de página e buffer duplo e coisas de desenho fora dos limites da tela visível. Você também tende a ter inimigos dinâmicos e geradores de balas, portanto precisará aprender a se limpar depois de si mesmo (por exemplo, se livrar de inimigos e balas que saem da tela para que seu jogo não perca memória como uma peneira).

4) Super Mario Bros. Semelhante ao projeto de rolagem anterior, exceto que a rolagem agora está sob controle do jogador e não é automática. Você também precisa lidar com a gravidade e todas as coisas divertidas de colisão que a acompanham (como não cair no chão só porque você estava alguns pixels acima no último quadro e deseja passar para alguns pixels abaixo no próximo quadro ) Observe também que a gravidade é condicional: afeta o jogador e alguns inimigos, mas normalmente não as plataformas, moedas flutuantes ou qualquer outra coisa, que é um pouco diferente do mundo real.

Se você pode fazer todos os quatro deles, poderá fazer praticamente qualquer jogo 2D que desejar; todas as ferramentas estão lá. Se você quer fazer um jogo em 3D ... aprenda 2D primeiro, porque é muito mais fácil e você não precisa entender profundamente a matemática e precisa entender as coisas em 2D de qualquer maneira ... e depois quando estiver À vontade, comece a trabalhar com algumas ferramentas básicas de 3D (bibliotecas como Torque ou Unity ou jogos de código aberto como o Doom e Quake original).

Boa sorte!

Ian Schreiber
fonte
39

Agora, esta é uma boa pergunta real. Eu não sei onde você está, então eu irei para o céu e presumo que você nunca tenha escrito uma linha de código em sua vida. Corte qualquer parte do nariz que ofenda você, para abusar de uma frase.

Acho que vou responder a uma pergunta um pouco diferente da que você pediu e vou dar exemplos para satisfazer a pergunta que você fez in situ. A razão pela qual faço dessa maneira é um pouco, mas acredito que há uma diferença significativa no ponto de vista: não são tanto os jogos específicos que importam, quanto as mentalidades desses jogos para um designer.

Você sabe como as pessoas falam sobre você deveria aprender uma variedade de linguagens de programação, a fim de comer suas mentalidades, seus corações e seus fígados e, assim, ganhar seu poderoso poder? Existe uma verdade real nisso - após a sua primeira linguagem de programação pura ou quase pura, mesmo em linguagens imperativas, você acabará escrevendo funções livres de efeitos colaterais, porque elas são muito melhor definidas e tudo o que você escreve mesmo em idiomas não dessa forma, será melhor para isso. Não importa particularmente qual idioma é - modelos haskell, ml / ocaml / smlnj, formulaONE, c ++, o que for - você ainda aprenderá como fazer muitas classes de trabalho sem depender do estado de efeito colateral. Na primeira vez em que você aprende uma linguagem de programação robusta e próxima à máquina, você ' vamos aprender sobre a abstração do tipo de tamanho. Na primeira vez que você aprender uma linguagem declarativa ou de restrição, aprenderá sobre a delimitação como uma ferramenta discricionária. Na primeira vez em que você aprender um idioma de busca regressivo, aprenderá a orar Ia! I a! C'thulhu F'tagn Nagn !, e então voltamos a comer corações e fígados, e o círculo da vida é cumprido.

Design de jogos não é diferente. Você não precisa necessariamente aprender nenhum jogo específico, paralelamente a um idioma específico, mas aprender um jogo representativo emblemático que lida com essa mentalidade, como as famílias de características do idioma. Além disso, há muitos fígados e corações para comer. Pegue uma bolacha de pimenta.

A piada aqui (como eu vejo pelo menos) é que você deseja cobrir uma grande lista de tópicos. É como marcar as proficiências em uma ficha de personagem - você está disponibilizando para si mesmo mais mecanismos pelos quais lidar com uma determinada situação. Sim, eles são capazes de nível, mas ter um ou dois pontos no maior número possível de coisas significa que, quando chegar a hora de usar um, você não estará começando do zero e saberá quais táticas estão disponíveis. para você aumentar.

Então olhe.

Primeiro você quer cortar os dentes. Isso também é útil quando você está aprendendo a segmentar uma nova plataforma ou quando está se recuperando de amnésia. Estes são feitos para serem rápidos, não impressionantes.

Em ordem:

  1. Controle de tela. O Bluescreening é ótimo para isso, porque você tem motivos convincentes para acreditar que está no caminho de ser Microsoft.
  2. Validação de entrada. Fooscreen, onde foo é azul para cima, vermelho para baixo, etc. Verifique todas as suas chaves; existem cores mais que suficientes ou você pode mapear em quatro cores se precisar absolutamente economizar o vermelho para coisas mais importantes.
  3. Renderização de texto e sprite. Como você também tem validação de entrada, um jogo de memória lado a lado não é uma má idéia.
  4. Temporizadores. Hora de um clone de Mario ou um Arkanoid.
  5. Som e música. Melhore o mario clone. Não muito embora.

Depois de baixá-las, você estará pronto para segmentar uma plataforma e o aprendizado poderá começar.

Estes estão em nenhuma ordem particular. Você pode reorganizá-los como achar melhor. Vou dar alguns exemplos com cada um, mas eles não são normativos; se um jogo diferente oferece a mesma experiência e é pequeno o suficiente para fazer parte de uma série de lições, fique à vontade para trocá-lo. Por razões práticas, é bom ser proficiente em renderização de tela e entrada de maneira relativamente rápida; você vai usá-los bastante. Aguarde alguns jogos antes de tentar escrever classes de abstração; você não quer ser pego em uma abstração ingênua.

  • Animação. Quase tudo o que você faz pode exigir sprites animados. Obtenha um mecanismo de animação independente, mesmo que seja arte de programador. Fazer um jogo simples, cujas peças pulsam é suficiente.
  • Pontuação complexa. Obter todos os cinco inimigos em uma asa? Bônus. Conseguir três socos seguidos? Bônus. Passar por todo o nível sem perder uma bala? Enorme bônus.
  • Encontrando o caminho. Muitos jogos precisam disso, mas um jogo de defesa de torre é o mais simples. Você pode começar com a amplitude e a profundidade primeiro, se nunca fez isso antes, mas não o faz até que tenha implementado A * do zero (NÃO COPIADO) pelo menos uma vez.
  • Comportamento inimigo. Comportamentos estúpidos e automatizados serão cobertos pelo seu mario, mas comportamentos reativos também são importantes. Esta é uma boa desculpa para construir um jogo de táticas ou um jogo de roguelike. (Aviso: você trabalhará no roguelike pelo resto da vida.)
  • 2d iluminação dinâmica. Este também é um bom motivo para escrever um roguelike. A transmissão de sombras baseada em arco é uma maneira importante de analisar as faixas e a separação, o que é importante para muitas estruturas de dados.
  • 2d Física. Isso acontece em vários jogos, em vários níveis de detalhes. Experimente um jogo de plataforma (mario-ish,) que pode ser super simplificado; um jogo de tanque (terra arrasada), que pode ser igualmente simplificado; e, eventualmente, um jogo como N the Ninja, que faz você lidar com a corrida em ângulos, momento etc. (você pode fazer isso com um sistema de colisão de caixas delimitadoras alinhado por eixos bastante direto). Física e colisão estão intimamente relacionadas.
  • Detecção de colisão. Existem casos ridiculamente simples, como Arkanoids em grade e Mario clones, casos moderadamente complexos como N the Ninja e casos genuinamente complexos como jogos de física em sandbox (a máquina incrível, arkanoids modernos como BreakQuest etc.) Em muitos casos, você pode conviver com algo como o AABB , mas se você é de matemática, pode ser útil implementar algo completo. No mínimo, familiarize-se com uma biblioteca completa, como APE ou Box2D.
  • Relações de risco / recompensa na satisfação do jogo. Jogos simples de dados (procure algo chamado "Skunk" dos anos 50) e jogos de tabuleiro de risco (vida, terra doce) são ótimos exemplos de maneiras simples e rápidas de aprender isso.
  • Variação expressiva em mecânica. Pregue-se a uma pequena quantidade de regras e aprenda a obter muita variação delas. Jogos de cartas de baralho personalizados são uma ótima maneira de trabalhar com isso; dê uma olhada nos decks de Dvorak e jogos do mundo real como Mille Bornes, Rage e Uno, e faça alguns de seus próprios. Eles não chegam a ser parecidos.
  • Conteúdo gerado. Jogos simples de estratégia baseados em mapas, roguelikes e alguns tipos de quebra-cabeças são ótimas maneiras de aprender a fazer isso. Pontos de bônus se for um tipo de jogo geralmente não conhecido por ter gerado conteúdo.
  • Estilo. Não brinque: isso é um grande negócio. Faça um jogo e escolha quatro jogos completamente diferentes. Realmente diferente. Um jogo para crianças, até. (Pense bem: Mega Man faz todo o sentido como uma aventura de feiticeiro no inferno, ou como Vampira dos X-Men, ou ...) Agora, convide quatro grupos de pessoas para marcar um de seus jogos. Depois disso, faça com que eles marquem o próximo jogo, no sentido anti-horário, ao redor do ringue, e assim por diante. Observe como a pontuação deles muda radicalmente com base no tema e nas expectativas anteriores.
  • Fazendo o jogador planejar sequências. Jogos de quebra-cabeça são uma das maneiras mais limpas de fazer isso.
  • Gestão de recursos
  • Atualizações
  • Acionando a pressão do tempo

... eh. Eu fiquei entediado.

John Haugeland
fonte
11
Excelente resposta. Realmente decepcionante final lá. Seria incrível se você pudesse revisitar isso e amarrá-lo de alguma forma para dar um final coerente.
Ricket 27/07
1
Para um final, que tal algumas instruções para cozinhar o fígado ? giantitp.com/comics/oots0738.html
Cyclops
4
Esta é uma lição de vida fantasticamente disfarçada de um post sobre programação de jogos.
sdasdadas
30

Tetris

Jogo muito comum, muitos clones de código aberto disponíveis para serem destruídos se você ficar preso. Ensina noções básicas de gráficos 2D, manipulação de entrada, pontuação, etc.

Em seguida, pegue essa ideia original e gire-a. Aprendi o básico de gráficos 3D / opengl escrevendo uma versão 3D do Tetris para minha aula de computação gráfica na faculdade.

Bryan Denny
fonte
2
Ou "colunas" se você é um cara Sega;)
Andrew Russell
Cue Tetris tema de música ...
Nick Bedford
3
qntm.org/hatetris (ok, falta a música tema, mas eu só queria vinculá-la ...) #
user384918
1
@bloots uau, isso é mau #
Bryan Denny
Woot! aqui está o meu site .
Steven Lu
25

O GameDev.net tem um bom artigo recomendando uma progressão de jogos para aprender gradualmente sobre o desenvolvimento de jogos. Meu conselho favorito da lista é realmente polir esses jogos. Concluir completamente, para um estado liberável.

A lista é a seguinte (algumas delas foram fornecidas em outras respostas):

  1. Tetris
  2. Saia
  3. Side Scroller / Platformer
Colin Gislason
fonte
Você perdeu Pac-Man, Galaga e Gauntlet do artigo que você vinculou
Adam Harte
15

Eu gosto de começar todos os meus caras com o monopólio. Normalmente, uso o "código kata" do monopólio de Brett Schuchert como base do exercício, mas acrescento muito a ele. Existem várias razões pelas quais eu realmente gosto de fazer isso.

  1. Eu me preocupo profundamente com as boas práticas de codificação (padrões de design, TDD, SOLID, integração contínua etc.) e imponho muitas restrições aos meus desenvolvedores quando eles fazem esse exercício.

  2. Quase todo mundo conhece as regras do Monopólio, e todo o jogo pode ser concluído em um único dia. Isso proporciona aos novos desenvolvedores uma vitória rápida e realmente aumenta o engajamento.

  3. Os requisitos iniciais começam com os controles do teclado, mas depois adiciono um requisito para os controles do mouse. Isso faz com que os desenvolvedores pensem em várias coisas, como refatorar o código existente, programar partes do sistema em interfaces em vez de classes concretas, abstrações melhores / apropriadas, o que fazer teste unitário, o que não fazer teste de unidade, por que fazer teste de unidade e o que faz para bons testes de unidade.

Às vezes, conectamos uma IA mais sofisticada, às vezes não. Às vezes, trabalhamos com outros jogos de tabuleiro com lógica um pouco mais complexa, como Chutes e Ladders ou algo assim. Às vezes nos afastamos completamente dos jogos de tabuleiro e fazemos um jogo de pôquer ou blackjack.

A parte realmente importante, para mim, é que as pessoas obtêm uma vitória rápida e veem o quão flexível você pode criar software quando segue bons padrões de programação. Esses exercícios constroem confiança muito rapidamente. Às vezes, os desenvolvedores mais experientes gostam de fazer isso por conta própria, apenas para se afastar de projetos mais complicados ou para praticar uma nova técnica que acabaram de aprender (lei do demeter?).

hokiecsgrad
fonte
6
Como você implementa o monopólio em um dia? Parece um projeto muito maior do que isso.
Michael Kristofik
Se você tem os recursos artísticos prontos para os desenvolvedores e segue o guia a que vinculei acima, é bastante fácil. Ele não inclui várias estratégias de IA, ou alguns dos aspectos mais complicados da animação e da música, mas é um jogo totalmente jogável e é fácil de fazer em um dia. É realmente factível e muito divertido.
hokiecsgrad
O nº 3 também daria a experiência do mundo real de clientes que alteram os requisitos após você já ter iniciado.
Jarett Millard
Infelizmente, o link do monopólio está morto :(
Casey
A máquina wayback ainda a possui. web.archive.org/web/20090919075257/http://…
hokiecsgrad
15

Escolha sua aventura

Recebi essa dica de um amigo que começou a programar criando um jogo, muito parecido com escolher o seu livro de aventuras . É basicamente um jogo de aventura de texto simples com uma saída como esta:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Fazer esse jogo deve ensiná-lo a criar um gameloop, entrada básica do console e scripts básicos. É muito simples de implementar e fácil para um iniciante, já que você não precisa de um mecanismo gráfico para escrever o jogo. Iniciantes avançados provavelmente escreveriam um mecanismo de script.

Spoike
fonte
7
+1, mas SOMENTE se você está apenas aprendendo programação. Se você já conhece programação, eu não começaria com isso.
21710 Jeff
1
@ Jeff: Sim, se você é um novato completo, então este é um bom projeto para começar. Se você programou por um tempo, vá para os outros projetos mencionados para poder brincar com gráficos e outros enfeites.
Spoike 21/07
8
Na verdade, essa é uma maneira muito boa de aprender sobre scripts e desenvolvimento orientado a dados. Crie o "mecanismo" para isso e escreva o restante em scripts.
Nick Bedford
1
@ Jeff nah, se eles são programadores experientes, eles terminam em 2 horas. Então, tê-los adicionar um par de itens, portas, lutas contra chefes
bobobobo
13

Na minha experiência com programadores iniciantes, a progressão geralmente parece algo como isto:

  1. Pong
  2. Tetris
  3. Enormes incríveis incríveis 50 horas de jogo RPG 3D (nota: a maioria das pessoas desiste de programar em parte nesta etapa)
davr
fonte
4. Fantasy MMORPG: P
Nick Bedford
12

Breakout, Pong ou Asteróides.

Há uma enorme diferença entre um jogo e um protótipo de jogo . Se você está pensando seriamente em terminar o jogo dos seus sonhos, deve terminar os jogos "iniciantes" pelo caminho. Criar a parte do jogo é apenas metade da batalha. Todas as coisas extras, como menus e pontuações mais altas, muitas vezes são ignoradas ou ignoradas, mas levam muito mais tempo do que se poderia esperar.

Matt Rix
fonte
4
O +1 por mencionar os detalhes leva muito mais tempo do que você esperaria.
MPEN
11

Há outras boas sugestões nas outras respostas, mas eu só quero dar o meu voto para: Comece com algo que parece insignificante para lidar.

Pong é um bom exemplo.

O objetivo é: tornar o design do jogo e o conjunto de regras com morte cerebral, para que você possa concentrar toda a sua atenção em aprender o que está aprendendo (um idioma, uma plataforma, uma API) e não precisar constantemente faça pausas para descobrir como o jogo funciona.

Depois de começar, você descobrirá que o pong é realmente um pouco mais complicado do que parece à primeira vista. (Estou ensinando a programação de um cara e ele está usando o pong como seu projeto de aprendizado. Adicionamos alguns recursos, e agora ele se distrai do aprendizado do programa aprendendo a fazer todos esses recursos interessantes :)

Depois de concluir o aplicativo nº 1 até que esteja pronto para oferecer / vender para outros, ENTÃO assuma algo um pouco mais complicado (Tetris, aventura ou o que você quiser), mas, para começar a aprender uma nova tecnologia, faça o que você programa com morte cerebral simples.

Outros exemplos:

  • Adivinha o número (entre 1 e 1000)
  • Mastermind (adivinhar o número.)
  • SimplePaint
  • Cobra / verme / como quiser.

Mas, novamente - comece com algo fácil demais, para que você possa realmente concluir algo, olhar para trás e ver o que está envolvido. A diferença entre escrever UM aplicativo em um idioma / plataforma / SDK / mecanismo e escrever aplicativos ZERO é ENORME . A diferença entre 1 e 2, ou 2 e 5, muito menos, para que você possa dar passos maiores, mas faça com que o passo de 0 a 1 seja um pequenino; será maior do que você pensa!

Olie
fonte
2
+1 para "Comece com algo que parece muito insignificante para lidar" e para "A diferença entre ter escrito UM aplicativo ... e ter escrito aplicativos ZERO é ENORME"
Luc125
1
Atualização de 2014: outro bom aplicativo "aprender a língua / tecnologia" é Flappy Birdsemelhante. Como programador profissional, é um trabalho de uma tarde (bem, um fim de semana para ficar "legal"), mas, enquanto ensinamos outro a programar, aprendemos que ele realmente tem muitas pequenas complicações. Novamente, um é muito mais experiência do que zero e, uma vez que você tenha um, terá uma idéia muito melhor sobre como avançar.
Olie 29/10
9

Confira este site: 12 idéias de projetos de jogos de ciência da computação

Alguns desses jogos incluem o que outros disseram como:

  1. Pacman
  2. Tetris
  3. Pong

Mas também fala sobre outros jogos que você pode tentar criar, como:

  1. Jogo da velha
  2. Quem quer Ser um milionário?
  3. E um clone do Mario.

Além disso, fornece uma noção do que você deve tentar fazer primeiro, uma vez que fornece uma sensação de dificuldades para cada jogo (e, portanto, um plano de como você deve lidar com os jogos):

  1. Principiante
  2. Intermediário
  3. Avançado
  4. Melhor
thyrgle
fonte
2
+1, adoro esse link. "RPG - se você odeia sua vida (e alguns aparentemente o fazem), essa obviamente óbvia tentativa de final de ano na programação de videogames provavelmente terminará mal. , etc) e requer uma quantidade absurda de esforço "
Ciclope
5

Muitas pessoas começam com o Breakout porque ele apresenta:

  • Entrada: mover uma raquete para frente e para trás
  • Colisão simples: bola quicando na raquete, tijolos e parede
  • Alterando "Game State:" Atualizando a pontuação quando a bola bate nos tijolos e removendo os tijolos, diminuindo o número de bolas quando a bola atinge a parte inferior da tela, perdendo o jogo quando o número de bolas == 0, etc.
  • É também uma introdução bastante suave aos gráficos, pois é tudo retângulo e círculos
Sean James
fonte
5

A parte mais difícil de escrever um jogo - ou qualquer outro software - é descobrir o que fazer. Você absolutamente precisa de uma especificação! Essa é a parte divertida de criar um clone de um jogo existente: a especificação já existe. Sua especificação é "O produto deve fazer tudo o que o Outro produto faz" e, se você tiver uma cópia do outro jogo em mãos, será muito fácil verificar isso.

Depois de descobrir o que precisa fazer, descobrir como fazê-lo não é realmente tão difícil se você é um programador competente. Não quero dizer um programador qualificado ou experiente; isso implicaria que você já sabe fazer a maior parte do que está tentando fazer. Mas você precisa entender como pensar em abstrações e ter as habilidades de pensamento lógico e de resolução de problemas que são fundamentais para a programação. Se você pode fazer isso, pode fazer qualquer coisa.

Dito isto, discordo do que a maioria das pessoas diz sobre tentar aprender a escrever jogos escrevendo algo realmente simples. A recompensa é diretamente proporcional ao esforço que você coloca nela. Se você aprender a escrever jogos escrevendo um jogo realmente simples, tudo o que você saberá no final é como escrever jogos realmente simples, e isso não será muito bom.

Por outro lado, se você começar com algo avassalador, nunca terminará. Portanto, comece com algo moderadamente desafiador que o fará lidar com problemas sérios. Construir um RPG em estilo de console 2D ou um jogo de plataformas com rolagem lateral são maneiras muito boas de aprender conceitos reais de programação de jogos.

Mason Wheeler
fonte
5

Realmente depende de quais são suas competências atuais. Se você é relativamente novo em programação, escolha um dos jogos específicos sugeridos pelas pessoas. Caso contrário, você deve pensar em que tipo de jogo deixaria você usar sua experiência.

Quando iniciei meu primeiro jogo, eu não tinha nenhuma experiência em desenvolvimento de jogos, mas fazia alguns anos que desenvolvia aplicativos corporativos / de linha de negócios. Meu primeiro projeto de jogo foi um jogo de estratégia baseado em turnos e, arquitetonicamente, não parecia tão diferente de um aplicativo corporativo. Utilizava um sistema cliente / servidor e a comunicação acontecia por meio de um canal de serviço WCF duplex. A maioria das operações dos jogadores foram enfileiradas como "ordens" e despachadas para o servidor no final do turno. Todo o processamento de turnos ocorreu no servidor, após o qual as atualizações do universo do jogo foram enviadas para cada cliente.

Esse primeiro projeto me permitiu avançar no desenvolvimento de jogos enquanto me iniciava em território familiar. À medida que o projeto evoluiu, aprendi a pensar mais como um desenvolvedor de jogos e menos como um desenvolvedor de aplicativos corporativos. O resultado final funcionou muito bem, e foi um pouco mais impressionante que Battleship ou Tic-Tac-Toe :).

Mike Strobel
fonte
4

Mordidelas e Invasores do Espaço

IA, gráficos, jogabilidade, controles e relativamente simples, e eles não precisam ter efeitos sonoros ou músicas, a menos que você queira adicionar isso. Comecei com esses dois ao aprender a programar no QBasic para MS-DOS e acho que eles são ótimos primeiros jogos. Pac-Man seria minha outra escolha.

Steve Tranby
fonte
Eu nunca ouvi falar de Nibbles antes, mas uma votação definitiva em Space Invaders.
jhocking
3

Os jogos no estilo Moonlander são ótimos (onde você tem um foguete afetado pela gravidade, os jogadores controlam a direção e o impulso, combustível limitado ao usar o impulso). Adquira experiência na implementação de física muito simples e o sistema de colisão pode ser bastante primitivo. Não há AI para se preocupar e, mais importante, é divertido e viciante :)

Allan
fonte
2
Acordados, os jogos no estilo Thrust / Lunar Lander são ótimos projetos iniciais. Lidar com rotação e velocidade / aceleração revelará os mistérios do seno / cosseno (para quem não lida com eles há um tempo). Você pode usar um mapa estático ou de rolagem, e pode usar a detecção de colisão sem precisar de uma resposta de colisão muito complexa (toque em algo -> explodir). É também uma boa para pensar sobre o ajuste do sistema de controle - obtendo um bom equilíbrio de pressão, gravidade e velocidade de rotação para torná-lo se sentir
bluescrn
@bluscrn realmente é um ótimo comentário. Depois de convencer as pessoas a testarem minha versão em flash, notei que as pessoas tinham opiniões diferentes sobre como deveria ser. Parte disso foi atribuída a jogos anteriores experimentados pelo usuário. Não era algo que eu pensava particularmente antes de desenvolvê-lo.
Allan
2

Um atirador espacial de cima para baixo como o Galaga é bastante fácil e ensina a detecção de colisões bastante bem! Também pode variar em dificuldade, de um nível com inimigos fixos, a vários níveis, com atualizações de armas e inimigos que se movem em padrões especiais.

Ricket
fonte
1

Algo como Gauntlet, porque você precisa de um sistema de entidades, IA inimiga, captadores, mapas de blocos, detecção de colisão, pontuação etc. Tem tudo isso, mas não de uma maneira que seja esmagadora.

Iain
fonte
Eu diria que a IA inimiga e a detecção de colisão com um layout arbitrário de peças são impressionantes se você tiver pouca ou nenhuma experiência, especialmente considerando a física que também precisa fazer - atrito entre o jogador e o solo etc. Isso pode ser uma boa desafio depois de alguns jogos, no entanto
Sean James
Concordou, um pouco demais para as pessoas que estão começando. Muitos conceitos de uma só vez. Comece com algo que é apenas pontuação e entrada. Em seguida, faça um jogo que faça 1 ou 2 coisas novas, como detecção de colisão e inimigos. Continue escolhendo jogos que se baseiam em conceitos que você conhece, mas que introduzem algo que você não conhece; se você não conhece, não deve tentar. Mantenha simples.
precisa saber é o seguinte
Sinceramente, acho que há muita coisa acontecendo em um clone do Gauntlet para contar como um jogo "básico".
PhillC 21/07
Sinceramente, acho que é mais fácil codificar Gauntlet do que Tetris, pois descobrir como os blocos se acumulam, se uma linha está completa e como remover linhas, são problemas abstratos bastante complicados. O Gauntlet pode ser codificado em menos de 1000 linhas em qualquer plataforma 2D moderna, e se não puder na plataforma que você está usando, sugiro que encontre outra. Enfim, eu sugeri isso precisamente porque requer aprender todas as partes que compõem um jogo moderno.
Iain
Você ganha pontos extras por fazer a voz corretamente: "Elf atirou na comida!" "Wizard está prestes a morrer!" ou o meu favorito: "Você encontrou meu quarto com certeza na BANDEJA!"
Rtperson
1

Um mini clone Zelda é bom e exerce algumas habilidades que não foram mencionadas muito aqui. Rolar um grande mapa de peças e controles simples de movimento de 8 direções é bom saber. Pontos de bônus se você puder fazer inimigos, mas eu não me preocuparia muito com isso.

coderanger
fonte
1

Eu fiz mais do que alguns clones do Tetris. Cada vez que eu fazia, fazia um pouco diferente. Hoje em dia, eu costumo fazer algum tipo de clone de asteróide. Também fiz mais do que alguns spinoffs do Missile Command.

Comecei com o jogo básico e depois passei a adicionar mais coisas, power-ups etc.

Casey
fonte
1

Eu sempre costumava começar com um jogo de Tanques / Gorilas / Worms. Ele permite que você se exercite em exibição gráfica simples e lendo as informações do usuário, além de um loop de jogo aplicando gravidade ao projétil e testando para detecção de colisão.

Depois disso, chegaria um jogo como um jogo de plataforma ou shoot-em-up muito simples, onde você precisa ler as informações do usuário em tempo real, em vez das instruções INPUT que funcionam para os gorilas :)

AlexC
fonte
1

Paciência (ou realmente qualquer jogo de cartas) é um bom jogo para sujar as mãos com um novo sistema de interface do usuário, pois exercita muitos dos widgets e mecanismos de feedback de interação do controlador que você precisa usar. Além disso, a lógica é direta e inequívoca, para que você possa se concentrar no aprendizado e não tanto no design do jogo.

Para jogos de simulação em tempo real, eu sempre recomendo o Pong como um bom ponto de partida simples, novamente porque o design é direto, assim como a interface do controlador, para que você possa conhecer melhor o sistema - a simulação física.

MrCranky
fonte
1

Eu sempre afirmei que, se você é um programador de jogos, deve ser capaz de criar algum tipo de Space Invaders . Caramba, o jogo é simples o suficiente para que você também possa fazer os gráficos.

Tendo uma seleção de jogos pequenos em seu portfólio como o benefício adicional de ser bastante útil, por exemplo, se eu estiver aprendendo uma nova linguagem ou estrutura de programação, geralmente portarei um dos meus jogos simples para ver como a nova maneira de fazer as coisas combina com a forma como eles foram escritos.

JSmyth
fonte
1

Realmente depende de quais habilidades você já possui como programador regular. Sua matemática precisa funcionar? Seu conhecimento gráfico? Você tem os dois em segredo?

Embora, em geral, eu ache que Tetris e Breakout também seriam minhas duas entradas. Qualquer coisa mais fácil do que isso não oferece estímulo suficiente. Tetris é um bom teste de como organizar seus dados e algo, breakout é um exemplo matemático leve. Eu sempre digo para as pessoas mirarem alto, o objetivo é ficar preso e encontrar uma solução.

Depois disso, o céu é o limite. Mais uma vez, mire alto. Experimente um jogo de plataformas com terreno inclinado, parralax e você terá uma boa bolsa de tecnologia 2D à mão. Adicione um pinball (prepare-se para ficar frustrado) e sua matemática melhorará.

A partir daí, vá para a terceira dimensão, aprenda as habilidades básicas (animação, renderização) e você deverá estar relativamente bem equipado para lidar com uma boa variedade de jogos.

Kaj
fonte
0

Eu diria que um tipo de jogo de Tower Defense é o melhor lugar para começar. Você também pode começar modificando jogos / mecanismos já existentes (WarCraft III / HalfLife2 SDK / etc.) para entender a lógica geral necessária e, em seguida, passar a usar sua própria base de códigos.

Gootik
fonte
0

Meu primeiro jogo foi algo como Super Mario.

Mova-se, evite obstáculos, pule. E todas essas tarefas podem ser facilmente realizadas sem qualquer cálculo físico.

É ideal usar uma coisa 2D simples, pois você não dependerá muito de uma implementação / estrutura / mecanismo específico.

SwissCoder
fonte