Miglioramenti e modifiche - Note di rilascio di Lumberyard

Miglioramenti e modifiche

In Lumberyard Beta 1.21 sono stati implementati miglioramenti e modifiche a sistemi e funzionalità Lumberyard.

Animation Editor (Editor animazione)

Nella funzionalità Animation Editor (Editor animazione) sono stati implementati i seguenti miglioramenti e le seguenti modifiche:

  • Parameter Condition Time Requirement Field (Campo requisito tempo per condizione parametro) – È stato aggiunto un campo Time Requirement (Requisito tempo) alla condizione del parametro per le righe di transizione. Il campo specifica il periodo di tempo minimo in secondi durante il quale la condizione del parametro deve restituire True per poter eseguire la transizione. Se la condizione del parametro torna su False durante il tempo specificato, la transizione non viene eseguita. Il valore predefinito è 0.0 e indica che non è richiesto alcun tempo minimo per la transizione.

    Esempio

    Supponiamo che il valore di Time requirement (Requisito tempo) sia 1. Se la condizione del parametro è True, deve passare un secondo prima che si verifichi la transizione. Se la condizione del parametro torna su False durante questo secondo, la transizione non si verifica.

Audio

Sono stati implementati i miglioramenti e le modifiche seguenti per l'audio:

  • In una versione futura, i moduli audio verranno convertiti in pacchetti gem. Il codice Audio Controls Editor (Editor controlli audio) verrà spostato dalla directory Sandbox Plugins a questi nuovi pacchetti gem. Questa modifica include i moduli seguenti:

    • CrySoundSystem

    • CryAudioImplWwise

    Se apporti modifiche significative ai sistemi audio Lumberyard, il progetto di gioco ne potrebbe essere potenzialmente interessato.

Canvas del grafico

Il canvas del grafico, abilitato dal pacchetto gem Graph Canvas, presenta i miglioramenti e le modifiche seguenti:

  • Connection Notification Bus Update (Aggiornamento bus per notifiche di connessione) – L'evento OnMoveComplete (SpostamentoCompleto) è obsoleto e viene sostituito da OnMoveFinalized (SpostamentoFinalizzato). OnMoveFinalized (SpostamentoFinalizzato) restituisce un valore booleano che specifica se la connessione è valida, mentre OnMoveComplete (SpostamentoCompleto) segnalava solo se la connessione era valida. In una versione futura, OnMoveComplete (SpostamentoCompleto) verrà rimosso. Nel frattempo, l'implementazione predefinita di OnMoveFnalized (SpostamentoFinalizzato) mantiene la segnalazione di OnMoveComplete (SpostamentoCompleto).

  • Extender slots (Slot estensione) – Gli slot di estensione consentono ai nodi di aggiungere dinamicamente pin a un nodo. Questi pin rimangono finché l'utente finale non li rimuove manualmente.

    
                        Aggiunta di slot aggiuntivi a un nodo.

    Per aggiungere o creare slot di estensione, consulta il seguente esempio di codice.

    Esempio

    // Simplified down from ScriptCanvas's extender slot implementation. See NodeUtils.cpp for the raw implementation. AZ::EntityId DisplayExtensionSlot(const AZ::EntityId& graphCanvasNodeId, GraphCanvas::ConnectionType connectionType, const AZStd::string& name, const AZStd::string& toolTip, const AZStd::string& displayGroup, GraphCanvas::ExtenderId extenderId) { GraphCanvas::ExtenderSlotConfiguration graphCanvasConfiguration; // Common display code with other slots. // Controls the name of the slot, the tool tip, where it's displayed on the node. And what type of connection it should appear as. graphCanvasConfiguration.m_name = name; graphCanvasConfiguration.m_tooltip = toolTip; graphCanvasConfiguration.m_slotGroup = GraphCanvas::SlotGroup(displayGroup); graphCanvasConfiguration.m_connectionType = connectionType; // Extender Specific Configurations // This Id is how the slot will make requests to the back-end to add slots for a particular operation(using GraphModelRequest::RequestExtension) graphCanvasConfiguration.m_extenderId = extenderId; AZ::Entity* slotEntity = nullptr; GraphCanvas::GraphCanvasRequestBus::BroadcastResult(slotEntity, &GraphCanvas::GraphCanvasRequests::CreateSlot, graphCanvasNodeId, graphCanvasConfiguration); if (slotEntity) { slotEntity->Init(); slotEntity->Activate(); GraphCanvas::NodeRequestBus::Event(graphCanvasNodeId, &GraphCanvas::NodeRequests::AddSlot, slotEntity->GetId()); } return slotEntity ? slotEntity->GetId() : AZ::EntityId(); }

    Esempio GraphModelRequests

    ExtenderSlot richiama il metodo RequestExtension di GraphModelRequests (RichiesteModelloGrafico) quando ExtenderSlot deve creare uno slot in risposta all'operazione di un utente. Il metodo fornisce il valore NodeId del nodo richiedente e il valore ExtenderId specificato. Il metodo si aspetta uno dei seguenti valori:

    • SlotId dello slot creato.

    • Lo slot specifico associato a ExtenderId nel caso di una singola estensione che aggiunge più pin.

    virtual SlotId RequestExtension(const NodeId& nodeId, const ExtenderId& extenderId) { AZ_UNUSED(nodeId); AZ_UNUSED(extenderId); return SlotId(); }

Mobile

In Mobile sono stati implementati i seguenti miglioramenti e le seguenti modifiche:

  • La compressione ASTC è stata abilitata per impostazione predefinita per mappe Normali su Android e iOS. Per modificare l'impostazione predefinita, puoi modificare il file dev/Gems/ImageProcessing/Code/Source/ImageBuilderDefaultPresets.settings. Se il progetto utilizza un file delle impostazioni ImageBuilder personalizzato, devi modificare il file per abilitare la compressione ASTC per gli asset del progetto. Per modificare la tecnica di compressione per i file texture, consulta il file dev/Gems/ImageProcessing/Code/Source/ImageBuilderDefaultPresets.settings.

Reti

Il nuovo pacchetto gem Multiplayer Analytics consente agli sviluppatori di Lumberyard di analizzare il traffico di rete in tempo reale durante il gioco. Utilizzando questo pacchetto gem, gli sviluppatori possono individuare i colli di bottiglia nel traffico del gioco e ottimizzarli come necessario. Puoi monitorare la larghezza di banda totale per ogni campo di rete o per ogni procedura remota.

PhysX

Nel sistema PhysX sono stati implementati i seguenti miglioramenti e le seguenti modifiche:

  • Lo strumento PhysX Configuration (Configurazione PhysX) ora dispone di collegamenti alla documentazione della Guida. Utilizza questi collegamenti per ulteriori informazioni su come filtrare le collisioni.

  • Gli elementi di collisione PhysX ora interagiscono con il sistema CryWater corrente. Puoi utilizzare questi elementi per generare effetti di increspatura.

  • Sono ora disponibili le seguenti funzioni in Script Canvas:

    • OverlapSphere

    • OverlapBox

    • OverlapCapsule

  • Nell'editor Script Canvas, il nodo OnCollision (Collisione) ora supporta PhysX. Puoi utilizzare questo nodo per determinare le proprietà e l'impatto sulle entità quando si verificano collisioni, ad esempio le coordinate, la forza applicata e così via.

  • Sono ora disponibili le seguenti funzioni di proiezione della forma in Script Canvas:

    • SphereCast

    • BoxCast

    • CapsuleCast

  • Per impostazione predefinita, i progetti Samples Project e Multiplayer Sample sono abilitati con i seguenti pacchetti gem:

    • PhysX

    • Personaggi PhysX

    • PhysX Debug (Debug di PhysX)

  • I file di licenza NVIDIA PhysX ora sono inclusi nel download di Lumberyard.

  • L'SDK NVIDIA PhysX 4.1 ora supporta la generazione di librerie statiche e dinamiche per tutte le piattaforme Lumberyard supportate.

Script Canvas

In Script Canvas sono stati implementati i miglioramenti e le modifiche seguenti:

  • Dynamically typed slots (Slot tipizzati dinamicamente) – Nell'editor Script Canvas, ora puoi connettere dinamicamente tra loro gli slot tipizzati. Come i gruppi di nodi, qualsiasi coppia di nodi tipizzati dinamicamente collegati tra loro ora condivide le stesse limitazioni, tra cui tutte le limitazioni del gruppo di nodi. Inoltre, gli slot tendono sempre a trovarsi nello stato meno limitato possibile. A meno che un tipo di visualizzazione non fornisca un tipo a un set di slot tipizzati dinamicamente, gli slot rimarranno non tipizzati.

    Esempio

    
                            Creare un nodo concatenato dinamicamente.
  • Dynamically add slots (Aggiunta dinamica di slot) – Puoi aggiungere qualsiasi numero di punti utilizzando un pulsante sui nodi che supportano gli slot aggiunti dinamicamente. Per aggiungere uno slot, trascina una connessione da e verso l'icona + oppure fai clic sull'icona + o sull'etichetta.

    Nota

    Se hai un nodo personalizzato e desideri aggiungere questa funzionalità, consulta la sezione relativa ai nodi di estensione.

    Esempio

    
                            Collegare i nodi utilizzando i nodi di estensione.
  • Comment and Group Presets (Set di configurazione per commenti e gruppi) – L'editor Script Canvas ora supporta un set di configurazione per commenti e gruppi. Utilizza i set di configurazione per creare e archiviare le impostazioni di commenti e gruppi in modo da poterle riutilizzare in modo semplice e veloce per migliorare la coerenza tra i grafici Script Canvas.

    
                        Utilizzare i set di configurazione nell'editor Script Canvas.

    Per creare un set di configurazione da un gruppo o da un commento, fare clic con il pulsante destro del mouse sul gruppo o sul commento e scegliere Create Preset From (Crea set di configurazione da). Le impostazioni del carattere e il colore principale si sincronizzano con il set di configurazione e il testo visualizzato viene rimosso dal modello.

    Una volta creato un set di configurazione, non puoi più riconfigurarlo. Tuttavia, puoi eliminare il set di configurazione e aggiungerlo nuovamente utilizzando Presets Editor (Editor set di configurazione). Eventuali modifiche o aggiornamenti apportati al set di configurazione eliminato non vengono salvati quando lo elimini e lo aggiungi di nuovo.

    Puoi specificare un set di configurazione come predefinito per un gruppo o un commento del nodo.

    
                        Eliminare o reimpostare un set di configurazione per commenti e gruppi.
  • Disabled Nodes (Nodi disabilitati) – Ora puoi disabilitare i nodi selezionati al momento della modifica. I nodi disabilitati non verranno eseguiti durante il runtime e non genereranno avvisi o errori quando salvi un grafico Script Canvas. Tuttavia, questi nodi saranno ancora presenti nei dati e potrai interagire con essi. I nodi disabilitati hanno un aspetto diverso e, se sono associati ad altri nodi, anche questi ultimi non verranno eseguiti.

    Per abilitare o disabilitare i nodi, fai clic con il pulsante destro del mouse sul nodo e scegli Enable (Abilita) o Disable (Disabilita). Puoi anche premere Ctrl+K+C per disabilitare un nodo o Ctrl+K+U per abilitarlo.

    Esempio

    
                            Eliminare o reimpostare un set di configurazione per commenti e gruppi.
  • New nodes (Nuovi nodi) – L'editor Script Canvas aggiunge i seguenti nodi:

    • Repeater (Ripetizione) – Questo nodo attiva l'output di un'operazione per il numero di volte specificato. Puoi inserire un ritardo tra ogni esecuzione del pin Action (Operazione).

    • Switch (Effettua lo switch) – Questo nodo attiva il pin dell'output specificato dal campo dell'indice. Ha un funzionamento simile a quello di un blocco switch nel codice.

    • Ordered Sequencer (Sequenziatore ordinato) – Questo nodo attiva gli output disponibili nell'intervallo di pin da 0 a N. Il nodo non attiverà il pin successivo finché il thread di esecuzione precedente non termina o non raggiunge un nodo latente.

  • Altri miglioramenti di Script Canvas

    • È stata aggiunta una nuova opzione che consente di personalizzare lo zoom avanti di un grafico Script Canvas.

    • È stata modificata la distanza massima per lo zoom indietro in modo che l'editor Script Canvas visualizzi l'intera area del grafico modificabile.

    • Le schede del grafico ora dispongono di un menu contestuale con operatori comuni. Premi la rotellina centrale del mouse per chiudere una scheda.

    • I menu dell'editor Script Canvas vengono sottoposti a refactoring. Ciò significa che riflettono in modo più accurato tutte le funzionalità disponibili e consentono di trovare più facilmente i tasti di scelta rapida.

    • L'editor Script Canvas ora memorizza i grafici precedentemente aperti in Lumberyard Editor (Editor Lumberyard) e li visualizza alla successiva apertura dell'editor.

      Per disabilitare questa funzionalità, scegli Settings (Impostazioni), Global Preferences (Preferenze globali), Remember Open Canvases (Ricorda canvas aperti).

    • Le connessioni non valide ora visualizzano una descrizione del motivo per cui la connessione non può essere stabilita.

    • Quando salvi un grafico, gli errori di convalida ora includono una descrizione con il numero di avvisi. In precedenza l'editor evidenziava gli errori nel grafico.

    • Nel componente Script Canvas, se fai clic sull'icona Open in Script Canvas Editor (Apri nell'editor Script Canvas) per la proprietà Script Canvas Asset (Asset Script Canvas) viene creato un grafico Script Canvas. Quando lo salvi, lo script viene visualizzato nel componente Script Canvas collegato all'entità.

Compatibilità SDK

Lumberyard 1.21 è compatibile con le seguenti versioni dell'SDK:

  • AWS SDK for C++ versione 1.4.34.3

  • SDK Amazon GameLift Server versione 3.2.1

Terrain (Terreno)

Il sistema del terreno presenta le seguenti modifiche.

  • Il livello del colore del terreno è stato notevolmente migliorato. Le modifiche possono potenzialmente interessare chiunque abbia creato una soluzione alternativa specifica per gestire il bug relativo alla linea di giunzione del terreno. Queste modifiche includono:

    1. Aprendo un livello nell'editor, se Export to Engine (Esporta in motore) non era stato eseguito di recente, il livello prima visualizzava le linee di giunzione tra i settori del terreno per qualsiasi settore di cui fosse stato modificato il colore. Queste linee ora non sono più visibili. La visualizzazione nell'editor deve corrispondere a quella visualizzata dopo aver scelto Export to Engine (Esporta in motore).

    2. Finora, quando sceglievi Export to Engine (Esporta in motore) o Export Terrain Texture (Esporta texture terreno), il sistema del terreno calcolava un colore di pixel medio lungo le linee di giunzione delle sezioni del terreno. Ora, i colori dei pixel rimangono coerenti con le texture di input. Questo potrebbe causare un aspetto leggermente diverso della texture lungo le linee di giunzione se le texture di input sono state create in modo da tener conto del problema.

    3. Quando utilizzavi più sezioni di terreno, le operazioni matematiche per il calcolo dei pixel erano disattivate per uno o più pixel alla fine del terreno. Di conseguenza, quando visualizzavi il livello nell'editor e sceglievi Export to Engine (Esporta in motore), le mappature di colore potevano spostarsi di uno o più pixel sul terreno rispetto alla visualizzazione precedente. Il nuovo risultato rappresenta accuratamente gli input. Tuttavia, questa modifica potrebbe causare risultati imprevisti se gli input sono stati modificati in modo da tenere conto di questo bug.

      Nota

      Potrebbero verificarsi ancora spostamenti di pixel visibili lungo le linee di giunzione quando modifichi il colore del terreno a causa di piccole differenze nel calcolo UV tra i settori del terreno modificati e la texture finale esportata. Se ciò causa problemi, la soluzione alternativa consiste nell'utilizzare Generate Terrain Texture (Genera texture terreno) o Export To Engine (Esporta in motore) per produrre una texture di runtime corretta.

  • Editor.exe ora supporta un argomento della riga di comando -runpythonargs facoltativo. Se utilizzata, la stringa viene passata allo script Python a cui fa riferimento l'argomento --runpython.

    Editor.exe --runpython import_heightmap.py --runpythonargs "TestLevel test_heightmap.tif"
  • Le API ImportHeightmap, ExportHeightmap e RefreshTerrain sono state aggiunte a CHeightmap e le funzioni di caricamento e salvataggio specifiche per tipo di file sono state impostate come private.

  • Sono state aggiunte le seguenti associazioni Python dell'editor:

    • terrain.get_max_height()

    • terrain.set_max_height(float max_height)

    • terrain.import_heightmap(string name, bool resize)

    • terrain.export_heightmap(string name)

    • terrain.get_elevation(float x, float y)

  • Le associazioni Python dell'editor ora stampano il testo della Guida ed eseguono correttamente il completamento automatico quando vengono utilizzate nella console Lumberyard Editor (Editor Lumberyard).

UI Editor (Editor IU)

Vedi le modifiche seguenti di UI Editor (Editor IU) per Lumberyard.

  • La proprietà Scale To Device (Dimensiona in base al dispositivo) del componente Transform2D (Trasformazione 2D) fornisce più opzioni di dimensionamento rispetto all'opzione Uniform Scale to Fit (Dimensiona per adattare uniformemente) esistente.

    In UI Editor (Editor IU) ora vengono visualizzati gli avvisi che segnalano risultati indesiderati per la proprietà Scale to Device (Dimensiona in base al dispositivo).

  • È stata aggiunta una proprietà per la larghezza e l'altezza massima al componente Layout Cell (Cella layout). Consente di specificare una dimensione massima per un elemento, controllata da un componente di layout.

Varie

Vedi varie altre modifiche apportate a Lumberyard.

  • Le seguenti API, sistemi e strumenti saranno rimossi in una versione futura:

    • Pacchetto gem AWS

    • AzCore: DirectSocket

    • Boid

    • Pacchetto gem CryEntityRemoval

    • CryAISystem

    • CryAnimation

    • CryEntitySystem e CryAction

    • CryInput

    • CryPhysics

    • CryScriptSystem

    • CrySystem (specificamente, API che duplicano la funzionalità in AzCore)

    • Editor CBaseObject (tra cui prefab Cry CSelectionGroup e codice correlato)

    • Flow Graph (Grafico flussi)

      • Tutti i riferimenti a Flow Graph (Grafico flussi) dai pacchetti gem Cloud Canvas

    • Libreria PRT

    • Strumenti

      • Behavior Tree Editor

      • Plugin dell’editor:

        • Etichettatura degli asset

        • Editor di animazione

        • Riquadro di visualizzazione QML e cartella legacy

      • Il plug-in di controllo della sorgente legacy

      • LiveMocap

      • Plugin Max e Maya (previsto per la sostituzione con FBX Pipeline)

      • Integrazione di Statoscope

      • Strumento Woodpecker (Driller Visualizer)

  • È stata rimossa la libreria di terze parti JANSSON dai file PackageConfig.json e SetupAssistantConfig.json. Questa libreria conteneva pacchetti inutilizzati che Lumberyard non richiede più. Questa modifica non influisce sul motore o sul progetto di gioco. Non è necessario apportare modifiche al codice.

  • L'operazione Disconnect nell'esempio CloudGemWebCommunicator ora è asincrona e senza blocchi.

  • Sono stati rimossi i test delle funzionalità legacy di Cry (lumberyard_version/dev/Code/FeatureTests).

  • È stato rimosso il supporto del compilatore Pre C++ 14.

  • Nuovi nomi per le macro che eliminano i messaggi di traccia AZ

    Le macro seguenti per l'eliminazione dei messaggi di traccia AZ nel framework degli unit test AZ hanno macro equivalenti con nuovi nomi. Le macro precedenti verranno rimosse in una versione futura.

    Nome macro precedente Nome nuova macro
    AZ_TEST_START_ASSERTTEST AZ_TEST_START_TRACE_SUPPRESSION
    AZ_TEST_STOP_ASSERTTEST AZ_TEST_STOP_TRACE_SUPPRESSION

    Le vecchie macro hanno eliminato solo i messaggi di traccia AZ_Error e AZ_Assert ma il loro nome implicava l'arresto dell'applicazione. Le nuove macro sono equivalenti in termini di funzionalità alle macro precedenti, ma hanno nomi che riflettono in modo più accurato le loro funzionalità.