Animations · bei.pm

Publié le 19/11/2015·Mis à jour le 13/02/2025·French
Ce texte a été traduit automatiquement par OpenAI GPT-4o Mini.

Les formats de fichiers décrits sur cette page sont basés sur l'analyse technique de la propriété intellectuelle de Dynamix, Inc. et Sierra Entertainment.
La propriété intellectuelle fait aujourd'hui partie de l'actif de Activision Publishing, Inc. / Activision Blizzard, Inc. et est actuellement détenue par Microsoft Corp..

Les informations ont été collectées par Reverse Engineering et Analyse de données dans le but d'archivage et d'interopérabilité avec des données historiques.
Aucune spécification propriétaire ou confidentielle n’a été utilisée.

Le jeu peut actuellement être acheté en téléchargement sur gog.com.

Maintenant, nous arrivons à la classe maîtresse des disciplines au sein des formats de données d'Outpost 2 :
Les animations.

Les listes d'animations commencent par un en-tête global, qui sert principalement à la vérification des données. S'ensuivent les définitions concrètes des animations, qui se divisent en 3 niveaux :

  1. Animation
    Une animation est la plus haute instance ; elle représente une animation d'une unité, d'un bâtiment ou d'une 'animation de particules' (impact de comète, météo, explosion) dans une situation donnée.
  2. Frame
    Une frame est une image unique au sein d'une animation. Une animation peut contenir une ou plusieurs frames.
  3. Subframe
    Un subframe est l'information indiquant qu'une certaine bitmap doit être dessinée à une position spécifique d'une frame selon certains critères. Une frame peut contenir un ou plusieurs subframes.

Ensuite, suivent directement les définitions des animations individuelles.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Nombre d'animations

Combien de jeux de données d'animation sont disponibles

0x0004 uint(32) Nombre de frames

Combien de cadres devraient être présents au total

0x0008 uint(32) Nombre de sous-trames

Combien de sous-cadres devraient être présents au total

0x000c uint(32) Nombre d'entrées optionnelles

Combien de "entrées optionnelles" sont présentes.

Animation

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(32) Inconnu 1

Informations inconnues

0x0004 uint(32) Boîte englobante : Liens

Indique le début gauche (en pixels) de la Bounding Box.

0x0008 uint(32) Boîte englobante : Haut

Indique le début supérieur (en pixels) de la Bounding Box.

0x000c uint(32) Boîte englobante : Largeur

Indique la largeur (en pixels) de la Bounding Box.

0x0010 uint(32) Boîte englobante : hauteur

Indique la hauteur (en pixels) de la Bounding Box.

0x0014 uint(32) Décalage : X

Indique le point central horizontal de l'animation

0x0018 uint(32) Décalage : Y

Indique le centre vertical de l'animation

0x001c uint(32) Inconnu 2

Informations inconnues

0x0020 uint(32) Nombre de frames

Indique combien de cadres d'animation sont inclus dans cette animation

0x0024 uint(32) Nombre de fenêtres

Indique combien de fenêtres doivent être utilisées lors du dessin

Les données de la couche supérieure, de l'animation, sont principalement des données administratives - la Boundingbox désigne les coordonnées de la marque autour du véhicule/bâtiment, lorsque celui-ci est sélectionné, et indique également quelle zone doit être cliquable.

L'offset détermine principalement le "point zéro" ; le point à additionner ou à soustraire aux coordonnées internes du jeu. On pourrait également dire de manière mathématique : l'offset désigne ici l'origine des coordonnées.

Les fenêtres, tout comme l'offset, se composent chacune de 4 valeurs uint(32), qui définissent une zone considérée comme utilisable pour des sous-images individuelles. En dehors des fenêtres, il ne doit pas être dessiné, sauf si cela est prévu pour la bitmap.

Cadre

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(8) Nombre de sous-châssis et bascule pour option 1, 2

Cette valeur contient :

  • 0x7F (masque de bits) : Le nombre de sous-images utilisées dans ce trame
  • 0x80 : L'information sur la présence des options 1 et 2
0x0001 uint(8) Inconnu 1 et bascule pour optionnel 3, 4

Cette valeur contient :

  • 0x7F (masque de bits) : Inconnu - Je soupçonne fortement qu'il s'agit du nombre de ticks de jeu qui s'écoulent avant que le prochain cadre ne soit affiché
  • 0x80 : L'information sur la présence des options 3 et 4
0x0002 uint(8) Optionnel 1

Inconnu

0x0003 uint(8) Optionnel 2

Inconnu

0x0004 uint(8) Optionnel 3

Inconnu

0x0005 uint(8) Optionnel 4

Inconnu

Sous-châssis

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF caractères
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Décalage Type de données Désignation Explication
0x0000 uint(16) Bitmap-Id

Indique quelle bitmap doit être utilisée pour ce sous-cadre

0x0002 uint(8) Inconnu 1

C'est inconnu - je soupçonne cependant fortement qu'il s'agit d'une priorité de rendu (couche Z).

0x0003 uint(8) Id de sous-châssis

Indique dans quel sous-élément nous nous trouvons

0x0004 sint(16) Décalage - Horizontal

Indique où le sous-frame doit être placé à l'intérieur du cadre, ou de combien de pixels la bitmap doit être décalée horizontalement.

0x0006 sint(16) Décalage - Vertical

Indique où le sous-cadre doit être placé à l'intérieur du cadre, ou de combien de pixels l'image bitmap doit être déplacée verticalement

Nous pouvons désormais assembler des cadres individuels ainsi que des animations complètes, comme démontré ici par un exemple d'une animation plus complexe, l'animation avec l'index 500.

Animation 500

L'animation 500 montre comment un fourgon Plymouth, chargé de minéraux ordinaires, est déchargé. C'est l'une des rares animations qui utilise la fonctionnalité de fenêtrage.

Voici comment l'ensemble de l'animation peut être assemblé.
Malheureusement, il y a encore un problème avec la trappe de chargement supérieure, car le bit correspondant dans les informations de type graphique n'est pas défini.

Voici quelques autres sprites magnifiquement animés du jeu :

Rendu de l'animation 500 illustré

Animation 500 entièrement assemblée

Usine de bâtiments de Plymouth

Port spatial d'Eden

Centre médical d'Eden

SCAT

Port spatial de Plymouth

Easteregg :
Père Noël

Easteregg :
Dans le chien