Principe de fonctionnement
Les quêtes sont définies dans une DataTable utilisant la structure du plugin. Chaque ligne correspond à une quête et contient sa configuration : objectifs, conditions de déblocage, récompenses et automatisations. Au cours du jeu, le sous-système de quêtes lit cette DataTable et conserve l'état de chaque quête. Des fonctions Blueprint permettent de consulter cet état et de le modifier : une quête peut ainsi être mise en cours, terminée, abandonnée, échouée ou remise à l'état non obtenue selon la logique de votre projet.
Le composant ADS Quest Participant Component est à placer sur l'owner qui participe à une quête. Pour un donneur de quête, vous renseignez dans QuestsToGive les quêtes que son owner peut proposer. Pour un objectif de quête, vous renseignez son TargetType et ses TargetIDs afin d'indiquer quel type d'objectif représente son owner et à quels objectifs il correspond. Un même actor peut être à la fois donneur et objectif. Le composant interroge alors le sous-système : il affiche un indicateur de donneur lorsqu'une de ses quêtes peut être obtenue, ou un indicateur d'objectif lorsqu'il correspond à l'objectif actif d'une quête en cours.
Pendant la partie, le système envoie automatiquement des dispatchers pour que vos Blueprints puissent réagir sans surveiller manuellement les données :
OnStateChangedest appelé lorsqu'une quête change d'état.OnTrackedest appelé lorsqu'une quête est ajoutée au suivi, etOnUntrackedlorsqu'elle en est retirée.OnTrackedClearest appelé lorsque la liste des quêtes suivies est entièrement vidée.OnObjectiveUpdatedest appelé lorsque la progression d'un objectif est recalculée ou signalée manuellement.OnObjectiveStepReachedest appelé lorsque tous les objectifs d'un palier sont atteints.OnAllObjectivesReachedest appelé lorsque tous les paliers d'une quête sont atteints.OnQuestsCompletedest appelé après qu'une ou plusieurs quêtes sont réellement passées à l'état Terminé ; il fournit aussi les récompenses disponibles.OnLockedetOnUnlockedsont appelés lorsque des quêtes sont respectivement verrouillées ou déverrouillées.OnCompletionConflictest appelé lorsque plusieurs quêtes à terminaison automatique demandent les mêmes ressources à consommer et que le système ne peut pas choisir laquelle terminer.
Ces dispatchers servent par exemple à actualiser un journal de quêtes, une interface de suivi, un dialogue ou les marqueurs affichés dans le monde.