# GoldSrc

GoldSrc (ou GoldSource) é o primeiro motor de jogo desenvolvido pela Valve desde a sua fundação até o lançamento de seu primeiro jogo: Half-Life. É baseado no código-fonte do primeiro jogo da série Quake, desenvolvido pela id Software. Consequentemente, fora utilizado na criação de futuros títulos da Valve, como Day of Defeat, Team Fortress e Counter-Strike.
Foi substituído pelo Source Engine com a chegada de Counter-Strike: Source e Half-Life 2 em 2004. Contudo, isso não impediu o seu licenciamento para desenvolvedores terceiros (third-party), suporte por meio de atualizações periódicas e a sua popularização e utilização (devido à sua relativa simplicidade) por jogadores para criar modificações e jogos independentes (ou indies) como Afraid of Monsters, Cry of Fear e Sven Co-op. Nexon Corporation, por exemplo, licenciou o GoldSrc para desenvolver Counter-Strike Online.

## História e desenvolvimento

A sua origem coincide com a fundação da companhia Valve. Em 1996, logo após a Valve ter sido fundada como uma companhia LLC (Limited Liability Company, que literalmente significa "Sociedade de Responsabilidade Limitada") em Kirkland, Washington e seus fundadores terem adquirido o código-fonte de Quake através de John Romero pessoalmente na id Software (estúdio responsável por clássicos como Wolfenstein e Doom), os mesmos deram início ao desenvolvimento simultâneo de dois projetos distintos: Quiver e Prospero. No entanto, ambos os projetos foram cancelados prematuramente por razões nunca esclarecidas. Embora não tenham visto a luz do dia, suas ideias e conceitos foram reaproveitados em Half-Life e possivelmente em Ricochet, dada a semelhança estética e temática.
Parcelas do código fonte original de Quake foram modificadas e substituídas eventualmente. Durante o período da produção de Half-Life (em meados de 1997), 25% foi o que tinha restado do código original. De acordo com o desenvolvedor Chris Bokitch, o sistema de inteligência artificial (IA ou "AI", de "artificial intelligence") do GoldSrc foi escrito a partir do zero. O motor também incorpora códigos de outros jogos da série Quake, incluindo Quake World e Quake II, porém, são minimamente significantes em comparação ao uso do código fonte do Quake original.
Em 1997, a Valve contratou Ben Morris e adquiriu Worldcraft, uma ferramenta de criação de mapas personalizados para Quake. Mais tarde, a ferramenta Worldcraft foi rebatizada de Valve Hammer Editor (mais conhecido pela abreviatura "VHE" ou simplesmente referido por "Hammer"), tornando-se a ferramenta oficial de criação de mapas para jogos do GoldSrc.
Antes da criação do seu sucessor, Source, não possuía nenhum nome ou sequer uma alcunha oficial, sendo referido diversas vezes apenas pelo título genérico "Half-Life Engine" por ser, basicamente, o próprio motor de jogo de Half-Life. Em 1 de setembro de 2005, Eric Johnson, ao responder à pergunta do utilizador "RJO" em sua página de discussão, explica a origem do nome "GoldSrc":
Em 2013, a Valve lança Half-Life e Counter-Strike 1.6 para OS X e Linux. Como resultado, o resto de seus títulos clássicos se encontram atualmente disponíveis para ambos os sistemas por meio de sua plataforma oficial Steam.

## Tecnicidades
### Paridades com Quake Engine

* O formato BSP usado no GoldSrc é similar ao do Quake. Inclusive, a extensão é a mesma: ".bsp/.BSP". De longe, as diferenças mais notáveis estão em como ambos lidam diferentemente com a iluminação e carregamento de texturas. Ademais, o BSP de GoldSrc e Quake funcionam de uma forma tão similar que chegam até a ser compatíveis em diversas ocasiões, pelo menos unilateral e parcialmente. As primeiras versões do Valve Hammer Editor, por exemplo, podiam ser utilizadas para editar mapas de Quake e Quake II. Com pequenas alterações, as versões que originalmente não oferecem suporte ao Quake podem ser finalmente utilizadas para criar mapas para Quake.
* Os mapas não compilados do GoldSrc usam o formato MAP (igualmente com a extensão ".map/.MAP"), que também é usado pelos mapas não compilados do Quake.
* Tanto GoldSrc como Quake usam o formato WAD (extensão ".wad/.WAD") para guardar e carregar texturas. A única diferença está no fato de que, no GoldSrc, cada textura tem a sua própria paleta de cores, ao invés de compartilhar de uma única paleta de cores. Outras características do GoldSrc incluem a capacidade de carregar múltiplos WAD (enquanto o Quake usa apenas o gfx.wad e o cabeçalho de arquivo) e ter suporte ao WAD3, tratando-se de uma versão atualizada do WAD2 utilizada em Quake. O WAD2 (e consequentemente o WAD3), por sua vez, são baseados no formato WAD utilizado em Doom. Além disso, o kit de desenvolvimento de Half-Life (Half-Life SDK) inclui uma ferramenta de criar arquivos WAD chamada Qlumpy, que pode ser utilizada também para criar arquivos WAD para Quake.
* Ambos GoldSrc e Quake usam arquivos PAK (".pak/.PAK") para armazenar dados, como níveis e modelos. Embora, no caso do GoldSrc, não seja obrigatório ou necessário o uso de um arquivo PAK, podendo os modelos e níveis ser armazenados normalmente em pastas como "/models" e "/maps".
* GoldSrc e Quake apenas compartilham do formato MDL (".mdl/.MDL") para os seus modelos, sendo na prática mutualmente incompatíveis em todos os aspectos.
* Ambos usam o formato Quake C (".qc/.QC") para a compilação de modelos, embora no GoldSrc seja muito mais simplificado.

### Acréscimos

* NPCs inimigos podem agrupar-se ou agir diferentemente quando estão em bando. Por exemplo, se bem agrupados, os houndeyes causam danos exponenciais ao jogador em Half-Life.
* Os modelos do GoldSrc possuem esqueletos de animação (rigging), recurso totalmente ausente no Quake, cujos modelos são animados por vértices.
* O GoldSrc é capaz de reproduzir uma maior quantidade de polígonos em relação a Quake. Um único modelo no GoldSrc (isto é, se não for subdividido em 32 submodelos ou em 128 submodelos no caso da versão modificada usada pelo mod Sven Co-op) pode ter até 2048 vértices (ou 4080 triângulos), 2048 normais, múltiplas texturas, 128 ossos (rigging), 8 controladores de ossos, 4 anexos de ossos e 512 quadros-chave (keyframes) por cada uma das 256 sequências (animações reproduzidas a cada ação do jogador).
* Suporte ao mecanismo de scripts de sequência, sendo possível a criação de elementos não lineares e cutscenes (cenas), que podem ser tanto ativas (cutscenes in-game) ou passivas (cenas interativas).
* Suporte à texturização com níveis de transparência, útil para modelos de vidro e cristal dentro do jogo.

### Obsolescências e desvantagens

Por ser um motor de jogo bem antigo e feito para ser iniciado em computadores modestos de sua época, o GoldSrc conta com uma série de desvantagens em comparação ao seu sucessor Source Engine. Eis os contrapontos:
* Limite pequeno de renderização de polígonos e resolução de texturas para os padrões de hoje. Modelos inteiros (isto é, considerando o uso de submodelos) só podem ter até teoricamente 65.536 vértices (ou 130.560 triângulos) e texturas na resolução 256X256 (512x512 se configurado por meio de variáveis no console) com a paleta de 256 cores na versão original do GoldSrc, embora no Sven Co-op os modelos obedeçam limites ligeiramente maiores (como texturas em 1024x1024 e o incrível limite teórico de 262.144 vértices/522.240 triângulos), graças ao acesso ao código-fonte oficial do GoldSrc.
* Contudo, graças a uma possível falha de design ou à arquitetura já obsoleta do GoldSrc, dependendo do computador ou da otimização gráfica implementada, quanto mais próximo dos limites estiver o modelo, maiores serão os gargalos como queda na taxa de quadros por segundos (slowdowns).
* Não suporta mapas normais (normal maps), mapas especulares (specular maps) ou mapas de opacidade/alfa (opacity/alpha maps). Efeitos de transparência bastante pobres.
* Ausência de simulações físicas avançadas.
* Os esqueletos de animação dos modelos devem possuir apenas 1 peso de influência por vértice, ocasionando a ausência de deformações suaves na malha. Contudo, existe uma maneira de simulá-las apenas se utilizando o truque dos ossos entrepostos em articulações como o joelho e o cotovelo, controlando seções da malha em cadeia.
* O limite de tamanho dos mapas é bem pequeno. Porém, mods como o Half-Life Rally contornam de uma maneira bem peculiar, tornando os modelos ainda menores que o padrão.

## Suporte de títulos
### Série Half-Life

Half-Life (lançado em 19 de novembro de 1998) foi o jogo responsável por marcar o início da trajetória da Valve e por apresentar o GoldSrc. Tornou-se um sucesso de vendas e de crítica, recebendo notas altíssimas e ganhando mais de cinquenta premiações de Jogo do Ano graças a sua história e narrativa sublimes, jogabilidade a frente de seu tempo e gráficos considerados avançados para a sua época segundo vários críticos. Devido ao seu estrondoso sucesso, acabou por receber duas expansões exclusivas desenvolvidas pela Gearbox Software e publicadas pela finada Sierra Studios, sendo mais tarde distribuídas pela própria Valve por meio da sua plataforma de distribuição digital oficial, Steam: Half-Life: Opposing Force (lançado em 19 de novembro de 1999 nos Estados Unidos e 29 de novembro do mesmo ano na Europa) e Half-Life: Blue Shift (lançado em 12 de junho de 2001).
Deathmatch Classic, focado exclusivamente no modo competitivo online, foi lançado em 7 de junho de 2001.
Half-Life: Decay, um spin-off não canônico (possivelmente, já que a Valve nunca definiu a canonicidade da franquia) com foco no multiplayer, foi lançado em 14 de novembro de 2001 somente para o PlayStation 2, após a estreia de Half-Life para o mesmo em 11 de novembro. No entanto, uma versão não oficial do jogo foi lançada por desenvolvedores independentes em 2008 para PC (Windows). Half-Life: Decay é o marco final da série no GoldSrc.

### Outros títulos da Valve

A Valve desenvolveu vários títulos usando o GoldSrc entre o final da década de 1990 e o início da década de 2000. Títulos como Counter-Strike e Team Fortress Classic eram, na verdade, modificações (ou mods) feitas por fãs. Team Fortress Classic, por exemplo, lançado pela Valve em 7 de abril de 1999, tem como os seus desenvolvedores os próprios responsáveis do popular mod para o Quake chamado Team Fortress, que depois participaram no desenvolvimento de Team Fortress 2.
Counter-Strike, após várias versões, recebeu uma sequência: Counter-Strike: Condition Zero, lançado em 2004, e no mesmo ano, foi lançado o seu sucessor, Counter-Strike: Source, dessa vez utilizando o Source. Counter-Strike Neo foi lançado pela Namco para máquinas de fliperama (arcade) em 2003. Mais dois jogos da série que vieram depois do Source ainda usam o GoldSrc, mas não foram desenvolvidos pela Valve. São eles: Counter-Strike Online e Counter-Strike Nexon: Zombies (lançados, respectivamente, em 2008 e 2014).
Ricochet, jogo com elementos de plataforma, foi lançado em 1 de novembro de 2000.
Day of Defeat, jogo ambientado em batalhas militares da Segunda Guerra Mundial, foi lançado em 1 de maio de 2003. Embora não tenha recebido sequência, foi lançada a versão atualizada, feita no Source: Day of Defeat: Source, com gráficos e efeitos mais realistas, mais mapas e modos de jogo.

### Títulos e modificações de terceiros

GoldSrc também foi usado para o desenvolvimento de títulos e mods por outras companhias de jogos e fãs com pouca ou nenhuma participação da Valve. Rewolf Software usou o GoldSrc para desenvolver Gunman Chronicles (lançado em 2000). A versão para PC de James Bond 007: Nightfire (lançado em 2002) foi desenvolvida pela Gearbox Software usando uma versão modificada do GoldSrc. Cry of Fear e Sven Co-op, originalmente mods feitos exclusivamente por fãs, estão disponíveis gratuitamente na Steam como lançamentos únicos e/ou independentes (standalones), sem necessitarem do uso da instalação do jogo base.

## Legado
### Source Engine

O Source Engine foi desenvolvido paralelamente, tendo-se originado da primeira separação do código-fonte de Half-Life em dois (lê-se bifurcação ou ramificação).
O seu desenvolvimento tem sido marcado pela mistura de tecnologias proprietárias middleware com códigos originalmente desenvolvidos pelo próprio estúdio (in-house). Por exemplo, o Source Engine usa as tecnologias do Bink Video, MP3 e Havok para, respectivamente, reprodução de vídeo, de áudio e simulação de interações físicas.
Posteriormente, veio a ser substituído pelo Source 2 em 2015, com o lançamento de uma atualização do Dota 2.

### Xash3D

Xash3D é uma versão não-oficial lançada em 2011 pela Xash XT Group, uma equipe de programadores russos independentes. Foi construído por meio da engenharia reversa do próprio GoldSrc. Segundo os seus desenvolvedores, tem por finalidade superar as capacidades e aumentar as funcionalidades do GoldSrc, que já se encontram atualmente obsoletas e desatualizadas. Graças ao Xash3D, um port do Half-Life foi feito para os sistemas Android e Pandora em 26 de abril de 2015. Em 2016, um programador chamado Alibek Omarov criou um port do Counter-Strike 1.6 para Android.
O seu uso não é incentivado pela Valve, visto que não obedece os termos de uso da engine original e supostamente usa parcelas de código-fonte de origem ilegal.