Animações · 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.
Agora chegamos à classe principal das disciplinas dentro dos formatos de dados do Outpost 2:
As animações.
As listas de animação começam com um cabeçalho global, que serve principalmente para a verificação de dados. Em seguida, seguem as definições concretas de animação, que se dividem em 3 níveis:
-
Animação
Uma animação é a instância superior; ela representa uma animação de uma unidade, de um edifício ou de uma 'animação de partículas' (impacto de cometas, clima, explosão) em uma determinada situação inicial. -
Quadro
Um quadro é uma única imagem dentro de uma animação. Uma animação pode conter um ou mais quadros. -
Subquadro
Um subquadro é a informação de que uma determinada bitmap deve ser desenhada em uma determinada posição de um quadro sob certos critérios. Um quadro pode conter um ou mais subquadros.
Em seguida, já seguem as definições individuais de animação.
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(32) | Número de animações | Quantos conjuntos de dados de animação estão disponíveis |
0x0004 | uint(32) | Número de quadros | Quantos frames devem estar presentes no total |
0x0008 | uint(32) | Número de Subquadros | Quantos subquadros devem estar presentes no total |
0x000c | uint(32) | Número de entradas opcionais | Quantas "entradas opcionais" existem. |
Animação
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(32) | Desconhecido 1 | Informações desconhecidas |
0x0004 | uint(32) | Caixa de Limite: Esquerda | Indica o início esquerdo (em pixels) da Bounding Box. |
0x0008 | uint(32) | Caixa de Limite: Cima | Indica o início superior (em pixels) da Bounding Box. |
0x000c | uint(32) | Caixa delimitadora: Largura | Indica a largura (em pixels) da Bounding Box. |
0x0010 | uint(32) | Caixa de Delimitação: Altura | Indica a altura (em pixels) da Bounding Box. |
0x0014 | uint(32) | Deslocamento: X | Indica o ponto médio horizontal da animação |
0x0018 | uint(32) | Deslocamento: Y | Indica o ponto médio vertical da animação |
0x001c | uint(32) | Desconhecido 2 | Informação desconhecida |
0x0020 | uint(32) | Número de quadros | Indica quantos quadros de animação estão contidos nesta animação |
0x0024 | uint(32) | Número de janelas | Indica quantas janelas devem ser aplicadas ao desenhar |
Os dados da camada superior, da animação, são prioritariamente dados administrativos - a Boundingbox refere-se às coordenadas da marcação em torno do veículo/edifício, quando este está selecionado e também indica qual área deve ser clicável.
O offset determina prioritariamente o "ponto zero"; o ponto que deve ser adicionado ou subtraído às coordenadas internas do jogo. Poderíamos dizer de forma mais matemática: o offset aqui indica a origem das coordenadas.
As janelas (Windows) são, assim como o offset, compostas por 4 valores uint(32) cada, que indicam uma área que é considerada utilizável para subquadros individuais. Fora das janelas, desde que seja apropriado para o bitmap, não se deve desenhar.
Estrutura
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(8) | Número de subquadros e alternância para Opcional 1, 2 | Este valor contém:
|
0x0001 | uint(8) | Desconhecido 1 e Alternar para Opcional 3, 4 | Este valor contém:
|
0x0002 | uint(8) | Opcional 1 | Desconhecido |
0x0003 | uint(8) | Opcional 2 | Desconhecido |
0x0004 | uint(8) | Opcional 3 | Desconhecido |
0x0005 | uint(8) | Opcional 4 | Desconhecido |
Subquadro
Endereço | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | caractere | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Deslocamento | Tipo de dado | Designação | Explicação |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Indica qual bitmap deve ser usada para este subquadro |
0x0002 | uint(8) | Desconhecido 1 | É desconhecido - no entanto, suspeito fortemente que se trata de uma prioridade de renderização (Z-Layer). |
0x0003 | uint(8) | Subframe-Id | Indica em qual subquadro estamos |
0x0004 | sint(16) | Deslocamento - Horizontal | Indica onde dentro do quadro o subquadro deve ser colocado, ou quantos pixels a imagem deve ser deslocada horizontalmente |
0x0006 | sint(16) | Offset - Vertical | Indica onde dentro do frame o subframe deve ser colocado, ou quantos pixels a bitmap deve ser deslocada verticalmente. |
Com isso, agora podemos montar frames individuais, bem como animações completas, demonstrado aqui como exemplo em uma animação mais complexa, a animação com o índice 500.
Animação 500
A animação 500 mostra como um transporte Plymouth, carregado com minério comum, é descarregado. Esta é uma das poucas animações que utiliza a funcionalidade de janelas.
E assim, a animação completa pode ser montada.
Infelizmente, ainda há um problema com a escotilha superior, pois o bit correspondente nas informações do tipo de gráfico não está definido.
Aqui estão mais alguns sprites lindamente animados do jogo: