Scopri la buona prassi per i vari aspetti delle transazioni all'interno dell'isola, insieme a suggerimenti per testare e risolvere i problemi della tua vetrina.
Utilizzo del dispositivo Verse Transazioni all'interno dell'isola
Il dispositivo Verse Transazioni all'interno dell'isola contiene un modello per le transazioni all'interno dell'isola. Include tutte le implementazioni degli aspetti chiave del modulo Marketplace nella API Verse. Ciò include oggetti, offerte, offerte bundle e la gestione degli acquisti tramite la UI predefinita della vetrina. Usare questo codice come guida può aiutarti a configurare rapidamente la tua vetrina.
Per accedere al dispositivo:
Vai a Verse Explorer.
Fai clic con il tasto destro sul nome del progetto.
Seleziona Aggiungi un nuovo file Verse al progetto.
Seleziona dispositivo Transazioni all'interno dell'isola.
Per utilizzare il codice così com'è, apri il codice Verse e modifica il file per:
Nomi oggetti
Descrizioni
Icone
Sostituisci i nomi predefiniti nel codice con nomi che corrispondono ai tuoi diritti e offerte.
Buone prassi di codifica
Puoi ottimizzare il codice Verse per migliorarne la scalabilità e le prestazioni dell'isola.
Organizzazione del flusso di lavoro
Una buona prassi nella programmazione è la separazione delle responsabilità. È consigliabile che file e funzioni si concentrino su un task specifico, così da facilitarne la manutenzione, man mano che il progetto cresce.
Ciò consente di ottenere file di codice più piccoli e ordinati, più facili da leggere e comprendere, semplificando le operazioni di debug.
Alcuni modi per applicare queste pratiche alle transazioni:
Inserisci le definizioni degli oggetti in un file separato.
Inserisci le offerte e le offerte bundle in un file separato.
Crea un dispositivo che gestisca tutte le offerte statiche predefinite.
Crea un dispositivo che gestisca solo le offerte dinamiche.
Crea un dispositivo che gestisca solo gli acquisti.
Organizzazione con i moduli
I moduli sono unità di codice atomiche che possono essere riutilizzate in più file. I moduli possono essere modificati nel tempo senza compromettere le dipendenze dei file in cui sono già utilizzati. Puoi separare blocchi di codice lunghi o ripetitivi, come le definizioni di diritto, in un file separato e importarli tramite l'istruzione using.
Un grande vantaggio dell'uso dei moduli è la necessità di definire una variabile per un membro del modulo una sola volta in un unico punto. Questo consente di condividere gli stessi dati tra diversi file di codice Verse, importando il modulo e facendo riferimento alle variabili. In caso di errori legati ai dati del modulo, i punti di verifica si riducono al solo modulo, invece di dover controllare ogni file che ne utilizza i contenuti.
Lo snippet seguente mostra come definire le informazioni di diritto per CornSeedPacket in un modulo.
EntitlementInfo<public> := module:
CornSeedPacket<public> := module:
Name<public><localizes> : message = "Corn seed pack"
Description<public><localizes> : message = "A pack of corn seeds. Opening a pack yields 10 corn seeds for planting."
ShortDescription<public><localizes> : message = "Contains 10 corn seeds for planting."SiaEntitlementInfo che CornSeedPacket sono definiti come moduli per consentirti di importare tutte le informazioni sul diritto e accedere direttamente alle variabili membro di CornSeedPacket, come la variabile Name.
Questo snippet mostra come importare il modulo EntitlementInfo per contribuire alla definizione del diritto corn_seed_pack.
Non è necessario riscrivere le stringhe per variabili come Name, poiché puoi fare riferimento direttamente alla variabile del modulo CornSeedPacket. Ciò riduce il rischio di errori visivi come i refusi.
Entitlements<public> := module:
using { EntitlementInfo }
# Using custom entitlement class to distinguish your entitlements.
my_island_entitlement<public> := class<abstract><castable>(entitlement){}
corn_seed_pack<public> := class<concrete>(my_island_entitlement):
var Name<override> : message = CornSeedPacket.Name
var Description<override> : message = CornSeedPacket.Description
var ShortDescription<override> : message = CornSeedPacket.ShortDescription
L'istruzione using richiede il percorso del file del modulo che desideri importare. In questo caso non è necessario un percorso file, poiché si presume che il modulo si trovi nella stessa cartella.
Miglioramento delle prestazioni dell'isola
Puoi migliorare la reattività dell'esperienza definendo i metodi di acquisto e concessione degli oggetti con l'effetto <suspends> e richiamandoli tramite spawn (generazione).
Questo permette alla funzione TryBuyOffer di completarsi in modo asincrono mentre il resto della logica di gioco continua a essere eseguito. In questo modo il gioco non si interrompe in attesa del completamento di una transazione.
TryBuyOffer(Player:player, Offer:offer)<suspends>:void=
Result := BuyOffer(Player, Offer)
OnButtonInteraction(Agent:agent):void=
if (Player := player[Agent]):
spawn{TryBuyOffer(Player, OfferType)}
Buone prassi per le icone
Le texture di gioco devono rispettare requisiti specifici per essere visualizzate correttamente in gioco. Quando crei texture in UEFN con immagini importate, assicurati che il file sorgente utilizzi dimensioni in potenze di due per altezza e larghezza. In questo modo, aumenta la compatibilità e la stabilità della tua isola su piattaforme diverse.
La potenza di due viene utilizzata anche nello streaming delle texture per ridurre la risoluzione delle texture sulle piattaforme con meno memoria.
Lo streaming delle texture contribuisce ai seguenti punti:
Modifica alla risoluzione di una texture
Determinazione della velocità di caricamento del gioco
Miglioramento alla qualità visiva del gioco
Risparmio della memoria GPU
Per ulteriori informazioni sulla regola della potenza di due e sul ridimensionamento delle texture, consulta Ridimensionamento delle texture.
Per informazioni sull'importazione di asset personalizzati in UEFN, consulta Importazione di asset. Per informazioni su come rendere disponibili asset come le texture in Verse, consulta Esposizione degli asset.
Test ed esecuzione del debug dei diritti
Le sessioni di Modifica in diretta e Playtest privato sono sessioni di debug. Le sessioni di debug influenzano i comportamenti di transazioni, diritti e offerte come segue:
Le transazioni non detraggono V-buck dagli account.
I diritti concessi e acquistati vengono rimossi al termine della sessione di debug.
Le sessioni di debug consentono l'accesso al menu Comando di debug.
Le tue offerte devono essere disponibili in una versione privata o di playtest dell'isola e accessibili a tutti i membri del team per poter essere utilizzate durante la fase di test. Gli oggetti offerti non sono considerati attivi. Le offerte diventano attive una volta che l'isola è pubblicata e resa pubblica.
Accesso al menu dei comandi di debug
Puoi accedere al menu dei comandi di debug premendo il tasto Esc su PC o Start/Options sul controller, quindi selezionando l'opzione Comandi di debug dal menu.
Comandi di debug della vetrina
Puoi trovare i comandi di debug della tua vetrina nella sezione Comandi di debug della vetrina, che include i seguenti comandi:
Nome comando | Descrizione |
Apri vetrina | Mostra una UI dinamica della vetrina con offerte per tutti i diritti disponibili, permettendo ai giocatori di acquistarli singolarmente. Permette di scegliere direttamente il diritto da testare. |
Assegna tutti i diritti | Riempie l'inventario di questo giocatore in modo che possieda il numero massimo di tutti i diritti disponibili. Puoi anche testare il comportamento in gioco per verificare se i giocatori hanno accesso a un oggetto in un'area non consentita. |
Assegna un diritto | Concede un diritto a un giocatore. Può concedere un gran numero di diritti lasciando comunque spazio nell'inventario del giocatore per testare l'acquisto di diritti non durevoli senza raggiungere la quantità massima. Se la concessione del diritto entra in conflitto con Puoi inoltre testare il comportamento in gioco per verificare se i giocatori hanno accesso a un oggetto in un'area non consentita. |
Forza rimozione diritti | Rimuove tutti i diritti posseduti dall'inventario del giocatore. Permette di reimpostare l'inventario del giocatore per continuare i test di acquisto. Questo comando può essere utile per testare i casi di Il comando è utile anche per velocizzare i test iterati, resettando rapidamente l'inventario. |
Stampa diritti di cui sei in possesso | Stampa tutti i diritti di cui sei in possesso nel registro di output. |
Gli acquisti non vanno mai a buon fine | OFF per impostazione predefinita. Quando è OFF, gli acquisti si comportano come previsto. Quando è ON, gli acquisti falliscono sempre, indipendentemente dalle condizioni. Gli acquisti falliscono sempre è utile per testare i casi di |