Tutorial Programmazione III, Parte III: Introduzione al Cns

« Older   Newer »
  Share  
Squall990
view post Posted on 21/8/2007, 12:09




PARTE III: Introduzione al Cns

È consigliato seguire passo passo in modo pratico le nozioni descritte nel tutorial, per una facile e rapida comprensione.

Atto I: Statedef e states

Dunque, innanzitutto è bene spiegare cos’è e a cosa serve il file .cns.
Il file cns è il file dove avviene la programmazione vera e propria, ed è composto da [Statedef].
Ogni statedef ha un numero Univoco, che permette di identificarlo.
Ad esempio:

[statedef 0] ha “0” come numero univoco, quindi semmai vorremo agganciarci a questo statedef, ora sappiamo come si chiama, quindi è possibile farlo.

Gli statedef hanno sempre numero positivo, tranne tre stati speciali, che vengono sempre controllati dal mugen, e sono:

[statedef -1]
[statedef -2]
[statedef -3]

A sua volta, ogni [statedef] è composto da degli [states], che portano lo stesso nome dello statedef cui appartengono, ma più che altro per ordine, che per reale riconoscimento. Inoltre, affianco al numero dello statedef, nello state, possiamo inserire una virgola e scrivere qualcosa per ricordarci cosa fa quello state. Es:

[state 0, Aura] tramite quella descrizione, che ha solo scopo informativo per chi legge, si ci può ricordare che è uno state riguardante l’aura, in questo caso.

Ora che abbiamo spiegato di cosa è composto il cns, possiamo passare ad analizzare la programmazione che si svolgerà al suo interno.

Atto II: Data, Size, velocity, Movement.

Dunque, la prima cosa presente in un file CNS, sono i dati “standard” che devono possedere tutti i char. Sono divisi in quattro sezioni (è utile aprire un file cns per rendersi conto di quanto spiegato qui): Data, Size, Velocity, Movement.

Analizziamole una ad una.

[Data]
life = 1400
attack = 170
defence = 170
power = 3000
fall.defence_up = 50
liedown.time = 20
airjuggle = 20
sparkno = S900
guard.sparkno = s902
KO.echo = 1
volume = 10
IntPersistIndex = 40

Dunque. I primi valori (life, attack, defence, power) si spiegano da soli: la quantità di vita che il char avrà, la forza dell’attacco, la resistenza ai colpi, quanta energia avrà per utilizzarla in supers o hypers.

Vediamo gli altri valori:

fall.defence_up = di quanto è aumentata la difesa nel momento della caduta
liedown.time = il tempo in cui il char resta disteso a terra dopo una caduta.
airjuggle = i punti “juggle” assegnati al char in aria (vedi prossimo capoverso).
sparkno = lo spark (effetto grafico) che verrà utilizzato quando si colpisce l’avversario (se omesso)
guard.sparkno = lo spark (effetto grafico) che verrà utilizzato quando si para un colpo (se omesso)
KO.echo = attiva l’eco del suono di morte.
volume = si spiega da solo :D
IntPersistIndex = indica qual è la variabile di partenza per non essere azzerate durante i round.

Spieghiamo un momento cosa sono i punti juggle.
Come abbiamo visto su, a questo char sono assegnati 20 punti juggle quando è in aria. Bisogna sapere, che OGNI colpo lanciato da un giocatore “utilizza” punti juggle. Quindi, se io sto cadendo, e l’oppo mi tira dei colpi, potrà farlo fin quando la somma di tutti i punti juggle utilizzati peri suoi colpi sia minore o uguale a 20.
Per dirlo in breve, i punti juggle servono ad evitare infinite combo aeree, limitando il numero di colpi che si possono dare ad un char in caduta.

Ora passiamo alla seconda sezione: [size]

[Size]
xscale = 1
yscale = 1
ground.back = 20 ;
ground.front = 20 ;
air.back = 15 ;
air.front = 15 ;P
height = 75
attack.width = 4,4 ;
attack.dist = 20 ;
proj.attack.dist = 20
proj.doscale = 1 ;
head.pos = -2, -93
mid.pos = -2, -60
shadowoffset = 0

di questa sezione non occorre conoscere tutti i valori. La cosa che deve interessarvi è rappresentata dai primi due valori: xscale e yscale.
È la “scala” che viene data al char. Essendo settato a 1 entrambi i valori, il char è nelle sue dimensioni originali. Se ad esempio li dimezziamo entrambi, il char sarà a grandezza dimezzata.
Con questi valori si possono creare anche effetti di distorsione: mettiamo il caso (estremamente raro) che i frames che abbiamo a disposizione non rispecchiano in dimensioni il personaggio che vogliamo programmare, perché è ad esempio troppo tozzo. Con questi valori, modificandone uno soltanto (in questo caso aumentiamo la y) potremo allungare il char. Attenzione però che nell’ingrandire troppo si rischia di perdere la qualità dei frames, e di avere char pixellati.

[Velocity]
walk.fwd = 2.1
walk.back = -2.0
run.fwd = 12.3, 0
run.back = -8.0,0
jump.neu = 0,-9.8
jump.back = -2.50
jump.fwd = 2.50
runjump.back = -3.80,-9.0.1
runjump.fwd = 4.5,-11.8
airjump.neu = 0,-11.4
airjump.back = -3.00
airjump.fwd = 3.00

tramite questa sezione, sarà possibile settare la velocità di movimento di un char.

walk.fwd = 2.1
walk.back = -2.0

indicano la velocità della camminata in avanti e in indietro.

run.fwd = 8.3, 0
run.back = -6.0,0
indicano la velocità della corsa in avanti o in indietro. La virgola che separa i 2 valori tiene a sinistra l’asse x (quindi movimento orizzontale) e alla dentra l’asse y (quindi movimento verticale).

jump.neu = 0,-9.8
jump.back = -2.50
jump.fwd = 2.50
runjump.back = -3.80,-9.0.1
runjump.fwd = 4.5,-11.8
airjump.neu = 0,-11.4
airjump.back = -3.00
airjump.fwd = 3.00

questi sono i vari tipi di salti. I primi tre sono i salti da fermo (sul posto, all’indietro e in avanti).
Il quarto e il quinto sono i salti in corsa (all’indietro e in avanti).
Il sesto, settimo e ottavo indicano invece il “doppio salto” cioè il salto possibile quando già si è saltati una volta (sul posto, all’indietro e in avanti).

Vediamo l’ultima sezione.

[Movement]
airjump.num = 1
airjump.height = 0
yaccel = 0.44
stand.friction = .10
crouch.friction = .10

qui il primo valore indica il numero di salti in volo possibili dopo il primo da terra.
Gli altri valori non occorre quasi mai modificarli, l’altro importante è yaccel, che indica l’accelerazione verticale del char.

Nel prossimo tutorial insegnerò la programmazione che si svolge nel file .cns

Saluti

Squall
 
Top
TÖRK
view post Posted on 24/8/2007, 21:27




too bad that there italian. Can somebody translate it into english?
 
Top
Squall990
view post Posted on 24/8/2007, 22:27




it's normal that it's written in italian... i wrote it, and i'm italian... but i'm working now on the IV tutorial and all the char of the project.

i don't have the time to translate it, sorry.

bye

Squall
 
Top
goten1992
view post Posted on 15/11/2007, 10:06




scusate ma sn impaziente d cominciare a creare char...e magari v posso pure dare na mano, qnd fra qnt, + o -, c sarà il prossimo tutorial??? grazie anticipato XD
 
Top
Squall990
view post Posted on 15/11/2007, 13:30




beh è in lavorazione :D in teoria entro sabato dovrei riuscire a ultimarlo, dati i miei impegni scolastici e mugenistici non ho molto tempo, ma dovrei farcela...

Saluti

Squall
 
Top
goten1992
view post Posted on 15/11/2007, 15:58




incrocio le dita XD

ps: qst tre mi sn piaciuti molto, COMPLIMENTI!

pps: qst tutorial ovviamente servono x creare dal nulla (intendo sl cn le sprite)?
 
Top
Squall990
view post Posted on 15/11/2007, 16:52




grazie dei complimenti :D

si. con questi tutorial, alla fine sarai in grado di programmare un char "completo" senza utilizzare base di sorta. è naturale ke non basta leggere i tutorial x diventare un bravo programmatore, la cosa fondamentale ke serve x diventare bravi è...(può sembrare banale ma è così) sbagliare. se nel fare un char sbagli, impari 3 cose x ogni errore ke fai:

1) quello ke hai fatto XKE' non funziona
2) impari a riconoscere + facilmente un errore
3) impari nuovo codice perchè devi aggiustare l'errore.

quindi, sbagliate, amici, sbagliate XDXDXD

cmq appena riesco a districarmi dagli obblighi scolastici, finisco il IV.

saluti

Squall
 
Top
6 replies since 21/8/2007, 12:09   365 views
  Share