Vai al contenuto

Emax

Founder
  • Discussioni

    982
  • Registrato il

  • Ultima visita

  • Minicoin

    481 [Dona]

Messaggi di Emax

  1. 11 minuti fa, Shikimeki ha scritto:

    Io sto pensando a molte cose in realtà, ad esempio ci sarà la rotolata/schivata in dark souls o Sekiro etc? (Come l'altra volta che avevo parlato che sarebbe un Soulslike) ma oltre a quello, è una cosa importante abbastanza per me ci saranno altri frutti od ortaggi oltre a quello che abbiamo visto? E soprattutto la cosa più importante di tutte, altri minerali? Sarà probabilmente come terraria? Io ho adorato Terraria nonostante era in 2d

    Si però le domande sono per le FAQ, non credo che una persona che scopre Hytale ora si chiederà se avrà la schivata di dark souls 

    Intanto ho creato la pagina FAQ

  2. Secondo me gli spiriti della terra sono evocazioni, una volta completato il cerchio magico in cui sono spawnati sarà possibile evocarli, i Kweebec non credo siano evocazioni ma ben si mob che ci aiuteranno in base alla nostra reputazione con loro.

    Credo che anche il golem che si vede in lontananza sia un evocazione:

    image.png.bb9b94406fec0f17962bceef0cd7faf2.png

  3. SPOILER: roba tecnica che forse non interessa a nessuno

    Ciao a tutti, era da un po' che volevo fare questo post per parlare del codice intravisto nel trailer di Hytale, nello specifico al secondo 112, dove possiamo vedere un player che sta creando uno script da applicare ad un mob (un Goblin).

    im1.PNG.69895b8ce57315070534f406b404faf9.PNG

    Partiamo dall'interfaccia, la cosa che si nota subito è che l'editor si chiama "Trigger Editor", per i neofiti della programmazione si intende trigger una funzione che ascolta un particolare evento, per chiarificare:

    • Un evento può essere una qualsiasi cosa programmata nel gioco, ovvero l'inizio della pioggia è un evento, un mob che muore è un evento etc, in poche parole qualsiasi azione (anche non del player) all'interno del mondo di gioco può essere considerata un evento.
    • Un trigger è un particolare codice che ascolta un determinato evento e richiama una funzione
    • Una funzione è un insieme di codice che fa qualcosa 
    • Uno script è un insieme di funzioni

    Poi abbiamo diversi campi:

    • Name abbastanza chiaro, è il nome dello script che stiamo creando.
    • Script Type: CUSTOM questo è davvero interessante, custom significa che stiamo facendo uno script personalizzato, ma quali altri tipi di script possono essere presenti?
    • Tick Speed (millis): -1 per me questo è abbastanza chiaro, indica ogni quanti millisecondi lo script deve essere eseguito, pensatela così mettiamo il caso di fare uno script che toglie la pioggia nel mondo, se non impostassimo questo valore lo script verrebbe eseguito una volta sola, ma ovviamente avrebbe poco senso poiché con il passare del tempo in gioco la pioggia tornerebbe, ora pensiamo allo stesso caso dove lo script viene eseguito ogni secondo… addio pioggia! nel caso dello screenshot il valore è impostato a -1 ovvero lo script deve essere eseguito una sola volta poiché verrà richiamato automaticamente quando si verificherà un evento di cui è in ascolto (in questo caso collisioni con altre entità).
    • Links lavoro di fantasia perché non abbiamo nessuna informazione, ho tre teorie per il significato di questo valore
      • Script collegati, ovvero il nome degli script collegati a questo.
      • Eventi collegati, ovvero il nome degli eventi collegati a questo script.
      • Link Web, ovvero il link del sito web del proprietario dello script.
    • Flags potrebbe indicare qualsiasi cosa, in genere in informatica per flags si indica un insieme di proprietà necessarie per fare qualcosa, ad esempio potrebbe indicare che questo script può essere eseguito solo quando piove, ovvero la pioggia potrebbe essere una proprietà necessaria per attivare lo script
    • Preview del mob essendo questo script un trigger associato al mob nell'editor c'è l'anteprima del suddetto, questa cosa è davvero interessante, perché far vedere il mob nello script? ovvio perché dallo script possiamo modificare il modello del mob, mi spiego magari ci danno la possibilità da script di aggiungere o togliere pezzi al mob, Goblin a 3 teste in arrivo!
    • Infine i pulsanti sotto, sono abbastanza chiari, ci permettono di caricare/salvare/eseguire/cancellare lo script.

    Arriviamo al pezzo forte, il codice nell'editor!

    var GameMode = com.hypixel.hytale.protocol.Gamemode;
    var Player = com.hypixel.hytale.server.core.entity.entities.Player;
    
    exports = {
      onCollide : function(entity)
      {
        if (entity instanceof Player)
        {
          entity.setGameMode(GameMode.Adventure); // Sets the mode to adventure
        }
      }
    }
    
    // www.hytale.it/supersecretpage
    
    exports = {
      onCollide : function(entity)
      {
        if (entity instanceof Player)
        {
          entity.teleport(0,0,0); // Moves player to origin
        }
      }
    }
    
    // www.hytale.it/supersecretpage

    Analizziamolo linea per linea (tanto non abbiamo niente da fare nel frattempo)

    Intanto salta subito all'occhio che si tratta di JavaScript! sicuramente la scelta del linguaggio di scripting è stata molto difficile, ne esistono tanti ma i più gettonati sono JavaScript e LUA, scelta che a mio parere sembrerebbe confermata da quello che già sappiamo ovvero che il server di Hytale sarà scritto in Java e il client in C# e cos'hanno in comune questi due linguaggi di programmazione? hanno delle ottime librerie per interpretare JavaScript.

    Proseguiamo dunque all'analisi del codice, vi dico già da subito che il codice è sbagliato, immagino ne abbiano messo uno a caso come placeholder per il trailer, ma comunque vale la pena di darci un occhio! farò del mio meglio per essere chiaro! (Spoiler: non ci riuscirò)

    var GameMode = com.hypixel.hytale.protocol.Gamemode;
    var Player = com.hypixel.hytale.server.core.entity.entities.Player;

    Le prime due linee sono degli import, ovvero importano delle funzioni dalle classi del gioco, in questo caso viene importata la classe del giocatore e la gamemode (che sospetto sia un enumerazione), interessante vedere la struttura dei package (l'alberazione del codice nelle cartelle), che suppongo sia speculare fra client e server visto gli script vengono eseguito da entrambi i lati.

    Prima incoerenza: la sintassi dell'import è errata.

    Seconda incoerenza: se notate la classe del player si trova dentro un package di nome server, il che non ha molto senso visto che il player è presente anche in single player.

    exports = {
      onCollide : function(entity)
      {
        if (entity instanceof Player)
        {
          entity.setGameMode(GameMode.Adventure); // Sets the mode to adventure
        }
      }
    }

    Questo blocco di codice esporta una funzione al di fuori dello script per essere richiamata dal gioco, in questo caso la funzione è un trigger che viene attivato quando il mob (Il Goblin) collide con un entità, dopodiché viene verificato che l'entità sia un giocatore e a quest'ultimo viene cambiata la modalità di gioco in avventura.

    exports = {
      onCollide : function(entity)
      {
        if (entity instanceof Player)
        {
          entity.teleport(0,0,0); // Moves player to origin
        }
      }
    }

    Successivamente viene esportata questa funzione che è identica a quella sopra ma con una piccola differenza invece di cambiare la modalità di gioco al giocatore (gioco di parole) lo teletrasporta a una posizione specifica ovvero X0, Y0, Z0.

    Terza incoerenza: in JavaScript il blocco export può essere dichiarato una volta sola per script.

    Quarta incoerenza: è stata dichiarata due volte una funzione con lo stesso nome "onCollide" altra cosa non permessa.

    Siamo arrivati alla fine dello script, in poche parole sembra quando il Goblin entri in contatto con un giocatore questo venga messo in modalità avventura e venga teletrasportato a delle coordinate specifiche. pensandoci un secondo questo sembra più il comportamento di un portale che di un mob...

    In conclusione non sappiamo ancora niente del linguaggio di scripting che verrà usato in Hytale, io sono estraneamente fiducioso che alla fine terranno Javascript, vista la popolarità e il quantitativo di tutorial presenti, però non ci metterei la mano sul fuoco :uccello:

×
×
  • Crea nuovo/a...