Unixtopia

main/ artigos/

Doom

É um jogo lendário lançado em dezembro de 93, o mais famoso de todos os tempos, que popularizou o gênero first man shooter e chocou com seus gráficos 3D extremamente avançados na época e causou uma das maiores revoluções na história dos videogames. Feito pela Id Software, mais notavelmente por John Carmack, programador de gráficos e criador da engine, e John Romero, programador de ferramentas e designer de níveis. O jogo foi desenvolvido por cerca de 5 a 6 homens em cerca de um ano. Doom é infelizmente proprietário, foi originalmente distribuído como shareware, uma demo gratuita estava disponível para jogar e compartilhar com a opção de comprar uma versão completa. O motor do jogo foi lançado mais tarde em 1999 como software livre sob GPL, o que deu origem a muitas portas de origem e motores modernos melhorados, que, no entanto, parecem uma merda, o original parece de longe o melhor, se você quiser jogar Doom, use Chocolate Doom ou Crispy Doom, evite qualquer coisa com renderização de GPU. Os ativos permanecem não livres, mas uma alternativa completamente gratuita é oferecida pelo projeto Freedoom, que criou substituições de ativos livres. Só fracos jogam Doom em dificuldade baixa. Em parte graças ao lançamento do motor sob uma licença FOSS e seu design relativamente sem problemas, usando C e renderização de software, Doom foi portado, tanto oficialmente quanto não oficialmente, para um grande número de plataformas, como Gameboy Advance, PS1, até mesmo SNES, e se tornou uma espécie de padrão de referência de fato para plataformas de computador, você ouvirá frequentemente a frase "mas ele roda Doom?". Portar um Doom para qualquer plataforma se tornou um meme, alguém supostamente até o portou para um teste de gravidez, embora ele não tenha realmente rodado no teste, era apenas uma exibição.

O grande salto que os gráficos do motor Doom trouxeram foi sem precedentes, Doom não era apenas um jogo com bons gráficos, tinha uma jogabilidade extremamente boa, música e estilo de arte lendários e introduziu o revolucionário multijogador deathmatch, cunhado por Romero bem como uma enorme comunidade de modding e mapeamento. Foi um sucesso em todos os sentidos, sem dúvida nenhum outro jogo alcançou uma revolução maior que Doom, não, nem mesmo Minecraft ou WOW. Muitas análises dele são "Ok, Doom é o melhor jogo já feito, agora vamos dar uma olhada nos detalhes". O estilo do jogo era legal, assim como os desenvolvedores, era muito atraente por seu estilo sincero de ser simplesmente um jogo de tiro puro metal, sangrento, matador de demônios sem nenhum lixo corporativo enfiado para mais popularidade do que você veria hoje. Era simplesmente um jogo feito por alguns caras que o fizeram do jeito que gostavam sem dar a mínima para nada, você não verá mais isso, Doom não fingiu ser algum tipo de trabalho pomposo e glorioso e então não deu muita importância para a história de fundo, todo mundo sabia que o jogo era sobre tiro e então eles apenas o fizeram um jogo de tiro. Carmack declarou que a história em um videogame é como a história em um filme pornô, é esperado que esteja lá, mas é irrelevante. Você pode ver desenvolvedores atuais tentando imitar essa atitude, mas é ridículo, será apenas uma pretensão porque os tempos em que você poderia fazer um jogo com liberdade artística, sem ter que se curvar a gerentes, departamentos e editores simplesmente acabaram.

Doom não foi o primeiro jogo 3D, nem FPS, houve jogos antes que eram 3D em certo sentido, como simuladores de voo, o que era especial sobre Doom era como ele usava todos os truques gráficos e os combinava com uma jogabilidade excelente para atingir uma imersão, para a qual muitos não estavam prontos. Tinha ambientes totalmente texturizados, incluindo pisos e tetos, que junto com a neblina e a iluminação faziam o jogador realmente se sentir presente no jogo, apesar de não poder olhar para cima e para baixo. A história do jogo era simples e não atrapalhava a jogabilidade, é sobre um fuzileiro naval durão, Doomguy, em uma base militar de Marte matando hordas de demônios do inferno, tudo em um estilo metal com muito sangue e violência exagerada. Doom foi seguido por Doom II em 95, que em termos de conteúdo era basicamente apenas um disco de dados, o mesmo jogo com novos níveis e algumas pequenas adições. Houve alguns outros lançamentos e relançamentos, notáveis são Doom III, de 2004, Doom, 2016, e Doom Eternal, 2020.

Coisas interessantes sobre Doom

Engine e código de Doom

O source-code de Doom é escrito em C89 e tem cerca de 36000 LOC. Os requisitos originais do sistema declaravam aproximadamente uma CPU de 30 MHz e 4 MB de RAM como mínimo. Ele tinha 27 níveis, 9 dos quais eram shareware, 8 armas e 10 tipos de inimigos. A engine não era realmente tão flexível como os programadores modernos esperam, muitas coisas eram codificadas, não havia scripts ou algo assim. Os arquivos são bem organizados em grupos por um prefixo. O mesmo vale para os nomes das funções. Parece haver tabulações misturadas com espaços, tem uma formatação um pouco ruim, mas muito melhor do que o código do Duke Nukem 3D. O jogo só usou ponto fixo, sem flutuante. O id Tech 1 foi revolucionário e avançou os gráficos de videogame em um grande salto, considerando que seu predecessor Wolfenstein 3D era realmente primitivo em comparação, Doom definiu a direção para tendências futuras em jogos, como impulsionar o desenvolvimento de GPUs cada vez mais poderosas em uma corrida por visuais cada vez mais impressionantes. Doom usou uma técnica chamada renderização BSP, os níveis eram feitos de setores 2D convexos que eram então colocados em uma árvore BSP que ajudava a classificar rapidamente as paredes para renderização de frente para trás, que era capaz de renderizar visualizações 3D em tempo real de ambientes texturizados, todas as paredes, pisos e tetos, com iluminação primitiva, por setor mais iluminação decrescente, inimigos e itens representados por outdoors 2D.

Nenhuma aceleração de GPU foi usada, os gráficos foram renderizados puramente com CPU, a renderização de GPU viria com seu sucessor, Quake, e também seria trazida para Doom por novos mecanismos feitos pela comunidade, embora o original seja melhor. Isso tinha suas limitações, a câmera não podia olhar para cima e para baixo, não podia haver paredes inclinadas e os níveis não podiam ter salas acima de outras salas. A geometria dos níveis era apenas estática, apenas a altura das paredes podia, porque a renderização dependia de árvores BSP pré-computadas, que é o que a tornava tão rápida. Por essas razões, alguns chamam Doom de pseudo 3D, alguns retardados levaram isso até o ponto de chamar Doom de 2D com seus gráficos sendo apenas uma ilusão, como se todos os gráficos 3D não fossem uma ilusão. Doom apresentou visualizações 3D e internamente funcionou com coordenadas 3D, o jogador ou projéteis têm posição 2D mais coordenada de altura, apesar de alguns vídeos idiotas do YouTube dizerem o contrário. Por esse motivo, preferimos chamar Doom de um motor 3D primitivo. Outros jogos mais tarde usaram o motor Doom, como Heretic, Hexen e Strife. O motor Doom era semelhante e competia com o motor Build que rodava jogos como Duke Nukem 3D, Blood e Shadow Warrior. Todos esses jogos de tiro dos anos 90 eram incríveis em seus visuais e eram melhores do que qualquer merda moderna. Os jogos com motor Build tinham limitações semelhantes às do Doom, mas as melhorariam, fingindo olhar para cima e para baixo pela inclinação da câmera, o que poderia, em teoria, ser feito no Doom, ou permitindo piso inclinado e geometria de nível dinâmico.

O modo indexado com 256 cores foi usado para renderização. Tabelas de cores pré-computadas foram usadas para tornar o escurecimento das cores mais rápido. Uma tabela de consulta foi usada para geração de números aleatórios, dois geradores pseudoaleatórios independentes estão presentes, um é usado para efeitos visuais, enquanto o outro é utilizado puramente para a simulação, de modo que ele permaneça determinístico independentemente de gráficos. Doom também tem uma física determinística independente de FPS que permite a gravação eficiente de demos de sua jogabilidade e a criação de speedruns assistidos por ferramentas, o passo de tempo da simulação do jogo é fixo, 35 tiques por segundo. Essas demos podem ser reproduzidas em alta qualidade, embora sejam minúsculas em tamanho, e nos ajudam de muitas outras maneiras, como para verificar a validade de speedruns. Isso é bom e serve como um exemplo de um mecanismo bem escrito, ao contrário de mecanismos posteriores dos mesmos criadores, os dos jogos Quake que não tinham esse recurso, aqui podemos ver como as coisas ficam progressivamente piores na tecnologia de computadores à medida que avançamos no tempo. Não há antialiasing no mecanismo, o aliasing pode ser notado em texturas distantes, mas é suprimido pelo uso de texturas de baixa resolução e áreas distantes escurecidas. Também não há suavização de bordas na renderização da geometria, o mecanismo é preciso em subpixels na renderização da parte superior e inferior das paredes, a linha que esses limites formam pode resultar na rasterização de pixels ligeiramente diferentes, mesmo se o pixel inicial e final for o mesmo, dependendo da posição do subpixel do início e do ponto final, esse recurso não ajuda muito em capturas de tela estáticas, mas torna a animação mais agradável.


Impulsionado por nada. Todo conteúdo é disponível sob CC0 1.0 domínio público. Envie comentários e correções para Mr. Unix em victor_hermian@disroot.org.