Pular para o conteúdo principal

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​

ObjetivoChamada
Listar (com disponibilidade nesta engine)edit.list_workflows {category?} ou MCP prompts/list
Ler o JSON e a lista de passos como textoedit.get_workflow {id} ou MCP prompts/get {name:id, arguments}
Checagem estatica com seus argumentosedit.validate_workflow {id, arguments}
Pre-visualizar os passos resolvidosedit.run_workflow {id, arguments, dryRun:true}
Construir de fatoedit.run_workflow {id, arguments} (atomico por padrao; adicione _preview:"auto" para uma imagem final)
Remover o que foi construidoedit.run_workflow {id, arguments, runCleanup:true} na hora, ou os passos de cleanup mostrados por edit.get_workflow
  • arguments e um mapa de strings ({"prefix":"Arena"}); o type declarado converte o valor (number, integer, boolean, array, object). argumentsJson aceita um objeto JSON direto. Todo argumento embutido tem um padrao, entao {id} sozinho sempre funciona.
  • A resposta lista cada passo com ok, os argsJson resolvidos, o resultJson compacto e error; failedStep, succeeded, verified, rolledBack, resolvedArguments, changedAssets/changedActors resumem 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 verify e cleanup.

Rollback e verificacao​

  1. edit.run_workflow valida primeiro (ferramentas existem e estao disponiveis aqui, nomes de argumentos batem com os schemas, argumentos obrigatorios presentes, referencias ${...} se resolvem, minEngine e requiresPlugins satisfeitos). Problemas recusam a execucao antes de qualquer mudanca.
  2. Com atomic:true (padrao) cria o checkpoint workflow:<id>, roda os passos em ordem e para no primeiro passo ou expect que falhar. O checkpoint e desfeito (rolledBack:true, relatorio rollback) - 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 seu cleanup os remove explicitamente.
  3. Depois que todos os passos tem sucesso, as chamadas de verify rodam; cada uma precisa ter sucesso e bater com seu expect. verified:false nao desfaz (o resultado existe, mas nao e o que a receita prometeu).
  4. Uma execucao bem-sucedida mantem o checkpoint, entao edit.checkpoint_rollback {name:"workflow:<id>"} desfaz depois, enquanto o historico de undo estiver intacto.
  5. 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_schema ou, no repositorio do plugin, python Tools/check_workflows.py . --catalog bp..
  • Gates. Se algum passo usa uma ferramenta com MinEngine ou RequiresPlugin, declare o mesmo minEngine / requiresPlugins no 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 com asset.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 em expect e ${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.