Ciao a tutti! Per la nostra seconda Spiegazione Tecnica, daremo un'occhiata alla nostra filosofia collaborativa attraverso le lenti di una funzionalità chiave in Hytale: le piattaforme di lancio.
Mi chiamo Anna e sono un ingegnere del team Gameplay. Il nostro spazio è particolarmente interessante perché è il mix perfetto di problem solving e creatività. Siamo responsabili di funzionalità come il crafting, il movimento, l'interfaccia utente e, più recentemente, le piattaforme di lancio.
Come molti team di creatori, i team di Hypixel lavorano in remoto e sono composti da persone provenienti da contesti diversi. Per avere successo insieme, dobbiamo trovare un modo per collaborare, motivo per cui avere una cultura collaborativa è così fondamentale per ciò che siamo. In questo articolo, sono entusiasta di condividere con voi alcune strategie orientate alla collaborazione e al feedback e di come siano state fondamentali per lo sviluppo della nostra funzionalità delle piattaforme di lancio.
Perché collaboriamo?
Gli ingegneri del software spesso si ritrovano a lavorare all'interno delle proprie bolle per risolvere i problemi, ma creare un gioco è un processo creativo che richiede la collaborazione con i membri del team provenienti da discipline diverse. I nostri designer possono lavorare su aspetti completamente diversi del gioco, ma senza parlare con loro, non sapremmo abbastanza sugli strumenti che stiamo creando. Ci affidiamo anche ad artisti, audio, VFX e produzione e la collaborazione attiva con loro ci offre l'inestimabile vantaggio dei loro punti di vista. Anche noi ingegneri siamo pieni di idee creative e la possibilità di condividerle e scambiarle aiuta a raggiungere l'obiettivo finale di creare contenuti a servizio del giocatore.
Il team delle funzionalità
Il team Gameplay è composto da 3 ingegneri, 2 progettisti tecnici, 2 analisti della qualità e 1 produttore. Siamo responsabili del gameplay che circonda l'esperienza del giocatore all'interno della capitale principale di Hytale e sulle isole dei giocatori. Questo spazio richiede un lavoro di squadra quotidiano attivo, con la progettazione tecnica come consumatore vitale del lavoro di ingegneria per il team. Creano prototipi, iterano su funzionalità più piccole e forniscono feedback.
Avere un team multidisciplinare con risorse integrate ci offre tempi di risposta rapidi, iterazioni più veloci e un processo creativo più affidabile. E lavorare a stretto contatto con altre discipline per il brainstorming e la creazione durante il processo di progettazione è lo strumento collaborativo più prezioso e la migliore medicina preventiva per bug e debiti tecnici. La mancata inclusione al di fuori della disciplina ingegneristica quando si tratta di creare funzionalità e prendere decisioni si traduce rapidamente nella perdita di vista della visione desiderata. Senza che entrambe le parti si impegnino attivamente a lavorare insieme, possiamo ritrovarci in una situazione di supposizioni o ritrovarci solo a eseguire elenchi di attività invece di sfruttare al massimo le nostre mentalità creative per creare la migliore esperienza per il gioco e i giocatori nel loro insieme.
I primi punti di contatto per una nuova funzionalità non riguardano solo l'ottenimento di chiarezza, ma anche la risposta alla domanda "Perché?". Da questa conversazione, possiamo tutti fidarci del fatto che stiamo lavorando per lo stesso obiettivo: un punto di partenza per iterare per un'eccellente funzionalità per il gioco.
Piattaforme di lancio
Nella loro essenza, le piattaforme di lancio sono un attore in un mondo con un trigger collider. Quando gli oggetti (come i giocatori) si sovrappongono al trigger, viene attivato un evento che applica un impulso configurabile al bersaglio. Questo invia quell'oggetto, il bersaglio, in aria. In altre parole, sono stati lanciati.
Una piattaforma di lancio base
Costruire piattaforme di lancio
Quando ci è stato affidato per la prima volta il compito di creare piattaforme di lancio, il mio primo pensiero è stato: "Beh, è una piattaforma di lancio! La maggior parte dei giochi ce l'ha, probabilmente sarà uguale a tutti gli altri." Nonostante questa impressione iniziale, mi sono appoggiato ai nostri valori di collaborazione e ho parlato con il designer in carica all'inizio per capire la sua prospettiva. I passaggi successivi sono stati la lettura delle specifiche di progettazione, la discussione nella nostra riunione di progettazione pubblica settimanale, la raccolta di chiarimenti dalla progettazione e la creazione di una bacheca Miro.
Questa bacheca includeva la funzionalità fisica primaria e l'API necessarie per creare la funzionalità della piattaforma di lancio stessa, nonché alcune variabili esposte di base con cui i progettisti potevano armeggiare.
Feedback proattivo
Questa bacheca e una timeline sono state inviate a tutte le parti interessate per raccogliere feedback asincroni prima dell'inizio dello sviluppo e hanno ricevuto feedback dalla progettazione del gioco, dalla progettazione tecnica e dai collaboratori creativi. Questo feedback ci ha portato a modificare ciò che sarebbe stato configurabile per la progettazione tecnica e come il trigger avrebbe funzionato per lo sviluppo iniziale, che è iniziato come un ray cast e si è trasformato nell'utilizzo di volumi trigger all'interno del motore.
Nei punti chiave, ho contattato le persone che suggerivano modifiche e mi sono incontrato in incontri individuali per assicurarmi che una cultura di collaborazione creativa fosse promossa anche in questa fase iniziale e per assicurarmi che il loro contributo fosse pienamente compreso. Questi collaboratori sono stati continuamente coinvolti in ogni fase del processo per assicurarsi che stessimo ancora andando nella direzione che funzionava per loro.
Sotto il cofano
Gestire il movimento autoritativo del server è una parte fondamentale dello sviluppo della piattaforma di lancio. Un impulso fisico deve essere applicato dal server e la velocità e il vettore di lancio vengono calcolati e risolti lì. Il client prevede e risolve la sua posizione attraverso gli stessi calcoli. Questo impulso fisico è noto solo al momento del lancio, poiché ogni piattaforma di lancio potrebbe essere configurata per puntare in una direzione diversa o richiedere al vettore in avanti del personaggio di calcolare la velocità.
Implementazione di base di una piattaforma di lancio dalla bacheca Miro
Richieste di lancio del server e del client
Codice per l'esecuzione della richiesta di lancio sul server e sul client, incluso il rollback della rete.
Ci siamo ritrovati a interagire principalmente con altri due team durante la costruzione delle piattaforme di lancio, poiché possedevano spazi per i quali avevamo bisogno di competenze e consenso.
Il movimento e l'impulso sono di proprietà del team Characters, Camera e Controls (CCC). La creazione di piattaforme di lancio significava collaborare a stretto contatto con loro per creare la spina dorsale dell'implementazione della piattaforma di lancio che sia il server che il client potevano eseguire. La collaborazione con loro ha portato alla scoperta di diversi bug di rete, che hanno aperto una conversazione più ampia sul movimento di rete, la previsione e gli impulsi.
La rete è di proprietà del team Core Tech, che gestisce la previsione dal client, nonché la proprietà dei messaggi inviati tra il server e il client. Questi sono ampiamente utilizzati in tutta la funzionalità e richiedono il supporto di ingegneri di tutti i team per far funzionare correttamente le piattaforme di lancio.
Questo processo ci ha anche permesso di fornire feedback al team Core Tech per la rete di previsione del movimento e ha aiutato a risolvere i bug facendolo implementare in una funzionalità effettiva. Ha anche portato a un'implementazione incentrata sul giocatore delle istanze. A quel tempo, gli attori principali venivano posizionati e dovevano essere duplicati per modificare una variabile su base per istanza. Come parte dello sviluppo della piattaforma di lancio, avevamo un caso d'uso per indagare sull'istanza degli attori e quindi aggiungere un altro flusso di lavoro di strumenti tangenziale.
Configurazione per i designer
Ora che avevamo la funzionalità principale supportata, dovevamo rendere possibile ai progettisti tecnici di intervenire e iniziare a utilizzare le piattaforme di lancio. Abbiamo creato un'API utilizzando lo scripting Luau che richiede l'invio del messaggio dal client al server per attivare un lancio. Ciò significava che i progettisti tecnici avevano accesso allo scripting, ma anche alle configurazioni all'interno di ogni risorsa per ogni attore della piattaforma di lancio posizionato nel mondo.
Progettazione della configurazione originale
Configurazioni dei dati
Queste configurazioni sono importanti perché consentono al progettista tecnico di modificare le impostazioni di base senza dover scrivere la logica.
Ad esempio, è facile impostare uno qualsiasi dei seguenti valori:
- La direzione della piattaforma di lancio
- Se utilizza la direzione in avanti del personaggio
- Quanto è forte la forza di lancio
- Se la velocità del personaggio viene sovrascritta
- Filtri attore
- Se c'è un bersaglio specifico verso cui lanciarsi
Le opzioni per queste configurazioni e le loro implementazioni tecniche sono state create con la progettazione tecnica e sono ancora in fase di iterazione per dare la priorità all'esperienza migliore e più realistica per i progettisti.
Visualizzazione dell'editor in-game
Versione codice
Configurazioni di scripting
Insieme alla possibilità di configurare dettagli specifici dell'attore, è stata creata anche la funzionalità di script per consentire alla progettazione tecnica di manipolare la logica quando necessario. Ad esempio, la funzione LaunchActor() ha dato ai progettisti tecnici la possibilità di utilizzare la funzionalità di lancio senza dover posizionare una piattaforma di lancio in primo luogo.
Questa specifica funzionalità di strumenti non è stata inizialmente richiesta dai progettisti tecnici, ma dopo aver testato le piattaforme di lancio, è stata aggiunta al backlog come strumento fondamentale. Ciò ha dato ai progettisti un accesso immediato per iterare, poiché funziona in parallelo con la funzione di scripting OnTriggerOverlap(), che è stata utilizzata nel codice per le piattaforme di lancio per attivare il sistema che lancia l'attore. Avere questo disponibile all'interno dello scripting significava che i progettisti potevano creare loop di gioco attraverso diverse query e comportamenti di lancio.
Script Luau per la sovrapposizione del trigger con la piattaforma di lancio
Una prospettiva iniziale per lo scripting e la configurabilità non era solo quella di supportare i progettisti tecnici e i creativi, ma anche di supportare i giocatori che un giorno utilizzeranno queste funzioni da soli. Nel contesto di questa funzionalità, abbiamo riflettuto profondamente su tutti i modi in cui i giocatori potrebbero voler lanciare gli attori nel loro mondo. Abbiamo avuto così tante discussioni sull'assicurarci che i giocatori potessero costruire e creare in Hytale negli stessi modi in cui lo fanno gli Hypixellian.
Sviluppo incentrato sul giocatore
Le piattaforme di lancio erano perfettamente orientate per creare opportunità di collaborazione e lavoro interdisciplinare, ma queste opportunità non si fanno sempre conoscere facilmente. È fondamentale prendersi il tempo per pensare a chi lavora su una funzionalità, chi la userebbe e come, quindi parlare direttamente con queste persone prima di scrivere anche la prima riga di codice.
Questo valore di feedback e collaborazione si estende oltre gli Hypixellian. Le piattaforme di lancio sono un processo continuo e lo saranno sempre man mano che il gameplay cresce ed evolve all'interno di Hytale. Non vediamo l'ora di vedere come le piattaforme di lancio vengono implementate dai giocatori in modi nuovi ed entusiasmanti e creano casi d'uso propri. E in cambio, continueremo a utilizzare questa collaborazione per continuare a iterare e creare nuove funzionalità di strumenti incentrate sul giocatore in Hytale.
Visualizzazione in prima persona della piattaforma di lancio in-game
---
Questo tipo di contenuto tecnico ti interessa? Stiamo assumendo! Dai un'occhiata alla nostra pagina Carriere per le posizioni aperte e i suggerimenti per la candidatura.
Fonte: Hytale.com