Disponible uniquement dans l'UEFN, ce modèle contient un petit jeu de style usine qui repose sur les concepts de persistance et de progression hors ligne.
Pour suivre les tutoriels disponibles dans ce modèle, vous devez disposer de connaissances élémentaires sur l'Unreal Editor pour Fortnite (UEFN) et être en mesure d'ouvrir un fichier Verse. Il s'agit des deux seules conditions préalables. Le modèle proprement dit contient les instructions du tutoriel.
Bienvenue dans le modèle LEGO® Usine à jouets du père Noël, qui vise à inciter les joueurs à revenir sur une île à l'aide de boucles de jeu attrayantes reposant sur les concepts de :
persistance - c'est-à-dire la conservation des données de jeu entre les sessions.
progression hors ligne - c'est-à-dire que l'usine continue de produire des jouets en l'absence du joueur tant que la place dans le conteneur d'usine le permet. La forêt de sucres d'orge continue elle aussi de pousser que les joueurs soient présents ou non.
En combinant ces deux concepts, vous pouvez également créer des mécaniques quotidiennes qui encouragent les joueurs à revenir sur votre île. Utilisez ce modèle pour apprendre à mettre en œuvre ces mécaniques sur votre propre île de vacances douillette !
Ce modèle contient trois tutoriels.
Débutant : ce tutoriel vous explique comment modifier la durée de croissance de la forêt de sucres d'orge dans Verse.
Intermédiaire : ce tutoriel vous explique comment modifier une variable dans Verse.
Avancé : ce tutoriel permet de modifier du code Verse et d'en ajouter.
Chaque tutoriel du projet vous explique comment utiliser Verse pour mettre en œuvre les mécaniques utilisées.
Le modèle est divisé en trois parties :
Jouer - commencez par consacrer 5 à 10 minutes au jeu pour avoir une idée de son fonctionnement.
Créer - vous suivrez ensuite les défis du tutoriel pour créer trois mods.
Explorer - enfin, vous pourrez explorer seul le modèle et décortiquer l'intégralité du code documenté pour comprendre son fonctionnement, puis créer votre propre jeu !
Jouer
Dans l'UEFN, chargez le modèle. Celui-ci est disponible avec les autres modèles LEGO. Commencez à jouer.
Dans le jeu, pour suivre la quête, dirigez-vous vers Sir Pawlar, qui vous indiquera la marche à suivre.
Suivez les instructions du jeu.
À un moment donné, le tutoriel vous demandera de terminer le jeu. Appuyez sur Échap, puis sur Fin de partie.
Patientez 2 minutes.
Au bout des 2 minutes, appuyez de nouveau sur Échap, puis sur Lancer le jeu.
Cette demande peut sembler étrange, mais elle illustre un point très important. Dans ce jeu, il se passe des choses même lorsque vous n'y jouez pas ! L'usine continue de produire, et la forêt de sucres d'orge continue de pousser.
Ces mécaniques clés peuvent encourager les joueurs à revenir dans votre jeu pour récolter ou collecter les objets produits ou les ressources qui ont poussé pendant leur absence.
Lorsque vous revenez dans le jeu, vous constatez les progrès accomplis pendant votre absence :
Pour cela, ouvrez le fichier factory_manager.verse. Il mesure le temps écoulé d'absence du joueur à l'aide de données persistantes et de l'horloge en temps réel. Il calcule ensuite la quantité d'objets que l'usine produit pendant cette période.
Après avoir produit la deuxième version d'usine, vous recevrez un message vous demandant de revenir à l'UEFN.
Vous avez terminé le premier tutoriel ! Vous pouvez maintenant passer aux défis créatifs.
Créer
On va commencer à s'amuser ! Trois défis vous attendent.
Premier à trouver : Freshman Flapjack. Il vous attend sur l'un des trois carrés jaunes.
Défi pour débutant : modifier la durée de repousse des sucres d'orge
Le premier défi est relativement simple. Vous y apprendrez à modifier le jeu en ajustant simplement certaines valeurs, en l'occurrence la durée de repousse des champs de sucres d'orge.
Près de Freshman Flapjack se trouve l'appareil Sucre d'orge, créé avec Verse.
Sélectionnez-le et assurez-vous que le panneau Détails est également sélectionné.
Modifiez le paramètre
CandyCaneRegrowthTime, testez-le et observez les résultats sur le déroulement du jeu.
Défi intermédiaire : modifier les tarifs de mise à niveau
Dans ce deuxième défi, vous allez plonger au cœur du code Verse.
Là encore, vous découvrirez comment changer le rythme et l'ambiance du jeu simplement en modifiant les tarifs de mise à niveau de votre usine.
Ouvrez le fichier upgrade_config.verse dans l'explorateur Verse.
Ce fichier comprend tous les tarifs de mise à niveau des différents éléments de l'usine. Le premier lot de tarifs concerne les chaînes de production. Le tableau des tarifs comporte quatre colonnes, chacune correspondant à l'une des chaînes de l'usine. Chaque ligne du tableau indique le tarif de mise à niveau d'une chaîne de production à ce niveau.
Verse# This file contains the data used to configure the factory in the game. # This includes upgrade prices, max levels, production speeds, storage capacities and more. # It also contains functions for getting all this data. using { /Verse.org/Simulation } using { Persistence } # Blubberchops: "Looks like this is the place to modify the upgrade prices for belts."Suivez les conseils de Blubberchops et baissez le prix de mise à niveau des chaînes de production. Vous pouvez également essayer d'augmenter le prix pour ralentir le rythme du jeu.
Lorsque vous êtes prêt, créez le code Verse et appliquez les modifications Verse pour les tester.
Pour en savoir plus sur les actions à effectuer à cette étape, consultez la rubrique Modifier et exécuter votre premier programme Verse.
Notez qu'à chaque fois que vous appliquez des modifications à la session, la progression de l'usine est réinitialisée.
Défi expert : le cadeau quotidien
Pour ce troisième et dernier défi, vous travaillez à la fabrication du cadeau quotidien à côté du professeur Flopkins.
Pour cela, vous devrez ajouter des données persistantes pour enregistrer la date à laquelle le cadeau a été ouvert pour la dernière fois. Vous devrez également corriger la logique de l'appareil Cadeau quotidien créé avec Verse.
Consultez la rubrique Utiliser des données persistantes pour en savoir plus sur l'utilisation des données persistantes dans Verse.
Si vous avez besoin d'aide pour relever ce défi, jetez un œil à la section Appareil Cadeau quotidien ci-dessous !
Ouvrez le fichier player_info.verse dans l'explorateur Verse.
Recherchez les commentaires du professeur Flopkins en haut du fichier.
Assurez-vous d'ajouter un champ de matrice
date_and_timeà la classeplayer_infopour enregistrer la date et l'heure auxquelles le cadeau a été ouvert pour la dernière fois. Assurez-vous également que la valeur du champ est définie dans le constructeurMakePlayerInfo.Verse# This file defines player_info, the collection of persistable information stored for each player. # It also contains functions for creating, updating and returning information about a player. using { /Verse.org/Simulation } using { Config } using { Time } # Maps each player to their persisted information. var PlayerInfoMap:weak_map(player, player_info) = map{}Corrigez les fonctions pour obtenir et définir le champ ajouté. Cette fois-ci, recherchez les commentaires du professeur Flopkins au bas du fichier.
Renseignez les lignes manquantes pour que les fonctions se comportent correctement. Vous pouvez consulter certaines des autres fonctions du fichier pour vous inspirer.
Verse# This file defines player_info, the collection of persistable information stored for each player. # It also contains functions for creating, updating and returning information about a player. using { /Verse.org/Simulation } using { Config } using { Time } # Maps each player to their persisted information. var PlayerInfoMap:weak_map(player, player_info) = map{}Une fois la nouvelle fonctionnalité des données persistantes prête, ouvrez le fichier daily_gift.verse pour modifier la logique permettant de faire apparaître le cadeau une fois par jour.
Vous observez qu'il manque deux éléments essentiels :
Il enregistre l'heure à laquelle le cadeau est ouvert et
vérifie si la date depuis la dernière ouverture du cadeau a changé.
Suivez les indications du professeur et ajoutez le code manquant.
Verse# When the gift is opened (harvested), give the selected player gold. OnHarvesting(Agent:agent):void= # Hide gift. set Opened = true PropManipulator.HideProps() # Show effect. spawn: ShowGiftEffect()Verse# Succeeds if the current date is different from the opening time. IsDateRolledOver()<decides><transacts>:void= # Get the current date. Now := RealTime.GetDateAndTime() # Professor Flopkins: "Hmm, the code to determine if the date has rolled over is also missing." # "Let's see.. first we'll get the selected player." # "Look in the OnHarvesting function to see how to do that."Vous pouvez maintenant tester votre solution ! Créez le code Verse et transmettez les modifications Verse pour tester votre code dans votre session.
Vous pouvez utiliser le bouton de débogage de Sub Zero pour avancer dans le temps et vous assurer que le cadeau réapparaît lorsque la date change.
Découvrir
Maintenant que vous avez relevé vos défis, nous allons explorer certains des autres appareils utilisés dans ce modèle.
Horloge en temps réel
L'horloge en temps réel indique l'heure actuelle en temps universel coordonné (UTC). Il anime également les aiguilles d'une horloge.
Vous pouvez l'utiliser pour contrôler des événements qui doivent se produire quotidiennement à une certaine heure ou pour suivre le temps écoulé.
Elle comprend une fonction de test intégré permettant de décaler l'heure actuelle. Extrayez les fichiers real_time_device.verse, date_and_time.verse et time_interval.verse.
Appareil Champ de sucres d'orge
L'appareil Champ de sucres d'orge, créé avec Verse, permet de contrôler un champ de sucres d'orge à récolter. Il fournit des ressources une fois la récolte terminée et relance la production. Vous pouvez l'utiliser pour faire repousser toutes sortes de ressources. Extrayez le fichier candy_cane_field.verse.
Module de persistance
Ce module contient toutes les données persistantes associées à chaque joueur. La classe principale est la classe player_info du fichier player_info.verse.
Ce fichier contient également toutes les fonctions de lecture et de manipulation des données. Vous devez également extraire les autres classes du module, car chacune définit certaines des données stockées pour chaque joueur. Vous pouvez les modifier ou ajouter des données supplémentaires en fonction de vos besoins.
# This file defines player_info, the collection of persistable information stored for each player.
# It also contains functions for creating, updating and returning information about a player.
using { /Verse.org/Simulation }
using { Config }
using { Time }
# Maps each player to their persisted information.
var PlayerInfoMap:weak_map(player, player_info) = map{}
# This tracks all persistable information for a player.
player_info := class<final><persistable>:
# The version of the current player info.
Appareil Cadeau quotidien
Cet appareil génère un cadeau quotidien, à condition qu'il fonctionne !
Voici une solution au défi expert, pour vous aider à tirer pleinement parti de l'appareil Cadeau quotidien, créé avec Verse. Vous pouvez l'utiliser pour toutes sortes d'événements et récompenses quoditiens.
Commencez par ajouter les données requises à la classe
player_infoet modifiez le constructeurMakePlayerInfodans le fichier player_info.verse :Verse# This tracks all persistable information for a player. player_info := class<final><persistable>: # The version of the current player info. Version:int = 0 # Latest harvest times of all candy canes. CandyCaneHarvestTimes:[]date_and_time = array{date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}, date_and_time{}} # The amount of gold the player has.Renseignez les fonctions
SetGiftOpeningTimeetGetGiftOpeningTime:Verse# Sets the gift opening time for the player. SetGiftOpeningTime<public>(Player:player, GiftOpeningTime:date_and_time)<decides><transacts>:void= CheckPlayerInfoForPlayer[Player] SourceInfo := PlayerInfoMap[Player] set PlayerInfoMap[Player] = player_info: MakePlayerInfo<constructor>(SourceInfo) GiftOpeningTime := GiftOpeningTime # Gets the gift opening time for the player.Examinez la classe
daily_giftdans le fichier daily_gift.verse. Commencez par indiquer le stockage de l'heure actuelle lors de l'ouverture du cadeau :Verse# When the gift is opened (harvested), give the selected player gold. OnHarvesting(Agent:agent):void= # Hide gift. set Opened = true PropManipulator.HideProps() # Show effect. spawn: ShowGiftEffect()Implémentez la fonction
IsDateRolledOver:Verse# Succeeds if the current date is different from the opening time. IsDateRolledOver()<decides><transacts>:void= # Get the current date. Now := RealTime.GetDateAndTime() SelectedPlayer := MaybeSelectedPlayer? GiftOpeningTime := GetGiftOpeningTime[SelectedPlayer] Now.Years <> GiftOpeningTime.Years or Now.Months <> GiftOpeningTime.Months or Now.Days <> GiftOpeningTime.Days
Gestionnaire d'usine
Le gestionnaire d'usine, créé avec Verse, initialise l'usine et assure son fonctionnement. Il gère le calcul du nombre de produits fabriqués pendant l'absence du joueur.
Ce calcul peut s'avérer complexe, car le stockage d'usine dépend de plusieurs chaînes de production. Dans une configuration plus simple, vous pourriez obtenir le nombre de produits fabriqués en calculant le temps écoulé depuis la dernière production, puis en divisant ce temps par la vitesse de production.