Il terribile tempo di MarzSquad

 

Ciao a tutti Squaddies,
Speriamo che vi stiate godendo la recente V5, e ricordate che uno zilione di cambiamenti stanno avvenendo dietro le quinte. Lo scopo di questo recap mensile è proprio quello mostrarvi tutto quello che è accaduto nello scorso mese per di sviluppo.

 

Systems

 

NetMove

NetMove, o genericamente sistema di movimento legato al network costruito da 0 per il supporto del movimento dei mezzi è ora completamente funzionante. NetMove rimuove tutti gli esorbitanti calcoli dei client, da ora saranno i client stessi a calcolare i propri movimenti, non graveranno più su client che vi circondano.
Quindi sia per i server che per i client vedrete un minor dispendio di CPU per quanto concerne i movimenti. E per quello che riguarda il network? Abbiamo anche ottimizzato il lato network. Abbiamo raggruppato i movimenti in un unico gruppo, aggiunte le interpolazioni ed inviato i dati necessari ad un client dalla base dei client. Il vecchio sistema invece mandava i dati a tutti i client nello stesso momento.

 

Integreremo piano piano il nuovo NetMove nel gioco, rendendo le Postazioni fisse, Veicoli ed Avatar maggiormente ottimizati una realtà.

 

 

Riflessione Dinamica dell’Audio

Anders è attualmente al lavoro su una nuova feature chiamata (in termini Squad)  Dynamic Reflection (Riflessione Dinamica n.d.r). Questo significa che nell’ambiente circostante possiamo designare spazi a cui assegnare differenti livelli audio per adattarsi a ciò che vi circonda. Questa feature si applicherà perfettamente alle armi ed agli effetti delle esplosioni. Il suono di fuoco delle armi non useranno più gli effetti di riverbo dell’engine (come dentro gli edifici), ma specifici suoni registrati dalla realtà per raggiungere un realismo audio maggiore. Precedentemente usavamo un solo suono per arma in qualsiasi punto dell’ambiente.

Epic ha inoltre speso un pò di risorse nel suo Engine Sonoro per la versione 4.11 dell’ Unreal da cui trarremo vantaggio. Due feature incluse nella 4.11 sono la sound occlusion (occlusione sonora) e la stereo spatialization (spazializzazione stereo).

Anders ha creato il seguente video come esempio, usando un tipico ambiente boschivo (significa che molti alberi circondano la fonte sonora).

 

 

Sound occlusion significa che se un oggetto sta bloccando una fonte sonora dall’ascoltatore, questa diverrà meno intensa e smorzata. Ottima per molti suoni ingame. Come un mezzo che sta passando vicino al vostro edificio o se qualcuno sta correndo dentro un edificio, l’ascoltatore all’esterno non lo sentirà molto chiaramente.

 

Stereo spatialization è un altra fantastica feature. Si può rendere un suono stereo come 2 canali o uno solo (mono) a seconda di quanto sarete lontano dalla fonte. Esempio: camminate vicino ad una cascata ed il rombo vi circonderà. Allontanatevi e potrete individuare la fonte facilmente comeun suono mono posizionale.

 

Art

 

Aggiornamento sugli Effetti delle Esplosioni in Ambienti Dedicati

 

Il capo degli effetti visivi Bruno, assieme al capo programmatore Kory, sono riusciti a portare il nostro sistema per le onde d’urto ad un nuovo livello. Hanno introdotto dei traccianti intelligenti che identificano i vari materiali quando avviene un eplosione. Questo conferisce un esplosione più “organica” su varie superfici. Date un occhio a queste immagini e fate attenzione a come l’ambiente reagisce alle esplosioni.

 

 

Interattività con la Vegetazione

 

Come continuazione dell’update dell’interazione con la vegetazione abbiamo iniziato il processo d’implementazione dei suoni dovuti all’interazione. Il goal finale è che possiate sia vedere sia sentire i nemici mentre strisciando in qualsiasi forma di fogliame.

 

 

Update dei Tunnel

Continue reading

Alpha v.5

La versione Alpha v.5 sta arrivando!
Il rilascio avverrà alle ore 17:00 UTC (18:00 da noi n.d.r.)
Ciao Squaddies,

Tenetevi pronti, un nuovo aggiornamento sta arrivando! La v.5 porta una serie di miglioramenti all’UI ed alla quality of life per migliorare la fluidità dell’esperienza di gioco, oltre a vari bilanciamenti e miglioramenti delle performance, senza contare un ampliamento delle aree giocabili delle mappe attualmente in rotazione nei server. Leggete il seguente changelog!

Principali Cambiamenti

Continue reading

Squad! Veicoli, Seguiamo il loro sviluppo da vicino!

Da 0 a 100!
Ciao a tutti ragazzi,

Il mio nome è Garrett, Senior Programmer qui dentro ad OWI. Voi molto probabilmente mi conoscete come RoyAwesome qui sul forum e su Reddit. Lavoro su Squad  da più di un anno, focalizzzandomi sull’implementazioni di varie features come ad esempio il sistema dei vari Deployable, le varie modalità di gioco, le modalità AAS, bandiere, punteggi etc. Una delle mie “missioni” principali negli ultimi mesi è stata su una delle features più richieste: i Veicoli.
Ho iniziato i lavori sui veicoli a Settembre 2015. A quello stadio avevamo 2 prototipi entrambi in Blueprint (Sistema di scripting dell’ Unreal Engines). Ne avete avuto un assaggio nel trailer Kickstarter sulle Humvee. Ho capito in tempi brevi che entrambi i prototipi avevano alcuni difetti fatali che mi hanno portato a scegliere di re-implementare da zero il sistema dei veicoli. Si è dimostrata essere una scelta vicente, permettendoci di creare un sistema robusto permettendoci la creazione di vicoli unici.

Un Veicolo sulla Mappa di Testing

Inoltre, prima di di scrivere qualsiasi linea di codice, dovevo sapere esattamente cosa volessimo che i veicoli fossero capaci di fare. Che tipo di azioni potevano fare? COsa sarebbe successo ad un mezzo colpito da un fucile? Un razzi? Un proiettile di carro? Cosa i passeggeri potevano fare? I mitraglieri? I guidatori? Avevo molte domande che richiedevano risposte che quindi ho girato ai nostri fantastici designers Z-Trooper e SgtRoss per aiutarmi nel brainstorm di alcune idee su come volessero rendere i Veicoli nella loro forma finale. Queste semplici domande hanno dato il via ad una grande discussione di design, portando poi alla costruzione di un corposo documento di design contenente tutte le idee più importanti e le implementazioni da fare. Con un design in mano, potevo quindi inziare a darmi da fare.

Partendo da un file di codice vuoto dovevo solo decidere da dove partire. I prototipi precedenti si erano focalizzati sulla Fisica ed il Movimento dei Veicoli e, siccome stavo partendo da 0, ho optato per iniziare dalla parte che nessuno di questi prototipi aveva affrontato: come entrare nel veicolo e come spostarsi tra le varie sedute al suo interno. L’ultima feature in particolare era un punto focale nel design, quindi ho iniziato implementando una versione semplificata. Come ulteriore bonus questo ha permesso di condividere i progressi con le Armi Per Postazioni Fisse, siccome entrare od uscire da queste richiedeva del lavoro.

L’implementazione iniziale delle sedute e delle interazioni con queste è stato un lavoro relativamente veloce, e verso la fine di Settembre ho iniziato a lavorare su di un prototipo di Veicolo statico che potesse avere un numero qualsiasi di posti a sedere. Ho incontrato vari problemi per il testing dove il gioco crashava ogni volta che entravo in un mezzo. Dopo una rapida investigazione ho scoperto che parte del codice presume che il  PlayerController (cosa voi siete) controllava sempre il Soldier (la vostra persona nel gioco). “Oh semplice” ho pensato, “fixero queste problematiche”. Bhè non era così semplice.

Configurazione delle Sedute in una Technical

Per aiutarvi a capire il problema più facilemente, l’Unreal Engine presenta alcuni ogetti importanti. Il Giocatore è rappresentato tramite il PlayerController. Il lavoro del  PlayerControllers è di controllare gli input dei vari giocatori, oltre che a tracciare il loro stato nel gioco. Loro non esistono nel mondo di gioco, ma possono prendere posseso di oggetti chiamati Pawns (Pedine), oggetti nel mondo di gioco che possono essere controllati. Fin dall’inizio dello sviluppo a ora avevamo solo un solo tipo di Pawn: il Soldier. A causa di questo alcuni sistemi core come le armi ed i danni funzionavano solo quando un PlayerController controllava un Soldier. Se il PlayerController controllava qualche altra cosa (poniamo il caso, un Veicolo), questo sistema andava in crash.

Qui potete vedere come, attualmente, potete entrare in un veicolo

Spezzare e riparare queste parti di codice mi ha portato via molto tempo, da Ottobre fino a Novembre. Alcune di queste erano facili da fixare, come istanze dove il codice creava un Pawn in un Soldier e non controllava se l’azione falliva, altre invece non erano così semplici. Ho realizzato, all’inizio d’Ottobre, che potevamo fixare questi problemi e rilasciare le Armi Per Postazioni Fisse in Novembre. Però ho poi scoperto che le Armi davano per scontato  che il nostro Player Controller controllasse il Soldier. I progressi sul fixaggio di tali problematiche è stato lento. Le Amri richiedevano di essere inserite in un Inventario che fosse parte integrante del Soldier. Ho dovuto suddividere il tutto in varie componenti (sperando di non compiere ulteriori problemi nel proceso). Ottobre si è poi trasformato in Novembre e stavo ancora lavorando su istanze dove le armi venissero utilizzate dalle Animazioni del Soldier in ogni Pawn controllata (che ovviamente non funzionava con i Veicoli).

Creazione di un Inventario per una calibro .50

Per fortuna, mentre ero occupato a fixare questi problemi, Kory , un altro programmatore, concluse il suo lavoro ed inizio a lavorare ai Veicoli insieme a me. A questo punto avevamo mancato il rilascio per la patch di Novembre, ma miravamo a rilasciarli per l’Early Access. Chiesi a Kory di occuparsi a rendere funzionante la fisica dei veicoli, rendendo l’Humvee guidabile. A questo punto dovevo solo fixare tutte le problematiche legate al solo Soldier quindi guidare i veicoli era possibile. Abbiamo pensato di poter rendere almeno disponibili i mezzi di trasporti, quindi Kory cominciò ad integrare il sistema dei veicoli dell’UE4 nel sistema dei veicoli multiplayer che avevo costruito.
A questo punto io e Kory abbiamo iniziato a guidare le Humvees nella nostra mappa per test. A questo punto, dopo aver attivato un sistema di lag fittizia, abbiamo riscontrato alcuni strani comportamenti, dove le Humvees e le Technicals presentavano rubber banding (effetto ad elastco n.d.r.) e del desync quando le si guidava. Abbiamo iniziato ad investigare ma, con il rilascio dell’Alpha 3 dietro l’angolo, abbiamo dovuto aspettare.

Veicoli sulla Mappa per test

Più o meno nello stesso periodo fixai i rimanenti problemi con le armi fisse, riuscendo finalemente a sparare per la prima volta con una cal .50 fissa. Però, siccome alla release l’Apha 3 era piena di bug, misi da parte questi lavori per concentrarmi insieme a Kory sulla v.3 e rendere il rilascio dell’ Early Access fantastico. Aggiunsi un metodo di spawn per i veicoli in ogni mappa in modo che, nel post lancio, potessimo spawnare i veicoli su server pieni e vedere le performance.

Dopo il rilascio dell’EA abbiamo compiuto numerosi test, facendo spawnare Humvees e Technicals su server pieni per poter vedere come si comportassero. I risultati non furono incoraggianti, il problema che vedemmo con desync e rubber banding era addirittura peggio nei server pieni. Presi quindi un piccolo break dagi scontri con i bug post-release per investigare, e scoprii che il codice dei veicoli di default non aveva un netcode o una correzione di lag. I veicoli warpavano (si teletrasportavano in punti randomici n.d.r.) perchè gli input del guidatore venivano inviati ad ogni Client ed il Server, e solamente la posizione del Server era corretta. A causa della natura dell’engine fisico, ogni client presentava errori piccoli ma gravi in posizione e velocità, causando ad ogni client di vedere i veicoli in posizioni differenti. Quando il server invia la posizione Corretta, il veicolo veniva teletrasportato nella posizione adeguata con un bruttissimo effetto di warp e rubber banding.

Il netcode per i Veicoli andava ricostruito

Nella seconda parte parlerò del processo di riscrittura del Netcode per i Veicoli e di come abbia riunito i pezzi, oltre ad illustrarvi come modificarli voi stessi. Per ora spero che abbiate apprezzato questo sguardo al processo di sviluppo dei veicoli di questi mesi. Se avete qualsasi altra domanda potete seguirmi su Twitter, @RoyAwesome.

Offworld Out.
Traduzione: [EI]Aragorn89

Qui l’articolo originario: http://joinsquad.com/readArticle?articleId=86

Modifica post

« [EI]Aragorn89 »