Azulejos · bei.pm
Os formatos de arquivo descritos nesta página são baseados na análise técnica da propriedade intelectual de Dynamix, Inc. e Sierra Entertainment.
A propriedade intelectual faz parte da massa da Activision Publishing, Inc. / Activision Blizzard, Inc. e atualmente é de propriedade da Microsoft Corp..
As informações foram coletadas através de Engenharia Reversa e Análise de Dados para fins de arquivamento e interoperabilidade com dados históricos.
Nenhuma especificação proprietária ou confidencial foi utilizada.
O jogo pode ser adquirido atualmente como download em gog.com.
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(32) | Bytes Mágicos | |
0x0004 | uint(24) | Comprimento do bloco | |
0x0007 | uint(8) | Bandeiras |
Os Tiles são um formato de gráfico bitmap específico do Outpost-2. Eles se estendem por 13 conjuntos de tiles, chamados de "wells" (well0000.bmp
até well0012.bmp
), que estão dentro do volume maps.vol.
Os conjuntos de tiles / wells contêm o seguinte:
Nome do arquivo | Conteúdo |
---|---|
well0000.bmp | Uma imagem azul de 32x32px - ideal para testar se o carregador de imagens está funcionando |
well0001.bmp | Contém rochas claras, cadeias de montanhas sobre rochas claras e inúmeras variantes de crateras de impacto em rochas claras |
well0002.bmp | Contém 'Doodads' de rochas claras - ou seja, elementos que podem ser colocados para decorar (ou intencionalmente como estrutura, como muros) em rochas claras, incluindo vegetação |
well0003.bmp | Contém uma estrutura semelhante a crosta em rochas claras |
well0004.bmp | Contém rochas escuras, cadeias de montanhas sobre rochas escuras e inúmeras variantes de crateras de impacto em rochas escuras |
well0005.bmp | Contém 'Doodads' de rochas escuras - ou seja, elementos que podem ser colocados para decorar (ou intencionalmente como estrutura, como muros) em rochas escuras |
well0006.bmp | Contém uma estrutura semelhante a crosta em rochas escuras, assim como transições entre rochas claras e escuras |
well0007.bmp | Contém lava, incluindo 4-5 quadros de animação da mesma |
well0008.bmp | Contém areia e inúmeras variantes de crateras de impacto em areia |
well0009.bmp | Contém 'Doodads' de areia - ou seja, elementos que podem ser colocados para decorar (ou intencionalmente como estrutura, como muros) em areia |
well0010.bmp | Contém 48 transições de areia para rochas claras e escuras |
well0011.bmp | Contém as calotas polares do mapa, com rochas escuras como fundo |
well0012.bmp | Contém as calotas polares do mapa, com rochas claras como fundo |
É altamente recomendável, para uma implementação precisa, não renderizar os tiles antecipadamente para que possam ser armazenados em cache, pois os dados para o ciclo dia/noite ainda precisam ser processados - e haveria uma quantidade muito grande de dados.
Os tiles são gráficos 8bpp com paleta indexada, cada um com resolução de 32x32 pixels, dispostos entre si. Em um tileset assim formado, no entanto, pode haver muito mais.
O contêiner principal é composto por 2 seções: head
e data
.
Cabeçalho dos Azulejos
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(32) | Bytes Mágicos | |
0x0004 | uint(24) | Comprimento do bloco | |
0x0007 | uint(8) | Bandeiras | |
0x0008 | uint(32) | Versão / Bandeiras? | Isso poderia ser uma indicação da versão do formato de arquivo; em todos os arquivos que tenho, o valor aqui era |
0x000c | uint(32) | Largura (Resolução Horizontal) | Indica a largura do arquivo de imagem (em pixels). Para todos os poços do Outpost 2, o valor esperado aqui será |
0x0010 | uint(32) | Altura (Resolução Vertical) | Indica a altura do arquivo de imagem (em pixels). Para todos os poços do Outpost 2, aqui o valor |
0x0014 | uint(32) | Profundidade de cor? | A importância deste valor é desconhecida. Como ele contém o valor |
0x0018 | uint(32) | Profundidade de cor 2? | A importância deste valor é desconhecida. Pode ser uma profundidade de cor 'destino'. |
Após essas informações, haverá ainda um arquivo de paleta disponível no formato RIFF padronizado. A especificação exata pode ser encontrada - uma vez que as paletas também aparecem em outros lugares - em Paletas.
Dados dos Azulejos
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(32) | Bytes Mágicos | |
0x0004 | uint(24) | Comprimento do bloco | |
0x0007 | uint(8) | Bandeiras |
Finalmente, seguem os dados de pixel brutos, da esquerda para cima, linha por linha, até a parte inferior direita.
O valor dos dados nas gráficos, que geralmente estão na forma de bitmaps 8bpp, corresponde ao índice da cor na paleta de cores.
A engine de jogo provavelmente desenha os tiles *sob demanda*.
Isso parece ser devido ao ciclo dia-noite, que conhece 32 graduações de tiles individuais. Aparentemente, o valor de luminosidade é diminuído 'um pouco' a cada vez. Valores exatos ainda não foram determinados, estou trabalhando com a base de cálculo
v *= (daylight / 48) + 0.25;
usando os dados HSV dos pixels, onde daylight é um valor de 0-31 e v é um valor entre 0-1. Além disso, é importante considerar que no mapa ainda existem bordas de 16 tiles à esquerda e à direita (que servem para o aparecimento invisível de unidades).
Além disso, o ciclo dia-noite parece atualizar apenas uma coluna do mapa a cada ciclo de jogo.
Um ciclo dia-noite acelerado se parece com o seguinte: