Oltre ai comuni metodi di promozione per aumentare la tua base di giocatori, puoi implementare i messaggi di invito direttamente all'interno del tuo gioco, incoraggiando i giocatori a invitare i propri amici e aumentare il gameplay cooperativo.
Il sistema di messaggi di invito presenta le seguenti funzionalità:
- Invitati Dinamici — Invita i giocatori a selezionare più amici da una lista di selezione, oppure invita un amico specifico.
- Dati di Lancio — Includi dati di lancio opzionali che possono essere letti tramite Player:GetJoinData() quando l'amico invitato si unisce. Esempi di casi d'uso includono indirizzare gli amici invitati a una posizione coordinata o personalizzare il gioco per l'invitato.
- Testo Personalizzabile — Personalizza il messaggio del messaggio di invito e il messaggio di notifica. Ad esempio, un messaggio di invito per il giocatore potrebbe dire "Chiedi ai tuoi amici di unirsi all'avventura!" e il messaggio di notifica per gli amici invitati potrebbe dire "{displayName} vuole che tu ti unisca alla loro avventura in {experienceName}!".
Puoi anche tenere traccia e premiare gli invitatori e gli invitati utilizzando il Sistema di Ricompensa per Inviti Amici.

Imposta le opzioni di invito
Per impostazione predefinita, il messaggio di invito per il giocatore mostra un menu dei propri amici con pulsanti Invita. Per personalizzare il messaggio, mirare a un amico specifico o includere dati di lancio nell'invito, dovrai impostare un oggetto ExperienceInviteOptions con le proprietà desiderate.
| Proprietà | Tipo | Descrizione |
|---|---|---|
| PromptMessage | string | Testo personalizzato mostrato nel messaggio di invito per il giocatore che invia, ad esempio "Chiedi ai tuoi amici di unirsi all'avventura!" per un invito a più amici, oppure "Invita questo amico a unirsi all'avventura!" per un invito a un amico specifico. Nota che se il tuo messaggio di invito personalizzato è abbastanza lungo da superare i limiti dell'interfaccia utente, non verrà mostrato. |
| InviteUser | number | Roblox UserId dell'amico specifico da invitare; se non fornito, il giocatore sarà invitato a scegliere da una lista di amici. |
| InviteMessageId | string | ID dell'asset che mappa a un tipo di asset Notifica. Questo asset è utilizzato per memorizzare/localizzare una stringa personalizzata per la notifica di invito che gli amici ricevono. Vedi Impostazione delle Opzioni di Notifica per ulteriori dettagli. |
| LaunchData | string | Utilizzato per impostare un parametro in Player:GetJoinData() quando un amico si unisce dalla notifica di invito. Massimo 200 caratteri. Vedi Includere dati di lancio per un esempio d'uso. |
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Costruisci le opzioni di invito con un messaggio di invito personalizzato
local inviteOptions = Instance.new("ExperienceInviteOptions")
inviteOptions.PromptMessage = "Chiedi ai tuoi amici di unirsi all'avventura!"Imposta le opzioni di notifica
Per impostazione predefinita, la notifica di invito che gli amici ricevono contiene il DisplayName del mittente, il nome utente e il nome del gioco. Per personalizzare il messaggio, puoi creare un asset Notifica nel Creator Dashboard e includere il suo ID asset come parametro di ExperienceInviteOptions.
Naviga al Creator Dashboard.
Simile ai badge, le stringhe di notifica sono legate a un gioco specifico. Trova la miniatura di quel gioco e cliccaci sopra.
Nella colonna di sinistra, sotto Coinvolgimento, clicca su Notifiche.
Nella regione centrale, clicca sul pulsante Crea una Stringa di Notifica.
Compila un nome identificativo (visibile solo per te) e il testo personalizzato della notifica. Nota che devi includere {experienceName} come segnaposto per identificare il nome del gioco per gli amici invitati, e puoi opzionalmente includere il DisplayName del mittente tramite il segnaposto {displayName}.
Esempi di stringhe di notifica:
- {displayName} vuole che tu ti unisca alla loro avventura in {experienceName}!
- {displayName} ha appena completato il sesto stadio di {experienceName}. Puoi farlo anche tu?
Quando sei pronto, clicca sul pulsante Crea Stringa di Notifica.
Nella pagina delle notifiche, nella tabella delle notifiche, clicca sul pulsante ⋯ nella colonna Azioni e seleziona Copia ID Asset.
Nell'oggetto ExperienceInviteOptions per il messaggio di invito, incolla l'ID asset come valore della proprietà InviteMessageId.
LocalScript - Invita più amicilocal SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayer-- Costruisci le opzioni di invito con l'ID utente dell'amicolocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.InviteMessageId = "ef0e0790-e2e8-4441-9a32-93f3a5783bf1"
Promuovi un invito
Per promuovere un invito, dovresti prima determinare se il giocatore può inviare un invito, in quanto la possibilità può variare a seconda della piattaforma o del giocatore. Una volta confermato, puoi visualizzare il messaggio di invito al giocatore.
- Chiama SocialService:CanSendGameInviteAsync(), incapsulato in un pcall() poiché è una chiamata di rete asincrona che potrebbe occasionalmente fallire.
- Se la possibilità di invito è confermata, chiama SocialService:PromptGameInvite() con l'oggetto di opzioni di invito come secondo argomento.
Una volta promosso, il giocatore vedrà un messaggio a schermo per invitare più amici, o l'amico specifico definito nell'oggetto di opzioni di invito. Quando il giocatore clicca poi sul pulsante Invita per uno o più amici, quegli amici riceveranno una notifica contenente il DisplayName, il nome utente e il nome dell'esperienza del mittente. Le notifiche possono essere ulteriormente personalizzate come descritto in Imposta le opzioni di notifica.
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Funzione per verificare se il giocatore può inviare un invito
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
SocialService:PromptGameInvite(player)
endIncludere dati di lancio
Per migliorare ulteriormente la cooperazione in-game o incentivare gli inviti dei giocatori, puoi includere dati di lancio in un messaggio di invito, utile per scenari come indirizzare amici invitati a una posizione coordinata o personalizzare il gioco per l'invitato.
Quando promuovi un invito, includi un oggetto ExperienceInviteOptions con i dati pertinenti che saranno utilizzati quando l'amico entra nel gioco, ad esempio l'Player.UserId del mittente, l'ID di un badge da assegnare all'amico al momento dell'ingresso, o una posizione coordinata per far spawnare l'amico. Se hai bisogno di compilare più pezzi di dati, codifica i dati utilizzando JSONEncode().
LocalScript - Invita più amicilocal HttpService = game:GetService("HttpService")local SocialService = game:GetService("SocialService")local Players = game:GetService("Players")local player = Players.LocalPlayerlocal data = {senderUserID = player.UserId,spawnLocation = {12, 48, 205.5}}local launchData = HttpService:JSONEncode(data)-- Costruisci le opzioni di invito con i dati di lanciolocal inviteOptions = Instance.new("ExperienceInviteOptions")inviteOptions.LaunchData = launchData-- Funzione per verificare se il giocatore può inviare un invitolocal function canSendGameInvite(sendingPlayer)local success, canSend = pcall(function()return SocialService:CanSendGameInviteAsync(sendingPlayer)end)return success and canSendendlocal canInvite = canSendGameInvite(player)if canInvite thenSocialService:PromptGameInvite(player, inviteOptions)endPer gli amici in ingresso che entrano tramite la notifica, verifica i dati di lancio lato server tramite Player:GetJoinData(). Se hai codificato più pezzi di dati in JSON per il messaggio di invito, ricorda di decodificarli con JSONDecode().
Script - Utilizzo dei Dati di Lancio dell'Invitolocal HttpService = game:GetService("HttpService")local Players = game:GetService("Players")local ATTEMPT_LIMIT = 10local RETRY_DELAY = 1local function onPlayerAdded(player)local launchDatafor _ = 1, ATTEMPT_LIMIT dotask.wait(RETRY_DELAY)local joinData = player:GetJoinData()if joinData.LaunchData ~= "" thenlaunchData = joinData.LaunchDatabreakendendif launchData thenlocal data = HttpService:JSONDecode(launchData)print(data.senderUserID)print(data.spawnLocation)elsewarn("Nessun dato di lancio ricevuto!")endendPlayers.PlayerAdded:Connect(onPlayerAdded)Se i dati di lancio esistono, puoi usarli per una vasta gamma di scenari di design, inclusi:
- Far spawnare l'amico in ingresso all'inizio di un impegnativo percorso ad ostacoli che il mittente ha appena completato, basato su una posizione coordinata fornita tramite i dati di lancio.
- Controllare se il mittente è nel luogo, basato sul proprio Player.UserId nei dati di lancio, e teletrasportare il personaggio dell'amico vicino al loro personaggio.