*Note: I created the most of the tutorials using the Roboblitz and Gears of War editors. Based on the engine, and the version, some properties specified may be in slightly different locations than what is displayed in the screenshots.

If you need to learn how to create a basic map I would reccomend:
For UT99, UT2K3 & UT2K4: the Unreal Wiki.
For UT3: Waylon's Tutorials.



Interactions Classiques - Déplacer des Liquides



J'ai créé une simple map de test consistant en un peu de BSP, une skylight, un playerstart, un skydome et une DirectionalLight.

Je vais seulement utiliser des éléments de base de l'éditeur qui se trouvent dans les packages officiels. Pour cet exemple, j'ai également pris un static mesh en forme de feuille plate et un material d'eau.

Après plusieurs expérimentations avec SkullKrusher101, nous avons découvert que la manière de travailler avec un liquide qui s'élève ou se baisse que nous supposions la plus idéale et la plus simple, ne fonctionne pas. Il se trouve que très peu de volumes ont un onglet Movement dans leurs propriétés, ce "movement" étant la clé pour faire bouger quoique ce soit dans l'éditeur. Donc après avoir expérimenté plusieurs techniques avec différents volumes et différentes configurations de kismet, nous sommes arrivés à la conclusion qu'il n'y a pas de méthode simple.

Par conséquent, et ce jusqu'à ce que quelqu'un trouve une solution plus simple, nous avons trouvé que la seule méthode pour faire qu'un liquide s'élève ou se baisse est la suivante:

*Note : Il est supposé que vous savez créer un volume d'eau dans l'éditeur. Rappelez vous, l'eau est une combinaison de deux choses : un volume (qui gère la physique, les particules et les sons) et une surface, en général un static mesh, qui fait que votre eau ressemble bien à de l'eau lorsque vu du dessus (et idéalement aussi du dessous). La forme de votre volume d'eau est donc définie par son static mesh de surface, la forme du volume physique et/ou de ses frontières physiques (BSP, autres static meshes, terrain).

Utilisons notre "recette de cuisine" que j'ai présenté dans l'Introduction de cette série de tutoriaux:

1) Que souhaitons nous faire ?
Un bassin d'eau qu'un joueur peut faire monter ou descendre avec des triggers.

2) Ingrédients :
2 triggers
2 interpactors (surfaces d'eau)
2 Matinees
2 events Trigger Used
2 actions Toggle

3) Mélangeons le tout :
Dans le niveau, j'ai créé un petit bassin carré en BSP. Je vais créer un système pour "activer" l'eau lorsque le joueur touche un trigger au fond du bassin, ce qui va faire monter l'eau et permettre au joueur de sortir du bassin. Une fois l'eau arrivée en haut, un autre trigger va permettre de la faire redescendre.




Du côté de Kismet, je vais seulement m'occuper, dans un premier temps, de créer le mouvement des surfaces. Je vais utiliser deux interpactors en forme de feuille parce que le material que j'ai choisit est seulement visible d'un côté. Donc, j'ai retourné la deuxième feuille et l'ai placée juste en dessous de la première. De cette manière, nous allons avoir une surface d'eau visible d'au dessus et d'en dessous.

D'abord, je connecte mes trigger Used de manière ce que le trigger du bas déclenche une Matinee qui fera s'élever ma surface d'eau et pour que celui du haut déclenche une autre Matinee qui fera redescendre la surface. Dans les Matinees, j'utilise deux groupes, un pour chaque feuille, et règle leur Movement Track sur World Frame. Les events Used se désactive d'eux mêmes par l'intermédiaire de Toggles lorsqu'ils sont utilisés. L'event du trigger qui sert à baisser l'eau est désactivé par défaut en utilisant sa propriété bEnabled. Ensuite, j'utilise les Completed des Matinees pour réactiver leur trigger approprié. Les Matinees sont toutes les deux réglées sur RewindOnPlay.




Maintenant nous devons rajouter les Dynamic Water Volumes. Donc nous allons reprendre l'étape 2 mais avec des ingrédients supplémentaires :

2) Ingrédients :
4 Dynamics Water Volume
9 Toggles
8 Delays
1 variable ObjectList

3) Mélangeons le tout :
Nous allons commencer par créer une série de Dynamic Water Volumes qui seront tous désactivés par défaut, et nous allons ensuite les activer progressivement, un par un. Les volumes d'eau ne vont donc pas bouger. Ils sont mis les uns au dessus des autres et vont donc permettre de faire "monter" le niveau d'eau. Vous aurez sûrement à ajuster leur hauteur et l'intervalle de temps entre leur activation pour faire que le joueur monte de façon réaliste.




Donc basiquement, ce que nous allons faire est de les activer successivement un après l'autre avec de petites durées de temps entre chaque activation. Ma Matinee totale est de 5 secondes, donc je vais les activer toutes les 1 secondes. Si nécessaire, vous pourriez assigner des events à la Matinee (avec un Event Track) pour les activer. Je vais également ajouter un Toggle qui les désactivera au lancement de la map puisque le bassin est sensé être vide au départ. Je vais utiliser un event Level Startup pour faire ceci. Je vais aussi utiliser un ObjectList pour regrouper tous mes volumes en une seule référence.




Voila exactement le même système global mais cette fois, j'ai utilisé des events de la Matinee tous espacés d'une seconde:




4) Testez dans le jeu, cela fonctionne bien pour moi.

5) Ajustez votre système : D'abord, n'oubliez pas les problèmes de collision de vos movers et leur éclairage. Ensuite, pensez aux problèmes potentiels. Bien, nous avons des Toggles qui désactivent les triggers aux bons moments donc là pas de problèmes et je ne vois pas bien ce qu'il pourrait y avoir d'autre ...

Une autre petite chose que j'ai faite pour améliorer l'effet sous l'eau est que j'ai superposé des PostProcess Volumes sur mes Dynamics Water Volumes et les ais également ajouter au système. Ces volumes PostProcess permettent de donner l'impression de voir sous l'eau (flou, teinte …). Les deux images suivantes sont avec et sans les Delays et incluent ces volumes.




Voila exactement le même système global mais cette fois, j'ai utilisé des events de la Matinee tous espacés d'une seconde:




6) Ajustements pour les modes solo/multi-joueur. Comme vous l'avez sûrement lu dans la section Mode Solo/Co-op/Multi-joueur, il y a beaucoup de considérations à prendre en compte pour n'importe quel système que vous créez. Le système tel qu'il est là devrait fonctionner pour un mode solo ou un mode multi-joueur. Mais si vous y faites de gros changements, vous aurez à vous poser quelques questions : Que se passe t-il si deux joueurs se battent au dessus, autours ou à l'intérieur du bassin ? En fait, il semble que cela ne pose pas de problèmes.

Autres liquides: Changer l'eau en slime, lave, déchets toxiques, jus de fruit ou autres liquides.

Même s'il existe déjà des volumes de lave (Lava) ou de slime, il n'en existe pas de versions dynamiques. Par contre, convertir un Water Volume en un lava volume (ou Slime Volume) est très simple. Créer un Lava Volume, verrouiller la fenêtre de propriétés (le verrou se trouve en haut à gauche de la fenêtre). Puis créer un Dynamic Water Volume. Maintenant ouvrez les onglets du Lava Volume et du Dynamic Water Volume et changer les propriétés du Dynamic Water Volume avec les mêmes valeurs que pour le Lava volume. Il fonctionneront donc de la même manière. Bien sûr, vous aurez à changer le Material de la surface pour que ça ressemble plus à du slime ou à de la lave.