友達紹介システムは、既存のプレイヤーに新しいプレイヤーをゲームに連れてくることを促し、プレイヤーのリテンションと全体的なエンゲージメントを向上させます。プレイヤーは、プレイヤー招待プロンプト から、またはデフォルトのゲーム内招待メニューから紹介リンクをアクセスし、共有することができます。
開発者として、報酬システムを宣伝するためにカスタマイズされたバナーを作成し、共有可能な紹介リンクを使用して以下を行うことができます:
- どのプレイヤーが他のプレイヤーをゲームに成功裏に招待したかを追跡します。
- どのプレイヤーが他のプレイヤーからの紹介リンクの招待を使用してゲームに参加したかを追跡します。
- 招待者と招待された両方に報酬を作成し、配布します。
紹介システムを実装するには、紹介イベントを設定し、紹介報酬を作成する必要があります。GetJoinData() の ReferredByPlayerId プロパティは、すべての種類の招待に対して自動的にポピュレートされ、紹介しているプレイヤーのユーザーIDにアクセスすることができます。このデータに Players.PlayerAdded イベントでアクセスして、招待者を特定し、招待者と招待された両方に報酬を付与します。
function onPlayerAdded(player)
local referredByPlayerId = player:GetJoinData().ReferredByPlayerId
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
referrerEvent:FireClient(player, referredByPlayerId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
プレイヤーが報酬システムを理解できるように、カスタマイズされた報酬バナーを友達招待モーダルの上部に実装して、獲得可能な報酬の詳細を表示してください。
紹介イベントを設定する
紹介イベントを設定するには:
- ReplicatedStorage に RemoteEvent を設定して、紹介が受信されたときにクライアントと通信するためのリモートイベントを作成します。
- ReferredByPlayerId を使用して招待者のユーザーIDを取得し、Players.PlayerAdded イベント中にサーバーサイドスクリプトでプレイヤーの参加を追跡し、紹介ロジックを処理します。
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 紹介を処理するためのRemoteEventを作成または取得
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- プレイヤーが参加したときにトリガーされる関数
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- プレイヤーが紹介によって招待されたか確認
if referredByPlayerId and referredByPlayerId ~= 0 then
-- 招待者のIDを渡しながら、クライアントに紹介イベントを発火
referrerEvent:FireClient(player, referredByPlayerId)
-- 招待者と招待された人に報酬を付与するための追加ロジックはここに追加できます
-- 例: rewardReferrer(referredByPlayerId)
-- 例: rewardInvitee(player)
end
end
-- PlayerAddedイベントに関数を接続
Players.PlayerAdded:Connect(onPlayerAdded)
紹介報酬を付与する
参加を促すために、招待者と招待された人の両方に報酬を付与します。例えば、友達がゲームに参加したときに招待者にバッジやゲーム内通貨を与え、招待された人には紹介リンクを通じて参加した際のウェルカム報酬を与えることができます。
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 紹介を処理するためのRemoteEventを作成または取得
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- プレイヤーが参加したときにトリガーされる関数
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- プレイヤーが紹介によって招待されたか確認
if referredByPlayerId and referredByPlayerId ~= 0 then
-- 招待者のIDを渡しながら、クライアントに紹介イベントを発火
referrerEvent:FireClient(player, referredByPlayerId)
-- 招待者に報酬を付与する関数
function rewardReferrer(referrerId)
local referrerPlayer = Players:GetPlayerByUserId(referrerId)
if referrerPlayer then
-- 招待者に報酬を付与
-- 例: referrerPlayer.leaderstats.Coins.Value += 100
end
end
-- 招待された人に報酬を付与する関数
function rewardInvitee(player)
-- 招待された人に報酬を付与
-- 例: player.leaderstats.WelcomeBonus.Value += 50
end
end
end
-- PlayerAddedイベントに関数を接続
Players.PlayerAdded:Connect(onPlayerAdded)
報酬バナーを作成する
報酬バナーは、ユーザーに友達をゲームに招待するよう促し、獲得可能な紹介報酬に関する詳細を表示します。これらのバナーは、友達招待モーダルの上部に表示されます。
カスタマイズされた報酬バナーを作成するには:
- Creator Hub で Creations に移動し、紹介イベントを設定したゲームを選択します。
- Engagement ⟩ Referral Rewards に移動します。
- Add Reward Details をクリックします。
- Referral Rewards ページで:
- デフォルトのアイコンをゲームを表す画像に置き換えます。
- バナーに表示する報酬名を入力します。
- プレイヤーにバナーを表示したい開始日と終了日を選択します。
- (オプション)報酬に関する詳細を含む説明を入力します。
- (オプション)報酬制限を追加したい場合は、招待者ごとの最大報酬数を入力します。たとえば、招待者ごとに最大3つの報酬を制限します。
- Save をクリックして変更を保存します。
- Publish をクリックしてプレイヤーにバナーを表示します。
さまざまなバナーを作成できますが、一度に公開して表示できるバナーは1つだけです。公開されたバナーが、Studio 内で実装した紹介システムを正確に説明していることを確認してください。
紹介システムの悪用を防ぐ
プレイヤーが友達紹介システムを悪用しないように、保護策を実装できます。
- 一度限りの報酬を提供し、招待された人が一度だけ報酬を受け取れるようにします。
- 招待者が別の紹介を送信できる前にクールダウン期間を導入します。
- 異常な活動を監視し、ユーザーを禁止したり、報酬をキャンセルするなどの是正措置を実施します。
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
-- 紹介用のデータストアを作成または取得
local referralDataStore = DataStoreService:GetDataStore("ReferralDataStore")
-- 紹介を確認およびマークする関数
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- プレイヤーの紹介データを読み込む
local success, alreadyReferred = pcall(function()
return referralDataStore:GetAsync(tostring(player.UserId))
end)
if not success then
warn("プレイヤーの紹介データの取得に失敗しました:", player.UserId)
return
end
if referredByPlayerId and referredByPlayerId ~= 0 and not alreadyReferred then
-- 招待者と招待された人に報酬を付与
rewardReferrer(referredByPlayerId)
rewardInvitee(player)
-- DataStoreで紹介されたことをマーク
local saveSuccess, err = pcall(function()
referralDataStore:SetAsync(tostring(player.UserId), true)
end)
if not saveSuccess then
warn("プレイヤーの紹介状況の保存に失敗しました:", player.UserId, err)
end
end
end
-- プレイヤー参加時に関数を接続
Players.PlayerAdded:Connect(onPlayerAdded)
よくある質問
この機能を使用できるゲームはどれですか?
この機能は、少なくとも1日稼働しているすべてのゲームに対して開放されており、コミュニティ基準 に違反しないものです。
どのプレイヤーが紹介の恩恵を受けられますか?
すべてのプレイヤーが紹介を通じて報酬を獲得する資格があります。
招待はRoblox上のプレイヤーの友達に制限されていますか?
いいえ、プレイヤーはRobloxプラットフォーム上でまだ接続されていない友達にも招待を送信できます。
紹介リンクは期限切れになりますか?
リンクは決して期限切れになりません。
この機能を最大限に活用するにはどうすればよいですか?
ゲーム内ボタンを追加して紹介システムを宣伝し、プレイヤーが紹介を利用するよう促してください。ボタンに説明的なタイトルを付け、ボタンクリックイベントを友達招待モーダルに接続して、プレイヤーが報酬バナーを見ることができるようにします。