Par rapport à ce qui était vu pour Unreal 1, des points spécifiques sont utilisés pour permettre aux robots de se repérer dans les différents types de jeux :
Je vais détailler ceux que j'ai cochés.
AssaultRandomizer | ||
Utilisé dans les cartes de type 'assaut'. Les robots tendent à choisir la voie la plus courte pour atteindre leur objectif. Ce point placé entre deux PathNodes de cette voie ajoute une valeur définie dans "ToggledCost" qui la pénalise et force ainsi le robot à choisir une autre route. Encore faut-il qu'il n'y ait pas de contournement possible trop près.. Cet item peut être activé/désactivé par une gâchette dont l'"Event" est égal à son "Tag". Il me semble qu'il est initialement inactif (voir exemple). |
||
Ce point
de navigation utilisé dans les partie de type "Domination"
doit être placé près du sol et normalement espacé
des autres points de navigation. Son aspect dépend de l'équipe
qui en a le contrôle à un moment donné. Des évènements
peuvent être associés lorsqu'une équipe prend le contrôle.
- bSelfDisplayed : si vrai c'est l'affichage sous forme d'un grand X qui est visible. |
||
Définit
la position du drapeau dans les parties de type "Capturer le drapeau".Il
doit être bien fiché dans le sol (pas flotter au-dessus sinon
il n'est pas reconnu). Il doit y en avoir deux : - Team = 0 pour l'équipe rouge, 1 pour l'équipe bleue. |
||
Le passage d'une carte à une autre dans le cours du jeu en mode joueur solitaire se fait de la même façon pour Unreal et UnrealTournament. Il s'agit d'un mouvement linéaire et non réversible qui utilise l'acteur Teleporter.
Si l'on se souvient de Quake, on passait d'un niveau du jeu à un autre mais le processus était réversible. En revenant dans le niveau précédent, on le trouvait dans l'état où on l'avait laissé, et on pouvait accéder à une autre carte encore, grâce à une clé ramenée de ce périple. Bref, la mémoire des actions était conservée, ce qui n'est pas le cas dans notre affaire. Bien sûr on peut avoir deux versions d'un niveau (comme dans "One Day" pour U1), qui permettent de marquer deux temps différents, le jour et la nuit, mais ce n'est pas satisfaisant si l'on imagine une grande structure subdivisée en niveaux où l'on puisse se déplacer et agir à sa guise, sans ordre prédéfini.
Une telle structure est en effet trop lourde à organiser en une seule carte. Il est plus facile de concevoir des modules limités aisément éditables, sur lesquels on peut fignoler les détails. Du point de vue du joueur, le ralentissement lié au changement de carte n'est pas un gros inconvénient.
Une solution peut être d'utiliser la propriété bEnable des teleports. En gros, à chaque action dans un niveau correspond un couple défini de teleports unidirectionnel dont l'utilisation active l'état correspondant dans le niveau de destination.
Par exemple, je suis dans le niveau A. La sortie est inaccessible, la clé se trouvant dans le niveau B. J'utilise le téleport actif qui me conduit à B. Je prends la clé. C'est-à-dire que je fais disparaître le mobile qui la représente, et que j'active un nouveau téléport, situé au même endroit que le téléport par lequel je suis venu, et je retourne en A avec la clé, mais ce mouvement là m'amène sur un téléport physiquement distinct qui met le niveau dans l'état correspondant via un dispatcher. Voilà pour le principe.
Le problème est que lorsque le joueur arrive dans une carte, l'évent de l'acteur dans le rayon duquel il se trouve est inactif. Donc le téléport de retour ne peut agir via son Event. L'astuce est de placer ce téléport dans une boite. Un autre téléport situé juste après transporte le joueur au point désiré tout en activant cette fois le Dispatcher qui met le niveau en état. A chaque voyage impliquant une action spécifique correspond une boite "noire".
Dans la petite carte d'exemple
faite de deux cartes (niveau 1et niveau 2), on voit le clignotant rouge au-dessus
de la porte qui indique qu'on ne peut l'ouvrir. Un message propose d'aller chercher
la clé dans le niveau 2. Les téléports sont dans un renfoncement.
Un voyant coloré violet signale que nous en sommes au premier voyage.
Arrivés dans le niveau 2, la clé est bien visible :-) et il n'y
a qu'à la prendre. On retourne par la zone de téléport
vers le niveau 1, dans la boîte noire (rouge ici) qui active la gâchette
commandant la porte puisque nous avons la clé. Le voyant de la porte
passe au vert. Dans la salle suivante, la sortie reste bloquée, mais
un message indique que la pièce secrète du niveau 2 commandant
cette sortie est maintenant accessible. On repart vers le niveau 2, le voyant
est bleu cette fois indiquant qu'un nouveau téléport est activé,
le précédent inhibé, qui nous amène via une boite
noire (bleue..) au niveau 2 et là il n'y a plus de clé et en approchant
de la paroi du fond, celle-ci s'ouvre et on rentre dans une petite pièce
vide où un message nous dit que la sortie du niveau 1 est accessible.
Retour au niveau1 donc, un nouveau téléport nous fait passer par
une boite orange qui met le niveau 1 en état. Le voyant est vert au niveau
de la sortie, et un téléport nous envoit de là à
l'intro d'UT histoire de faire une fin.
Reste un problème d'affichage de messages d'erreur concernant les téléports,
qui n'empêche pas le processus, et que je vais corriger..
TELECHARGER
la carte d'exemple (Vous devez avoir installé auparavant
les ScriptedLights lumières
codées)
Un moyen simple de motiver
les robots pour aller dans un endroit, sans rajouter d'objet est d'en ajouter
un mais d' en annuler le contenu en modifiant les paramètres :
- Dans filter/OddsOfAppearing mettre 0
- Dans Inventory/MaxDesirability mettre une valeur d'autant plus élevée
qu'on voudra que ce soit efficace.