Roblox × Story OS
Faça um jogo de história no Roblox a partir da sua história.
O Story OS do BunCho exporta sua história como um projeto do Roblox com diálogos de NPC, missões, ramificações e finais. O mundo você constrói no Roblox Studio; o BunCho entrega a estrutura e os diálogos. Nosso foco: histórias longas, personagens consistentes e ramificações que se sustentam.
De uma frase a um jogo publicado
- Digite uma frase em Nova série no Story OS e a IA escreve o enredo, os personagens e as cenas (usa créditos). Ou comece por um modelo pronto.
- Na aba Jogo, adicione escolhas e flags (tem a chave, decifrou o código…). Becos sem saída, cenas inalcançáveis e flags que ninguém ativa aparecem na hora.
- Quando os Story Tests passam, Exportar para o Roblox fica disponível: um zip com projeto Rojo, modelo .rbxmx e um .json para o plugin.
- Importe no Roblox Studio com o plugin do BunCho (ou Rojo): NPCs, missões e a interface de diálogo já ficam no lugar.
- Construa o mundo, teste com vários jogadores e publique no Roblox.
O que você recebe
Abaixo está a exportação real do modelo que corresponde a esta frase, “Fuga da velha escola” (sem edição).
Estrutura da história (ramificações e finais)
15 cenas e 5 finais. As setas são escolhas que avançam (10 caminhos de volta, como voltar para a sala, não são desenhados).
Os três juntos / Fuga concluída / A verdade sobre a brincadeira / A senha da porta dos fundos / Esperando a manhã
Três NPCs (personalidade, jeito de falar, segredo, comportamento)
Haru
Representante da turma
- Personalidade
- Mandão e se faz de forte, mas é o mais responsável.
- Jeito de falar
- Tom firme e mandão.
- Objetivo
- Levar todos para casa
- Segredo
- Acha que um bilhete de brincadeira que escreveu causou o confinamento.
- Fala de exemplo
- “Calma. Vamos achar a saída em cinco minutos.”
Mio
Monitora da biblioteca
- Personalidade
- Quieta e observadora; tem dificuldade em pedir ajuda.
- Jeito de falar
- Fala baixinho, curto e preciso.
- Objetivo
- Decifrar o código
- Segredo
- No ano passado quase ficou presa aqui, e foi ela quem deixou o código no quadro.
- Fala de exemplo
- “Tem um código de números no quadro.”
Sora
Do time de atletismo
- Personalidade
- Alegre e falante; tem medo do escuro.
- Jeito de falar
- Animada e informal.
- Objetivo
- Chegar em casa antes de escurecer
- Segredo
- Esqueceu que tinha o bilhete do zelador no bolso.
- Fala de exemplo
- “Quero chegar em casa antes de escurecer…”
Comportamento: os NPCs vão até o lugar de cada cena em que falam; se você falar com eles em outro lugar, respondem com a última fala. Os segredos são notas para o desenvolvedor e nunca aparecem para os jogadores.
Missões (achar a chave, decifrar o código, abrir a porta)
As flags das quais as escolhas dependem viram a lista de objetivos. O cronômetro é de 300 segundos; quando acaba, a história vai para o final “Esperando a manhã”.
- Verificar a estante 913
- Abrir o armário com o número do código
- Guardar o bilhete
- Confiar na Mio
- Abrir a porta da frente com a chave
- Dizer a senha na porta dos fundos
Interface no jogo
- Janela de diálogo: nome de quem fala, uma fala por vez, Próximo
- Escolhas: com vários jogadores, votação (maioria, com tempo limite)
- Objetivos: lista com marcações e para onde ir
- Cronômetro: fica vermelho nos últimos 30 segundos
- Finais: quantos você encontrou (de 5)
Acho que os números do quadro são números de classificação.
Verificar a estante 913Verificar a estante 400Voltar para a salaA interface é montada em código, sem imagens para gerenciar. Mude cores e fontes na tabela THEME no início do StoryClient.
Código Luau
Os dados (Story, Strings) ficam separados das partes que se movem (máquina de estados, servidor, interface). O servidor confere cada escolha.
-- 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
Salvamento
O DataStore é opcional (Config.UseDataStore). Salva os finais encontrados e o progresso solo. Para testar no Studio, ative o acesso do Studio aos serviços de API.
Tabela de tradução em 6 idiomas
Japonês, inglês, espanhol, português, chinês tradicional e simplificado. Cada jogador vê o idioma do seu Roblox; se faltar, usa-se o idioma original. localization/BunChoStory.csv também funciona com as ferramentas de tradução do Roblox.
O que vem no 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
Posicione tudo com o plugin do Studio
- Instale o plugin (em breve na Creator Store; por enquanto coloque o arquivo abaixo na pasta Plugins do Studio)
- Abra Plugins → BunCho → Story Pack e escolha o .json exportado ou cole uma URL https
- Build stage now monta salas, pontos de história brilhantes e NPCs com Parts (tudo editável)
- Aperte Play. Para vários jogadores use Testar → Clientes e servidores
Usa Rojo? Descompacte, rode rojo serve e conecte pelo Studio. Também dá para arrastar o .rbxmx (passos no README).
Publicar
Publique no Roblox e tente monetizar (os ganhos dependem dos termos do Roblox e dos requisitos do DevEx).
Por que criar com o BunCho
- Personagens que não saem do personagemPersonalidade, jeito de falar e segredos ficam na Character Bible, e os Story Tests apontam quando o tom desvia. As falas dos NPCs saem desse cânone.
- Pistas que se resolvemCada pista é ligada à cena que a resolve; o que ficar sem resolver até o final aparece nos testes.
- Escolhas e finais coerentesBecos sem saída, cenas inalcançáveis, flags que ninguém ativa ou escolhas sem destino bloqueiam a exportação. Antes de entregar os arquivos, verificamos que todos os finais são alcançáveis.
Pensado para a classificação etária
- Nenhuma IA generativa roda dentro do jogo. Cada fala é fixada e verificada na exportação (sem chat de IA aberto).
- Os sustos são só piscadas de luz, apagão, sombras, uma legenda de sussurro e um leve tremor. Sem sangue, ferimentos ou sustos com barulho alto (Config.ScareIntensity = 0 desliga).
- Responda com precisão ao questionário de maturidade e conformidade do Roblox para a sua experiência.
O que você ainda faz no Roblox Studio
- Construir o mundo (o cenário são blocos simples; para o seu mapa, marque Parts com BunChoStoryTrigger e um atributo Place ou Npc)
- Sons, modelos e animações com direito de uso
- Testes multijogador, miniaturas, descrição, questionário e publicação
Modelos
Fuga da velha escola
Três alunos ficam presos numa escola abandonada e precisam fugir em cinco minutos. Encontrem a chave, decifrem o código e abram a porta. Cinco finais.
5 minutos · 3 NPCs · chave / código / porta · 5 finais
A mansão sem luz
Numa noite de tempestade, um grupo de amigos fica preso numa velha mansão. Encontrem as chaves de prata e de ouro e descubram o segredo da menina fantasma que mora lá. Cinco finais.
Cooperativo · chaves de prata e ouro · efeitos assustadores (todas as idades) · 5 finais
Preço
A exportação para o Roblox está incluída nos planos do BunCho. O plugin do Studio e os modelos são gratuitos.
FAQ
Preciso saber usar o Roblox Studio?
Não para importar e apertar Play. Construir o mundo e publicar é feito no Roblox Studio.
Uma IA conversa com os jogadores?
Não. Todo o diálogo é texto fixo escrito na exportação, o que facilita um jogo para todas as idades.
Dá para fazer um jogo de terror no Roblox?
Sim. O modelo de terror cooperativo tem busca de chaves em equipe, cinco finais e sustos para todas as idades.
Posso usar o meu próprio mapa?
Defina Config.BuildStage = false e marque Parts com BunChoStoryTrigger e um atributo Place (id do lugar) ou Npc (id do personagem).
O Rojo é obrigatório?
Não. Dá para importar com o plugin do BunCho ou arrastar o .rbxmx.
As funções descritas são as disponíveis hoje no BunCho. Uma gravação no Roblox Studio está em preparação. 日本語