Está en la página 1de 6

poner los dos juegos de sprites y animaciones en el mismo char, por eemplo,, un

endurance donde pelees


con sektor y kitana.... partes de un char de sektor, le agregas TODOS los sprites
de kitana al final, en el
mismo orden de sprites que tenia en su SFF, pero a cada numero de sprite, le sumas
10000, luego, en las
anims haces lo mismo, copias todas las anims de kitana y las agregas una a una al
AIR de sektor, pero con el
numero aumentado en 10000 (de modo que te quede el stand de sektor en la anim 0, y
el de kitana en la 1000
0, te quede el misil de sektor en el 1000 y el abanico de kitana en el 11000, te
quede el correr de sektor en
el 100 y el de kitana en el 10100... asi seria) (como compiaste todos lso prites de
kitana en con el mismo
orden y numero pero sumandole 10000, debes corregir cada anim copiada, para que use
los psrites que
tengan sumados 10000 en tu personaje doble).. despues de que tienes todo eso
arregaldo... vas hasta "CADA"
state del char y en todas las animaciones de state y en TODOS los changeanim, les
pones una "suma
condicionada"... que se active cuando la condicion que tu quieras se ejecute... por
lo general se usan
"variables".

ejemplo

en el golpe bajo, creo que es el state 200, pones que la anim es igual a
"200+10000*(var(x)=1)"... esta
condicion se lee como "la anim ser� 200 + 10000 si la variable X es igual a 1"
(reemplaza X, por el numero
de variable que desees,y que no estes usando, ni tu ni el motor dle juego, para
nada mas). Si pones esa
correccion en TODAS las animaciones de TODOS los states de TODOS los archivos de
codigo del personaje,
sektor se convertir� en kitana siempre que la variable este activada.

luego te encargas de hacer que la variable se active cuando al p1 (es decir sektor)
le quede poca v
ida (no cuando muera, porque sino le char, muere y el round acaba), debes "simular
su muerte"... poniendo
une xplod o algo del char muriendo, mientras teleportas al p1 que ahora se ve como
kitana hasta afuera de
la pantalla y lo haces entrar con un salto.. sinq ue nadie se de cuenta de que
hiciste el cambio, es como
ilusionismo, un truco de magia para el jugador que no sabe que esta peleando contra
le mismo char, pero con
otra skin, yq eu lo que ve morir es un "doble"

al momento de quedarse con poca vida y activarse la variable, pones un state


intermedio
("el que lo teleporta afuera y lo hace entrar a la pelea de nuevo, en su nuevo
skin") que le recarge la
vida (un lifeadd, o un lifeset.. preferiblemente lo segundo)

ahora que el char se ha transformado en kitana por fuera, hay que hacer que pueda
ejecutar sus special
moves y no los de sektor, para eso copias los states especiales de las tecnicas de
kitana y los agregas a tu
char doble, recuerda corregir las anims para que use las de kitana que ahora tiene
+10000 en sus numeros...
solo que para estas no necesitas poner condicionantes, pones directamente le numero
con el 10000 sumado
(en los special moves de sektor, dejas todo como esta, porque no los comaprte con
kitana, y por ende, no
necesitan la suma condicionada, porque no existe un disparo de misil de kitana, ni
un teleport uppercut de
kitana)

ahora que ya tienes los special moves separados de cada uno en el mismo archivo,
debes ir hasta los
comandos (CMD) y agragar los comandos de kitana a la lista de comandos y a los
changestates de mas abajo

cuando hayas hecho eso, debes separar los de un char del otro, con un "triggerall"
que reconozca si el
char esta en "modo kitana" o en "modo sektor", eso es facil. "triggerall = var(x)=
0" significa que es el
modo sektor... mientras que "var(x)=1" significa que es el modo kitana, pones eso
en TODOS los states
de movimientos especiales y ya los tienes diferenciados... ahora repites el
procedimiento de recien con
los kombos y con los fatalities... despues de tener eso o mientras lo haces, puedes
tambien agregar los
sonidos de kitana al char (con una cantidad sumada, podr�a ser 100), y corregir
CADA state de TODO
el char, para que cambie de sonido/voces segun que char esta activado (en los
states de kitana, pones
solo los nuevos, en los que son solo de sektor sin equivalentes, dejas como esta)

no voy a entrar a explicar como codear que el char se teleporte fuera de la


pantalla y entre con un salto
o corriendo, ni tampoco como hacer que el char "no muera" cuando le quede poca vida
y en su lugar
cambie a uns tate intermedio ys e cure... eso lo podes aprender viendo como esta
codeado el "finishhim"
en el motor del juego, o viendo como se codean los teleports e intros de chars..
para ver como sacar unc
har fuera de pantalla y que la camara no lo siga.

asegurate de que uses un varset y no un varadd, cuando cambies de modo, porque sino
podrias generar
un loop infinito de variables, si no eres cuidadoso ponienod limitaciones con
triggers
la cosa no acaba aca

como muchos de los states que tenes que cambiar son states fundamentales del
common,cns... recomiendo
2 alternativas...

-Alternativa 1:
haces un common exclusivo apra el char, que no comparta codigo conlos otros chars
del juego, es bueno,
pero podr�a no ser eficiente, ya que necesitas que las reacciones sean tenidas en
cuenta. Aunque es mas
sencillo de programar, porque necesitas menos triggers limitantes, me suena a que
podria generar bugs
por discordancia entre el common de un char normal ynde tu char.
Emiliano Sanna
-Alternativa 2:
modificas los common y states genericos del juego, los que comparten TODOS los
chars, y cada vez que
pongas un modificador de anim o state, le agregas un segundo trigger que indique
que el char debe si o
si ser el char endurance.. para hacer eso le pones de nombre a tu personaje
"endurance1" o el que
quieras y pones el trigger "name="endurance1""... si vas a poner eso en sumas
condicionantes como trigger
secundario.. debes colocarlo como una expresion de condicion de logica matematicas
con un "&&", por
ejemplo:

anim = 0 + 10000*(var(x)=1 && name= "Endurance1")

lo que se traduce como "la anim ser� 0, a menos que el char se llame Endurance1 y
su variable X sea
igual a 1, en cuyo caso se sumar� 10000 al valor de la anim, resultando en
10000"... asi se interpreta
esa linea de codigo.
Emiliano Sanna
con esta alternativa te aseguras de que todos los chars mantengan las mismas
reglas, y no tienes mas
de un common.cns.

claro que cone sta alternativa, NO PUEDES liberar el char solo para descarga y uso,
porque no funcioanr�
bien... funcionar� bien SOLO en tu juego, y quien quiera usarlo tendr� que usar TUS
common y constantes
generales... a partir de ahi, el juego se vuelve "un juego/proyecto cerrado.

gracias a que es cerrado, puedes tambien asegurar reacciones prefijadas entre chars
del mismo sistema...
el problema que yo no puedo solucionar en esto, es que cuando un char hace un
"throw/agarre" al p1,
este usar� una anim del AIR del p2, no del player 1, esto se debe a que usan un
state llamado "changeanim2"
... que si o si, debe usarse para agarres, porque prefija la forma en que
reaccionan al agarre "sin necesidad
de configurar dicha anim en CADA char".. es un atajo que hace el codeo mas facil y
que ahce que
practiacmente cualquier char que disponga de los sprites pueda reaccionar
eficientemente al agarre,
aunque no tenga dicha anim... PERO... dicha tecnica unviersal de codeo, no se lleva
bien con los chars
dobles, ni con los chars de trajes alternativos... porque no hay forma de decirle
al p2 que use los
psrites alternativos, el p2 tratara de usar los psrites normales, haciendo que
cuando KITANA sea
agarrada y lanzada por Raiden (por ejemplo) ella se transforme en sektor, mientras
dure el agarre...
de nuevo, eso pasa, porque el p2 (raiden) no sabe que sektor ahora es kitana, para
el p2, sektor sigue
siendo sektor, aunque sea vea como kitana...

para corregir eso, necesitas que el proyecto sea cerrado, porque puedes entrar al
codigo de CADA
personaje y revisar TODOS sus states donde se obligue al p2 a tomar una "animacion
que no posea"
con el state "changeanim2" (algo que pasa en TODOS los Throws/agarres y varias
fatalities y
movimeintos especiales) y le pones un trigger que diga que "con esos personajes
dobles el
movimiento no los oblige a usar esa anim".. ejemplo " triggerall = p2name !=
"Endurance1" "

eso va en el changeanim2
y en su lugar pones un "changeanim" normal, con el numero de la anim alternativa
que debe
tomar para KItana y colocarla en el AIR del Endurance) (dicha anim tendras que
crearla tu
(copiando la anim de reaccion que usa en el changeanim2)

Eso lo haces con TODOS LOS CHARS DEL JUEGO (incluso en el propio char doble que
estas creando),
para que estos sepan como reaccionar ante tu char doble... y tu debes hacer CADA
REACCION DE CADA
AGARRE para tu kitana del Endurance con mueros diferenciados, recomiendo ahcer una
tabla de excel,
donde lleves registro de cada numero y reaccion, para no perderte, porque sino ser�
un infierno despues.

Todo esto es para tener un char en modo endurance... claro que tendr�s que
modificar varias reacciones
del sistemad e juego, para en el segundo round y tercero, el char no entre en
finishim, cuando sektor
tenga poca vida, y en su lugar se convierta en kitana, y que sea kitana quien si
entre en modo finishim
(y diga finisher, en su lugar)

si ADEMAS quieres hacer qeu el nombre del char "cambie" en la lifebar.. es una
explicacion aparte,
donde dejas el nombre del personaje en blanco, y usas un explod estatico del
nombre, puesto SOBRE
la lifebar. Si esta en modo sektor, pones un sprite del nombre de sektor, si esta
en modo kitana pones
un sprite del nombre de kitana.

Este Laaaaaaaaaaaaaaaaaaaaaaaaargo proceso, debe hacerse solo para crear 1 solo


endurance especifico
de 2 chars prefijados, en este caso "sektor y kitana"

si quieres que tenga m�s de 2 chars, solo repites le proceso, agregando un tercer
char, pero con +20000
en vez de +10000 a todo, y haces que el tercer char se active con la variable X
siendo igual a 2, en vez
de 1

ejemplo:
var(x) =0 Sektor
var(x) = 1 Kitana
var(x) = 2 Reptile

si pones m�s de 2 chars en el endurance, puedes hacer endurances de muchos chars,


uno tras de otro
o... si tienes muchos o a TODOS los chars codeados dentro del endurance.. puedes
hacer que sean solo
endurance de 2 personajes, con parejas aleatorias. usanod variables.
ejemplo:

sektor es X = 1
kitana X = 2
reptile X = 3
kano x= 4

creas una variable Y, que sea para las parejas posibles:

sektor + kitana = var(Y)= 1


sektor + reptile = var(Y)= 2
sektor + kano = var(Y)= 3
kitana + reptile = var(Y)= 4
kitana + kano = var(Y)= 5
reptile + kano = var(Y)= 6

y p�nes al principio de la pelea un trigger aleatorio entre 1 y 6, que determine


contra que pareja
lucharas, de ese modo ser�a mas variado el endurance, y no estaria prefijada la
pelea... mientras
mas chars tengas adentro, mas combinaciones puedes codear de forma aleatoria.
Emiliano Sanna
Esta misma tecnica de endurance, es la que se usa para codear un shangtsung que se
pueda
transformar, porque lo que hemos estado ahciendo es "transformar a sektor en
kitana", realmente no hay
2 personajes... pero la transformacione s mas facil de codear, porque no requiere
que el char muerta y reviva,
ni tampoco simular la muerte con explods, ni hacer que el char salga desde afiera
de la apntalla con un teleport. es tan sencillo ocmo ahcer que las variables se
activen con un comando (un special move de morph)
Emiliano Sanna
en fin.. espero que esto sirva... lamento no poder entrar en mas detalles.. ya me
canse de escribir y creo que
esto es mas que suficiente para que alguien que sabe medianemente de coding mugen
pueda hacerlo... el
tema con este metodo (que es EL UNICO COMPROBADO y m�s completo que hay) es que
toma demasiado
tiempo de hacer.. DEMASIADO... y muy poca gente se mete en estas cosas, porque
nadie te lo va a valorar,
para la gente ser� solo "que copado, un endurance" y ya esta... y para esa reaccion
y para tener "esa cosita
que la mayoria delos proyectos no saben o no se animan a hacer" tubiste que
romperte el lomo 1000 horas
de coding, idas y venidas, copiar animaciones, comprobar numneros, llevar tablas de
animaciones y states,
crear reacciones alternativas, modificar los states que ya existen, corregir bugs
de reacciones, etc etc...si lo
vas a hacer solo para tener algo que otros no tienen, o para que se te reconozca el
esfuerzo, el conocimieto
o lo que sea, olvidate, no tiene sentido... pero si lo haces porque "de verdad lo
queres en tu juego, para vos,
porquees absolutamente necesario tenerlo y pensas que podes sacarle mucho m�s
provecho que solo tener
endurance... por ejemplo, tenera tambine trasnformaciones de shangtsung" entonces
adelante... porque le
sacrificio es mucho,, sin contar que si no sabes nada de variables, de helpers, de
codear teleports, cutscenes,
explods, flags, triggers y condicionantes en formad e formulas, vas a tener que
aprender todo eso lo que
multiplica el tiempo muchisimo

También podría gustarte