Enfin! Je m'attaque enfin à la dernière face de mon 'newmeta/newmap': les tiles spéciaux. Il y avait déjà les blocs spéciaux, auxquels on peut attacher des zones de collision et des actions. Il y a les pentes qui se passent de commentaires et les tiles aux propriétés "directes" qui permettent de combiner jusqu'à 6 propriété distincte (eau, sol, air, lianes, ...) librement.
Dans le cas des "nouveaux" tiles, le script définissant le jeu va pouvoir encoder librement les propriétés voulues pour chaque type de tile. J'aime y penser comme à un accès indirect, mais c'est probablement parce que j'ai fait trop d'assembleur :-P. Et ça ne s'arrête pas là: je veux les utiliser pour les tapis roulants, le sol qui glisse, et ce genre de choses. Chaque type permet donc aussi d'aller paramétrer des valeurs le concernant auprès des différents contrôleurs.
En pratique, on va définir dans un fichier script.gam
tile 8 {
is flowdn "0055220000552200"
props fc8 # WATER
swim.flow = (0,512)
}
La première commande dans le block, is
est utilisée dans l'éditeur de niveau, pour fixer le graphisme représentant le type de tile. La commande props
donne les fameuses propriétés indirectes. Ces deux-là existent aussi pour les blocs interactifs. La dernière sera passée à une nouvelle fonction SwimControllerFactory::setTileVariable()
qui s'occupera de tout ce qu'il y a derrière le signe =
et enregistrera le "mouvement forcé" à appliquer dans GobSwimController::think()
quand on se trouve sur ce genre de tile.
at least 2020 2019. Now is the time to get it done. At last. The syntax of the new "tile" description will look as much as possible to that of the "block" description, used for collectibles and more. Like them, it can describe the value of cando() flags to be used by controllers with a props statement.
Quelque jours plus tard, j'ai enfin ajouté le code qu'il faut au contrôleur utilisé pour la nage, téléchargé une nouvelle map avec des tiles "pousseurs" sous la cascade, et voilà: une première mise en application du concept où Bilou, tel un Fury, se fait embarquer vers le fond, puis un poil sur le côté avant d'être recraché vers le haut par les remous...
this looks so good
ReplyDeleteca donne une animation très fluide, très réussie
ReplyDeleteMerci les gars ^_^
ReplyDeleteJ'espère que les explications étaient un minimum compréhensible quand-même. (pas évident de rendre ça accessible depuis l'extérieur du code)