Recursos para ajudar a estudar o mecanismo do Quake 3 [fechado]


14

Existem bons recursos (manuais, tutoriais etc.) para começar a estudar o código do mecanismo Quake 3 além do próprio código?

Estou muito interessado em saber como é estruturado para fins educacionais e talvez fazer algumas modificações.

Respostas:


13

Portanto, você deve começar consultando o artigo da Wikipedia sobre id Tech 3 . Isso pode ser aumentado pelo resumo da conversa de Brian Hook no GDC e por algumas coisas antigas no blog Element 61 . Além disso, você terá que vasculhar vários tutoriais antigos sobre mods que você pode encontrar para tentar reconstruir o que está acontecendo.

Eu sugiro começar a partir da versão original do id, em vez de ioquake3 ou what-have-you, para realmente ver o contexto do que está acontecendo (como a entrada é manipulada e direcionada dentro do mecanismo, que tipo de evento subjacente estrutura é usada, etc.).

Alguns pontos-chave que me ajudaram quando eu estava trabalhando com ele:

  • Sempre há um servidor; também pode haver lógica do cliente em cima de manipular um quadro.
  • A entrada é direcionada primeiro para um console, se estiver interessado, depois para a GUI e depois para o jogo em si.
  • O próprio mecanismo é separado (rígido!) Da lógica do jogo, usando funções de interceptação. Procure (se a memória servir) o cgame e renderize os projetos para encontrar o código real do mecanismo.
  • A lógica do jogo pode ser totalmente escrita para ser executada na máquina virtual Quake 3. Ao modificar e usar dlls nativas, você precisará executar o jogo como quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0para permitir que o mecanismo execute o código nativo em vez do código da VM.
  • A interface do usuário para o sistema de menus é uma pilha estranha, ruim e distorcida de estruturas e retornos de chamada. É utilizável quando você o esclarece, mas isso pode levar algumas tentativas e erros. Lembre-se, é uma pilha.
  • Se você estiver escrevendo código em .dlls nativas, sinta-se à vontade para alocar memória, escreva em C ++ ou qualquer outra coisa que flutue no seu barco. Você também pode usar o STL - não há razão para seguir rigidamente os idiomas C, exceto onde você faz interface direta com o mecanismo.

Algumas coisas legais que eu fiz para isso com um colega de trabalho:

  • Interface simples da linha de comandos para chamar comandos shell do console e despejar os fluxos stdout / stderr de volta para o console (o console do Quake).
  • Interface com um banco de dados SQL para extrair e exibir registros.
  • Kit de ferramentas de janelas e widgets flexível para exibir exibições flexíveis no cliente hud (usando gráficos de barras, caixas de texto, caixas de figuras, menus de contexto, janelas redimensionáveis, etc.).
  • Foguetes lentos. :)

Pessoalmente, descobri que o mecanismo era uma ótima combinação de coisas realmente inteligentes feitas de maneiras realmente idiotas, coisas realmente idiotas feitas de maneiras realmente inteligentes e coisas realmente inteligentes feitas de maneiras realmente inteligentes. É um ótimo exemplo de como ter modularidade e bom design estruturado em um projeto C de média escala.

Por fim, não se sinta mal se demorar um pouco para grudar. Demorei talvez um mês para realmente saber onde encontrar o que estava procurando no motor; se tudo mais falhar, inicie no init do aplicativo e simplesmente entre nas funções, deixando comentários para você como sinalização. Meu monitor acabou coberto de post-its rosa com nomes de funções, números de linhas e descrições curtas do que eles fizeram.



1

Absolutamente.

http://en.wikipedia.org/wiki/Quake_engine é uma boa visão geral do que está por aí, mas você pode entrar nos detalhes de sua arquitetura rapidamente através de suas citações.

Também posso sugerir alguns livros sobre arquitetura de mecanismos de jogos que podem estar mais alinhados com o que você está procurando. Embora não sejam específicos do Quake, eles abordam os detalhes do design do mecanismo e são paralelos a muitos aspectos dos mecanismos do Quake:

  • Arquitetura de mecanismo de jogo 3D - 978-0122290640
  • Programação em 3D Game Engine - 978-1592003518

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.