WORKSHOP | Manual completo de Uso

INTRODUZINDO A OFICINA DE OVERWATCH

Galera aqui é Ravnus, criador do Ecopoint, hoje eu e minha namorada traduzimos o manual para usar o Workshop :heart:

Caso queiram participar do grupo que criei para criadores, procure por “OWWorkShop” no facebook.

Este arquivo não está completo pois não consigo postar imagens no forum. Mas voce pode acessa-lo via Google Docs no grupo do WorkShop mencionado acima

Esperamos poder ter ajudado!

#Ravnus #JuntosSomosMaisFortes

----------------------------------------------------------------------------------------------------------------

Crie partidas antes inimagináveis com o novo sistema de Oficina! A Oficina é um sistema simplificado de scripting que expande as funcionalidades disponíveis no Game Browser.

Com a Oficina, você irá adicionar novas regras ao Script para criar novos modos de jogo com base a aquelas já existentes dentro do Overwatch. As regras podem fazer diversas modificações: mudar como um herói se movimenta e como usa suas habilidades, modificar como jogadores são curados ou atingidos, ou até colocar textos em display em certas circunstâncias.

Um dos modos de jogo que você pode criar é o Molten Floor (chão de lava, em tradução livre), onde seu herói irá entrar em chamas sempre que estiver no chão.

ÍNDICE

► Acessando a Oficina

► Criando um Script

○ Adicionando regras

○ Selecionando um evento

○ Adicionando condições

○ Adicionando uma ação

• Tipos de ação

○ Informações adicionais

○ Exemplos

► Desbugando seu Script

► Compartilhando seu Script

► Abrindo um Script

► Dicas e truques

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 regras
  2. Selecionar um evento
  3. Adicionar condições (opcional)
  4. Adicionar uma ação

Você pode adicionar quantas regras, condições e ações que quiser.

Adicionando regras

  • Regras são as partes "mais customizáveis" que compõem seu Script. Cada Script deve conter uma ou mais regras. Cada regra tem um comentário opcional, além de:
  • Evento: define quando a regra será executada. Para mais informações, veja o "Selecionando um evento".
  • Condição: lista opcional de afirmações para que as regras possam ser aplicadas. Para mais informações, veja "Adicionando condições".
  • Ações: lista de coisas que acontecem quando o evento e condições são cumpridos. Para mais informações, veja "Adicionando uma ação".

Para adicionar uma regra, clique em Adicionar Regra.

Selecionando um evento

Um evento define quando a Regra será aplicada. Quando um Evento acontece dentro da partida, uma instância da Regra é criada. Cada Instância avalia a condição e executa a ação independente das outras instâncias.

Uma vez que a regra é criada no editor, um evento é adicionado automaticamente. Você precisará especificar que tipo de evento você irá querer.

Para especificar um tipo de Evento:

  1. Clique no menu suspenso próximo a "Evento"

  2. Selecione um dos tipos de evento

  3. Se necessário, especifique o time ou jogador que deve ser impactado com esse evento.

Adicionando uma condição

Após adicionar uma regra e evento, você tem a opção de adicionar uma ou mais condições. Condições são uma lista de afirmações para que a regra possa executar sua lista de ações.

Se a Condição pertence à regra com um evento do tipo "Ongoing-Global" ou "Ongoing-Each Player", é checado continuamente para verificar se a condição é verdadeira. Se a condição pertence a uma Regra de outro tipo, é checado sempre que o evento ocorrer. Se a Regra não tem condições, a ação será executada assim que o Evento ocorrer. Cada Condição é feito através de dois valores, que usa um Operador para comparar e verificar para ver se as condições são verdadeiras. Veja "Valores" para mais informações.

Para adicionar uma condição:

  1. Clique em Adicionar próximo à Condições

  2. Preencha as lacunas de Valores

Nota: Quando um Valor em si tem um comando ( como o valor "Hero of", que precisa saber o jogador que irá adquirir o Herói), então o comando daquele Valor irá aparecer abaixo dele.

  1. Seleciona um operador. Os operadores são:
  • == Iguais
  • != Diferentes
  • > Maior que
  • >= Maior ou igual a
  • < Menor que
  • <= Menor ou igual a

EXEMPLOS

Adicionando uma Ação

Uma Action é algo que modifica o jogo. Elas são executadas em ordem de Cima para Baixo, para a lista de Actions começar a funcionar:

  • O Event associado com a Rule deve ter ocorrido.
  • Todas as condições da Rule precisam ser verdades (se não, não terá Conditions).

Se o Tipo do Evento é “Ongoing - Global” ou “OnGoing - Each Player” a lista de ações irá executar quando cada condição passar pela primeira vez. Sempre a lista de Conditions falhar e passar de novo, as Actions irão tentar ser executadas novamente.

Com a exceção de “Wait action” ( ver Wait Action para mais informações), Todas as Actions se executarão e serão finalizadas imediatamente. Cada Action é feita de Zero ou mais comandos, o que descreve como o jogo é modificado. Cada comando é um “Value” fornecido, o que é um pedado de instrução em como conseguir informação.

Para mais informações, veja “Valores”.

Para Adicionar uma Ação:

  1. Clique em Add perto de Actions.
  2. Selecione Action, o que descreve como o jogo será modificado
  3. Selecione o Value no menu Drop-down para cada comando que aparecer.

Nota: Algumas Actions irão criar um objeto ou um Comportamento OnGoing. Tais Actions tem um Input chamado “Reecaluation.” Este comando determina se o outro comando para essa Action está arrumado (Deixando o Objeto ou o Comportamento Ongoing sem alteração) ou Dinâmico (Mudando o Comportamento Ongoing ou o Objeto assim que o Value for assinalado para as mudanças de Input).

EXEMPLOS

Actions

  • Pause Match Time: Pausa o tempo da partida atual
  • Modify the Global Avriable (t, Add, 5): Aumenta a Variavel Global T em 5
  • Set Invisible ( Event Player, enemies): Faz o jogador que está executando essa regra ficar invisível para os inimigos.

Actions com o comando Reevaluation

  • Create Icon (all Players ( All Teams), Global Variable (P), Alert, Position):

Cria um ícone de alerta que é visível para todos na localização especificada por uma Variável Global “P”. Reavalia a posição continuamente, então se a Variável Global “P” mudar depois, a posição do ícone irá mudar para uma localização nova.

  • Create Icon (All Players(All teams), Global Variable (P), Alert, None):

Cria um ícone de alerta que é visível a todos na localização especificada pela a Variável Global P. Não reavalia nada, então, mesmo se a variável Global P mudar depois, a posição do ícone não será atualizada.

Tipos de Ação

Apesar de existir um potencial grande de ações, existem algumas que você deveria ficar atento.

Ação de Loop

LOOP é uma ação que causa a execução de uma lista de ações a reiniciar desde o princípio. Existem quatro tipos de ações de Loop:

  • Loop: Sempre reseta a lista de ações
  • Loop If: Reinicia a lista de ações se o comando da condição da ação avaliar que o Value é tanto 0 quanto falso.
  • Loop if Condition Is True: Reinicia a lista de ação se todas as condições da regra estão “passando”.
  • Loop if Condition Is True: Reinicia a lista de ações se qualquer uma das Condições da Regra está atualmente “falhando”.

Uma ação de Loop é permitida se uma ação de Espera é garantida de executar antes de começar a lista de ações.

AÇÃO “WAIT”

(esperar)

Wait é uma Ação que faz o tempo passar uma antes que uma ação subsequente seja executada. O tempo minimo de espera é de 0.25 segundos.

Existem três opções de Behaviors para a ação Wait:

  • Ignore Condition: Se selecionado, a execução da ação não poderá ser interrompida por Condições e outros Events.

  • Se o Event Type é “Ongoing - Global” ou “Ongoing - Each Player”, Condições transitando entre Falhando ou Passando, farão com que nada aconteça.

  • Se o Event é de qualquer outro tipo que ocorra igual ao Event Player, então o evento será ignorado completamente.

  • Abort when False: Se isto estiver selecionado, a Lista de Ações irá para a execução se a Condição começar a falhar.

  • Restart When True: Se este estiver selecionado, a execução da Ação irá reiniciar a primeira ação se um dos eventos abaixo acontecer:

  • Se o Event Type é “Ongoing - Global” ou “Ongoing - Each Player” e as Condições transitam de falhar para passar.

  • Se o Event é de qualquer outro tipo, um evento que ocorra com o mesmo Event Player, as condições irão passar todas.

INFORMAÇÕES ADICIONAIS

Strings

O String Value gera uma String, e possui os comandos a seguir:

  • String: Texto a ser exibido. Se o texto contém um número dentro de Colchetes, ele será substituído pelo Value providenciado pelo comando correspondente.
  • {0}: O Value que será convertido para texto antes de repor o {0} no Strig. Este Value pode ser de qualquer tipo.
  • {1}: O Value que será convertido para texto antes de repor o {1}: no Strig. Este Value pode ser de qualquer tipo.
  • {2}: O Value que será convertido para texto antes de repor o {2}: no Strig. Este Value pode ser de qualquer tipo.

Exemplos

String(“hello”, null, null, null): Produz a String “hello”

String(“{0}vs{1}”,Hero (ana), Hero(Pharah), Null): Produz a string “Ana vs Pharah”.

Strings não podem ser usadas em Condições or armazenadas em Variáveis, por causa de complicações com jogadores usando idiomas diferentes no mesmo jogo customizado.

Values

(valores)

Um Value é um pedaço de informação, ou, uma instrução de como obter uma informação, fornecendo o Input (comando) de uma Condição, uma Ação, ou outro Value. Values podem ser combinados com outros.

Existem vários, vários Values, então não iremos definir todos aqui. entretanto, eles estão definidos no Editor do Workshop. Aqui estão alguns que você vai gostar de ver:

VALUE COMENTÁRIO
Number Fornece um número real numa distância especificada por input
Vector Fornece um valor Tridimensional numa distância especificada pelo input. Este é usado para posições e direções.
Team Indica um time específico, como Time 1, Time 2 ou Todos os Times
Hero Indica um herói Específico
Null Indica a falta de um jogador ou entidade
True Fornece um Value de True (verdade)
False Fornece um Value de False (Falso)
Compare Fornece tanto True ou Falso, independente se a comparação descreve se é verdade ou não
Event Player Fornece o jogador que estará executando essa instância da regra ou Null como se não tivesse jogador
Attacker Indica o Atacante para a instance da Regra ou Null se não tiver um Atacante
Vitima Indica se tem uma Vítima para a instância da regra ou Null se não existe uma vítima
Current Array element Fornece um Value atual que é considerado quando usado com “IF” True for Any (se verdadeiro para qualquer um) , If True for All (Se verdadeiro para todos), Filtered Array ou o Valor Sorted Array.

Um Valor pode ser armazenado em “array”, o que é uma coleção de vários Valores.

  • Várias Actions e Values podem criar e modificar um Array.

Por Exemplo, o Value “All Players” da a você um Array de cada jogador atualmente no jogo.

Você também pode montar seu proprio Array usando a operação “append to Array” da Ação “Modify Global Variable” ou da Ação “Modify Player Variable”.

Se um Input espera por um Array mas recebe algum outro tipo de Value, o Value é copiado para um Array de um elemento para o benefício do Input. Similarmente, se um Input Espera que outro tipo de Value mas recebe um Array, o primeiro Value do Arrey é usado (ou 0 se o Array estiver vazio).

Variables

(Variáveis)

Uma Variable é um lugar onde o Value pode ser armazenado e usado depois. Com a exceção de Strings, qualquer Value pode ser armazenado em uma Variable. Todas as Variables começam com o Número de Value de 0.

Existem dois tipos de Variables em um Script:

  • Global Variable: Existem 26 Variáveis globais, nomeadas de A a Z. Cada Variável mantem separadamente Value ou Array de Values.
  • Player Variable: Cada Jogador possui 26 Variáveis, nomeadas de A a Z. Cada Variável mantem separadamente Value ou Array de Values.

Existem 3 operações que podem ser executadas em uma Variável:

  • Settings: “Set Global Variable” e “Set Player Variable” irá mudar a Variável para um novo Value, substituindo o Value anterior.

  • Modifying: “Modify Global Variable” e “Modify Player Variable” modifica o Value em uma Variável usando uma operação aritmética (como adicionar, multiplicar, etc.) ou uma operação de Array. (append, Remove).

  • Chasing: “Chase Global Variable Over Time”, “Chase Player Variable Over Time”, Chase Global Variable at Rate” e “Chase Player Variable at Rate” muda gradativamente a Variável sobre tempo ou a uma velocidade específica.

  • O Destino do Chase pode ser um número ou um Vetor (ou qualquer outro Value que Resulte em um número ou vetor).

  • Se o Destino é um Numero, o Valor da Variável precisa ser um numero antes do “Chase” ter início, para que o Chase funcione corretamente

  • Se o Destino é um vetor, o Valor da Variável precisa ser um vetor antes do “Chase” ter início, para que o Chase funcione corretamente

  • Se a Reavaliação estiver ligada para o destino, o Chase fará um update se preciso para “perseguir a mudança de destino, mesmo se o Destino tiver sido alcançado anteriormente, Para mais informações veja “adicionando uma ação”.

  • Você pode cancelar um Chase usando a Ação “Stop Chasing Global Variable” e a ação “Stop Chasing Player Variable”.

  • Quando o Chase é Cancelado, a variável mantém o valor atual, o que algo entre a onde o chase começou e o Destino.

Exemplos

Pronto para entrar em Ação? Tente criar um destes modos de jogo, iremos te ensinar o que você precisa e o porque:

MOLTEN FLOOR

Aqui vamos ensinar você como criar o “chão é lava”, um jogo onde os jogadores queimam e tomam dano se eles ficarem no chão.

  1. Primeiro, vamos ter certeza que você vai jogar o jogo no mapa desejado
  • Clique em Jogar > Navegador de jogos > Criar > Configurações > Mapas.
  • Selecione o mapa que você quer testar e desabilite os outros.
  1. Entre no seu WorkShop
  • Clique em Voltar
  • Clique em WorkShop
  1. Agora é hora de fazer um Script! vamos adicionar nossa primeira Regra
  • Clique em Adicionar Regra

  • Na Seção de comentário escreva, Começar a queimar SE estiver no chão. Isto vai permitir que você saiba que esta Regra e a regra que faz os jogadores queimarem se estiverem no chão.

  • Agora, Mude o Tipo de Evento, para que possamos saber quando a Regra será executada.

  • No Drop-down de ventos, selecione “Ongoing - Each player”. Isto vai indicar que a Regra será avaliada separadamente para cada jogador no jogo.

  • Deixe os Drop-downs na posição Padrão de opções

  • Agora, vamos adicionar uma Condição. Esta condição vai determinar se a regra vai ou não ser executada. Você pode deixar isto vazio se você quer a Regra seja sempre executada!

  • Embaixo das Condições, clique em Adicionar

  • No Primeiro Drop-Down de Valor, selecione “is on ground” (Está no chão). Este valor será verdadeiro sempre que o jogador estiver no chão.

  • Deixe todos os outros Drop-downs na posição padrão e click em OK.

  • Event Player Significa “O jogador que esta regra está ativa agora”.

  • Finalmente, iremos adicionar uma Ação. Ações são as coisas que acontecem se a Condição for “verdadeira”.

  • Esta ação vai fazer o herói queimar se estiver no chão.

  • Embaixo de Ações, clique em Adicionar.

  • No Drop-down de Ações, Seleciona “Set Status”

  • No Drop-Down de Status, Selecione “burning” (queimando)

  • Deixe todos os outros Drop-downs na posição padrão e click em OK.

  1. Agora vamos testar se o seu heroi está pegando fogo enquanto está no chão.
  • Clique VOLTAR duas vezes
  • Na tela de criar um jogo, clique em iniciar
  • Selecione um herói
  • Assim que entrar no jogo, seu heroi deverá estar pegando fogo.
  • Pressione ESC e clique em Abrir Editor do Workshop para continuar a construir seu Script
  1. Agora, Vamos adicionar outra Regra para garantir que o herói não irá pegar fogo se ele estiver pulando ou no ar.
  • Ao invés de Adicionar uma Regra do início, vamos copiar a última que criamos.

  • Próximo a sua Regra, clique em em Copiar.

    • Clique em Copiar Regra.
    • Mude a descrição para Parar de queimar no ar. Isto vai permitir a você saber que esta regra é que faz o seu herói parar de queimar se ele estiver no ar ou pulando.
    • Mantenha o Tipo de Evento Existente
    • Agora, iremos editar a condição, Esta condição irá determinar se a Regra irá ser executada ou não.
  • Clique na condição existente que diz “Is On Ground(event Player)== True.”

  • No Drop-Down de Valor, Selecione False

  • Deixe todos os outros Drop-downs na posição padrão e click em OK.

    • Agora, iremos editar a ação, esta ação irá permitir que o seu heroi pare de queimar se ele não estiver no chão.
  • Clique na ação existente que diz “Set Status(event Player, Null, Burning, 1000).”

  • No Drop-Down de Ações, selecione Clear Status (limpar Status).

  • No Drop-Down de Status, selecione Burning (queimando).

  • Deixe todos os outros Drop-downs na posição padrão e click em OK.

  1. Agora vamos testar se o heroi para de queimar se estiver no ar!
  • Clique Voltar Duas vezes.
  • Assim que entrar no jogo, seu heró deverá estar pegando fogo. Pule para ver se ele para de queimar.
  • Pressione ESC e clique em Abrir Editor do Workshop para continuar a construir seu Script
  1. Finalmente, vamos colocar a causar dano nos heróis caso eles estejam no chão.
  • Expanda a Regra “Começar a queimar SE estiver no chão”.

  • Nas ações, clique em Adicionar. Esta ação vai fazer que o heroi leve dano se estiver no chão.

    • No Drop-down de ações, selecione Damage over time.
    • Em baixo de Duration (durações), mude o numero para 9999.
    • Em baixo de Dano por segundo, mude o numero para 30.
    • Deixe todos os outros Drop-downs na posição padrão e click em OK.
  • Expanda a regra “Parar de queimar no ar”.

Embaixo das Ações, clique em Adicionar. Esta ação irá parar de fazer o herói tomar dano quando não estiver no chão.

No Drop-Down de Ações, selecione Stop all Damage over time.

  1. vamos testar se o seu herói leva dano se estiver no chão e se para se estiver no ar ou pulando.
  • Clique Voltar Duas vezes.
  • Saida do Spawn Room e ve se o seu herói leva dano.
  • Pule e veja se ele para de levar dano.
  1. Você conseguiu! O chão agora é lava!

DEBUGANDO SEU SCRIPT

Assim que você criar um script, você pode usar o Inspetor do Workshop para ver seu Script sendo executado in-game. Ver quais ações e condições estão ativas, e ver se existe algum problema com seu Script.

para Acessar o Inspetor do WorkShop:

  1. Comece um jogo com o Script que você criou.
  2. Aperte Esc.
  3. Aperte “Abrir o Debugger de Script”.
  4. Aperte Ativar. Esta função não fica ativada por padrão.

O inspetor do WorkShop é composto das coisas abaixo.

  • Entry: O entry permite você saber o que está acontecendo.
  • Comment: Isto mostra o comentário associado com a Regra
  • Condição: Lista as condições que precisam passar para que as Ações sejam executadas.
  • Ações: Lista as ações sendo executadas.
  • Timeline Scrubber: The Timeline Scrubber permite você a mover para frente ou para trás no progresso do seu jogo.

Compartilhando seu Script

Uma vez que tenha criado o Script, você por compartilhá-lo com o mundo (ou apenas com seus amigos) pelos próximos seis meses. Os Scripts criados podem ser usados em qualquer plataforma, independente de qual plataforma foi usada para fazer.

Para compartilhar um Script:

  1. Clique em Jogar > Navegador de jogos > Criar > Configurações > Compartilhar

  2. Clique em Copiar

  3. Envie o link para todos!

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. Clique no link

  3. Clique em OK

Dicas e truques

► É mais fácil acessar o Workshop Inspector se você colocar um atalho para isso. Para fazer isso, clique em Esc > Opções > Controle. Role para baixo até encontrar a opção Open Workshop Inspector e vincule um atalho.

► Workshop Inspector não dirá apenas o que aconteceu, mas também o que não aconteceu (e o porque disso)!

► Não se esqueça dos preset games! Há algumas configurações já providenciadas que você pode usar ao invés de criar algo do zero.

► Se um Evento não está funcionando do jeito esperado, o Event Player provavelmente já está executando uma lista de ações. Observe os Wait Actions em suas Regras, principalmente se alguma delas está configurada para ignorar Conditions.

► Para escolher um local específico do mapa, use o "Vector" Value e clique no ícone da câmera

► O "Has Spawned" Value é útil apenas se você quer algo lógico após um jogador pegar um herói na partida.

► Se você quer que as Regras se apliquem após a fase de Setup e Assemble Heroes na partida, utilize o "Is Game in progress" Value

► Atribuindo um Value para uma Variável e observando o Workshop Inspector, é o jeito mais fácil de entender como o Value está sendo acionado durante uma gameplay.

► Você pode armazenar o efeito ou ícone da última criação em uma Player Variable usando o "Last Created Entity" Value. Isso permite usá-lo como referência.

► Combinar Filtered Arrays com Values como "All Players on Objective" ou "Players within radius", permite filtrar jogadores que cumprem alguns determinados critérios (morto, vivo, efeito de status, etc).

► Se você precisa de um branching behavior, você pode usar o "Skip if" Action para pular quantos números de ação se a Condition dada for verdadeira. Uma vez feito isso, as Actions puladas podem precisar incluir o "Abort" Action para prevenir que os dois branches se executem.

► Você pode filtrar o drop-down list apenas digitando.

:wrench: Participem do nosso grupo de criadores: :hammer:

16 Curtidas

Bom trabalho!
30carestsers3

1 Curtida

obrigado! deu um trabalhinho mas foi de boas :heart:

RAVNUS :3

Obrigado pelo tutorial BR, mesmo que inglês eu ficaria bem WTF com tudo, sou apenas um simples designer grafico e como tenho dislexia com números/coisas de logica, acabo não entendendo ou me atrapalhando

Edit: busquei no FB por OWWorkShop, nada aprece, sou muito asno para fb .-.

3 Curtidas

Meu maior problema é que nunca trabalhei com scripts, vai ser mto difícil pra mim criar modos de jogos do jeito que eu quero ;-

2 Curtidas

mas o link do grupo tá no final do post :frowning:

Bem que eu falei que era burrice minha xD

1 Curtida