エンゲージメント報酬機能パッケージは、毎日のログインストリークやプレイセッション時間など、特定のプレイヤーアクティビティに対するゲーム内報酬を提供するカスタマイズ可能なフレームワークです。クライアントとサーバーのロジックに加えて、パッケージには報酬進捗状況、報酬ステータス、報酬を受け取るためのデフォルトの UI が含まれています。

パッケージを取得する
ここの [インベントリに追加] リンクをクリックして、 コア と エンゲージメント報酬 パッケージをスタジオのインベントリに追加し、インベントリに追加する:
Studio で ビュー タブを選択します。
クリック ツールボックス 。
In the ツールボックス window, click the インベントリ tab.
クリックする 機能パッケージコア タイル、次に エンゲージメント報酬機能パッケージ タイル。両方のパッケージフォルダが エクスプローラー ウィンドウに表示されます。
フォルダを ReplicatedStorage にドラッグします。
パッケージを初期化する
パッケージを ReplicatedStorage に移動し、エクスペリエンスをテストすると、EngagementRewardsExample スクリプトが ReplicatedStorage.EngagementRewards.Server.Examples で実行されます。
このスクリプトでは、複数のモジュールスクリプトの必要と、最終的にプレイヤーに報酬を授与する rewardClaimedHandlerFunction() 関数を定義することによって、エクスペリエンスで使用するパッケージを初期化する方法を示します。
この機能はブールを返す必要があります。例のスクリプトでは、プレイヤーに報酬を与えていないことがわかります;プレイヤー、報酬、そして主張される量だけが印刷されます。
エンゲージメント報酬の例
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- このハンドラー機能を自分が主張した報酬のハンドラー機能と交換する
-- この機能は、報酬が主張されたイベントを報酬ID でパスされたもので処理する必要があります
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
このスクリプトを直接修正するか、 サーバースクリプトサービス に移動することもできます。これがサーバーコードの好ましい場所の場合。そのまま、スクリプトはテスト目的にのみ有用です。
プレイヤーに報酬を与える方法は、経験によって異なります。いくつかのエクスペリエンスでは、経験ブーストを与えたり、プレイヤーのゴールドカウントを増やしたりする可能性があります。他のエクスペリエンスでは、カスタムインベントリシステムがあり、他の人はプレイヤーのバックパックにアイテムを置くかもしれません。しかし、すべての場合、rewardClaimedHandlerFunction() を自分の機能で置き換える必要があります。
報酬と基準を追加
ほとんどの報酬のカスタマイズは ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig 内で発生します。このモジュールスクリプトは、報酬とそれをアンロックするための要件を定義します。
You can see the full type declarations (or add new ones) in ReplicatedStorage.EngagementRewards.Configs.Types , が、おそらく EngagementRewardsConfig とのみ作業する必要があります。機能パッケージには、報酬タイプが 2つ含まれています: Time と Daily 。
local engagementRewardsConfig: Types.EngagementRewardsConfig = {[Types.RewardType.Time] = {tabDisplayName = "Time",tabOrder = 1,description = "Keep playing to unlock rewards!",rewards = {MinutesPlayed1 = {icon = 116913478160966,displayName = "Ice Lance",requiredSecondsInGame = 1 * 5,},-- もっと[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,effect = Types.RewardEffect.Valuable,},-- more
両方の報酬タイプは、画像のための Rデカールblox アセット IDのアイコンが必要です( はない )。おそらく UI で使用するディスプレイ名も必要です。1以外の値については、quantity を指定します。また、オプションで報酬を貴重なものとして指定することもできます( effect = Types.RewardEffect.Valuable )、UI で異なる背景フレームを与えるため。
変数 | タイプ | 説明 | デフォルト | 必須 :--- | :--- | :--- | :--- | :--- アイコン | 数 | Roblox UIアイコンのアセットID。| N/A | Yes displayName | 文字列 | UIで使用する報酬の名前。| The RewardId | 量がない | 数字 | 報酬として受け取るアイテムの数。| 1 | 効果なし | 報酬効果 | UIで使用する視覚効果。見る UI をカスタマイズする。| Types.RewardEffect.Default | No
時間報酬
Time 報酬は、ゲーム内で特定の秒数後にアンロックされます。これらの数をカスタマイズして、ニーズに合わせます。簡単なテストのために小さな数字を使用し、公開されたエクスペリエンスでは、10分後に報酬を授与し、30分後、1時間後、などと続けます。
乗算により、数秒で人間が作業しやすくなるため、2時間の間、2 * 60 * 60 よりは、7200 を指定することを好むかもしれません。
変数 | タイプ | 説明 | デフォルト | 必須 :--- | :--- | :--- | :--- | :--- requiredSecondsInGame | 数 | プレイヤーがゲーム内で報酬を獲得するために費やす秒数(正の整数)。| N/A | はい
デイリー報酬
Daily 報酬は、連続したデイリーログインの数が特定の後、アンロックされます。たとえば、プレイヤーが最初にログインした日、3つのポーションやシナモンロールを与えるかもしれません。翌日、より価値のある消耗品を報酬として受け取り、7日連続の後、新しい釣り竿のような耐久性の高いアイテムを受け取る可能性があります。
変数 | タイプ | 説明 | デフォルト | 必須 :--- | :--- | :--- | :--- | :--- requiredDaysVisitedStreak | 数 | プレイヤーが報酬を獲得するために接続する必要のある連続日数。| N/A | はい
2つの追加の毎日報酬の設定オプションは、DailyRewardTabConfig で利用可能です。
[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",isHiddenOnJoin = true,isAlignedToStreakResetTime = true,rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,},-- more
変数 | タイプ | 説明 | デフォルト | 必須 :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | 真になると、エクスペリエンスに参加すると自動的に報酬が表示されないようになります。 false の場合、プレイヤーが主張できる新しい毎日の報酬がある場合、ゲームに参加すると自動的に報酬がポップアップします。| 偽 | isAlignedToStreakResetTime がない | ブール | 真であると、最初の日1が受け取れる時間から 24時間後に、2日目の報酬が請求できます。 false の場合、日 2 報酬は、日 1 報酬可能時間後の最初の午前 0 時に請求できます。たとえば、プレイヤーが午後 11:00 (23:00) にログインし、1日目の報酬を受け取り、1日目の報酬を翌日午後 11:00まで受け取れないと主張する場合、真実は、翌日午後 11:00まで、1日目の報酬を受け取ることができないということです。「偽」は、12:00 AM (00:00) に 2日目の報酬を受け取ることができるということです。3日目以降の報酬は、前日の受取可能時間から 24時間常に利用可能です。| 偽 | いいえ
UI をカスタマイズする
前のセクションでは、tabDisplayName、tabOrder、およびdescriptionフィールドが、ユーザーインターフェイスの基本的なカスタマイズを可能にすることに気付いたかもしれません。ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings にも UI ストリングをいくつか見つけることができます。

effect 変数を使用して新しい報酬バックグラウンドを指定するには、ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames にフレームを追加します。次に、フレームの名前を Types.RewardEffect テーブルに ReplicatedStorage.EngagementRewards.Configs.Types 追加します。
より包括的なカスタマイズには、ReplicatedStorage.EngagementRewards.Objects でオブジェクトを修正します。たとえば、フレームの または の の を変更するかもしれません。
ユーザーインターフェイスの入り口は、必要なオブジェクトを取得し、UI を初期化する ReplicatedStorage.EngagementRewards.Client.UIController スクリプトです。トップレベルオブジェクト (子を追加するかプロパティを変更するのみではない) を追加または名前変更する場合、このフォルダ内のコードを更新して処理する必要があります。