Como os anos mostraram, praticamente não temos chance de ver o código fonte original - ou pelo menos um remake - da primeira parte de Diablo (o evento
O Escurecimento de Tristram em
Diablo III em homenagem ao 20º aniversário do lançamento da primeira parte é, claro, bom, mas ainda é um pouco não o que os fãs esperavam). E deixe a última atualização do jogo sair em 2001, e a própria Blizzard deixou de apoiá-lo e vendê-lo - a memória dele ainda está viva em nossos corações. O que mais uma vez foi confirmado por um certo GalaXyHaXz, que decidiu fazer engenharia reversa do jogo.
O código fonte está disponível
no Github . O projeto Devilution, que seu autor GalaXyHaXz chamou de "Devolução de Diablo", levou mais de 1.200 horas - 4 meses de trabalho. Além disso, não perca os comentários volumosos do autor esclarecendo o código fonte do jogo e localizado em
outro repositório . O código em si não parece importar até o momento, mas continuará sendo colocado em ordem à medida que o trabalho progride em outros módulos do jogo.
A idéia de fazer a engenharia reversa de um projeto tão grande a princípio parecia uma tarefa fantástica, se não fosse por um acidente de sorte - ou, em outras palavras, uma pequena supervisão que aconteceu 20 anos atrás.
Em 1998, a Blizzard deu o código-fonte do Diablo a dois estúdios: Synergestic Software, que estava desenvolvendo o complemento Hellfire, e Climax Studios, que trabalhava na porta do Playstation. Esta
não é
a primeira vez que o departamento de controle de qualidade
da Sony no Japão
está "feliz" com seus vazamentos , eles também se destacaram dessa vez - na versão japonesa do porto,
um arquivo simbólico foi acidentalmente esquecido, incluindo funções, dados, tipos e muito mais. Isso nos permitiu restaurar as funções originais, variáveis globais, estruturas de dados e muito mais. A versão beta da porta para o Playstation também vazou e continha outro arquivo semelhante, o que simplificou bastante a tarefa.
Além disso, a versão de depuração da versão para PC do jogo sempre fica diretamente nos discos do jogo, ocultos no arquivo DIABDAT.MPQ -> D1221A.MPQ -> DIABLO.EXE. A compilação contém ferramentas de depuração que não estão disponíveis na versão de lançamento, bem como um grande número de asserções de linha, graças às quais foi possível recriar nomes de arquivos, funções - até os números de linha do código estão o mais próximo possível do original.
O desenvolvimento do Diablo começou na época em que o Windows 95 foi lançado. Consequentemente, o jogo foi otimizado para ele. Para compilar o jogo, foi usado o Microsoft Visual C ++ 4.20, que
nos patches subseqüentes foi atualizado para a versão 5.10 . Para reproduzir com precisão o código original, o projeto manteve a compatibilidade com essas versões dos compiladores, no entanto, Makefiles estão disponíveis para compiladores modernos. Os binários executáveis resultantes da compilação, de acordo com os relatórios, são executados no Windows 7, Linux-WINE e Windows 10.
É um fato bem conhecido que o jogo estava mudando seriamente ao longo do projeto, e muitas idéias foram cortadas logo antes do lançamento - e o multiplayer foi adicionado às pressas.
Muitos criadores de modificações para o jogo (por exemplo, os autores do mod The Hell)
já foram muito longe em suas pesquisas sobre
pesquisa de código, inclusive através da implementação de uma memória de processo; no entanto, eles não publicaram os resultados de seus trabalhos e muitos desses mods foram abandonados na metade. Se o Devilution puder ser levado a um certo grau de prontidão, um problema semelhante poderá ser evitado - além de aprender algo novo sobre o jogo em si.
No momento, faça a engenharia reversa do Diablo.exe. Ainda existem algumas bibliotecas para lidar: Battle.snp (protocolo Battle.Net desatualizado), DiabloUI.dll (código do menu principal do jogo, totalmente baseado no Windows e mal escrito), Standard.snp (código multiplayer local, desatualizado, semelhante ao usado em Starcraft) e mais alguns módulos.
Teoricamente, em um futuro próximo (depois de reverter o
DiabloUI.dll ), o jogo pode se tornar multiplataforma - a menos que a Blizzard apresse-se em fechar a loja antes que o autor possa atrair entusiastas suficientes para resolver esse problema.
PS E, como no Diablo II, tudo não está tão claro: o jogo continua a ser vendido e suportado pela Blizzard, sua base de códigos é cerca de 8 vezes maior que o original, e há rumores de que a remasterização oficial está ao virar da esquina. engenharia no futuro previsível não precisa esperar.