Cómo crear mundos a los que miles de personas van a querer jugar.
Para Static · 14 capítulos · 100 trucos.
Studio es como una caja de Lego mágica con un cerebro. Vamos a aprender qué hace cada cosa.
Vista 3D (el medio). Acá ves tu mundo. Movés la cámara con clic derecho + WASD. Es donde construís.
Explorer (a la izquierda). Es la lista de TODO lo que hay en tu juego. Cubos, luces, sonidos, scripts. Si no está en Explorer, no existe.
Properties (a la derecha). Cuando hacés clic en algo, acá ves sus propiedades: tamaño, color, posición. Cambiás un número y el mundo cambia.
Output (abajo). Es la consola. Cuando algo se rompe en tu código, el mensaje rojo aparece acá. Mirala SIEMPRE.
Poner un script importante en Workspace. Si lo hacés, los hackers lo pueden ver. Los scripts del servidor SIEMPRE van en ServerScriptService.
Si un dato lo tiene que ver más de un jugador (ranking, dinero), va en el servidor. Si es solo para el jugador (su mira, su botón), va en LocalScript.
Material = Neon.Technology = Future. Agregá Atmosphere y Bloom.ServerScriptService → Insert Object → Script. Adentro escribí:print("¡Hola, mundo!")
Apretá F5 (Play). En Output va a aparecer tu mensaje. Felicitaciones — ya tenés un mundo.
Antes de hacer un cubo, pensá en esto: la gente no juega tu juego porque sea "lindo". Lo juega porque les hace sentir algo.
Tenés 30 segundos para enganchar al jugador. Si en ese tiempo no pasa algo divertido, se va. Esto está estudiado: en Roblox, el 25-40% de los nuevos jugadores no vuelve al día siguiente.
Los juegos top de Roblox tienen sesiones de 12 a 30 minutos. Los flojos, menos de 4. ¿Diferencia? El primer minuto.
Antes de poner el primer cubo, escribí en un papel: ¿qué va a sentir mi jugador en los primeros 30 segundos? Si no podés contestar eso, no construyas nada todavía.
Todo juego que enganche tiene un círculo: el jugador hace una acción, recibe un premio, eso lo lleva a una meta más grande, lo que lo motiva a hacer la acción de nuevo. Y otra vez. Y otra.
Ejemplo en Adopt Me: dar de comer a la mascota → la mascota crece → desbloqueás nuevas mascotas → querés alimentarlas también.
Cuando el jugador esté por irse, debe pensar: "uy, una partidita más y listo". Para eso:
El 70% del tiempo en Studio es construir. Vamos a hacerlo bien desde el principio.
Un Part es un cubo. Y todo el universo de Roblox está hecho de cubos. En serio.
| Propiedad | Qué hace |
|---|---|
| Anchored | Si está en true, no se mueve. Activala SIEMPRE en lo que no se debe caer. |
| CanCollide | Si es false, los jugadores lo atraviesan. Útil para invisibles. |
| Material | Madera, metal, neón, hierba. El neón brilla — úsalo bien. |
| Transparency | 0 = sólido. 1 = invisible. 0.5 = vidrio. |
| Color | El color. Roblox tiene una paleta hermosa. |
Olvidarse de Anchored en piezas de decoración. El piso entero se cae cuando alguien lo toca.
Un Model es una carpeta que junta muchas Parts. Tu casa entera puede ser un Model: paredes, techo, ventanas, todo dentro. Después la podés mover, copiar, vender en el toolbox.
PrimaryPart: una de las Parts del Model que es la "principal". Cuando movés el Model con código, todo se mueve con respecto a la PrimaryPart.
Apretá "Terrain Editor" en la pestaña Home. Ahí podés:
El agua en el terreno es interactiva — los jugadores nadan automáticamente. Pero pesa. Si tu juego se traba, sacá el agua o usá Parts transparentes con script.
StreamingEnabled en Workspace — Roblox carga solo lo que está cerca del jugador.La diferencia entre un juego que parece "de aficionado" y uno profesional es la luz. Ni el modelado. La luz.
Andá a Lighting → propiedad Technology:
| Voxel | Vieja, rápida, sombras feas. Solo si tu juego va a teléfonos viejos. |
| ShadowMap | Equilibrio. Buena calidad, anda en todo. Recomendada por defecto. |
| Future | La mejor. Iluminación realista, pero pesa. Usala para PC. |
| Unified | La nueva (2026). Reflejos en agua, path tracing. Beta. |
Insertá un Atmosphere dentro de Lighting. Te da niebla, nubes, hasta un poquito de "polvo en el aire" que hace que todo se vea de película.
Estos son efectos que se aplican DESPUÉS del render. Insertá dentro de Lighting:
ColorCorrection con Saturation = 0.1 hace que tu mundo se vea más "premium". Probalo.
Para luces locales (lámparas, antorchas, neones):
Brightness 2-3 es bueno para lámparas. Range 16-25 alcanza un cuarto. Más de eso pesa mucho.
Insertá Sky en Lighting. Roblox tiene cielos default, pero podés subir 6 imágenes (top, bottom, 4 lados) para tener tu propio cielo. En el Toolbox hay miles gratis.
Sin código, tu mundo es una estatua. Con código, cobra vida. Luau es el lenguaje de Roblox — fácil de aprender, parecido a hablar.
local nombre = "Tomi"
local edad = 10
local esGenial = true
print(nombre .. " tiene " .. edad .. " años")
local hace que la variable solo viva en este script. print() escribe en Output. Las dos puntitos .. juntan textos.
local vida = 50
if vida < 20 then
print("¡Cuidado, casi muerto!")
elseif vida < 60 then
print("Estás herido")
else
print("Todo bien")
end
Casi todo en Roblox son eventos: el jugador entra, toca un cubo, muere, hace clic. Vos te "conectás" a ese evento y respondés.
-- Cuando un jugador entra al juego
game.Players.PlayerAdded:Connect(function(player)
print(player.Name .. " se unió")
local dinero = Instance.new("IntValue", player)
dinero.Name = "Coins"
dinero.Value = 100
end)
-- Cuando un cubo es tocado
local parte = script.Parent
parte.Touched:Connect(function(otro)
local humanoid = otro.Parent:FindFirstChild("Humanoid")
if humanoid then
local p = game.Players:GetPlayerFromCharacter(otro.Parent)
if p then p.Coins.Value += 10 end
end
end)
ModuleScript guarda funciones o datos comunes. Otros scripts lo usan con require(). Idea: no repitas, no copies. Si tenés que cambiar algo, lo cambiás en un solo lado.
local Constantes = {}
Constantes.NivelMax = 100
Constantes.OroPorMatar = 5
Constantes.Niveles = {"Bronce", "Plata", "Oro"}
return Constantes
-- En otro script:
-- local C = require(game.ReplicatedStorage.Shared.Constantes)
-- print(C.NivelMax)
local RS = game:GetService("ReplicatedStorage")
local ev = Instance.new("RemoteEvent", RS)
ev.Name = "DameMonedas"
ev.OnServerEvent:Connect(function(player, cantidad)
if cantidad > 100 then return end
player.Coins.Value += cantidad
end)
-- Cliente (LocalScript):
-- game.ReplicatedStorage.DameMonedas:FireServer(10)
NUNCA confíes en datos del cliente. Siempre validá en el servidor. Si no, los hackers te pueden mandar "DameMonedas, cantidad = 999999" y se van a hacer ricos.
Sin DataStore, todo lo del jugador se borra cuando se va. Con DataStore, queda guardado para siempre.
local DS = game:GetService("DataStoreService")
local store = DS:GetDataStore("Monedas_v1")
game.Players.PlayerAdded:Connect(function(p)
local ok, datos = pcall(function()
return store:GetAsync(p.UserId)
end)
local v = Instance.new("IntValue", p)
v.Name = "Coins"
v.Value = (ok and datos) or 0
end)
game.Players.PlayerRemoving:Connect(function(p)
pcall(function() store:SetAsync(p.UserId, p.Coins.Value) end)
end)
local TS = game:GetService("TweenService")
local info = TweenInfo.new(2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local tween = TS:Create(parte, info, {
Position = parte.Position + Vector3.new(0, 10, 0)
})
tween:Play()
Tween hace que un Part vaya suavecito de A a B en 2 segundos. Sin Tween es brusco, con Tween parece profesional.
UI son los botones, contadores, menús. UX es cómo se siente usarlos. Si tu UI confunde, perdiste al jugador.
Las posiciones en UI usan UDim2.new(escalaX, offsetX, escalaY, offsetY):
Ejemplo: UDim2.new(0.5, 0, 0.5, 0) con AnchorPoint (0.5, 0.5) = botón en el medio exacto, no importa el tamaño de la pantalla.
Usar solo offsets (píxeles). Tu juego se va a ver bien en compu, pero feo en celular. SIEMPRE usá escala + AnchorPoint.
El 50%+ de los jugadores de Roblox usa celular. Tu UI tiene que funcionar con dedos gordos en pantallas chiquitas:
local btn = script.Parent
btn.MouseEnter:Connect(function()
btn.BackgroundColor3 = Color3.fromRGB(255, 200, 100)
end)
btn.MouseLeave:Connect(function()
btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
end)
Cada botón cuando lo apretan: cambia color, hace un sonidito, vibra un poquito. Sin feedback, el juego se siente "muerto".
Tu juego puede ser una obra de arte, pero si va a 10 FPS nadie se queda. La fluidez vale más que los gráficos.
En Studio: View → Stats. O en juego: Ctrl + Shift + F3.
En Workspace, propiedad StreamingEnabled = true. Roblox solo carga lo que está cerca del jugador. Tu juego puede ser GIGANTE y aún así andar bien en celular.
Activá StreamingEnabled desde el primer día. Cambiar después es DOLOROSO porque tus scripts pueden romperse.
MeshPart tiene RenderFidelity. Ponelo en Automatic — Roblox baja la calidad de los modelos lejanos. Lo cercano se ve hermoso, lo lejano se ve simple. El jugador no nota la diferencia.
No "optimices" cosas al azar. Usá el MicroProfiler (Ctrl+F6 en Studio). Te dice qué función de tu código consume más tiempo. Atacá esa primero.
Optimización prematura = perdés tiempo arreglando lo que no estaba roto. Primero hacé el juego, después medí, después optimizá lo que está mal.
FTUE (First Time User Experience) = los primeros 60 segundos del jugador nuevo. Es lo MÁS importante de todo el juego.
El embudo: cada paso pierde gente. Tu trabajo es tapar agujeros.
Roblox tiene una herramienta llamada Experiments en Creator Hub. Probá dos versiones del onboarding al mismo tiempo en grupos diferentes de jugadores. Mirá cuál tiene mejor D1. Quedate con la ganadora.
Las recompensas + animaciones + efectos crean un sentimiento. Terminá el onboarding con un momento de alegría: el jugador sale con ganas de volver.
Si tu juego es divertido, la gente paga. La pirámide de monetización en Roblox tiene 4 niveles, todos importantes.
Es como un "perk" que el jugador compra UNA vez y queda para siempre. Ejemplos: "VIP", "Doble dinero", "Volar". Precios típicos: 99-499 Robux para empezar.
Se crean en Creator Hub → Tu juego → Monetization → Game Passes.
Lo que el jugador compra MUCHAS veces: monedas, gemas, packs de ítems, "skip" de timer. Estos generan más plata a la larga porque el mismo jugador puede comprar 100 veces.
local MPS = game:GetService("MarketplaceService")
MPS.ProcessReceipt = function(info)
local p = game.Players:GetPlayerByUserId(info.PlayerId)
if info.ProductId == 123456789 then
p.Coins.Value += 1000
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
Los jugadores con suscripción Premium gastan tiempo en tu juego, y Roblox te paga POR HORA jugada. No tenés que hacer nada — solo subir métricas. Cuanto más tiempo se queden los Premium, más cobras.
Si sos creador aprobado, podés vender ítems para avatar (sombreros, accesorios) en el Marketplace. Roblox cobra una comisión.
Roblox se queda con el 30%. El otro 70% es tuyo, y lo podés sacar como dinero real con DevEx (Developer Exchange) si tenés Premium y juntás 30,000 Robux mínimo.
El top 1% de juegos en Roblox factura millones por año. La mayoría no factura nada. La diferencia: retención + un Game Pass que la gente realmente quiera.
Tu juego puede ser increíble, pero si nadie lo ve, no existe. El marketing en Roblox es 80% el algoritmo + 20% redes.
El ícono (512×512) es lo PRIMERO que la gente ve. Si no hace clic, el resto no importa.
3-5 thumbnails de 1920×1080. Mostrá:
Hoy los chicos descubren juegos por TikTok y Shorts más que por Roblox mismo. Hacé videos cortos (15-30 seg) mostrando el wow-moment. Si uno se viraliza, miles de jugadores entran en horas.
Contactá creadores de YouTube/TikTok medianos (10K-100K subs) y mandales acceso VIP de tu juego. Si les gusta, hacen un video gratis.
Lo que está prendiendo fuego en Roblox ahora mismo. Si no estás al día, vas atrás.
Be a Lucky Block con 105K en línea. Be a Brainrot con 56K. Memes de Italia (Tralalero Tralala, Tung Tung Sahur) hechos juego. La fórmula:
Brookhaven RP: 450K en línea. Adopt Me: 488K. Lo que la gente busca:
¡Vivís en Buenos Aires! Un Roleplay con onda argentina o latina (barrios reconocibles, jergas, comidas) NO existe todavía a gran escala. Mercado abierto.
Blox Fruits: 485K en línea. Anime Adventures, Sword Fighting, King Legacy. Fórmula:
Si hablás español en tu juego (NPCs, UI, descripción), tenés ventaja sobre el 90% de competencia anglo.
Después de 10 años haciendo juegos en Roblox, esto es lo que me hubiera gustado que me dijeran el primer día.
Va a tener 3 jugadores (vos y dos amigos). Bugs por todos lados. Vas a sufrir. Pero el segundo juego va a ser DIEZ veces mejor, porque aprendiste con el primero. Empezar es ganar.
"Mi primer juego va a ser un mundo abierto con magia, mazmorras y 100 jugadores en simultáneo". NO. Empezá con un Obby. Después un Tycoon. Después un Simulator. Subí escaleras chicas.
Anchored = true. Esto te va a evitar 10 horas de debug en tu primer juego. Si el piso no se mueve, ANCLALO.
Sí, Roblox tiene autosave. Pero si rompés algo serio, no podés volver. Usá Rojo + Git: tu código en GitHub. Cada cambio guardado. Podés volver a cualquier versión.
Un LocalScript se puede hackear. Cualquier valor que el cliente le mande al servidor, validalo. Si un jugador dice "compré algo por 0 monedas", revisalo en el servidor.
Mostrale el juego a 5 amigos antes de subirlo. Veelos jugar SIN ayudarlos. Lo que les confunda, los confunde a 1000 personas también. Los primeros usuarios pasivos te muestran tus puntos ciegos.
Elegí un username y nombre de grupo en serio desde el principio. Cambiarlo después es caro y perdés engagement.
Hacé el juego más simple posible. Lanzalo. Vas a aprender más en una semana con jugadores reales que en seis meses planificando solo.
Tus amigos van a decir "tu juego está re bueno". Los datos van a decir "el 80% se va en el minuto 2". Confía en los datos.
Entrá a Discord servers de devs (DevForum, comunidades hispanas), DevForum de Roblox, hackathons. Una recomendación de un dev grande puede traerte 1000 jugadores el día 1.
Hacer juegos es un maratón. Burnout es real. Tomate al menos 1 día de descanso a la semana. No leas haters en los comentarios. El juego es tu proyecto, no tu identidad. Si algo no funciona, es una lección, no una sentencia.
Lo que separa a los que llegan de los que no es la constancia. Cinco años de mejorar 1% por semana = milagro. Y muchos lo hacen.
El extracto final. 100 trucos prácticos divididos en 4 partes. Tomá los que necesitás hoy. Volvé al resto cuando los necesites.
Los 100 trucos los podés explorar interactivamente en la página principal:
Trucos 1-25 · Studio & Construcción — atajos, plugins, optimización al construir.
Trucos 26-50 · Scripting & Arquitectura — patrones profesionales, frameworks, anti-bugs.
Trucos 51-75 · Diseño & UX — psicología del jugador, retención, feedback.
Trucos 76-100 · Promoción & Crecimiento — algoritmo, marketing, viralidad.
Una biblioteca de fuentes en castellano para que sigas aprendiendo.
/docs/es-es/tutorials — tutoriales paso a paso./monetization — Game Pass, Developer Products, DevEx./environment/lighting — iluminación, atmósfera./projects/marketplace — UGC y Toolbox.El Roblox DevForum es la comunidad oficial. Está en inglés pero es la mejor fuente del mundo. Usá Google Translate si hace falta — el contenido vale ORO.
Si cumplís el 30% de lo que hay acá, vas a estar adelante del 95% de los devs de Roblox. Y si te gusta lo que hacés — eso ya es ganar.
Terminaste la Guía Maestra. 14 capítulos, 100 trucos. Ahora ya sabés más que el 95% de los devs en Roblox.
Lo único que falta es lo más importante: sentarse y empezar. Hoy. Aunque sea 15 minutos.
▶ VOLVER A STATICVERSE