Workflows
Um workflow e uma receita JSON que encadeia ferramentas de varios kits em um resultado completo:
um blockout iluminado, um Blueprint de porta com timeline, um guarda de patrulha com navmesh e
behavior tree, um terreno com foliage. Uma unica chamada (edit.run_workflow) ou um MCP prompt
constroi o resultado inteiro; a lista verify propria do workflow le o resultado de volta e
confere campos concretos, e uma execucao atomica desfaz todos os passos se um deles falhar. O
plugin distribui uma biblioteca de 19 workflows em Resources/Workflows/; um projeto pode
adicionar ou sobrescrever workflows em <Project>/Saved/UEAMCP/Workflows/.
Chamando um workflow
| Objetivo | Chamada |
|---|---|
| Listar (com disponibilidade nesta engine) | edit.list_workflows {category?} ou MCP prompts/list |
| Ler o JSON e a lista de passos como texto | edit.get_workflow {id} ou MCP prompts/get {name:id, arguments} |
| Checagem estatica com seus argumentos | edit.validate_workflow {id, arguments} |
| Pre-visualizar os passos resolvidos | edit.run_workflow {id, arguments, dryRun:true} |
| Construir de fato | edit.run_workflow {id, arguments} (atomico por padrao; adicione _preview:"auto" para uma imagem final) |
| Remover o que foi construido | edit.run_workflow {id, arguments, runCleanup:true} na hora, ou os passos de cleanup mostrados por edit.get_workflow |
argumentse um mapa de strings ({"prefix":"Arena"}); otypedeclarado converte o valor (number,integer,boolean,array,object).argumentsJsonaceita um objeto JSON direto. Todo argumento embutido tem um padrao, entao{id}sozinho sempre funciona.- A resposta lista cada passo com
ok, osargsJsonresolvidos, oresultJsoncompacto eerror;failedStep,succeeded,verified,rolledBack,resolvedArguments,changedAssets/changedActorsresumem a execucao. - Clientes sem automacao de ferramentas podem usar o MCP prompt: o texto descreve o objetivo, os
argumentos com seus valores resolvidos e as chamadas de ferramenta exatas em ordem, incluindo
verifyecleanup.
Rollback e verificacao
edit.run_workflowvalida primeiro (ferramentas existem e estao disponiveis aqui, nomes de argumentos batem com os schemas, argumentos obrigatorios presentes, referencias${...}se resolvem,minEngineerequiresPluginssatisfeitos). Problemas recusam a execucao antes de qualquer mudanca.- Com
atomic:true(padrao) cria o checkpointworkflow:<id>, roda os passos em ordem e para no primeiro passo ouexpectque falhar. O checkpoint e desfeito (rolledBack:true, relatoriorollback) - tudo que e desfazivel desaparece. Arquivos de asset ja gravados em disco e escritas de configuracao do projeto (gameplay tags, save slots) nao sao desfaziveis; os workflows que fazem isso avisam e seucleanupos remove explicitamente. - Depois que todos os passos tem sucesso, as chamadas de
verifyrodam; cada uma precisa ter sucesso e bater com seuexpect.verified:falsenao desfaz (o resultado existe, mas nao e o que a receita prometeu). - Uma execucao bem-sucedida mantem o checkpoint, entao
edit.checkpoint_rollback {name:"workflow:<id>"}desfaz depois, enquanto o historico de undo estiver intacto. - Uma execucao atomica recusa comecar enquanto uma transacao de editor estiver aberta
(
edit.begin_transaction).
A biblioteca embutida
Conteudo de nivel vai para a pasta do outliner UEAMCP/<id> (argumento levelFolder) com labels
prefixados por prefix; conteudo de asset vai para /Game/UEAMCP/<id com pontos como underscores> (argumento folder). cleanup apaga exatamente essa pasta de atores e essa pasta
de conteudo, alem de qualquer outra coisa que o workflow tenha criado (landscape, instancias de
foliage, save slot, gameplay tags, membros do Level Blueprint).
Os 19 workflows cobrem: blockout iluminado e ciclo dia/noite (level.*), blockout basico
(actor.*), material PBR a partir de pasta de texturas e biblioteca master parametrizada
(material.*), menu principal e barra de vida em HUD (umg.*), porta interativa e item coletavel
(bp.*), controles de personagem (input.*), guarda de patrulha com EQS/Behavior Tree
(ai.*), efeito de impacto em Niagara (niagara.*), plano-sequencia orbital em Sequencer
(sequencer.*), terreno com foliage (landscape.*), floresta procedural em PCG (pcg.*),
ambiencia sonora (audio.*), configuracao de save game (save.*), playground de fisica
(physics.*) e habilidade basica em Gameplay Ability System (gas.*). Cada um declara seus
proprios argumentos com padroes razoaveis e os kits que toca; a lista completa, com os argumentos
e o conteudo exato gerado por cada um, esta em Docs/guides/workflows.md no repositorio do
plugin.
Conteudo de engine usado pela biblioteca existe tanto na 4.27 quanto na 5.x:
/Engine/BasicShapes/{Cube,Cone,Cylinder}, /Engine/EditorSounds/Notifications/CompileSuccess,
/Engine/EngineMaterials/DefaultPhysicalMaterial e o template Niagara RadialBurst. Um workflow
cujos gates a engine nao atende aparece com available:false e o motivo, e e recusado por
edit.run_workflow.
Escrevendo um workflow de projeto
Salve <Project>/Saved/UEAMCP/Workflows/<id com pontos como underscores>.json; ele e carregado na
proxima chamada (sem reiniciar). Um arquivo de projeto com o id de um workflow embutido o
substitui.
Regras que mantem um workflow confiavel (a biblioteca embutida segue todas elas):
- Substituicao.
${arg}le um argumento;${stepId.path}le a resposta de um passo anterior (${floor.actor.label},${fx.handles.0.id},${forest.edges.length}). Uma string que e exatamente um token mantem o tipo JSON do valor (numeros continuam numeros); tokens dentro de uma string maior sao inseridos como texto. - Expect. As chaves sao caminhos de resposta (
a.b,list.0.name,list.length); os valores sao comparados com tolerancia numerica de 1e-4, sem diferenciar maiusculas para strings;"*"significa presente e nao vazio. - Nomes, nao chutes. Todo argumento e campo de resposta precisa existir no schema da
ferramenta. Descubra-os com
edit.search_tools,edit.get_tool_schemaou, no repositorio do plugin,python Tools/check_workflows.py . --catalog bp.. - Gates. Se algum passo usa uma ferramenta com
MinEngineouRequiresPlugin, declare o mesmominEngine/requiresPluginsno workflow. - Sem espera. Passos rodam na game thread: use ferramentas que terminam de forma sincrona e
nunca ferramentas "OffThread" (
nav.wait_build,pcg.wait_generation); deixe trabalho assincrono para uma chamada direta apos a execucao. - Cleanup. Coloque conteudo de nivel em uma pasta do outliner e apague com
actor.delete_by_filter {folder, _confirm:true}; conteudo de asset em uma pasta e apague comasset.delete_folder {folder, _confirm:true}; remova efeitos colaterais nao desfaziveis explicitamente.
Checagens
python Tools/check_workflows.py .- checagem estatica de cada workflow embutido contra os headers das ferramentas (nomes, argumentos obrigatorios, caminhos de resposta usados emexpecte${step...}, ordem dos passos, gates, confirmacoes de risco, id = nome do arquivo).python Tools/workflow_smoke.py --project <projeto smoke> --tag 58- contra um editor rodando: prompts, checkpoints, lotes atomicos, previews, e entao cada workflow validate -> dry run -> atomic run -> verify -> cleanup.