O que é um bom jogo de código aberto para aprender? [fechadas]


15

Quero baixar o código-fonte de um jogo de código aberto, para que eu possa me familiarizar com a arquitetura do jogo. Alguém conhece um jogo com código fonte legível e facilmente compreensível?

Edit: Depois de pensar um pouco, eu gostaria de fazer um jogo que possa ser jogado na área de trabalho ou em um telefone Andriod com gráficos 2D.


7
A maioria dos jogos de código aberto são grandes, projetos antigos que nem sempre são facilmente compreensíveis, projetos comerciais que são de código aberto por várias razões ou jogos inacabados que não estão realmente em um estado reproduzível. Além disso, arquitetura um pouco sobre o tipo de jogo e idioma usado. Que tipo de jogo você quer aprender e quais idiomas você conhece? (tutoriais honestamente pode ser uma opção melhor aqui)
thedaian

@thedaian Eu sei java, C ++, C, javascript e python
jumpnett


Eu concordo com thedaian, pelo menos isso funcionou melhor para mim. Existem muitos artigos, livros e tutoriais muito bons por aí. Você precisará reservar um tempo para escolher os corretos, mas economiza tempo mais tarde, porque você já saberá por que eles codificam e codificam e poderá reconhecer a qualidade das fontes (que geralmente cheira). Se você quer portabilidade, eu usaria C / C ++, mas para essas plataformas você pode se sair bem com Java.
Pablo Ariel

11
Wiki da comunidade?
Jari Komppa

Respostas:


2

Não tenho certeza de que tipo de jogo você está solicitando, mas existe um jogo de código aberto chamado OpenTTD escrito em c ++. Eu acho que você poderia usá-lo como uma boa amostra.

alguns recursos que tornam este jogo único:

  • É um jogo de estratégia.
  • Possui suporte multiplayer pela internet e rede local.
  • Ele suporta tradução para outros idiomas através do arquivo de configuração (que é gerado a partir de arquivos de texto não processado)
  • É compilado em quase todas as plataformas que conheço.
  • Seu projeto ainda está vivo!
  • Possui suporte de IA incorporado.
  • Os dados gráficos e musicais são completamente personalizáveis ​​através de patches.
  • Ele suporta linguagens de script para desenvolver IA personalizada. então você também pode ler outras AI escritas para este jogo.
  • É um projeto relativamente grande, embora seja fácil de ler e entender seu código.
  • É baseado em SDL e, a partir desse ponto, eles desenvolveram tudo do zero.

--Editar--

Hoje eu comecei a ler o código deles desde o começo. Para entender o que eles escreveram, você deve ser um programador decente de C e C ++ (embora o código seja bem comentado)! Quero dizer que você tem que ser um mestre de ambas as línguas, pois elas estão usando estruturas de ambas! portanto, se você não estiver confiante o suficiente sobre suas habilidades de programação, nem chegue perto desse código! esse é o código mais sujo que eu já vi! (e eu sou um codificador sujo, mas eles são outra coisa!)

Acho que agora posso sugerir que você verifique o código do supertux . é um jogo de plataformas (assim como super mario) e até agora o código deles parece realmente limpo (eu verifiquei o marco 1.3). eles têm alguns comentários nesse código, mas apenas para lugares que você pode ficar confuso.


Embora o OpenTTD seja um jogo incrível, não acho que seja um bom projeto de aprendizado. A maior parte foi projetada de maneira reversa a partir da montagem, e ainda há seções de código que refletem isso. Além disso, é simplesmente um projeto enorme e provavelmente é demais para um projeto inicial de "aprender arquitetura de jogos".
thedaian

@ thedaian você pode dizer isso, mas de vez em quando que eu preciso fazer algo novo, acabei de ler o que está escrito em seu código. até agora eu acho que é o jogo open source mais legível por aí que vale a pena ler!
Ali1S232 23/09

Também não tenho certeza quando foi a última vez que você verificou seu código, mas eles limpa-lo desde a versão 1.0.0
Ali1S232


1

Existem pilares como o Quake 3 ou, se você quiser algo um pouco mais simples (e em 2D), veja o jogo indie Gish . Ambos usam o OpenGL e também são multiplataforma.

Gish está um pouco do lado confuso, no entanto.


1

Eu recomendo que você primeiro restrinja seu foco sobre que tipo de arquitetura de jogo você está interessado em aprender - pipeline 3D, física, IA, etc.

Com um pedido genérico para um bom exemplo de programação de jogos, acho que os invasores do espaço gl são difíceis de superar, pois possuem código limpo e interface e jogo de jogo abertos, mantendo as coisas bastante simples.

Felicidades


Os invasores do espaço são apenas janelas? Atualmente, não tenho o Windows instalado no meu PC. Não que eu não tenha acesso a ele, apenas que não é tão conveniente.
jumpnett

1

Embora a leitura do código possa ser útil, se você é iniciante no domínio, não aprenderá nada. Especialmente se você olhar o código de grandes projetos como Q3A ou OpenTTD. Eles foram criados por uma equipe inteira, com cada pessoa tendo diferentes práticas de codificação, idéias diferentes sobre como fazer as coisas. Você terá apenas uma visão geral, não os pequenos detalhes que fazem tudo ficar junto.

Desenvolver, falhar, tente novamente até encontrar algo que pareça bom, falhar novamente, enxaguar e repetir até obter algo bom. Diferentes desenvolvedores significam idéias diferentes sobre como implementar coisas. Só porque foi codificado pelo Carmack / Qualquer desenvolvedor famoso que fez um bom jogo não significa que é a melhor coisa desde pão fatiado, e uma implementação diferente pode ser mais clara e rápida.


1

Eu acho que uma das coisas mais importantes que você pode fazer é escolher um jogo que você goste de jogar. Isso ajudará a mantê-lo interessado e a familiarizar-se com a forma como o código se traduz na perspectiva dos jogadores.

Depois de escolher esse jogo, independentemente do tamanho dele, você não precisa tentar descobrir como todas as linhas de código funcionam. Escolha um pedaço e veja isso. Por exemplo, tente descobrir como os dados do player são armazenados ou como um item de menu é desenhado, etc.

A próxima coisa que você pode fazer, que acompanha o meu bit anterior, é tentar mudar alguma coisa. Não é algo enorme (a princípio), apenas algo simples e perceptível no jogo. Mesmo algo tão simples quanto o texto em um botão de um menu ou a adição de um item de menu ou a alteração dos cálculos de danos. Talvez você pense que eles deveriam ter feito algo diferente, tente mudar por conta própria.

Quando me interessei em desenvolver jogos, eu gostava muito de RPGs 2D online. Então, eu encontrei a fonte de uma online e comecei a construir nela. Adicionando meus próprios recursos e aprimorando coisas, corrigindo bugs, etc. Isso ocorreu no VB6 há alguns anos e agora estou usando C # e XNA e escrevendo meu próprio jogo do zero. Porque eu gostei dos jogos, isso me motivou a querer trabalhar nele, para torná-lo melhor. Coincidentemente, foi também assim que aprendi muitas técnicas de programação, depuração e solução de problemas que uso hoje em meu trabalho diário não relacionado a jogos.

Também é muito útil se o jogo tiver uma comunidade de modders que você pode fazer perguntas e obter ajuda e exemplos. Mas, novamente, mesmo que isso não exista, você já está aqui e estamos prontos para ajudar.




0

O Scrolling Game Development Kit 2 permite criar jogos 2D e jogá-los usando uma GUI sem escrever código. Mas também permite que você veja e edite o código incorporado ao projeto que representa a estrutura / mecanismo por trás do jogo. A maior parte do código é exposta por meio da GUI, embora uma pequena parte dele seja gerada com base em onde você coloca sprites e em quais mapas você cria. No entanto, mesmo esse código é visível se você gerar o projeto e abrir os arquivos resultantes no Visual C # Express. O próprio programa inteiro (IDE) também é de código aberto. É desenvolvido na biblioteca OpenTK (que é usada para interface com o OpenGL a partir de C #), que também é de código aberto.


I'll take a look at it, but I am a programmer, so writing code isn't a big deal.
jumpnett
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.