Obtén más información sobre las prácticas recomendadas para diversos aspectos de las transacciones en la isla y consejos para probar y depurar tu tienda.
Cómo utilizar el dispositivo de Verse para transacciones en la isla
El dispositivo de transacciones dentro de la isla de Verse incluye una plantilla para las transacciones dentro de la isla. Incluye todas las implementaciones para aspectos clave del módulo de Marketplace en la API de Verse. Esto incluye objetos, ofertas, ofertas combinadas y la gestión de compras mediante el uso de la IU predeterminada de la tienda. Si utilizas este código como guía, podrás configurar tu tienda con rapidez.
Sigue los pasos detallados a continuación para acceder al dispositivo:
Ve al Explorador de Verse.
Haz clic con el botón derecho del mouse en el nombre de tu proyecto.
Selecciona Añadir nuevo archivo de Verse al proyecto.
Selecciona Dispositivo de transacciones dentro de la isla.
Para utilizar el código sin modificaciones, ingresa al código Verse y edita el archivo:
Nombres de objetos
Descripciones
Íconos
Reemplaza los nombres predeterminados en el código por nombres que coincidan con tus privilegios y ofertas.
Prácticas recomendadas de codificación
Puedes refinar tu código Verse para mejorar la escalabilidad de tu código y el rendimiento de tu isla.
Cómo organizar el flujo de trabajo
Una práctica recomendada habitual en programación es la división de responsabilidades. Es conveniente que los archivos y las funciones se centren en realizar una tarea específica, de modo que resulte más fácil mantenerlos en el futuro a medida que se extienda el alcance del proyecto.
Esto da como resultado archivos de código más pequeños y organizados de forma clara, que son más fáciles de leer y comprender, lo que facilitará la depuración.
Entre las posibles formas de aplicar esto a las transacciones se incluyen las siguientes:
Colocar las definiciones de objetos en un archivo separado.
Colocar las ofertas y las ofertas por lotes en un archivo separado.
Crear un dispositivo que controle todas las ofertas estáticas y predefinidas.
Crear un dispositivo que solo controla las ofertas dinámicas.
Crear un dispositivo que solo controla las compras.
Cómo organizar con módulos
Los módulos son unidades atómicas de código que se pueden redistribuir para su uso en varios archivos. Los módulos se pueden modificar con el tiempo sin romper las dependencias en los archivos en los que ya se utiliza el módulo. Puedes separar unidades de código largas o repetitivas, como definiciones de privilegios, en un archivo diferente y, luego, importarlas con la instrucción using.
Una gran ventaja de utilizar módulos es que solo es necesario definir una variable para un miembro del módulo una vez en una ubicación. Esto te habilita para compartir los mismos datos en diferentes archivos del código Verse mediante la importación del módulo y la referencia a las variables. Si hay errores relacionados con los datos del módulo, se reducen los puntos de error que se deben comprobar en el módulo, en vez de en todos los lugares donde se utilizó el contenido del módulo.
El siguiente fragmento de código muestra cómo se puede definir la información de privilegios para CornSeedPacket en un módulo.
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."EntitlementInfo y CornSeedPacket se definen como módulos que te permiten importar toda la información de privilegios y acceder de forma directa a las variables de miembro de CornSeedPacket, como su variable Name.
Este fragmento muestra cómo importar el módulo EntitlementInfo para ayudar a definir el privilegio corn_seed_pack.
Ten en cuenta que no es necesario volver a escribir cadenas para variables como Name, ya que puede hacer referencia a la variable de forma directa desde el módulo CornSeedPacket. Esto reduce el riesgo de errores visuales, como errores tipográficos.
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
La instrucción using requiere una ruta de archivo al módulo que deseas importar. En este caso, no es necesario indicar una ruta de archivo, ya que se supone que el módulo se encuentra en la misma carpeta.
Cómo mejorar el rendimiento de la isla
Puedes mejorar la capacidad de respuesta de tu experiencia mediante la definición de tus métodos de compra y concesión de objetos con el efecto <suspends> y llamándolos con spawn.
Esto permite que TryBuyOffer se complete de forma asíncrona mientras otros aspectos de la lógica del juego continúan en ejecución. Esto también evita que el juego se pause hasta que se complete la transacción.
TryBuyOffer(Player:player, Offer:offer)<suspends>:void=
Result := BuyOffer(Player, Offer)
OnButtonInteraction(Agent:agent):void=
if (Player := player[Agent]):
spawn{TryBuyOffer(Player, OfferType)}
Prácticas recomendadas del ícono
Las texturas del juego tienen requisitos específicos para renderizarse correctamente en el juego. Al crear texturas en UEFN con imágenes importadas, asegúrate de que el archivo de imagen de origen utilice la potencia de dos para la altura y el ancho. Esto aumenta la compatibilidad y la estabilidad de tu isla en todas las plataformas.
La potencia de dos también se utiliza en la streaming de texturas para reducir su resolución en las plataformas que tienen menos memoria.
El streaming de texturas ayuda a realizar lo siguiente:
Cómo cambiar la resolución de una textura
Cómo determinar la velocidad de carga de un juego
Cómo aumentar la calidad visual del juego
Cómo ahorrar memoria de la GPU
Para obtener más información sobre la regla de la potencia de dos y el cambio de tamaño de las texturas, consulta Cómo cambiar el tamaño de las texturas.
Para obtener más información sobre cómo importar recursos personalizados en UEFN, consulta Cómo importar recursos. Para obtener más información sobre cómo exponer los recursos, por ejemplo, las texturas en Verse, consulta Cómo exponer recursos.
Cómo probar y depurar tus privilegio
Tanto las sesiones de edición en vivo como las de prueba privada son sesiones de depuración. Las sesiones de depuración tienen los siguientes efectos en las transacciones, los privilegios y el comportamiento de las ofertas:
Las transacciones no deducen las monedas V de las cuentas.
Los privilegios otorgados y comprados se eliminan al final de la sesión de depuración.
Las sesiones de depuración tienen acceso al menú Comando de depuración.
Tus ofertas deben estar disponibles en una versión privada y de prueba de juego de la isla, y ser accesibles para todos los compañeros de equipo a fin de que puedan utilizarlas durante la fase de prueba. Los objetos en oferta no se consideran activos. Las ofertas solo están activas una vez que la isla se publica y es pública.
Acceso al menú Comandos de depuración
Puedes acceder al menú Comandos de depuración presionando la tecla Esc en una PC o el botón Inicio u Opciones en el controlador y, a continuación, seleccionando la opción Comandos de depuración en el menú.
Comandos de depuración de la tienda
Puedes encontrar los comandos de depuración para tu tienda en Comandos de depuración de la tienda, donde tendrás acceso a los siguientes comandos:
Nombre de comando | Descripción |
Tienda abierta | Muestra una IU dinámica de la tienda con ofertas para todos los privilegios disponibles, lo que permite a los jugadores comprarlos de forma individual. Esto te permite elegir de forma directa el privilegio que deseas probar. |
Otorgar todos los privilegios | Completa el inventario de este jugador para que tenga la cantidad máxima de todos los privilegios disponibles. También puedes probar el comportamiento en el juego para verificar si los jugadores tienen acceso a un objeto en un área en la que no deberían. |
Otorgar un privilegio | Otorga una unidad de cada privilegio a un jugador. Esto puede otorgar una gran cantidad de privilegios mientras deja espacio en el inventario del jugador para seguir probando compras de derechos no duraderos sin alcanzar la cantidad máxima. Si el otorgamiento del privilegio entra en conflicto con También puedes probar el comportamiento en el juego si los jugadores tienen acceso a un objeto en un área en la que no deberían. |
Forzar la eliminación de privilegios | Esto elimina todos los privilegios del inventario del jugador. Esto te permite restablecer el inventario de un jugador para continuar probando ofertas de compra. Este comando puede ser útil para probar los casos Este comando también puede ser útil para acelerar la iteración en las pruebas al restablecer rápidamente el inventario. |
Imprimir privilegios en posesión | Imprime todos los privilegios que tienes en el registro de salida. |
Las compras siempre fallan | DESACTIVADO de forma predeterminada Cuando se establece en DESACTIVADO, las compras se comportan según lo previsto. Cuando se establece en ACTIVADO, las compras siempre fallarán, independientemente de las condiciones que indiquen que tendrían éxito. Las compras siempre fallan es útil para probar los casos |