Overwatch 2

Apresentando: A Oficina de Overwatch

Blizzard Entertainment

Crie jogos de maneiras antes inimagináveis com a Oficina! Na Oficina, você criará um Script para adicionar Regras e Condições únicas aos modos de jogo estabelecidos de Overwatch que você já conhece e adora. Regras podem fazer muitas coisas, como mudar a movimentação e as habilidades de um herói, modificar como os jogadores são curados ou recebem dano, ou até mesmo exibir texto em determinadas circunstâncias.

Você pode esquentar as coisas criando um modo de jogo como Chão Fundido, no qual o seu herói pegará fogo se estiver no chão:

Sumário

Acessando a Oficina

Para acessar a Oficina, clique em Jogar > Navegador de Jogos > Criar > Configurações > Oficina.

Criando um Script

Para criar um Script, você precisa:

  1. Adicionar uma Regra
  2. Selecionar um Evento
  3. Adicionar uma Condição (opcional)
  4. Adicionar uma Ação

Quando fizer isso, você poderá adicionar mais Regras, Condições e Ações de acordo com o espaço disponível.

Adicionando uma Regra

Regras são partes altamente personalizáveis que compõem seu Script. Cada Script precisa ter uma ou mais Regras.

Cada Regra possui um comentário opcional e contém:

  • Evento: Define quando a Regra será executada. Para saber mais, consulte Selecionando um Evento.
  • Condições: Uma lista opcional de coisas que precisam ser verdadeiras para que a Regra seja aplicada. Para saber mais, consulte Adicionando uma Condição.
  • Ações: Uma lista de coisas que acontecem quando o Evento e as Condições são cumpridos. Para saber mais, consulte Adicionando uma Ação.

Para adicionar uma Regra, clique em Adicionar Regra.

Selecionando um Evento

Um Evento define quando a Regra será executada. Quando um Evento acontece no jogo, uma Instância da Regra é criada. Cada Instância avalia Condições e executa Ações independentemente das outras Instâncias.

Quando uma Regra é criada no editor, um Evento é adicionado automaticamente. Você precisa especificar qual tipo de Evento quer usar.

Para especificar um tipo de Evento:

  1. Clique no menu suspenso ao lado do Evento.
  2. Selecione uma das opções a seguir:

    Tipo de Evento comentário
    Em andamento - Global

    Cria uma única Instância desta Regra quando o jogo começa. Esta Instância permanecerá ativa durante o jogo inteiro.

    • Como a Instância permanece ativa pelo jogo inteiro, uma Condição às vezes pode ser cumprida ou às vezes não. Quando uma Condição for cumprida pela primeira vez, as Ações serão executadas.
    • Toda vez que a lista de Condições falhar e depois for cumprida de novo, as Ações tentarão ser executadas novamente.
    Em andamento - Cada Jogador

    Cria uma Instância desta Regra para cada jogador quando eles entram no jogo. Esta Instância permanece ativa até que o jogador saia ou o jogo termine. Cada Instância monitora e executa as Condições e Ações separadamente.

    • Como a Instância permanece ativa enquanto o jogador estiver no jogo, uma Condição às vezes pode ser cumprida ou às vezes não. Quando uma Condição for cumprida pela primeira vez, as Ações serão executadas.
    • Toda vez que a lista de Condições falhar e depois for cumprida de novo, as Ações tentarão ser executadas novamente.
    Jogador Conseguiu Eliminação

    Executa a Regra toda vez que um jogador consegue uma eliminação. Somente uma Instância da Regra pode estar ativa por vez em um jogador específico.

    • Quando um jogador eliminar alguém, as Condições serão verificadas. Se cada Condição for cumprida, as Ações serão executadas. Se qualquer uma falhar, as Ações não serão executadas.
    Jogador Desferiu Golpe Final

    Executa a Regra toda vez que um jogador desfere um golpe final. Somente uma Instância da Regra pode estar ativa por vez em um jogador específico.

    • Quando um jogador desferir o golpe final em um oponente, as Condições serão verificadas. Se cada Condição for cumprida, as Ações serão executadas. Se qualquer uma falhar, as Ações não serão executadas.
    Dano Causado por Jogador

    Executa a Regra toda vez que um jogador causa dano. Somente uma Instância da Regra pode estar ativa por vez em um jogador específico.

    • Quando um jogador causar dano a um oponente, as Condições serão verificadas. Se cada Condição for cumprida, as Ações serão executadas. Se qualquer uma falhar, as Ações não serão executadas.
    Jogador Recebeu Dano

    Executa a Regra toda vez que um jogador recebe dano. Somente uma Instância da Regra pode estar ativa por vez em um jogador específico.

    • Quando um jogador receber dano de um oponente, as Condições serão verificadas. Se cada Condição for cumprida, as Ações serão executadas. Se qualquer uma falhar, as Ações não serão executadas.
    Jogador Morreu

    Executa a Regra toda vez que um jogador morrer. Somente uma Instância da Regra pode estar ativa por vez em um jogador específico.

    • Quando um jogador morrer, as Condições serão verificadas. Se cada Condição for cumprida, as Ações serão executadas. Se qualquer uma falhar, as Ações não serão executadas.
  3. Se necessário, especifique a Equipe ou o Jogador que deve ser afetada(o) por este Evento. As opções são:

    Opção comentário
    Todas O Evento se aplica a todas as equipes, incluindo os jogadores nos modos todos contra todos
    Equipe 1 (ou Nome Atual da Equipe) O Evento se aplica somente aos membros desta equipe
    Equipe 2 (ou Nome Atual da Equipe) O Evento se aplica somente aos membros desta equipe
    Opção comentário
    Todos O Evento se aplica a todos os jogadores
    Espaço 0 até Espaço 5 O Evento se aplica somente aos jogadores no espaço especificado. Em um jogo de equipes, dois jogadores podem ocupar um mesmo espaço (um de cada equipe).
    Espaço 6 até Espaço 11 O Evento se aplica somente aos jogadores no espaço especificado. Isto se aplica somente aos modos de jogo todos contra todos.
    Herói Específico O Evento se aplica somente aos jogadores que entraram como este herói

Adicionando uma Condição

Depois de adicionar uma Regra e um Evento, você tem a opção de adicionar uma ou mais Condições. Condições são uma lista de coisas que precisam ser verdadeiras para que a Regra possa executar sua lista de Ações. Se a Condição pertencer a uma Regra cujo tipo de Evento é "Em andamento - Global" ou "Em andamento - Cada Jogador", ela será verificada continuamente. Se ela pertencer a uma Regra de qualquer outro tipo, será verificada toda vez que o Evento especificado ocorrer. Se uma Regra não tiver Condições, a lista de Ações tentará ser executada assim que o Evento ocorrer. Cada Condição é composta por até dois Valores, que usam um Operador para comparar e verificar se são verdadeiros ou não. Consulte Valores para saber mais.

Para adicionar uma Condição:

  1. Clique em Adicionar ao lado de Condições.
  2. Preencha os campos de Valor.
    • Atenção: Quando o Valor em si tiver uma Entrada (como o Valor "Herói de", que precisa saber o jogador cujo Herói será adquirido), então a Entrada para aquele Valor aparecerá destacada abaixo dele.
  3. Selecione um Operador. Os Operadores são:
    • == Igual a
    • != Diferente de
    • > Maior que
    • >= Igual ou maior que
    • < Menor que
    • <= Igual ou menor que

Isso verifica se o número total de jogadores na partida é igual ou não ao número de jogadores vivos.

  • Valor: "Número de Jogadores Vivos", verifica o número total de jogadores que estão vivos
    • Equipe: Equipe, verifica todos os jogadores em uma equipe
    • Equipe: Todas, verifica todos os jogadores em todas as equipes
  • Operador: ==, significa que o primeiro Valor deve ser igual ao segundo Valor para que esta Condição seja Verdadeira
  • Valor: "Número de Jogadores Vivos", verifica o número total de Jogadores Vivos
    • Equipe: Equipe, verifica todos os jogadores em uma equipe
    • Equipe: Todas, verifica todos os jogadores em todas as equipes

Outros exemplos

  • Bandeira Está Sendo Carregada (Vítima) == Falso: O jogador que foi morto não podia estar carregando a bandeira
  • Está Agachado (Jogador do Evento) == Verdadeiro: O jogador no qual o Evento está ativo tem que estar agachado
  • Número de Golpes Finais (Atacante) > 10: O jogador que está atacando tem mais de 10 golpes finais

Adicionando uma Ação

Uma Ação é algo que modifica o jogo. Elas são executadas em ordem, de cima para baixo. Para que a lista de Ações comece a ser executada:

  • O Evento associado à Regra precisa ter ocorrido
  • Todas as Condições da Regra precisam ser verdadeiras (ou não haver Condições)
    • Se o tipo de Evento for "Em andamento - Global" ou "Em andamento - Cada Jogador", a lista de Ações será executada quando cada Condição for cumprida pela primeira vez. Toda vez que a lista de Condições falhar e depois for cumprida de novo, as Ações tentarão ser executadas novamente.

Com exceção da Ação Esperar (consulte Ação Esperar para saber mais), todas as Ações são executadas e encerradas imediatamente. Cada Ação é composta por zero ou mais Entradas, que descrevem como o jogo será modificado. Cada Entrada recebe um Valor, que é uma informação ou uma instrução de como obter a informação. Para saber mais, consulte Valores.

Para adicionar uma Ação:

  1. Clique em Adicionar ao lado de Ações.
  2. Selecione uma Ação, que descreve como o jogo será modificado.
  3. Selecione um Valor no menu suspenso para cada nova Entrada que apareceu.
    • Atenção: Algumas Ações criarão um objeto ou um comportamento contínuo. Tais Ações podem ter uma Entrada chamada "Reavaliação". Esta Entrada determina se as outras Entradas desta Ação são fixas (deixando o objeto ou o comportamento contínuo como está) ou dinâmicas (alterando o objeto ou o comportamento contínuo conforme o Valor atribuído à Entrada mudar).

Ações

  • Pausar Tempo da Partida: Pausa o tempo da partida atual
  • Modificar a Variável Global (T, Adicionar, 5): Aumenta em 5 a Variável Global T
  • Definir como Invisível (Jogador do Evento, Inimigos): Deixa o jogador que está executando esta Regra invisível para os inimigos

Ações com uma Entrada de Reavaliação

  • Criar Ícone (Todos os Jogadores (Todas as Equipes), Variável Global (P), Alerta, Posição): Cria um ícone de Alerta visível para todos que estão no local especificado pela Variável Global "P". Reavalia a Posição continuamente; assim, se a Variável Global "P" mudar depois, a posição do ícone mudará para o novo local.
  • Criar Ícone (Todos os Jogadores (Todas as Equipes), Variável Global (P), Alerta, Nenhuma): Cria um ícone de Alerta visível para todos que estão no local especificado pela Variável Global P. Não reavalia nada; assim, mesmo que a variável global P mude depois, não atualizará a posição do ícone.

Tipos de Ação

Embora haja muitas Ações em potencial, você precisa estar ciente de algumas:

Loop é uma Ação que faz a execução da lista de Ações ser reiniciada do começo. Há quatro tipos de Ação Loop:

  • Gerar Loop: Sempre reiniciar a lista de Ações
  • Gerar Loop se: Reinicia a lista de Ações se a Entrada Condição da Ação for avaliada com um valor diferente de 0 ou Falso
  • Gerar Loop se a Condição for Verdadeira: Reinicia a lista de Ações se todas as Condições da Regra estiverem sendo cumpridas no momento
  • Gerar Loop se a Condição for Falsa: Reinicia a lista de Ações se qualquer uma das Condições da Regra não estiver sendo cumprida no momento

Uma Ação Loop só é permitida se for garantido que uma Ação Esperar será executada antes do início da lista de Ações.

Bom Ruim

Essa lista é permitida, já que espera antes do loop.

Essa lista não é permitida, já que seria executada para sempre, sem esperar.

Esperar é uma Ação que faz o tempo passar antes que uma Ação subsequente possa ser executada. O tempo mínimo de espera é 0,25 s.

Há três opções de comportamento para a Ação Esperar:

  • Ignorar condição: Se isso for selecionado, a execução das Ações não poderá ser interrompida por Condições ou outros Eventos.
    • Se o tipo de Evento for "Em andamento - Global" ou "Em andamento - Cada Jogador", as Condições que transitarem entre falha ou cumprimento não farão com que algo aconteça.
    • Se o Evento for de qualquer outro tipo e um evento desse tipo ocorrer com o mesmo Jogador do Evento, o evento será totalmente ignorado.
  • Abortar quando for falso: Se isso for selecionado, a lista de Ações parará de ser executada se as Condições começarem a falhar.
  • Reiniciar quando for verdadeiro: Se isso for selecionado, a execução de Ações será redefinida para a primeira Ação se uma das coisas a seguir ocorrer:
    • O tipo de Evento for "Em andamento - Global" ou "Em andamento - Cada Jogador" e as Condições transitarem de falha para cumprimento.
    • O Evento for de qualquer outro tipo, um evento ocorrer com o mesmo Jogador do Evento e todas as Condições forem cumpridas.

Informações adicionais

O Valor String gera uma string. Ele tem as seguintes Entradas:

  • String: O texto a ser exibido. Se o texto contiver um número entre chavetas, ele será substituído pelo Valor fornecido na Entrada correspondente.
  • {0}: O Valor que será convertido em texto antes de substituir o {0} na String. Este Valor pode ser de qualquer tipo.
  • {1}: O Valor que será convertido em texto antes de substituir o {1} na String. Este Valor pode ser de qualquer tipo.
  • {2}: O Valor que será convertido em texto antes de substituir o {2} na String. Este Valor pode ser de qualquer tipo.
  • String (�Olá�, Nulo, Nulo, Nulo): Gera a string �Olá�
  • String (�{0} vs. {1}�, Herói (Ana), Herói (Pharah), Nulo): Gera a string �Ana vs. Pharah�

Strings podem ser combinadas para formar strings mais complexas:

  • String (�{0} vs. {1}�, Herói (Ana), String ("{0} e {1}", Herói (Pharah), Herói (Genji), Nulo), Nulo): Gera a string �Ana vs. Pharah e Genji�

Strings não podem ser usadas em Condições ou armazenadas em Variáveis por causa das complicações com jogadores usando idiomas diferentes no mesmo Jogo Personalizado.

Um Valor é uma informação � ou uma instrução de como obter a informação � fornecida à Entrada de uma Condição, uma Ação ou outro Valor. Valores podem ser combinados uns com os outros.

Há muitos e muitos Valores, então não definiremos todos aqui. No entanto, eles estão definidos no Editor da Oficina. Eis alguns que você provavelmente verá:

Valor comentário
Número Fornece um número real em um intervalo especificado pela Entrada
Vetor Fornece um valor tridimensional em um intervalo especificado pela Entrada. É usado para posições e direções.
Equipe Indica uma equipe específica, como Equipe 1, Equipe 2 ou Todas as Equipes
Herói Indica um Herói específico
Nulo Indica a ausência de um Jogador ou Entidade
Verdadeiro Fornece o valor Verdadeiro
Falso Fornece o valor Falso
Comparar Fornece Verdadeiro ou Falso, dependendo se a comparação que ele descreve é verdadeira ou não
Jogador do Evento Fornece o Jogador que está executando a Instância da Regra, ou Nulo se não houver tal jogador
Atacante Indica o Atacante da Instância da Regra, ou Nulo se não houver um Atacante
Vítima Indica a Vítima da Instância da Regra, ou Nulo se não houver uma Vítima
Elemento da Matriz Atual Fornece o Valor sendo considerado no momento quando usado em conjunto com os Valores Se Verdadeiro para Qualquer, Se Verdadeiro para Todos, Matriz Filtrada ou Matriz Ordenada

Um Valor pode ser armazenado em uma Matriz, que é uma coleção de diversos Valores.

  • Várias Ações e Valores podem criar ou modificar uma Matriz.
    • Por exemplo, o Valor "Todos os Jogadores" oferece uma Matriz com todos os jogadores no jogo no momento.
    • Você também pode montar suas próprias matrizes usando a operação "Juntar à Matriz" da Ação "Modificar Variável Global" ou a Ação "Modificar Variável de Jogador".
  • Se uma Entrada espera uma Matriz, mas recebe algum outro tipo de Valor, o Valor é copiado em uma matriz com um único elemento para o benefício da Entrada. De forma semelhante, se uma Entrada espera algum outro tipo de Valor, mas recebe uma matriz, o primeiro Valor na matriz é usado (ou 0, se a Matriz estiver vazia).

Uma Variável é um lugar onde um Valor pode ser armazenado e recuperado depois. Com a exceção de Strings, qualquer Valor pode ser armazenado em uma Variável. Todas as variáveis começam com um Valor de Número 0.

Há dois tipos de Variáveis em um Script:

  • Variável Global: Há 26 Variáveis Globais, nomeadas de A a Z. Cada Variável contém um Valor ou uma Matriz de Valores diferente.
  • Variável de Jogador: Cada Jogador tem 26 Variáveis, nomeadas de A a Z. Cada Variável contém um Valor ou uma Matriz de Valores diferente.

Há três operações que podem ser realizadas em uma Variável:

  • Definir: "Definir Variável Global" e "Definir Variável de Jogador" definirão a Variável com um novo Valor, substituindo o Valor anterior.
  • Modificar: "Modificar Variável Global" e "Modificar Variável de Jogador" modificam o Valor em uma Variável usando uma operação aritmética (como Adicionar, Multiplicar etc.) ou de Matriz (Juntar, Remover).
  • Acompanhar: "Acompanhar Variável Global ao Longo do Tempo", "Acompanhar Variável de Jogador ao Longo do Tempo", "Acompanhar Variável Global na Medida" e "Acompanhar Variável de Jogador na Medida" mudam gradualmente a Variável ao longo do tempo ou em uma medida especifica.
    • O Destino do Acompanhamento pode ser um Número ou um Vetor (ou qualquer Valor que resulte em um Número ou Vetor).
      • Se o Destino for um Número, para que o Acompanhamento funcione corretamente, o Valor da Variável precisa ser um Número antes do Acompanhamento começar.
      • Se o Destino for um Vetor, para que o Acompanhamento funcione corretamente, o Valor da Variável precisa ser um Vetor antes do Acompanhamento começar.
      • Se a Reavaliação for ativada para o Destino, o Acompanhamento será atualizado conforme necessário para seguir um Destino alterado, mesmo que o Destino tenha sido alcançado antes. Para saber mais sobre a Reavaliação, consulte Adicionando uma Ação.
    • Você pode cancelar um Acompanhamento usando a Ação "Parar de Acompanhar Variável Global" e a Ação "Parar de Acompanhar Variável de Jogador".
      • Quando um Acompanhamento é cancelado, a Variável mantém seu Valor atual, que pode estar em algum ponto entre o que era antes do Acompanhamento começar e o Destino.

Exemplos

Tudo pronto para entrar em Ação? Tente criar um desses modos de jogo! Nós explicaremos o que você precisará adicionar e por quê:

Vamos orientar você na criação de Chão Fundido, um modo em que heróis queimam e recebem dano se estiverem no chão.

  1. Em primeiro lugar, vamos garantir que você jogará no(s) mapa(s) desejados.
    • Clique em Jogar > Navegador de Jogos > Criar > Configurações > Mapas.
    • Selecione o mapa no qual você quer testar o jogo e desative todos os outros.
  2. A seguir, entre na sua Oficina.
    • Clique em Voltar.
    • Clique em Oficina.
  3. Hora de fazer um Script! Vamos adicionar nossa primeira Regra.
    • Clique em Adicionar Regra.
    • Na seção Comentário, insira Começar a queimar se estiver no chão. Assim, você saberá que essa é a Regra que faz os jogadores começarem a queimar quando tocarem o chão.
    • Agora mude o tipo do Evento para sabermos quando essa Regra deve ser executada.
      • No menu suspenso Evento, selecione Em andamento - Cada Jogador. Isso indica que a Regra será avaliada separadamente para cada jogador no jogo.
      • Deixe os outros menus suspensos nas opções padrão.
    • Agora vamos adicionar uma Condição. Esta Condição determinará se a Regra será executada ou não. Você também pode simplesmente deixar isso em branco, se quiser que a Regra sempre seja executada!
      • Em Condições, clique em Adicionar.
      • No primeiro menu suspenso de Valor, selecione Está no chão. Esse valor voltará a ser verdadeiro sempre que o jogador estiver no chão.
      • Mantenha a opção padrão em todos os outros menus suspensos e clique em Ok.
        • Jogador do Evento significa "o jogador que está sendo afetado pela Regra no momento".
    • Por fim, adicionaremos uma Ação. Ações ocorrem quando a Condição é verdadeira.
      • Esta Ação fará com que um herói pegue fogo enquanto estiver no chão.
        • Em Ações, clique em Adicionar.
        • No menu suspenso de Ação, clique em Definir Status
        • No menu suspenso de Status, selecione Queimando.
        • Em Duração, altere a barra numérica para 10.000.
        • Mantenha a opção padrão em todos os outros menus suspensos e clique em Ok.
  4. Vamos testar se o seu herói pega fogo quando está no chão!
    • Clique em Voltar duas vezes.
    • Na tela Criar Jogo, clique em Começar.
    • Selecione um herói.
    • Assim que entrar no jogo, seu herói deve começar a pegar fogo.
    • Aperte Esc e clique em Abrir editor da Oficina para continuar a trabalhar no seu Script.
  5. Agora, vamos adicionar outra Regra que assegure que um herói não pegará fogo enquanto estiver no ar ou pulando.
    • Em vez de adicionar uma nova Regra do zero, vamos copiar a última que criamos.
    • Ao lado da Regra que você criou, clique em Copiar.
      • Clique em Colar Regra.
      • Altere a descrição para Parar de queimar quando estiver no ar. Assim, você saberá que essa é a Regra que faz o seu herói parar de pegar fogo enquanto estiver no ar ou pulando.
      • Mantenha o tipo de Evento.
      • Agora, vamos editar a Condição. Esta Condição determinará se a Regra será executada ou não.
        • Clique na Condição existente que diz "Está no chão (Jogador do Evento) == Verdadeiro".
        • No menu suspenso de Valor, selecione Falso.
        • Mantenha a opção existente em todos os outros menus suspensos e clique em Ok.
      • Agora, vamos editar a Ação. Ela fará com que um herói pare de pegar fogo quando não estiver no chão.
        • Clique na Ação existente que diz "Definir Status (Jogador do Evento, Nulo, Queimando, 10.000)".
        • No menu suspenso de Ação, selecione Limpar Status.
        • No menu suspenso de Status, selecione Queimando.
        • Mantenha a opção existente em todos os outros menus suspensos e clique em Ok.
  6. Vamos testar se o herói para de queimar enquanto está no ar!
    • Clique em Voltar duas vezes.
    • Assim que entrar no jogo, seu herói deve começar a pegar fogo. Pule e veja se o seu herói não está mais pegando fogo.
    • Aperte Esc e clique em Abrir editor da Oficina para continuar a trabalhar no seu Script.
  7. Por fim, vamos causar dano aos heróis que estiverem no chão.
    • Amplie a Regra "Começar a queimar se estiver no chão".
    • Em Ações, clique em Adicionar. Esta Ação fará o herói receber dano enquanto estiver no chão.
      • No menu suspenso de Ação, clique em Dano ao longo do tempo.
      • Em Duração, altere a barra numérica para 9.999.
      • Em Dano por segundo, altere a barra numérica para 30.
      • Mantenha a opção padrão em todos os outros menus suspensos e clique em Ok.
    • Amplie para a Regra "Parar de queimar se não estiver no chão".
      • Em Ações, clique em Adicionar . Esta Ação fará o herói parar de receber dano quando não estiver no chão.
      • No menu suspenso de Ação, selecione Parar todo o dano ao longo do tempo .
  8. Vamos testar se o seu herói recebe dano quando está no chão e não recebe dano quando está no ar ou pulando.
    1. Clique em Voltar duas vezes.
    2. Saia da sala de ressurgimento e veja se o seu herói começa a receber dano.
    3. Pule e veja se o seu herói para de receber dano.
  9. Você conseguiu! Agora o chão é lava!

Vamos dar uma olhada em um tutorial mais detalhado de outro modo de jogo, o Combate até a Morte Espelhado. Esse é um modo com várias rodadas curtas, em que todos jogam com o mesmo herói. Ao final de cada rodada, todos os jogadores ressurgem onde estavam como o herói seguinte de uma lista aleatória e predeterminada. Ao final da última rodada, vence quem tiver o maior número de abates.

Por exemplo, em uma partida, todos começam de McCree e depois viram Pharah na segunda rodada. Em uma outra partida, todos começam de Widowmaker e viram Ashe na segunda rodada. Da forma que a lista é gerada, é improvável que você jogue mais de uma vez com a mesma seleção de heróis!

Vamos fazer o Script do Combate até a Morte Espelhado!

  • Clique em Jogar > Navegador de Jogos > Criar > Configurações > Oficina.
  • Primeiramente, vamos criar uma Regra para estabelecer uma lista de heróis em potencial para ser jogados.
    • Esta lista será armazenada na Variável Global "E" como uma Matriz.
      • Matrizes podem ser qualquer tipo de coisa, como uma lista de jogadores, heróis e números, um valor único ou até mesmo nenhum valor (conhecida como matriz "vazia").
      • Cada valor na matriz é armazenado em um Índice exclusivo, começando do 0 e aumentando em ordem crescente. Às vezes, um índice e seu valor correspondente são chamados de Elemento.
      • A ordem de uma matriz é importante, porque [Reaper, Winston, Mercy] e [Mercy, Winston, Reaper] são matrizes diferentes.
      • Matrizes podem conter uma mistura de tipos. Por exemplo, esta é uma matriz possível: [123, Reaper, Verdadeiro, -4,5].
      • Se uma Entrada espera uma Matriz, mas um único valor é fornecido, a Entrada receberá esse Valor compactado na Matriz de um Elemento.
      • Se uma Entrada espera um único Valor, mas uma Matriz é fornecida, a Entrada receberá o primeiro Valor na Matriz (ou 0, se a Matriz estiver vazia).
    • Adicione uma Regra e insira um comentário para saber o que essa Regra faz.
    • Defina o tipo de Evento como Em andamento - Global. Isso significa que apenas uma instância dessa Regra será executada.
    • Como essa Regra não possui Condições, ela será executada assim que o jogo começar.
    • Adicione uma Ação com:
      • Ação: Definir Variável Global
        • Variável: L
      • Valor: Herói
        • Herói: Um herói que você quer ver no jogo.
      Isso faz com que a Matriz de herói seja criada. A Ação "Definir Variável Global" define "L" ao primeiro herói da lista.
    • Seria muito chato ter apenas um herói no jogo, então vamos adicionar outros! Adicione quantas Ações quiser com:
      • Ação: Modificar Variável Global
        • Variável: L
      • Operação: Juntar
      • Valor: Herói
        • Herói: Um herói que você quer ver no jogo.
      Isso adiciona outros heróis à Matriz que criamos antes em "L". Se a primeira Ação começasse com "Modificar Variável Global" em vez de "Definir Variável Global", a Matriz começaria em 0. O padrão de todas as variáveis é 0, então se você não definir um outro valor para elas, terá uma Matriz parecida com essa: [0, Pharah, Hanzo, Ana...] .
    • Vamos adicionar a última Ação desta Regra. A Regra irá pegar uma cópia aleatória da Variável Global L (a Matriz de heróis), copiar parte da versão da Matriz randomizada, que começa na posição 0, e incluir o número de heróis que o modo de jogo precisa. Depois disso, essa cópia será armazenada mais uma vez na Variável Global L, resultando em um subconjunto organizado aleatoriamente da lista original de heróis que você forneceu.
      • Por exemplo: Se a lista inicial de heróis era [Ashe, Doomfist, Hanzo, McCree, Pharah, Soldado: 76, Zenyatta, Widowmaker, Ana] , a Matriz randomizada poderá ser [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist, Soldado: 76, Zenyatta, McCree] , e a fatia poderá ser [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist] .
  • A próxima Regra irá garantir que todos os jogadores estejam com os mesmos heróis o tempo todo, em qualquer circunstância:
    • Adicione uma Regra e insira um comentário para saber o que essa Regra faz.
    • Defina o tipo de Evento como Em andamento - Cada Jogador. Isso significa que cada jogador irá executar sua própria ocorrência da Regra.
    • Adicione duas Condições, que devem ser verdadeiras para que o herói seja forçado:
      • O número da rodada, a Variável Global "R", deve ser menor que o número total de heróis na lista de heróis. Se não for, significa que o jogo terminou, e os heróis não serão mais forçados. O número da rodada começa em 0 e vai aumentando em ordem crescente, então, se houver 6 rodadas, o número da rodada final será 5. Não é necessário definir a Variável Global "R" como 0, já que todas as variáveis começam com o valor padrão 0.
        • Valor: Variável Global
          • Variável: R
        • Operador: <
        • Valor: Contagem de
          • Matriz: Variável Global
            • Variável: E
      • Isso irá checar se o herói que está sendo usado por dado jogador deve ser diferente do herói desejado naquela rodada. O "dado jogador" é representado pelo Jogador do Evento, um Valor especial que se refere ao jogador que estiver executando uma ocorrência da Regra. O "herói desejado" da rodada atual é o herói armazenado no índice correspondente da lista de heróis (Variável Global "L"). Como a rodada atual está armazenada na Variável Global "R", o herói desejado pode ser obtido usando o "Valor na Matriz".
        • Valor: Herói de
          • Jogador: Jogador do Evento
        • Operador: !=
        • Valor: Valor na Matriz
          • Matriz: Variável Global
            • Variável: L
          • Índice: Variável Global
            • Variável: R
    • Sabendo que o jogador precisa mudar de herói, adicione duas Ações que irão executar:
      • A primeira Ação forçará o herói desejado ao Jogador do Evento. A primeira Entrada dessa Ação é o jogador cujo herói será forçado. A segunda Entrada é o herói, para que o herói desejado seja fornecido.
        • Ação: Começar a forçar jogador a ser o herói
        • Jogador: Jogador do Evento
        • Herói: Valor na Matriz
          • Matriz: Variável Global
            • Variável: L
          • Índice: Variável Global
            • Variável: R
      • A segunda Ação pré-carrega o próximo herói da lista, para que os jogadores não precisem esperar muito antes da troca de heróis. Todos os jogadores pré-carregam seu herói separadamente, embora joguem com o mesmo. Isso acontece porque cada jogador pode precisar carregar um visual diferente para o mesmo herói. Utilizar Adicionar Valor para adicionar 1 à Variável Global "R" instrui a Ação a pré-carregar o próximo herói, em vez do herói atual. Na última rodada, isso produzirá um Índice de Matriz fora do limites da Matriz da Variável Global "L". Isso não é um problema, já que todos os valores fora dos limites de uma Matriz são considerados como 0, então Ações esperadas para um herói que estiverem em 0 não farão nada.
        • Ação: Pré-carregar Herói
        • Jogador: Jogador do Evento
        • Herói: Valor na Matriz
          • Matriz: Variável Global
            • Variável: L
          • Índice: Adicionar
            • Valor: Variável Global
              • Variável: R
            • Valor: Número
              • Número: 1,00
  • A próxima Regra que vamos criar irá configurar cada rodada, se ainda não tiverem sido inicializadas.
    • Adicione uma Regra e insira um comentário para saber o que essa Regra faz.
    • Defina o tipo de Evento como Em andamento - Global. Isso significa que apenas uma instância dessa Regra será executada.
    • Adicione três Condições, que devem ser verdadeiras para a rodada desde o início:
      • O jogo deve estar em andamento. Ou seja, a tela Escolher Heróis e o tempo de organização já passaram, mas a partida ainda não terminou.
        • Valor: Jogo está em andamento
        • Operador: ==
        • Valor: Verdadeiro
      • A Variável Global I deve ser Falsa. Esta variável será usada para indicar se a rodada atual foi inicializada. Se a Variável Global I não tiver sido definida, terá o valor 0, que é equivalente a Falso neste tipo de comparação.
        • Valor: Variável Global
          • Variável: I
        • Operador: ==
        • Valor: Falso
      • O número da rodada, a Variável Global "R", deve ser menor que o número total de heróis na lista de herói.
        • Valor: Variável Global
          • Variável: R
        • Operador: <
        • Valor: Contagem de
          • Matriz: Variável Global
            • Variável: L
    • Sabendo que todas as Condições são verdadeiras, a rodada precisa ser inicializada. Adicione algumas Ações que farão isso acontecer:
      • A primeira Ação dirá ao modo de jogo principal que a partida não deve terminar em decorrência de critérios normais. Em um Combate até a Morte, isso significa que o jogo não irá terminar porque o tempo acabou ou porque alguém atingiu o limite de pontuação. Assim que essa Ação for executada, a partida não irá terminar até que o script reative a conclusão integrada ao modo de jogo ou que um vencedor seja expressamente declarado.
        • Ação: Desativar Conclusão Integrada ao Modo de Jogo
      • A próxima Ação irá configurar o cronômetro atual do modo de jogo para a duração de uma rodada.
        • Ação: Definir tempo da partida
        • Tempo: Número
        • Número: 60,00
      • Esta Ação define a Variável Global "I" como Verdadeira, para que a inicialização só ocorra quando a Variável Global "I" voltar a ser Falsa.
        • Ação: Definir variável global
        • Variável: I
        • Valor: Verdadeiro
  • Esta Regra fará com que sistema espere o tempo da rodada atual terminar antes de avançar para a próxima.
    • Adicione uma Regra e insira um comentário para saber o que essa Regra faz.
    • Defina o tipo de Evento como Em andamento - Global. Isso significa que apenas uma instância dessa Regra será executada.
    • Adicione duas Condições, que devem ser verdadeiras para que o jogo avance para a rodada seguinte:
      • O jogo deve estar em andamento. Ou seja, a tela Escolher Heróis e o tempo de organização já passaram, mas a partida ainda não terminou.
        • Valor: Jogo está em andamento
        • Operador: ==
        • Valor: Verdadeiro
      • O tempo da partida atual deve ser 0, o que significa que o tempo da rodada já terminou.
        • Valor: Tempo da partida
        • Operador: ==
        • Valor: Número
          • Número: 0,00
    • Em resposta a essas Condições serem verdadeiras e a rodada ter terminado, a partida irá avançar para a rodada seguinte e defini-la como não inicializada. Adicione duas Ações para isso acontecer:
      • Esta Ação fará com que as outras Regras entendam que a partida avançou para a rodada seguinte.
        • Ação: Modificar Variável Global
        • Variável: R
        • Operação: Adicionar
        • Valor: Número
          • Número: 1,00
      • Esta Ação definirá a Variável Global "I" como Falsa, fazendo com que as outras Regras entendam que uma nova rodada precisa ser inicializada.
        • Ação: Definir variável global
        • Variável: I
        • Valor: Falso
  • A última Regra finalizará a partida quando todas as rodadas tiverem sido jogadas.
    • Adicione uma Regra e insira um comentário para saber o que essa Regra faz.
    • Defina o tipo de Evento como Em andamento - Global. Isso significa que apenas uma instância dessa Regra será executada.
    • Adicione uma Condição, que verificará se a Variável Global "R" é igual ao número de elementos da Variável Global "L". Se for, isso significa que todos os heróis da lista de heróis foram utilizados em uma rodada. Quando isso acontecer, a partida deve chegar ao fim.
      • Valor: Variável Global
        • Variável: R
      • Operador: ==
      • Valor: Contagem de
        • Matriz: Variável Global
          • Variável: L
    • Quando a Condição for verdadeira, esta Ação reativará a conclusão integrada ao modo de jogo. Como o cronômetro estará no 0, o modo de jogo irá finalizar a partida imediatamente e o fluxo normal de finalização do jogo irá começar.
      • Ação: Ativar Conclusão Integrada ao Modo de Jogo

Depurando seu Script

Depois de criar um Script, você pode usar o Inspetor da Oficina para ver o seu script sendo executado no jogo, descobrir quais Ações e Condições estão ativadas e se há algum erro no seu Script.

Para acessar o Inspetor da Oficina:

  1. Inicie uma partida com o Script que você criou.
  2. Aperte Esc.
  3. Aperte Abrir depurador de Script.
  4. Aperte Ativar. Este recurso está desativado na configuração padrão.

O Inspetor da Oficina é formado por:

  • Registro: O Registro permite que você saiba o que está acontecendo
  • Comentário: Exibe o comentário associado à Regra.
  • Condição: Lista as Condições necessárias para que as Ações sejam executadas
  • Ação: Lista o que foi executado pela Ação
  • Depurador Temporal: O Depurador Temporal permite que você regrida ou progrida na linha temporal de um jogo em andamento.

Compartilhando seu Script

Depois de criar um Script incrível, você poderá compartilhá-lo com o resto do mundo (ou apenas com seus amigos) durante seis meses. Os scripts que você criou podem ser usados em qualquer plataforma, independentemente da plataforma em que foram criados.

Para compartilhar um Script:

  1. Clique em Jogar > Navegador de Jogos > Criar > Configurações > Compartilhar .
  2. Clique em Copiar.
  3. Envie o link para outras pessoas!

Abrindo um Script

Se alguém compartilhou um Script que você gostaria de usar:

  1. Clique em Jogar > Navegador de Jogos > Criar > Configurações > Importar .
  2. Abra o link.
  3. Clique em Ok.

Dicas e Truques

  • Fica mais fácil acessar o Inspetor da Oficina ao definir um atalho. Para fazer isso, clique em Esc > Opções > Controles. Arraste para baixo até encontrar Abrir Inspetor da Oficina. Defina um tecla para o atalho.
  • O Inspetor da Oficina avisa não apenas o que aconteceu, mas o que não aconteceu (e por quê)!
  • Não se esqueça dos jogos existentes! Você pode usar configurações pré-definidas em vez de pensar em uma solução nova de cabeça.
  • Se um Evento não estiver funcionando como o esperado, seu Jogador do Evento pode já estar executando a lista de Ações. Dê uma conferida nas Ações em Espera da sua Regra, especialmente se alguma delas estiver definida para ignorar Condições.
  • Para escolher um ponto específico no mapa, use o Valor "Vetor" e clique no ícone da Câmera.
  • O Valor "Surgiu" é muito útil se quiser que toda a lógica só comece a funcionar depois que o jogador estiver com o herói no jogo.
  • Se quiser que suas Regras sejam executadas somente depois das fases Configurações e Escolher Heróis, utilize o Valor "Jogo está em andamento".
  • Atribuir um Valor para uma Variável e analisá-lo no Inspetor da Oficina é a maneira mais fácil de compreender o que irá acontecer com o Valor durante o jogo.
  • Você pode armazenar o último efeito ou ícone criado em uma Variável de Jogador utilizando o Valor "Entidade Criada por Último" Assim, você poderá referenciar a entidade mais tarde para destruição.
  • Ao combinar Matrizes Filtradas com Valores como "Todos os Jogadores no Objetivo" ou "Jogadores no Raio", você poderá filtrar facilmente jogadores que preencham certos requisitos (morto, vivo, efeito de status, etc.).
  • Se precisar de um comportamento de ramificação, você poderá usar a Ação "Ignorar se" para pular qualquer quantidade de Ações se uma dada Condição for verdadeira. Se fizer isso, poderá ser necessário incluir a Ação "Anular" às Ações ignoradas para impedir que as duas ramificações sejam executadas.
  • É possível filtrar as listas dos menus suspensos por tipo.
  • Se o seu Valor esperar uma Matriz como parâmetro, mas não recebê-la, ele converterá a Entrada para uma Matriz de tamanho um.
    • O contrário também é válido. Se o seu Valor esperar um único dado, mas receber uma Matriz, ele irá utilizar o elemento da posição 0 da Matriz.
  • Você conseguirá entender melhor o que está dando errado no seu trabalho se dividi-lo em diversas Ações e Condições.
  • Se não tiver certeza do que um Valor, Ação ou Entrada faz, você pode passar o mouse por cima deles no PC ou selecionar "Mostrar Detalhes" nos consoles para ver uma explicação.
  • Sempre preencha a seção Comentário para não se esquecer do que a sua Regra está fazendo!
  • Teste frequentemente!