Cómo crear un gamepass y venderlo en tu juego

Claim Your Loot

·

Portada del artículo «Crear un gamepass y venderlo», de la sección Robux y monetización

Un gamepass es una compra que se hace una vez y dura para siempre en tu juego: el acceso VIP, la mochila más grande, la velocidad extra. Crearlo son cinco minutos en la web de Roblox. Lo que la mayoría hace mal es la otra mitad: comprobar quién lo tiene, sin que se pueda falsear y sin llamar a los servidores de Roblox cien veces por minuto.

En la demo puedes poner tu precio y tus ventas previstas y ver cuántos Robux te quedan de verdad después de la comisión.

Respuesta rápida

Crea el gamepass desde la página de tu experiencia, copia su ID, y en el juego usa MarketplaceService:UserOwnsGamePassAsync(userId, gamePassId) en el servidor, envuelto en pcall y guardando el resultado en una tabla para no repetir la consulta. Para vender, PromptGamePassPurchase.

Lo que necesitas antes de empezar

Paso 1: crear el gamepass

En la web de Roblox, en la página de tu experiencia: Associated Items → Passes → Create a Pass. Le pones nombre, descripción e icono.

Tres cosas que ahorran disgustos:

  • El icono cuadrado y legible en pequeño. Se ve a tamaño miniatura en la tienda del juego.
  • La descripción dice qué da exactamente. «VIP» no significa nada; «Duplica las monedas que ganas y te da acceso a la sala VIP» sí. Y evita reembolsos y quejas.
  • El precio se pone después, editando el pass ya creado. Es un paso aparte y mucha gente cree que se le ha olvidado.

Paso 2: coger el ID

En la página del pass, el número que sale en la URL. Ese es el gamePassId y es lo único que necesita tu código.

No lo confundas con el ID de un producto para desarrolladores. Los gamepasses se compran una vez; los developer products se pueden comprar muchas veces (paquetes de monedas, revivir). Cada uno tiene su función y su ID, y mezclarlos es un error muy típico.

local ID_VIP = 123456789    -- pon aqui el tuyo

Paso 3: comprobar quién lo tiene

local Mercado = game:GetService("MarketplaceService")
local Jugadores = game:GetService("Players")

local ID_VIP = 123456789
local cache = {}      -- jugador -> true/false

local function tieneVip(jugador)
	if cache[jugador] ~= nil then
		return cache[jugador]
	end

	local ok, resultado = pcall(function()
		return Mercado:UserOwnsGamePassAsync(jugador.UserId, ID_VIP)
	end)

	if not ok then
		warn("No se pudo comprobar el pass: " .. tostring(resultado))
		return false          -- ante la duda, no damos la ventaja... pero tampoco la cacheamos
	end

	cache[jugador] = resultado
	return resultado
end

Jugadores.PlayerRemoving:Connect(function(jugador)
	cache[jugador] = nil
end)

Tres detalles que son el artículo entero:

  • pcall obligatorio. UserOwnsGamePassAsync sale a internet. Falla de vez en cuando, y sin pcall te tumba el script en el que esté.
  • La caché. Sin ella, si compruebas el pass cada vez que el jugador hace algo, te comes el límite de peticiones y empieza a devolver errores. Con ella, una consulta por sesión.
  • El error no se cachea. Fíjate en que el return false del fallo no escribe en cache: así, si fue un problema puntual, la siguiente comprobación lo vuelve a intentar. Si cachearas el false, un fallo de red le quitaría el VIP a alguien que pagó hasta que se reconectara.

Paso 4: aplicar la ventaja

Siempre en el servidor:

Jugadores.PlayerAdded:Connect(function(jugador)
	jugador.CharacterAdded:Connect(function(personaje)
		if tieneVip(jugador) then
			local humanoide = personaje:WaitForChild("Humanoid")
			humanoide.WalkSpeed = 24        -- lo normal son 16
		end
	end)
end)

Va dentro de CharacterAdded porque el personaje se crea de nuevo cada vez que el jugador muere, y con él vuelven los valores por defecto.

Si la ventaja es «gana el doble de monedas», el sitio donde se aplica es donde se suman las monedas, no en la interfaz:

local function darMonedas(jugador, cantidad)
	if tieneVip(jugador) then
		cantidad = cantidad * 2
	end
	-- ...sumar cantidad
end

Paso 5: el botón de compra

Desde un LocalScript, porque la ventana de compra la abre el cliente:

local Mercado = game:GetService("MarketplaceService")
local jugador = game:GetService("Players").LocalPlayer
local ID_VIP = 123456789

script.Parent.Activated:Connect(function()
	Mercado:PromptGamePassPurchase(jugador, ID_VIP)
end)

Y en el servidor, para enterarte de que la compra salió bien:

Mercado.PromptGamePassPurchaseFinished:Connect(function(jugador, idPass, comprado)
	if idPass ~= ID_VIP then return end
	if not comprado then return end

	cache[jugador] = true           -- actualizamos la cache al momento

	local personaje = jugador.Character
	if personaje then
		local humanoide = personaje:FindFirstChild("Humanoid")
		if humanoide then
			humanoide.WalkSpeed = 24
		end
	end
end)

Sin esa última parte, el jugador paga y no nota nada hasta que se reconecta. Es la queja más repetida de los gamepasses mal montados.

El recorrido de la compra de un gamepass y el reparto del precio

Paso 6: esconder el botón a quien ya lo tiene

Un detalle pequeño que se agradece: si el jugador ya compró el pass, que no le sigas ofreciendo comprarlo. Como la comprobación es del servidor, se lo mandas al cliente con un RemoteEvent al entrar, o con un BoolValue dentro del jugador que el cliente lee.

Cuánto te llega de cada venta

El porcentaje que se queda la plataforma cambia, así que aquí no vas a encontrar una cifra escrita a mano. Míralo en la documentación oficial de creadores antes de poner precio, y usa ese número en la calculadora de arriba. Desconfía de cualquier blog que te dé el porcentaje sin decirte cuándo lo comprobó.

El mecanismo, que no cambia:

Robux que te llegan = precio × ventas × (1 − comisión)

Y si además quieres euros, hay un segundo paso con su propio tipo de cambio, su mínimo y sus requisitos de cuenta. Ahí el orden importa: primero la comisión, después la conversión.

Dos cosas sobre el precio que sí se pueden decir sin inventar cifras:

  • Un precio alto no compensa solo por ser alto. Un pass de 100 Robux que compra una de cada cien personas y uno de 400 que compra una de cada mil no dan lo mismo, y solo lo sabrás mirando tus propias estadísticas.
  • Prueba y mide. El panel de la experiencia te da ventas por día. Cambia el precio, deja pasar una semana entera (los fines de semana no se parecen a los martes) y compara.

Nada de proyecciones: aquí no hay «con esto ganas X al mes». Depende de cuánta gente juegue tu juego, y eso no lo sabe nadie de antemano.

Haz la cuenta aquí

Del precio del pass a lo que te llega

Pon tu precio, tus ventas y el porcentaje de comisión que hayas comprobado hoy en la documentación oficial. La calculadora no inventa cifras: usa las tuyas.

El 30 % es solo el valor de partida del formulario. Comprueba el porcentaje de hoy en la documentación oficial de creadores y ponlo aquí: es lo único que hace que esta cuenta valga algo.

Lo que pagan los jugadores5.000 Robux
Se queda la plataforma−1.500 Robux
Te llega3.500 Robux
Por cada venta
70 Robux
Ventas para 10.000 Robux
143
La fórmula: precio × ventas × (1 − comisión)

Errores habituales

Compra el pass y no le pasa nada hasta reconectar

Falta PromptGamePassPurchaseFinished, o está en un LocalScript en vez de en el servidor.

La ventaja se pierde al morir

La estás aplicando una sola vez al entrar. Va dentro de CharacterAdded.

UserOwnsGamePassAsync da error de vez en cuando

Es normal, sale a internet: por eso va en pcall y con reintentos si te importa mucho. Lo que no puedes hacer es dejar que el error tumbe el script.

Le quita el VIP a alguien que lo compró

Estás cacheando el false de un fallo de red. Cachea solo las respuestas buenas.

Se me olvidó poner el precio y nadie lo compra

Pasa más de lo que parece: el pass se crea sin precio y hasta que no lo editas no está a la venta.

Funciona en Studio pero no en el juego publicado

Comprueba que el ID es el del pass correcto y que el pass pertenece a esa experiencia. Si el juego está en un grupo, el pass tiene que estar creado desde el grupo.

Preguntas frecuentes

¿Gamepass o producto para desarrolladores?

Gamepass para lo que se compra una vez y es permanente (VIP, mochila, velocidad). Producto para lo que se compra muchas veces (paquetes de monedas, revivir, saltarse la espera). Si dudas, pregúntate si tiene sentido comprarlo dos veces.

¿Puedo cambiar el precio después?

Sí, cuando quieras. Quien ya lo compró lo mantiene, y no se devuelve nada si baja.

¿Puedo hacer que un gamepass dé varias ventajas?

Sí, y suele ser mejor: un pass con tres ventajas se vende más que tres passes de una. Compruébalo una vez y aplica las tres.

¿Cómo pruebo la compra sin gastar Robux de verdad?

En Studio, PromptGamePassPurchase abre la ventana pero no cobra. Para probar la ruta completa, la única forma es comprarlo con otra cuenta. Muchos desarrolladores dejan un pass de 1 Robux temporal para eso.

¿Se puede regalar un gamepass a alguien?

No directamente desde el juego. Lo que sí puedes es dar la ventaja por script a quien tú quieras (una lista de UserIds), sin pasar por el pass.


Última revisión: 1 de septiembre de 2026

Claim Your Loot

Explora otras secciones

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *