Essenzialmente, questo:
www.mediafire.com/view/ppbo44sexvdo1d6/whitehorse.wmv(...non so come far comparire il video nello stesso messaggio...)
Quando si fanno cose col modding, ci sono certe conoscenze che solitamente dimostrano come spesso dietro ad un bug c'è l'errore di chi ha usato il GECK (già, anche il vanilla), e non del gioco in se. Questo perché, che dir si voglia, la stragrande maggioranza delle cose è perfettamente funzionante, bisogna solo capire come fare.
Il cavallo non fa parte di questo. Il cavallo non c'è in Fallout perché non è stato concepito per esserci. Più in generale, le cavalcature, anche moto e macchine non erano state previste.
Ciò non toglie che si può andare oltre questi limiti, ma le conoscenze richieste sono di un livello molto alto e non si trovano in giro. Beh, non si trovano perché si sfora quella che è la "conoscenza" in se e si arriva piuttosto a "teorie". Essendo queste cose un po' vaghe, la gente non scrive tutorial su queste cose perché non sono scienze esatte.
Questo infatti non è un tutorial, è solo la descrizione di come a volte ci si possa spingere oltre il gioco in se, e vuole anche mettere in guardia chi potesse mai avere idee del genere, perché per quanto possibile richiede pur sempre molte conoscenze in diversi campi. Non ce la si cava solo col GECK, tanto per dire.
----------------------
Il suddetto cavallo è un "port", una conversione da una mesh di un altro gioco, in questo caso Oblivion. Molti dicono che il cavallo non è realizzabile perché questi port non sono legali per motivi di copyright. La mia teoria è invece che in ogni caso non è realizzabile perché l'engine di Fallout non lo prevede se non facendo una serie di modifiche che renderebbero il resto del gioco ingiocabile, cioè o scegliamo di andare a cavallo o giochiamo a NV.
Ma andando per ordine...
MODELLOPer fare un port ci serve una mesh (la figura, l'intelaiatura del cavallo) e la sua texture. Il cavallo bianco del video è una mesh legale, perché non è materiale coperto da copyright e ho ottenuto i permessi da chi l'ha creato.
Ogni creatura o attore ha uno skeleton, che è composto da ossa, proprio come le nostre ossa: quando muovo un personaggio, in realtà muovo le sue ossa, la mesh che lo contiene verrà deformata di conseguenza e vedremo il personaggio muoversi sullo schermo.
Quindi in teoria avrei bisogno ANCHE di creare uno skeleton, perché solitamente tra un gioco e l'altro gli skeleton cambiano (ad esempio tra Fallout e Skyrim), quindi non è possibile semplicemente copiarli. E in ogni caso si tornerebbe al discorso del copyright.
Nel mio caso, il mio cavallo bianco sta utilizzando uno skeleton di un bighorner, che quindi è legale. Ma è pur sempre una mesh che era utilizzata in Oblivion, per quanto custom, per cui necessita di essere convertita in New Vegas. Per fare questo, dovrò prendere la mesh del cavallo e fare il WEIGHT, che non è semplice da spiegare, dopodiché attaccargli lo skeleton del bighorner (RIGGING). Più o meno, detto in parole povere e magari nemmeno troppo giuste, significa che lo tratterò come se fosse un bighorner, tutti i suoi vertici conterranno informazioni come se fossero quelli di un bighorner, e che quindi la sua mesh si muoverà di conseguenza. Siccome le due figure non sono la stessa cosa ovviamente, poi bisognerà ritoccare o il cavallo si deformerà malamente, vedremo comparire "bozze" un po' ovunque, o la testa diventerà gigantesca, etc. ma è sempre più facile che creare uno skeleton da zero. Anche perché...
ANIMAZIONI... ad un modello e al suo skeleton sono collegate delle animazioni. Certo, potrei rifare TUTTE le animazioni da zero, non posso prendere quelle di Oblivion (di nuovo, per copyright), ma perché non usare quelle del bighorner già esistenti e ritoccarle a dovere? Il campo delle animazioni è particolarmente complicato, spesso perché la documentazione è quasi nulla, non consiglio di addentrarcisi... nel mio caso ho già qualche conoscenza per cui ho fatto proprio così, ho ritoccato le mie animazioni in modo che sembrasse un po' più un cavallo.
E CAVALCARE?Non è possibile. E' qui che si raggiunge il limite. Oblivion permetteva di farlo perché quando saltavamo a cavallo il nostro scheletro diventava un tutt'uno con quello del cavallo, permettendo quindi di fare un'animazione di me che cavalcavo all'unisono. Fallout non me lo fa fare. Quindi... nada!
MA IO VOGLIO CAVALCARE LO STESSO!Allora entra in gioco la magia dello script, che permette di forzare una cosa quando non è possibile farla, tramite dei "workaround", dei sotterfugi. In linea di massima è il medesimo sotterfugio che si utilizza per la moto di Fallout, con qualche dettaglio in più.
Ci sono vari concetti da prendere in considerazione, cercherò di spiegarli brevemente...
Intanto, due creature non possono stare a contatto (come me che cavalco) perché c'è la collisione, questo farebbe schizzare via le creature come succede quando calpestate uno scheletro.
Per ovviare a questo si utilizza un sistema molto semplice: si crea uno script che viene eseguito il più velocemente possibile, che posiziona le due creature tramite SetPos dove vogliamo noi. Anzi, siamo noi ad avere un SetPos sulle coordinate del nostro cavallo, lui starà per conto suo. Essendo che viene eseguito circa 30 volte al secondo, l'havok non ha il tempo di staccare le due creature. Molte mod utilizzano questo sistema, basta pensare alla torcia tascabile, che possiamo accendere in Fallout 3, non è altro che una fonte di luce che si sposta con noi tramite quel sistema.
Poi dovremo disabilitare i comandi del giocatore (DisablePlayerControl 1), perché il suddetto sistema funziona bene solo così, e rendere il nostro cavallo Restrained (SetRestrained 1), che significa che non si muoverà più. A questo punto possiamo metterci sopra al cavallo tramite quello script di SetPos
IL CAVALLO NON SI MUOVE!Chiaro, è "Restrained"... e poi si muoverebbe dove vuole lui, non dove vogliamo noi... Per fare questo ci viene in aiuto NVSE. Visto che ormai i nostri comandi sono disabilitati, possiamo riutilizzarli per far altre cose. Tramite IsControlPressed posso controllare se il giocatore preme i vari tasti (avanti indietro destra sinistra) e far scaturire degli eventi di conseguenza. L'evento che serve a noi sono le AnimGroup Forward/Backward/TurnLeft/TurnRight, tramite il comando PlayGroup. Essenzialmente, quando premo il tasto W, la nostra creatura si animerà tramite l'animazione Forward, che è quella che la muove in avanti, e via dicendo. Noi siamo sopra di lei, per cui ci muoveremo di conseguenza.
DETTAGLIOra tutto ciò che manca è una gran dose di dettagli per rendere la cosa meno "brutta"... Questo implica quelle complicate conoscenze sulle animazioni, è una delle cose più dure da fare.
Intanto il mio personaggio è in piedi, per cui dovrò accovacciarlo. Posso creare un'animazione su misura, una Special Idle del personaggio che cavalca, e farla partire. Il problema è che NON SI POTREBBE... il motore del gioco non lo prevede fin tanto che non ci mettiamo in camera mode (TFC), se qualcuno ha utilizzato mod di pose sa a cosa alludo.
Ma ci sono un paio di casi in cui si può fare... il primo è tramite un sistema interno di Pick Idle: il gioco controlla tutto l'elenco delle animazioni, a partire dall'alto, se vede che una condizione è soddisfatta farà partire l'animazione. Tradotto in script, potrei ad esempio dire che quell'animazione parte quando GetItemCount qualcheoggetto = 1, e aggiungere quel particolare oggetto tramite script al personaggio quando comincia a cavalcare. Questo sistema utilizza quelli che vengono chiamati "token", non sono degli oggetti, non hanno nemmeno una mesh, sono solo dei "segnaposto".
Il secondo sistema, quello che ho utilizzato io, è stato lanciare una spell al personaggio. Questo perché PlayIdle a quel punto funziona, è praticamente l'unico caso (assieme agli activator ma lasciamo perdere) in cui il nostro personaggio potrà animarsi tramite PlayIdle, quando ha addosso una spell che utilizza playidle con una reference implicita, senza specificarla, tanto comunque è il personaggio che ne è affetto...
Per farla breve, quando il personaggio comincia a cavalcare, lo script gli lancerà una spell addosso, la spell al suo interno avrà uno script che dice "playidle personaggiochecavalca".
In questa maniera si possono mischiare anche altre animazioni, ad esempio che quando il cavallo va all'indietro il nostro personaggio si volta a guardare che c'è dietro, etc.etc.
MA... COMBATTERE?E'... complicato. Stiamo facendo qualcosa che il gioco non prevede, dobbiamo per forza aspettarci dei risvolti negativi. IN TEORIA è possibile. IN PRATICA è MOLTO complicato. Per cui non mi addentrerò oltre...
MA ALLORA... QUELLO CAVALLO CHE SI VEDE OGNI TANTO IN GIRO?Si riassume tutto con la frase che ho scritto all'inizio...
"La mia teoria è invece che non è realizzabile perché l'engine di Fallout non lo prevede se non facendo una serie di modifiche che renderebbero il resto del gioco ingiocabile, cioè o scegliamo di andare a cavallo o giochiamo a NV."