Animações · bei.pm

Publicado em 19/11/2015·Atualizado em 13/02/2025·Português
Este texto foi traduzido automaticamente pelo OpenAI GPT-4o Mini.

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:

  1. 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.
  2. Quadro
    Um quadro é uma única imagem dentro de uma animação. Uma animação pode conter um ou mais quadros.
  3. 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:

  • 0x7F (máscara de bits): O número de subquadros utilizados neste quadro
  • 0x80: A informação sobre a presença de Opcional 1 e 2
0x0001 uint(8) Desconhecido 1 e Alternar para Opcional 3, 4

Este valor contém:

  • 0x7F (Máscara de bits): Desconhecido - Suspeito fortemente que se refere ao número de gameticks que passam até que o próximo quadro seja exibido
  • 0x80: A informação sobre a presença das opções 3 e 4
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:

Renderização da animação 500 ilustrada

Animação 500 totalmente montada

Fábrica de Edifícios Plymouth

Porto Espacial Eden

Centro Médico Eden

SCAT

Porto Espacial Plymouth

Easteregg:
Papai Noel

Easteregg:
Dog de Dans