Ir al contenido
BunCho

Roblox × Story OS

Haz un juego de historia en Roblox a partir de tu historia.

Story OS de BunCho exporta tu historia como un proyecto de Roblox con diálogos de NPC, misiones, ramas y finales. El mundo lo construyes en Roblox Studio; BunCho aporta la estructura y los diálogos. Nos centramos en historias largas, personajes coherentes y ramas que encajan.

De una frase a un juego publicado

Frase de ejemploCrea un juego de misterio en el que tres estudiantes encerrados en una escuela abandonada tienen cinco minutos para escapar
  1. Escribe una frase en Nueva serie de Story OS y la IA redacta la trama, los personajes y las escenas (usa créditos). O empieza con una plantilla.
  2. En la pestaña Juego, añade opciones y banderas (tiene la llave, resolvió el código…). Los callejones sin salida, escenas inalcanzables y banderas que nadie activa se señalan al momento.
  3. Cuando pasan los Story Tests se activa Exportar a Roblox: un zip con proyecto Rojo, modelo .rbxmx y un .json para el plugin.
  4. Impórtalo en Roblox Studio con el plugin de BunCho (o Rojo): los NPC, las misiones y la interfaz de diálogo quedan colocados.
  5. Construye el mundo, prueba con varios jugadores y publica en Roblox.

Lo que obtienes

Abajo está la exportación real de la plantilla que corresponde a esta frase, “Escape de la vieja escuela” (sin editar).

Estructura de la historia (ramas y finales)

15 escenas y 5 finales. Las flechas son opciones que avanzan (no se dibujan 10 caminos de vuelta, como volver al aula).

Encerrados después de…Encerrados después de claseAula 3-BAula 3-BEl código de la bibli…El código de la bibliotecaLa estantería…La estantería equivocadaEl secreto de…El secreto de MioLos casilleros del la…Los casilleros del laboratorioLa llave de l…La llave de la entradaLa nota de SoraLa nota de SoraEntradaEntradaLa puerta abi…La puerta abiertaLos tres juntosLos tres juntosEscaparonEscaparonLa verdad de la bromaLa verdad de la bromaLa contraseña…La contraseña de la puerta traseraEsperando la…Esperando la mañana

Los tres juntos / Escaparon / La verdad de la broma / La contraseña de la puerta trasera / Esperando la mañana

Tres NPC (personalidad, forma de hablar, secreto, comportamiento)

Haru

Delegado de clase

Personalidad
Mandón y se hace el fuerte, pero es el más responsable.
Forma de hablar
Tono firme y mandón.
Objetivo
Llevar a todos a casa
Secreto
Cree que una nota de broma que escribió es la culpable del encierro.
Frase de ejemplo
“Calma. Encontraremos la salida en cinco minutos.”

Mio

Encargada de la biblioteca

Personalidad
Callada y observadora; le cuesta pedir ayuda.
Forma de hablar
Habla bajito, breve y precisa.
Objetivo
Descifrar el código
Secreto
El año pasado casi quedó encerrada aquí, y fue ella quien dejó el código en la pizarra.
Frase de ejemplo
“Hay un código de números en la pizarra.”

Sora

Del equipo de atletismo

Personalidad
Alegre y habladora; le da miedo la oscuridad.
Forma de hablar
Enérgica y coloquial.
Objetivo
Llegar a casa antes de que oscurezca
Secreto
Olvidó que llevaba la nota del conserje en el bolsillo.
Frase de ejemplo
“Quiero llegar a casa antes de que oscurezca…”

Comportamiento: los NPC van al lugar de cada escena en la que hablan; si les hablas en otro sitio, responden con su última frase. Los secretos son notas para el desarrollador y no se muestran a los jugadores.

Misiones (encontrar la llave, descifrar el código, abrir la puerta)

Las banderas de las que dependen las opciones se convierten en la lista de objetivos. El temporizador es de 300 segundos; al agotarse, la historia salta al final “Esperando la mañana”.

Salir de la escuela en 5 minutos
  • Revisar la estantería 913
  • Abrir el casillero con el número del código
  • Guardar la nota
  • Confiar en Mio
Formas de abrir la puerta
  • Abrir la puerta principal con la llave
  • Decir la contraseña en la puerta trasera

Interfaz en el juego

  • Ventana de diálogo: nombre de quien habla, una línea a la vez, Siguiente
  • Opciones: con varios jugadores, votación (mayoría, con tiempo límite)
  • Objetivos: lista con casillas y adónde ir
  • Temporizador: se pone rojo con 30 segundos
  • Finales: cuántos encontraste (de 5)
Mio

Creo que los números de la pizarra son números de clasificación.

Revisar la estantería 913Revisar la estantería 400Volver al aula

La interfaz se construye con código, sin recursos de imagen. Cambia colores y fuentes en la tabla THEME al inicio de StoryClient.

Código Luau

Los datos (Story, Strings) están separados de las partes que se mueven (máquina de estados, servidor, interfaz). El servidor valida cada opción.

-- src/shared/Story.luau
["n006"] = {
  Title = "N.n006.title",
  Place = "science",
  Ending = false,
  Events = { "lights_flicker" },
  Lines = {
    { Key = "N.n006.1" },
    { Key = "N.n006.2", Npc = "haru" },
  },
  Choices = {
    { Id = "c013", Key = "C.c013", To = "n007", Requires = { "cipher" }, Sets = { "has_key" } },
    { Id = "c014", Key = "C.c014", To = "n002", Requires = {}, Sets = {} },
  },
-- src/shared/StoryRuntime.luau
-- Applies a choice. Returns false (and a reason) when the choice is not open right now.
function StoryRuntime.choose(story, state, choiceId: string): (boolean, string?)
  local c = StoryRuntime.findChoice(story, state, choiceId)
  if c == nil then
    return false, "choice_not_available"
  end
  for _, f in c.Sets do
    local neg, name = negated(f)
    state.flags[name] = if neg then nil else true
  end
  StoryRuntime.jump(story, state, c.To)
  return true, nil
end

-- Quest objectives with their done state (flags that some choice requires)
function StoryRuntime.objectives(story, state)
-- src/server/StoryServer.server.luau
local function onChoose(player: Player, choiceId: string)
  local session = sessions[sessionKey(player)]
  if session == nil or not session.open or session.state.ended then
    return
  end
  if Runtime.findChoice(Story, session.state, choiceId) == nil then
    return
  end
  local voters = #members(session)
  if Config.ChoiceMode ~= "vote" or voters <= 1 then

Guardado

DataStore es opcional (Config.UseDataStore). Guarda los finales encontrados y el progreso en solitario. Para probar en Studio, activa el acceso de Studio a los servicios de API.

Tabla de traducción en 6 idiomas

Japonés, inglés, español, portugués, chino tradicional y simplificado. Cada jugador ve su idioma de Roblox; si falta, se usa el idioma original. localization/BunChoStory.csv también sirve para las herramientas de traducción de Roblox.

Contenido del zip

  • BunChoStory.rbxmx
  • NPCS.md
  • README.md
  • default.project.json
  • localization/BunChoStory.csv
  • src/client/StoryClient.client.luau
  • src/server/StageSetup.server.luau
  • src/server/StoryServer.server.luau
  • src/shared/Config.luau
  • src/shared/Localize.luau
  • src/shared/StageBuilder.luau
  • src/shared/Story.luau
  • src/shared/StoryRuntime.luau
  • src/shared/Strings.luau
  • story-tests.json
  • story.pack.json

Colócalo todo con el plugin de Studio

  1. Instala el plugin (pronto en Creator Store; por ahora pon el archivo de abajo en la carpeta Plugins de Studio)
  2. Abre Plugins → BunCho → Story Pack y elige el .json exportado o pega una URL https
  3. Build stage now coloca salas, puntos de historia brillantes y NPC hechos con Parts (todo editable)
  4. Pulsa Play. Para varios jugadores usa Probar → Clientes y servidores

¿Usas Rojo? Descomprime, ejecuta rojo serve y conéctate desde Studio. También puedes arrastrar el .rbxmx (pasos en el README).

Publicar

Publica en Roblox e intenta monetizarlo (los ingresos dependen de los términos de Roblox y de los requisitos de DevEx).

Por qué crearlo con BunCho

Pensado para las clasificaciones por edad

  • Dentro del juego no se ejecuta IA generativa. Cada línea queda fijada y revisada al exportar (sin chat de IA abierto).
  • Los sustos son solo parpadeos, apagones, sombras, un susurro en subtítulo y una leve sacudida. Sin sangre, heridas ni sustos con ruidos fuertes (Config.ScareIntensity = 0 los desactiva).
  • Responde con precisión el cuestionario de madurez y cumplimiento de Roblox para tu experiencia.

Lo que haces tú en Roblox Studio

  • Construir el mundo (el escenario son bloques simples; para tu propio mapa, etiqueta Parts con BunChoStoryTrigger y un atributo Place o Npc)
  • Sonidos, modelos y animaciones con derechos de uso
  • Pruebas multijugador, miniaturas, descripción, cuestionario y publicación

Plantillas

Escape de la vieja escuela

Tres estudiantes quedan encerrados en una escuela abandonada y deben escapar en cinco minutos. Encuentren la llave, descifren el código y abran la puerta. Cinco finales.

5 minutos · 3 NPC · llave / código / puerta · 5 finales

La mansión sin luz

En una noche de tormenta, un grupo de amigos queda encerrado en una vieja mansión. Encuentren las llaves de plata y oro y descubran el secreto de la niña fantasma que vive allí. Cinco finales.

Cooperativo · llaves de plata y oro · efectos de miedo (todas las edades) · 5 finales

Abrir y editar en el estudio →

Precio

La exportación a Roblox está incluida en los planes de BunCho. El plugin de Studio y las plantillas son gratis.

FAQ

¿Necesito saber usar Roblox Studio?

No para importar y pulsar Play. Construir el mundo y publicar se hace en Roblox Studio.

¿Una IA conversa con los jugadores?

No. Todo el diálogo es texto fijo escrito al exportar, lo que facilita un juego apto para todas las edades.

¿Sirve para hacer un juego de terror en Roblox?

Sí. La plantilla de terror cooperativo tiene búsqueda de llaves en equipo, cinco finales y sustos aptos para todas las edades.

¿Puedo usar mi propio mapa?

Pon Config.BuildStage = false y etiqueta Parts con BunChoStoryTrigger y un atributo Place (id del lugar) o Npc (id del personaje).

¿Hace falta Rojo?

No. Puedes importar con el plugin de BunCho o arrastrar el .rbxmx.

Las funciones descritas son las disponibles hoy en BunCho. Estamos preparando una grabación en Roblox Studio. 日本語