Overwatch 2

Ti presentiamo il Workshop di Overwatch

Blizzard Entertainment

Crea partite in modi finora impossibili grazie al Workshop! Il Workshop è un sistema semplificato di script che espande la personalizzazione delle funzioni nelle Partite personalizzate. Il Workshop permette ai giocatori di creare uno script per aggiungere regole e condizioni di gioco uniche alle modalità di gioco di Overwatch che tutti conosciamo e adoriamo. Con le regole sarà possibile fare cose come cambiare il movimento e il funzionamento delle abilità di un eroe, modificare il modo in cui i personaggi vengono danneggiati o curati, o addirittura visualizzare determinate stringhe di testo in certe condizioni.

Una modalità di gioco bollente che potrai creare è Suolo ardente, in cui l'eroe prende fuoco se tocca il terreno:

Nota sulla traduzione: 

Il Workshop contiene vocaboli ed espressioni tipiche della programmazione. Per questa ragione, abbiamo deciso di lasciare tali elementi (e la sintassi) in lingua inglese. Tuttavia, per rendere la funzione il più accessibile possibile agli esperti così come ai principianti, le descrizioni di tutte le variabili e dei valori verranno tradotte nella lingua di gioco prescelta.

Per qualsiasi domanda o dubbio sulla localizzazione del Workshop, contattaci sul forum di Traduzione-Localizzazione!

Indice

Accedere al Workshop

Per accedere al Workshop, clicca su Gioca > Partite personalizzate > Crea > Impostazioni > Workshop.

Creare uno script

Per creare uno script, devi:

  1. Aggiungere una regola
  2. Selezionare un evento
  3. Aggiungere una condizione (facoltativo)
  4. Aggiungere un'azione

Dopo aver fatto ciò, potrai aggiungere tutte le regole, condizioni e azioni possibili.

Aggiungere una regola

Le regole sono componenti altamente personalizzabili che formano lo script. Ogni script deve avere una o più regole.

Ogni regola ha un commento facoltativo e contiene:

  • Evento: determina quando la regola viene eseguita. Per ulteriori informazioni, consulta Selezionare un evento.
  • Condizioni: un elenco facoltativo di condizioni che devono verificarsi affinché la regola sia applicata. Per ulteriori informazioni, consulta Aggiungere una condizione.
  • Azioni: un elenco di quel che succede quando evento e condizioni sono soddisfatte. Per ulteriori informazioni, consulta Aggiungere un'azione.

Per aggiungere una regola, clicca su Aggiungi Regola.

Selezionare un evento

Un evento definisce quando la regola sarà eseguita. Quando un evento si verifica in gioco, viene creata un'istanza della regola. Ogni istanza valuta condizioni ed esegue azioni indipendentemente dalle altre istanze.

Quando una regola è creata nell'editor, viene aggiunto automaticamente un evento. Devi specificare il tipo di evento desiderato.

Per specificare un tipo di evento:

  1. Clicca sul menu a tendina di fianco a Evento.
  2. Seleziona uno dei seguenti:

    Tipo di evento Commento
    Continuo - Globale

    Crea una singola istanza della regola all'inizio della partita. L'istanza rimane attiva per tutta la partita.

    • Dal momento che l'istanza è attiva per tutta la partita, una condizione potrebbe essere a volte vera e a volte falsa. Quando la condizione si verifica per la prima volta, le azioni vengono eseguite.
    • Quando l'elenco di condizioni non si verifica e si ripete, si tenterà nuovamente di eseguire le azioni.
    Continuo - Ogni giocatore

    Crea un'istanza della regola per ogni giocatore all'inizio della partita. L'istanza rimane attiva per tutta la partita o finché il giocatore abbandona. Ogni istanza traccia condizioni e azioni separatamente.

    • Dal momento che l'istanza è attiva finché il giocatore è nella partita, una condizione potrebbe essere a volte vera e a volte falsa. Quando la condizione si verifica per la prima volta, le azioni vengono eseguite.
    • Quando l'elenco di condizioni non si verifica e si ripete, si tenterà nuovamente di eseguire le azioni.
    Giocatore ottiene eliminazione

    Esegue la regola quando un giocatore elimina un avversario. Solo un'istanza della regola può essere attiva ogni volta su uno specifico giocatore.

    • Quando un giocatore elimina qualcuno, le condizioni sono controllate. Se tutte le condizioni sono verificate, le azioni sono eseguite. Se anche una non lo è, le azioni non sono eseguite.
    Giocatore infligge colpo di grazia

    Esegue la regola quando un giocatore infligge un colpo di grazia. Solo un'istanza della regola può essere attiva ogni volta su uno specifico giocatore.

    • Quando un giocatore infligge un colpo di grazia, le condizioni sono controllate. Se tutte le condizioni sono verificate, le azioni sono eseguite. Se anche una non lo è, le azioni non sono eseguite.
    Giocatore infligge danni

    Esegue la regola quando un giocatore infligge danni. Solo un'istanza della regola può essere attiva ogni volta su uno specifico giocatore.

    • Quando un giocatore infligge danni, le condizioni sono controllate. Se tutte le condizioni sono verificate, le azioni sono eseguite. Se anche una non lo è, le azioni non sono eseguite.
    Giocatore subisce danni

    Esegue la regola quando un giocatore subisce danni. Solo un'istanza della regola può essere attiva ogni volta su uno specifico giocatore.

    • Quando un giocatore subisce danni, le condizioni sono controllate. Se tutte le condizioni sono verificate, le azioni sono eseguite. Se anche una non lo è, le azioni non sono eseguite.
    Giocatore muore

    Esegue la regola quando un giocatore muore. Solo un'istanza della regola può essere attiva ogni volta su uno specifico giocatore.

    • Quando un giocatore è ucciso, le condizioni sono controllate. Se tutte le condizioni sono verificate, le azioni sono eseguite. Se anche una non lo è, le azioni non sono eseguite.
  3. Se necessario, specifica la squadra o il giocatore che devono essere interessati dall'evento. Le opzioni sono:

    Opzione Commento
    Tutti L'evento si applica a tutte le squadre, compresi i giocatori in modalità Tutti contro tutti.
    Squadra 1 (o nome squadra attuale) L'evento si applica solo ai membri di questa squadra.
    Squadra 2 (o nome squadra attuale) L'evento si applica solo ai membri di questa squadra.
    Opzione Commento
    Tutti L'evento si applica a tutti i giocatori.
    Slot da 0 a 5 L'evento si applica solo ai giocatori nello slot selezionato. In una partita a squadre, due giocatori possono occupare uno slot (uno per squadra).
    Slot da 6 a 11 L'evento si applica solo ai giocatori nello slot selezionato. Questo si applica solo alle partite in modalità Tutti contro tutti.
    Eroe specifico L'evento si applica solo ai giocatori che sono resuscitati con quello specifico eroe.

Aggiungere una condizione

Dopo aver aggiunto una regola e un evento, avrai la possibilità di aggiungere una o più condizioni. Le condizioni sono un elenco di cose che si devono verificare prima che la regola possa eseguire il suo elenco di azioni. Se una condizione appartiene a una regola con il tipo di evento "Continuo - Globale" o "Continuo - Ogni giocatore", viene controllata continuamente. Se appartiene a un altro tipo di evento, viene controllata quando lo specifico evento si verifica. Se una regola non ha condizioni, le azioni verranno eseguite non appena l'evento si verifica. Ogni condizione è formata da due valori, che usano un operatore per effettuare un confronto e stabilire la verità. Consulta Valori per ulteriori informazioni.

Per aggiungere una condizione:

  1. Clicca su Aggiungi vicino a Condizioni.
  2. Riempi i campi valore.
    • Nota: quando un valore ha un input (come il valore "Eroe di", che ha bisogno di sapere da quale giocatore acquisire l'eroe), l'input del valore sarà mostrato sotto di esso.
  3. Seleziona un operatore. Gli operatori sono:
    • == Uguale a
    • != Non uguale a
    • > Maggiore di
    • >= Maggiore o uguale a
    • < Minore di
    • <= Minore o uguale a

Questo controlla se il numero dei giocatori nella partita è uguale al numero di giocatori in vita.

  • Value: "Numero di Giocatori vivi", controlla il numero totale di giocatori vivi.
    • Team: Squadra, controlla tutti i giocatori di una squadra.
    • Team: Tutti, controlla tutti i giocatori di tutte le squadre.
  • Operator: ==, indica che il primo valore dev'essere uguale al secondo affinché la condizione sia vera.
  • Value: "Numero di Giocatori vivi", controlla il numero totale di giocatori vivi.
    • Team: Squadra, controlla tutti i giocatori di una squadra.
    • Team: Tutti, controlla tutti i giocatori di tutte le squadre.

Altri esempi

  • IsFlagBeingCarried(Victim) == False: Il giocatore ucciso non doveva possedere la bandiera.
  • IsCrouching(Event Player) == True: Il giocatore su cui l'evento è attivo dev'essere accovacciato.
  • NumberOfFinalBlows(Attacker) > 10: Il giocatore che attacca ha più di 10 colpi di grazia.

Aggiungere un'azione

Un'azione è qualcosa che modifica il gioco. Le azioni sono eseguite dall'alto verso il basso. Affinché l'elenco di azioni venga eseguito:

  • L'evento associato alla regola dev'essersi verificato.
  • Tutte le condizioni della regola devono essere vere (o non devono esserci condizioni).
    • Se l'evento è del tipo "Continuo - Globale" o "Continuo - Ogni giocatore", l'elenco di azioni sarà eseguito quando ogni condizione si verifica per la prima volta. Quando l'elenco di condizioni non si verifica e si ripete, si tenterà nuovamente di eseguire le azioni.

Con l'eccezione dell'Azione di Attesa (consulta Azione di Attesa per ulteriori informazioni), tutte le azioni sono eseguite e terminano all'istante. Ogni azione è composta da zero o più input, che descrivono come la partita è modificata. A ogni input è assegnato un valore, ossia un'informazione o un'istruzione su come ottenere informazioni. Per saperne di più, consulta Valori.

Per aggiungere un'azione:

  1. Clicca su Aggiungi vicino ad Azioni.
  2. Seleziona un'azione che descrive il modo in cui la partita sarà modificata.
  3. Seleziona un valore nel menu a tendina per ogni input visualizzato.
    • Nota: alcune azioni creeranno un oggetto o un comportamento continuo. Queste azioni possono avere un input chiamato "Rivalutazione". Questo input determina se gli altri input dell'azione sono fissi (lasciando l'oggetto o comportamento continuo invariato) o dinamici (modificando l'oggetto o comportamento continuo man mano che il valore assegnato all'input cambia).

Azioni

  • Pause Match Time: mette in pausa il tempo della partita in corso.
  • Modify the Global Variable(T, Add, 5): aumenta la variabile globale T di 5.
  • Set Invisible(Event Player, Enemies): rende invisibile il giocatore che esegue questa regola.

Azioni con un input Rivalutazione

  • Create Icon(All Players(All Teams), Global Variable(P), Alert, Position): crea un'icona di notifica visibile a tutti nel punto specificato dalla variabile globale "P". Rivaluta la posizione continuamente, per cui se la variabile globale "P" cambia, l'icona sarà spostata nella nuova posizione.
  • Create Icon(All Players(All Teams), Global Variable(P), Alert, None): crea un'icona di notifica visibile a tutti nel punto specificato dalla variabile globale "P". Non rivaluta la posizione, per cui anche se la variabile globale "P" cambia, l'icona non cambierà posizione.

Tipi di azione

Anche se ci sono molte potenziali azioni, ecco alcune di cui essere a conoscenza:

Ciclo è un'azione che riavvia l'esecuzione dell'elenco di azioni dall'inizio. Ci sono quattro tipi di Azioni di Ciclo:

  • Loop: riavvia sempre l'elenco di azioni.
  • Loop If: riavvia l'elenco di azioni se l'input della condizione dell'azione è di valore diverso da 0 o falso.
  • Loop if Condition Is True: riavvia l'elenco di azioni se tutte le condizioni della regola sono vere.
  • Loop If Condition Is False: riavvia l'elenco di azioni se una qualsiasi delle condizioni della regola è falsa.

Un'Azione di Ciclo è consentita solo se l'esecuzione di un'Azione di Attesa è garantita prima dell'inizio dell'elenco di azioni.

Buono Cattivo

Questo è consentito, si attende prima del ciclo.

Questo non è consentito, perché sarebbe eseguito all'infinito senza attendere.

Attesa è un'azione che lascia passare del tempo prima che un'azione seguente possa essere eseguita. Il tempo minimo di attesa è pari a 0,25 secondi.

Ci sono tre opzioni di comportamento per le Azioni di Attesa:

  • Ignore Condition: se è selezionato, l'esecuzione delle azioni non può essere interrotta da condizioni o altri eventi.
    • Se l'evento è del tipo "Continuo - Globale" o "Continuo - Ogni giocatore", il cambiamento delle condizioni da false a vere non avrà conseguenze.
    • Se l'evento è di un altro tipo e un evento di quel tipo si verifica con lo stesso Giocatore Evento, l'evento viene ignorato.
  • Abort When False: se viene selezionato, l'esecuzione dell'elenco azioni si ferma se le condizioni sono false.
  • Restart When True: se viene selezionato, l'esecuzione delle azioni ripartirà dalla prima azione se succede una delle seguenti cose:
    • L'evento è del tipo "Continuo - Globale" o "Continuo - Ogni giocatore" e le condizioni cambiano da false a vere.
    • L'evento è di un altro tipo, un evento si verifica con lo stesso Giocatore Evento e le condizioni sono vere.

Informazioni aggiuntive

Il valore Stringa genera una stringa. Ha i seguenti input:

  • String: il testo da visualizzare. Se il testo contiene un numero tra parentesi graffe, sarà sostituito con il valore dell'input corrispondente.
  • {0}: il valore che sarà convertito in testo prima di sostituire {0} nella stringa. Il valore può essere di qualsiasi tipo.
  • {1}: il valore che sarà convertito in testo prima di sostituire {1} nella stringa. Il valore può essere di qualsiasi tipo.
  • {2}: il valore che sarà convertito in testo prima di sostituire {2} nella stringa. Il valore può essere di qualsiasi tipo.
  • String("Ciao", Null, Null, Null): Produce la stringa "Ciao".
  • String("{0} vs {1}", Hero(Ana), Hero(Pharah), Null): Produce la stringa "Ana vs Pharah".

Le stringhe possono essere combinate per dar vita a stringhe più complesse:

  • String("{0} vs {1}", Hero(Ana), String("{0} e {1}", Hero(Pharah), Hero(Genji), Null), Null): Produce la stringa "Ana vs Pharah e Genji".

Le stringhe non possono essere usate nelle condizioni né inserite in variabili a causa delle complicazioni date dall'uso di diverse lingue nella stessa partita personalizzata da parte dei giocatori.

Un valore è un'informazione o un'istruzione su come ottenere informazioni fornita all'input di una condizione, un'azione o un altro valore. I valori possono essere combinati.

Ci sono moltissimi valori e non li definiremo tutti qui. Tuttavia, sono definiti nell'editor del Workshop. Eccone alcuni:

Valore Commento
Numero Fornisce un numero reale nell'intervallo specificato dall'input.
Vettore Fornisce un valore tridimensionale nell'intervallo specificato dall'input. È usato per posizioni e direzioni.
Squadra Indica una squadra specifica, come Squadra 1, Squadra 2 o Tutte le squadre.
Eroe Indica un eroe specifico.
Nullo Indica l'assenza di un giocatore o entità.
Vero Fornisce il valore Vero.
Falso Fornisce il valore Falso.
Confronta Fornisce Vero o Falso, a seconda che il confronto descritto sia vero o falso.
Giocatore Evento Fornisce il giocatore che esegue l'istanza o la regola o Nullo se non esiste un tale giocatore.
Attaccante Indica l'attaccante per l'istanza della regola o Nullo se non esiste un attaccante.
Vittima Indica la vittima per l'istanza della regola o Nullo se non esiste una vittima.
Elemento Array Attuale Fornisce il valore attuale in considerazione con il valore Se vero per qualsiasi, Se vero per tutti, Array Filtrato o Array Ordinato.

Un valore può essere inserito in un Array, che è una collezione di più valori.

  • Diverse azioni o valori possono creare o modificare un array.
    • Per esempio, il valore "Tutti i giocatori" restituisce un array con tutti i giocatori in partita.
    • Puoi anche costruire i tuoi array usando l'operazione "Aggiungi ad Array" dell'azione "Modifica Variabile Globale" o "Modifica Variabile Giocatore".
  • Se un input si aspetta un array ma riceve un altro tipo di valore, il valore è copiato in un array di un elemento per corrispondere all'input. Allo stesso modo, se un input si aspetta un valore di un altro tipo ma riceve un array, viene usato il primo valore (o 0 se l'array è vuoto).

Una variabile è un luogo in cui un valore può essere immagazzinato e recuperato in seguito. Con l'eccezione delle stringhe, qualsiasi valore può essere inserito in una variabile. Tutte le variabili iniziano con il valore numerico 0.

Ci sono due tipi di variabile in uno script:

  • Variabile Globale: ci sono 26 variabili globali, dalla A alla Z. Ogni variabile ha un valore o array di valori diverso.
  • Variabile Giocatore: ogni giocatore ha 26 variabili, dalla A alla Z. Ogni variabile ha un valore o array di valori diverso.

Ci sono tre operazioni che possono essere eseguite su una variabile:

  • Impostazione: "Imposta Variabile Globale" e "Imposta Variabile Giocatore" impostano un nuovo valore per la variabile, sostituendo il valore precedente.
  • Modifica: "Modifica Variabile Globale" e "Modifica Variabile Giocatore" modificano il valore di una variabile usando un'operazione aritmetica (come Aggiungi, Moltiplica, ecc.) o di Array (Aggiungi, Rimuovi).
  • Segui: "Segui Variabile Globale nel tempo", "Segui Variabile Giocatore nel tempo", "Segui Variabile Globale a Frequenza" e "Segui Variabile Giocatore a Frequenza" cambiano gradualmente la variabile nel tempo o a una frequenza specificata.
    • La destinazione di Segui può essere un numero o un vettore (o qualsiasi valore che risulti in un numero o un vettore).
      • Se la destinazione è un numero, il valore della variabile dev'essere un numero prima dell'inizio di Segui, di modo che il processo funzioni correttamente.
      • Se la destinazione è un vettore, il valore della variabile dev'essere un vettore prima dell'inizio di Segui, di modo che il processo funzioni correttamente.
      • Se Rivalutazione è attiva per la destinazione, Segui sarà aggiornato come necessario per seguire una destinazione modificata, anche se è già stata raggiunta. Per ulteriori informazioni sulla Rivalutazione, consulta Aggiungere un'azione.
    • Puoi annullare Segui usando le azioni "Ferma Inseguimento Variabile Globale" e "Ferma Inseguimento Variabile Giocatore".
      • Quando Segui è annullato, la variabile conserva il valore attuale, che potrebbe trovarsi in un punto tra l'inizio di Segui e la destinazione.

Esempi

Pronto all'azione? Prova a creare una di queste modalità di gioco. Ti guideremo su quello che serve aggiungere e sui motivi:

Ti guideremo nella creazione di Suolo ardente, una modalità di gioco in cui gli eroi bruciano e subiscono danni se toccano terra.

  1. Prima di tutto, assicuriamoci che il gioco sia disponibile sulle mappe desiderate.
    • Clicca su Gioca > Partite personalizzate > Crea > Impostazioni > Mappe.
    • Seleziona la mappa su cui vuoi testare il gioco e disabilita le altre.
  2. Apri il Workshop.
    • Clicca su Indietro.
    • Clicca su Workshop.
  3. Ora dobbiamo creare uno script. Aggiungiamo la prima regola.
    • Clicca su Aggiungi regola.
    • Nella sezione Commento, inserisci Start Burning If On Ground. Questo ti consente di sapere che questa regola è quella che fa bruciare i giocatori che toccano terra.
    • Ora, cambia il tipo di evento di modo che sappiamo quando questa regola è eseguita.
      • Nel menu a tendina, seleziona Ongoing - Each Player. Questo indica che la regola sarà valutata separatamente per ciascun giocatore nella partita.
      • Lascia le opzioni predefinite negli altri menu a tendina.
    • Ora aggiungiamo una condizione. Questa condizione determinerà l'esecuzione o la mancata esecuzione della regola. Puoi anche lasciare il campo vuoto se vuoi che la regola sia eseguita sempre.
      • Sotto Condizioni, clicca su Aggiungi.
      • Nel primo menu a tendina Valore, seleziona Is On Ground. Il valore restituisce Vero quando il giocatore è a terra.
      • Lascia le opzioni predefinite negli altri menu a tendina e clicca su OK.
        • Giocatore Evento significa "il giocatore su cui la regola è in esecuzione".
    • Infine, aggiungeremo un'azione. Le azioni sono ciò che si verifica quando la condizione è vera.
      • Questa azione farà sì che un eroe inizierà a bruciare quando si trova a terra.
        • Sotto Azioni, clicca su Aggiungi.
        • Nel menu a tendina Azione, seleziona Imposta Stato.
        • Nel menu a tendina Stato, seleziona Bruciatura.
        • In Durata, cambia il valore numerico in 10.000.
        • Lascia le opzioni predefinite negli altri menu a tendina e clicca su OK.
  4. Vediamo se il tuo eroe prende fuoco quando tocca terra!
    • Clicca due volte su Indietro.
    • Nella schermata Crea partita, clicca su Avvia.
    • Seleziona un eroe.
    • Non appena inizia la partita, il tuo eroe dovrebbe iniziare a bruciare.
    • Premi Esc e clicca su Apri Workshop Editor per continuare a lavorare allo script.
  5. Ora aggiungiamo un'altra regola per fare in modo che gli eroi non brucino se saltano o sono in aria.
    • Invece di creare una regola da zero, copiamo l'ultima creata.
    • Accanto alla regola creata, clicca su Copia.
      • Clicca su Incolla regola.
      • Modifica la descrizione in Stop Burning When In the Air. Questo ti consente di sapere che questa regola è quella che ferma la bruciatura per gli eroi in aria o che saltano.
      • Tieni il tipo di evento esistente.
      • Ora modifichiamo la condizione. Questa condizione determinerà l'esecuzione o la mancata esecuzione della regola.
        • Clicca sulla condizione esistente "Is On Ground(Event Player) == True".
        • Nel menu a tendina, seleziona Falso.
        • Lascia le opzioni esistenti negli altri menu a tendina e clicca su OK.
      • Ora modifichiamo l'azione. Questa azione farà sì che un eroe smetterà di bruciare quando non si trova a terra.
        • Clicca sull'azione esistente "Set Status (Event Player, Null, Burning, 10000)".
        • Nel menu a tendina Azione, seleziona Azzera Stato.
        • Nel menu a tendina Stato, seleziona Bruciatura.
        • Lascia le opzioni esistenti negli altri menu a tendina e clicca su OK.
  6. Vediamo se il tuo eroe smette di bruciare quando si trova in aria!
    • Clicca due volte su Indietro.
    • Non appena la partita inizia, il tuo eroe dovrebbe iniziare a bruciare. Salta per vedere se smette di farlo.
    • Premi Esc e clicca su Apri Workshop Editor per continuare a lavorare allo script.
  7. Infine, faremo in modo che un eroe subisca danni finché si trova a terra.
    • Espandi la regola "Start Burning If On Ground".
    • Sotto Azioni, clicca su Aggiungi. Questa azione farà subire danni all'eroe finché si trova a terra.
      • Nel menu a tendina Azione, seleziona Danni Periodici.
      • In Durata, cambia il valore numerico in 9999.
      • In Danni al Secondo, cambia il valore numerico in 30.
      • Lascia le opzioni predefinite negli altri menu a tendina e clicca su OK.
    • Espandi la regola "Stop Burning If Not On Ground".
      • Sotto Azioni, clicca su Aggiungi. Questa azione farà in modo che l'eroe non subisca danni quando non è a terra.
      • Nel menu a tendina Azione, seleziona Stop All Damage Over Time.
  8. Vediamo se il tuo eroe subisce danni mentre è a terra e non li subisce mentre è in aria o salta.
    1. Clicca due volte su Indietro.
    2. Esci dall'area di partenza e vediamo se il tuo eroe inizia a subire danni.
    3. Salta e vediamo se il tuo eroe smette di subire danni.
  9. Ce l'hai fatta! Il terreno arde!

Ecco una spiegazione più dettagliata di una modalità di gioco, Deathmatch speculare. In questa partita ci sono diversi round brevi in cui tutti giocano con lo stesso eroe. Al termine di ogni round, ogni giocatore riparte nel punto in cui si trova con l'eroe successivo casuale di un elenco predeterminato. Al termine del round finale, vince il giocatore con più uccisioni.

Per esempio, in una partita, tutti potrebbero iniziare con McCree per poi passare a Pharah nel secondo round. In un'altra partita, potrebbero iniziare con Widowmaker per poi passare ad Ashe nel secondo round. A causa del modo in cui è generata questa lista, è difficile che lo stesso elenco sia ripetuto due volte!

Creiamo uno script per Deathmatch speculare.

  • Clicca su Gioca > Partite personalizzate > Crea > Impostazioni > Workshop.
  • Prima di tutto, creeremo la regola che crea l'elenco di eroi potenzialmente giocabili.
    • Questo elenco sarà inserito nella Variabile Globale "L" come array.
      • Gli array possono essere qualunque cosa, un elenco di giocatori, di eroi, di numeri, un valore singolo o anche nessun valore (in questo caso è un array "vuoto").
      • A ogni valore dall'array è assegnato un indice specifico, che aumenta a partire da 0. Un indice e il suo valore a volte sono chiamati "elemento".
      • L'ordine di un array è importante, e [Reaper, Winston, Mercy] è diverso da [Mercy, Winston, Reaper].
      • Gli array possono contenere dei tipi diversi. Per esempio, è possibile avere il seguente array: [123, Reaper, True, -4.5].
      • Se un input si aspetta un array, ma viene fornito un valore singolo, l'input riceverà quel valore inserito in un array di un elemento.
      • Se un input si aspetta un valore singolo ma riceve un array, l'input riceve il primo valore dell'array (o 0 se l'array è vuoto).
    • Aggiungi una regola e inserisci un commento di modo che tu sappia cosa fa questa regola.
    • Imposta il tipo di evento su Continuo - Globale. Questo significa che verrà eseguita una sola istanza della regola.
    • Dal momento che la regola non ha condizioni, verrà eseguita dall'inizio della partita.
    • Aggiungi un'azione con:
      • Azione: Imposta Variabile Globale
        • Variabile: L
      • Valore: Eroe
        • Eroe: Un eroe con cui vorresti giocare.
      Questo crea l'array degli eroi. L'azione "Imposta Variabile Globale" imposta "L" sul primo eroe dell'elenco.
    • Avere un solo eroe giocabile sarebbe noioso, aggiungiamone altri! Aggiungi tutte le azioni che vuoi con:
      • Azione: Modifica Variabile Globale
        • Variabile: L
      • Operazione: Aggiungi
      • Valore: Eroe
        • Eroe: Un eroe con cui vorresti giocare.
      Questo aggiunge altri eroi all'array creato in "L". Se la prima azione iniziava con "Modifica Variabile Globale" invece di "Imposta Variabile Globale", l'array inizia con 0. Tutte le variabili sono 0 per impostazione predefinita, per cui se non la modifichi il tuo array avrà il seguente aspetto: [0, Pharah, Hanzo, Ana,...] .
    • Aggiungiamo l'ultima azione per questa regola. Questa regola prende una copia casuale della Variabile Globale L (l'array di eroi), copia una parte dell'array casuale a partire dalla posizione 0 e include il numero di eroi che la modalità di gioco dovrebbe avere. La copia è inserita di nuovo nella Variabile Globale L, e il risultato è un sottoinsieme mescolato casualmente dell'elenco originale di eroi.
      • Per esempio, se l'elenco iniziale era [Ashe, Doomfist, Hanzo, McCree, Pharah, Soldier: 76, Zenyatta, Widowmaker, Ana] , l'array casuale potrebbe essere [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist, Soldier: 76, Zenyatta, McCree] e la sezione potrebbe essere [Hanzo, Pharah, Widowmaker, Ana, Ashe, Doomfist] .
  • La regola successiva garantisce che in ogni caso ogni giocatore stia usando lo stesso eroe in ogni momento.
    • Aggiungi una regola e inserisci un commento di modo che tu sappia cosa fa questa regola.
    • Imposta il tipo di evento su Continuo - Ogni giocatore. Questo significa che ogni giocatore eseguirà l'istanza della regola.
    • Aggiungi due condizioni, che devono essere vere affinché l'eroe venga determinato:
      • Il numero di round, la Variabile Globale "R", dev'essere minore del numero totale di eroi nell'elenco. Se non lo è, la partita termina, e non saranno usati altri eroi. Il numero di round parte da 0 e sale, per cui se ci sono 5 round il numero finale è 5. Va bene che il valore della Variabile Globale "R" non sia mai impostato su 0, perché tutte le variabili partono con il valore 0 predefinito.
        • Valore: Variabile Globale
          • Variabile: R
        • Operatore: <
        • Valore: Conteggio di
          • Array: Variabile Globale
            • Variabile: L
      • Questo controlla se l'eroe usato da un dato giocatore dev'essere diverso dall'eroe desiderato per quel round. Il "giocatore dato" è rappresentato dal Giocatore Evento, un valore speciale che si riferisce al giocatore che esegue al momento un'istanza della regola. L'"eroe desiderato" per il round attuale è l'eroe inserito nell'indice corrispondente dell'elenco eroi (Variabile Globale L). Visto che il round attuale è salvato nella Variabile Globale R, l'eroe desiderato può essere ottenuto usando "Valore nell'Array".
        • Valore: Eroe di
          • Giocatore: Giocatore Evento
        • Operatore: !=
        • Valore: Valore nell'Array
          • Array: Variabile Globale
            • Variabile: L
          • Indice: Variabile Globale
            • Variabile: R
    • Quando sappiamo che il giocatore deve cambiare eroe, aggiungi due azioni da eseguire:
      • La prima azione forzerà il Giocatore Evento a usare l'eroe desiderato. Il primo input di questa azione è il giocatore il cui eroe va forzato. Il secondo input è l'eroe, per fornire l'eroe desiderato.
        • Azione: Avvia Forzatura Giocatore su Eroe
        • Giocatore: Giocatore Evento
        • Eroe: Valore nell'Array
          • Array: Variabile Globale
            • Variabile: L
          • Indice: Variabile Globale
            • Variabile: R
      • La seconda azione precarica l'eroe successivo dell'elenco di modo che non si verifichi un lungo ritardo prima del cambio. Ogni giocatore precarica l'eroe separatamente, anche se tutti giocheranno con lo stesso eroe. Questo si verifica perché ogni giocatore potrebbe precaricare un modello diverso per l'eroe. Usare Aggiungi per aggiungere 1 alla Variabile Globale "R" istruisce all'azione di precaricare l'eroe successivo. All'ultimo round, questo produce un indice di array fuori dai limiti dell'array Variabile Globale "L". Questo va bene dal momento che i valori fuori limite per un array sono contati come 0, e qualsiasi azione che si aspetta un eroe e riceve 0 non farà nulla.
        • Azione: Precarica Eroe
        • Giocatore: Giocatore Evento
        • Eroe: Valore nell'Array
          • Array: Variabile Globale
            • Variabile: L
          • Indice: Aggiungi
            • Valore: Variabile Globale
              • Variabile: R
            • Valore: Numero
              • Numero: 1,00
  • La prossima regola imposta ciascun round se non è stato inizializzato.
    • Aggiungi una regola e inserisci un commento di modo che tu sappia cosa fa questa regola.
    • Imposta il tipo di evento su Continuo - Globale. Questo significa che verrà eseguita una sola istanza della regola.
    • Aggiungi tre condizioni, che devono essere vere affinché il round abbia inizio:
      • La partita dev'essere in corso. Questo significa che le schermate Organizzazione o Raduna gli Eroi si sono già verificate, ma la partita non è terminata.
        • Valore: Partita in corso
        • Operatore: ==
        • Valore: Vero
      • La Variabile Globale "I" dev'essere falsa. Questa variabile è usata per indicare se il round attuale è inizializzato. Se la Variabile Globale "I" non è mai stata impostata, avrà un valore pari a 0, che equivale a falso in confronti simili.
        • Valore: Variabile Globale
          • Variabile: I
        • Operatore: ==
        • Valore: Falso
      • Il numero intero, la Variabile Globale "R", dev'essere minore del numero totale di eroi nell'elenco.
        • Valore: Variabile Globale
          • Variabile: R
        • Operatore: <
        • Valore: Conteggio di
          • Array: Variabile Globale
            • Variabile: L
    • Quando sappiamo che le condizioni sono vere, il round dev'essere inizializzato. Aggiungi delle azioni per farlo:
      • La prima azione comunica alla modalità di gioco che la partita non deve finire secondo i criteri normali. Per un Deathmatch, significa che la partita non finirà perché il tempo finisce o qualcuno raggiunge il limite di punti. Quando questa azione verrà eseguita, la partita non finirà finché lo script non permetterà il termine della partita o verrà dichiarato un vincitore.
        • Azione: Disabilita Completamento Integrato della Modalità
      • La prossima azione imposta il timer della modalità di gioco sulla lunghezza di un round.
        • Azione: Imposta Durata Partita
        • Tempo: Numero
        • Numero: 60,00
      • Questa azione imposta la Variabile Globale "I" su vera per cui l'inizializzazione non avviene finché il suo stato non torna su falso.
        • Azione: Imposta Variabile Globale
        • Variabile: I
        • Valore: Vero
  • Questa regola attende che il tempo del round attuale finisca prima di passare al successivo.
    • Aggiungi una regola e inserisci un commento di modo che tu sappia cosa fa questa regola.
    • Imposta il tipo di evento su Continuo - Globale. Questo significa che verrà eseguita una sola istanza della regola.
    • Aggiungi due condizioni, che devono essere vere affinché la partita passi al round successivo:
      • La partita dev'essere in corso. Questo significa che le schermate Organizzazione o Raduna gli Eroi si sono già verificate, ma la partita non è terminata.
        • Valore: Partita in corso
        • Operatore: ==
        • Valore: Vero
      • Il tempo di gioco attuale dev'essere 0, il che significa che il tempo del round è scaduto.
        • Valore: Durata Partita
        • Operatore: ==
        • Valore: Numero
          • Numero: 0,00
    • Se queste condizioni sono vere e il round è finito, la partita passerà al round successivo e lo segnerà come non inizializzato. Aggiungi due azioni per farlo:
      • Questa azione comunica alle altre regole che la partita è passata al round successivo.
        • Azione: Modifica Variabile Globale
        • Variabile: R
        • Operazione: Aggiungi
        • Valore: Numero
          • Numero: 1,00
      • L'azione imposta la Variabile Globale "I" su falso, comunicando alle altre regole che bisogna inizializzare un nuovo round.
        • Azione: Imposta Variabile Globale
        • Variabile: I
        • Valore: Falso
  • La regola finale fa terminare la partita quando tutti i round sono stati giocati.
    • Aggiungi una regola e inserisci un commento di modo che tu sappia cosa fa questa regola.
    • Imposta il tipo di evento su Continuo - Globale. Questo significa che verrà eseguita una sola istanza della regola.
    • Aggiungi una condizione, che controlla se la Variabile Globale "R" corrisponde al numero di elementi della Variabile Globale "L". Se lo fa, significa che un round è stato giocato per ogni eroe dell'elenco. Quando questo accade, la partita dovrebbe finire.
      • Valore: Variabile Globale
        • Variabile: R
      • Operatore: ==
      • Valore: Conteggio di
        • Array: Variabile Globale
          • Variabile: L
    • Quando la condizione è vera, questa azione consentirà di nuovo il completamento della partita. Visto che il timer è a 0, la modalità di gioco terminerà la partita e inizierà la routine di chiusura.
      • Azione: Abilita Completamento Integrato della Modalità

Debug dello script

Dopo aver creato uno script, puoi usare il Workshop Inspector per visualizzarlo mentre viene eseguito in gioco, vedere quali azioni e condizioni sono attive e determinare i problemi.

Per accedere al Workshop Inspector:

  1. Avvia una partita con lo script che hai creato.
  2. Premi Esc.
  3. Premi Apri debugger script.
  4. Premi Abilita. Questa funzione non è abilitata per impostazione predefinita.

Il Workshop Inspector si compone di alcuni elementi.

  • Voce: la Voce ti dice che cosa sta succedendo.
  • Commento: mostra il commento associato alla regola.
  • Condizione: elenca le condizioni necessarie all'esecuzione delle azioni.
  • Azione: Elenca Azioni Eseguite
  • Timeline: consente di muoverti avanti o indietro nel progresso della partita.

Condividere lo script

Dopo aver creato uno script fantastico, puoi condividerlo col mondo (o con i tuoi amici) per i sei mesi successivi. Gli script possono essere usati su qualsiasi piattaforma, indipendentemente da quella di creazione.

Per condividere uno script:

  1. Clicca su Gioca > Partite personalizzate > Crea > Impostazioni > Condividi.
  2. Clicca su Copia.
  3. Invia il link agli altri!

Aprire uno script

Se qualcuno ha condiviso con te uno script che vorresti usare:

  1. Clicca su Gioca > Partite personalizzate > Crea > Impostazioni > Importa.
  2. Apri il link.
  3. Clicca su OK.

Consigli e trucchi

  • Usare il Workshop Inspector è più facile se imposti delle scorciatoie da tastiera. Per farlo, clicca su Esc > Opzioni > Comandi. Scorri verso il basso finché non trovi Apri Workshop Inspector e assegna un tasto.
  • Il Workshop Inspector non ti comunica solo quello che succede, ma anche quello che non succede e perché.
  • Non dimenticare le partite preimpostate! Ci sono alcune impostazioni già pronte che puoi usare invece di creare una soluzione da zero.
  • Se un evento non si verifica come previsto, il tuo Giocatore Evento potrebbe già eseguire l'elenco di azioni. Esamina le Azioni di Attesa nella regola, specialmente se alcune ignorano le condizioni.
  • Per scegliere un punto specifico della mappa, usa il valore "Vettore" e clicca sull'icona della macchina fotografica.
  • Il valore "Resuscitato" è utile se vuoi che la logica segua un giocatore con un eroe nel gioco.
  • Se vuoi che le tue regole siano eseguite dopo le fasi Organizzazione e Raduna gli eroi, usa il valore "Partita in Corso".
  • Assegnare un valore a una variabile e osservarla nel Workshop Inspector è il modo più facile per capire cosa restituisce il valore durante il gioco.
  • Puoi salvare l'ultimo effetto o icona creati in una Variabile Giocatore usando il valore "Ultima Entità Creata". Questo ti consente di riferirti all'entità più tardi per la distruzione.
  • Combinare Array Filtrati con valori come "Tutti i Giocatori sull'Obiettivo" o "Giocatori nel Raggio" consente di filtrare i giocatori che rispecchiano certi criteri (morto, vivo, effetti di stato...).
  • Se devi diramare il comportamento, puoi usare l'azione "Salta se" per saltare un certo numero di azioni se una condizione è vera. Se lo fai, le azioni saltate potrebbero includere un'azione "Annulla" per impedire l'esecuzione di entrambi i rami.
  • Puoi filtrare i menu a tendina scrivendo del testo.
  • Se il valore si aspetta un array come parametro ma non ne riceve uno, metterà l'input in un array con un elemento.
    • Vale anche il contrario. Se il tuo valore si aspetta un dato singolo ma riceve un array, userà l'elemento nella posizione 0 dell'array.
  • Dividere il lavoro in più azioni o condizioni ti consentirà più facilmente di capire cosa non va.
  • Se non sei certo di cosa faccia un'azione, un valore o un input, puoi passarci sopra il mouse (su PC) e scegliere "Mostra dettagli" (su console) per vedere una spiegazione.
  • Scrivi sempre qualcosa nella sezione Commento per ricordarti che cosa fa quella regola.
  • Testa spesso!