Sites Grátis no Comunidades.net Criar uma Loja Virtual Grátis

DIOGO STUDIOS SITE OFICIAL


ONLINE
5




Total de visitas: 195564
COMO FUNCIONA MUGEN, CRIAR CHAR MUGEN

COMO CRIAR CHAR MUGEN SIMPLES ?

COMO FUNCIONA O MUGEN ?

ESTRUTURA O MUGEN ?

QUAL PROGRAMA USAR PARA CRIAR CHAR MUGEN ?

 


 

Bem galera aqui estou de volta, no meu terceiro texto... o tema dos dois primeiros foi "Mugen em Geral" e o segundo foi "Mugen no Android", agora o terceiro é " Como funciona o mugen? E como começar a criar chars no mugen usando FF, um conceito geral explicando os códigos mais usados"
  • Se você sempre quis criar chars no mugen, eu vou te lançar o inicio de tudo, depois você vai pesquisando + tentativa e erro que tudo vai dar certo...
Então primeira vamos conceituar os arquivos que cada char tem e o que é cada um:
  • Arquivo: DEF : Este arquivo do char guarda todas as configurações principais do char, o nome do projeto, o nome que vai aparecer no jogo (displayname), a data que ele foi criado, a versão do mugen que ele pertence ( essa da versão muitas vezes é falsa, serve para nada ), o autor que criou, quantas paletas de ores ele tem, a lista de todos os arquivos que pertencem ao char, a lista das paletas de cores e no final se ele possui ou não abertura e encerramento.
  • Arquivo: SFF : Esse arquivo é o dos Sprites do Char, ele é que nem um arquivo compactado tipo o rar, ele é um arquivo que pega varios tipos de imagem como .jpg, .pcx, e colocar um valor em cada imagem.... Esse arquivo que dificulta a criação de uma nova engine mugen indie.
  • Arquivo: AIR : Esse arquivo é o das Animações, todos os sprites do SFF vão ser organizados aqui em gifs, para serem utilizados nos códigos depois...
  • Arquivo: CNS : Nada mais que um arquivo .INI um pouco mais complexo, com outro nome para ser destinado ao mugen. Esses arquivos carregam todos os "supostos códigos" dos chars ( porque não existe programação de verdade em mugen, mexer com arquivo .ini não é nenhum tipo de programação, muita gente vai ficar de cara com essa afirmação, mas ela não deixa de ser verdade ) Esse arquivo carrega as IA / AI ( a inteligência artificial do personagem que vai ser ligada com o arquivo cmd )
Como funciona arquivos .ini ? Eles já foram utilizados até em versões antigas do windows para dar boot, talvez sejam utilizados até hoje em alguns arquivos... Eles são divididos em Section - Key - Value .... hoje as pessoas usam um ini mais avançado chamado "Data structure". que em vez de organizar as informações só na vertical que nem os .inis, organiza na horizontal também, mas isso não funciona no mugen... O .ini só não é utilizado ainda em muitos jogos pois tem formas mais complexas e criptografas de salvar informações do jogos sem serem alteradas facilmente...
Formato do arquivo INI:
[Section]
Key = Value
Key2 = Value
  • Arquivo: SND : Arquivo onde carrega todos os sons do char, organizado da mesma forma que SFF...
  • Arquivo: CMD: Aqui carrega todos os Comandos do Char, é aqui que quando você aperta a tecla A no seu mugen, ele faz uma chamada la no CNS, no section ( statedef ) para acionar aquele golpe que você programou...
Bem agora conceituado os arquivos, vamos explicar como o mugen interpreta na ordem cada arquivo e depois vamos a parte prática, explicar os códigos e como você deve modificar ( sim modificar, até pq todo char um dia no minimo foi o kfm, é o char template do mugen) para fazer o seu char...
Bem, usando o Fighter Factory, que é o programa onde você vai criar chars, stages e se quiser utiliza-lo para modificar mugen também é possível mas depende da versão...
1 - Primeiro o mugen/fighter factory, vai ler o .DEF para saber com quem ele está lidando, ver informações gerais do char, depois vai ver o .SFF do char.
( SPRITES ): Você vai ver que os sprites do char estão sempre em um "grupo" esse grupo vai ter varias imagens...Sempre que você quiser criar um movimento, coloque em um grupo, e vá adicionando as imagens do movimento no frames seguintes... Assim aquele grupo por exemplo vai ter 5 imagens que é só o seu char dando um soco.
2 - Depois do SFF.. Esse grupo com imagens vai para o AIR ( ANIMAÇÕES) organizar essas imagens em "GIF" para serem usadas no códigos depois. Agora você vai crirar uma nova animação e vai colocar todas as imagens do grupo que você criou la no SFF... arrumar o tempo de cada frame, o x e o y se referem a posição na horizontal e na vertical respectivamente... Se for algum "poder/magia" você vai utilizar aqueles filtros de cores "Alfa". Bom agora aquele "numero" ou "begin action" dependendo da versão do fighter factory você vai precisar do valor que diz qual animação é essa, pois você vai utilizar ela nos códigos do cns.
3 - Apos o Air, agora vamos no CNS. Aqui todo código de golpe novo do char será um [Statedef + número] você vai pegar aquele "numero" ou "begin action" que está no ( Animações ). Por enquanto vou deixar o CNS ( Códigos ) queto porque vai ser mais difícil e explicar ele e vamos precisar de fotos para explicar.
4 - Bom depois de programado o golpe no CNS, a gente vai para o CMD ( Comandos ), lá vai ser organizado esses golpes programados no cns, para a parte prática, quando a gente tocar no teclado ele será interpretado no cmd. Como que funciona ?
Exemplo:
[Command]
name = "GolpeExemplo"
command= D, DF, F, a
- o "GolpeExemplo" vai estar programado lá em baixo a qual statedef ( qual golpe programado ) ele pertence. Ali em command, vai estar dizendo qual as teclas que tu vai apertar no teclado para esse golpe funcionar:
D = Down = Tecla Baixo
U = Up = Tecla Cima
B = Back/Left = Tecla Esquerda
F = Front/Right = Tecla Direita
(Eu particularmente configuro os ataques no menu, a, s, d, x , y , z na ordem... então ficaria assim a = a, b = s, c = d, x = z, y = x, z = c no meu teclado )
a = soco fraco
b = soco médio
c = soco forte/ soco triplo
x = chute fraco
y = chute médio
z = chute forte/chute triplo
Agora vamos ao que as pessoas devem estar esperando, como utilizar os ""códigos"" do cns..Então se você é iniciante e está querendo começar a fazer char por meio desse tutorial eu te recomendo que ou você utilize o char "KFM" que já vem no mugen ( char template: char utilizado de base para fazer todos os outros chars, 90% dos char são feitos em cima dele ) ou utilize o char de algum autor que tenha uma movimentação que você gosta ( Você terá que dar créditos, uma questão de respeito dentro da comunidade mugen )
--- Imagem 1 ---
- Bom a primeira coisa mais básica que você tem que entender é o Eixo X, e o Eixo Y, eles podem ser "posição" como podem ser "Velocidade em pixel por segundo". Relativo a posição: o X+ (X com valor positivo) será sempre à frente do personagem.., o X- (X com valores negativos) será sempre atrás do personagem. O Y+ (Y com valores positivos ) será sempre abaixo do personagem... O Y- (Y com valores Negativos) será sempre acima do personagem. Conforme vocês podem ver na imagem 1.
Relativo a velocidade: é igual as posições, a diferença é que o personagem/coisa vai ir naquela direção ( conforme o valor irá subindo a velocidade ) e não ser colocado naquela posição.
Vamos ao que interessa, vamos ao primeiro exemplo:
[Statedef 170]
type = S
ctrl = 0
anim = 170
velset = 0,0
_____________________________
type = "tipo" = é o "tipo" de ataque que vai ser aquele ataque. "S" significa Standing ( PARADO, serve para você dizer que nesse movimento ele está parado e no chão ). "C" significa Crouching ( ABAIXADO, serve para você dizer que neste movimento ele está abaixado no chão ). "A"
Air ( NO AR, para dizer que está no ar tipo em pulo ). "L" Lying Down, ( CAINDO, significa que está caindo ). "U" ( Serve para você dizer que esse golpe vai estar com o mesmo tipo que o anterior, que o statedef anterior )
Ctrl = 0 [ Ai tem outra coisa que você tem que entender que nem o Eixo X/Y, em códigos como esse, se o valor é "0" significa false ( Desligado ), se for "1" significa true ( Ligado ). Ctrl é control, se você consegue controlar o personagem após o fim do golpe, ou se não consegue. Se for 0 significa que você vai apenas assistir o personagem logo que ele terminar e não vai conseguir controlar, se for 1 você retoma o controle .
Anim = "Animação" é exatamente aqui o local onde você vai colocar a animação do Air, o famoso "GIF" que você criou, é exatamente aqui.
Usando eixo x e y na prática :
velset = "Setar velocidade, Escolher Velocidade", o velset assim como pos funcionam assim, "velset = x ,y " se for velset = 5,0 significa que o personagem vai estar em movimento para a direita na velocidade 5 pixel por segundo. "o velset é = direção horizontal, direção vertical", já o "pos é x,y porém é = coordenada x, coordenada y"
--- Imagem 2 ---
Vamos a Imagem 2, um dos códigos mais usados o do Explod.
[State 0]
type = Explod
trigger1 = animelem = 4
anim = 91
pos = 0,10
postype = p1
facing = 1
sprpriority = 5
ontop = 1
ownpal = 1
scale = 0.33,0.5
  • O explod é sempre aquela imagem ou animação que você quer que apareça por alguns segundos ou por um tempo determinado atrás, na frente, do lado, longe, em cima do player 1 ou player 2, do personagem. Por isso que no type "tipo" ta explod porque esse é o explod.
Os trigger que aparecem e podem ser infinitos, podem aparecer em qualquer tipo de state, são sempre "condições", nesse caso é para aparecer aquela imagem. Nessa caso para essa imagem aparecer só tem uma condição. O "Animelem" que está nessa condição serve para você determinar em que frame da animação ele vai aparecer, digamos que a animação tem 10 frames, esse "explod" vai aparecer quando chegar no frame 4 da animação.
O Anim como já dito lá em cima, nada mais é determinando qual é a animação que vai aparecer, no caso é a animação "begin action"/"number" 91.
A Pos já foi dito antes, no caso como está 10, significa que ela vai aparecer 10 pixels abaixo do centro da animação.
o Postype serve para dizer se é uma animação que o centro vai ser o player1 ou o player2, ou a esquerda ou a direita. Nessa caso padrão, ela vai aparecer em cima do player1.
O "Facing", "ownpal", "priority", são praticamente os mesmos códigos, serve para dizer se a imagem vai aparecer atrás ou na frente da principal. No caso do Facing ele só aceita como valores o 0 ou 1 ( false ou true ), se for 1 ele vai aparecer acima da imagem principal. Já o priority você pode colocar valores como ...-5,-4,-3,-2,-1,0,1,2,3...
O Scale ( ESCALA, é refente ao tamanho da imagem )também funciona como Eixo X e Y. ou seja o scale é assim " Scale = X,Y " só que agora você vai estar falando de largura e altura. onde X é largura e Y altura. O Padrão normalmente é Scale = 1,1.
--- Imagem 3 ---
[state 0]
type = envshake
trigger1 = animelem = 7
ampl = 2
time = 5
O envshake não é muito usado, ele serve para fazer aquele efeito de tremor que normalmente se usa em especial... sabe aquele tremor na tela ? pois é.
De acordo com a única condição que ele tem para existe, no caso o trigger1 = animelem = 7, ele vai acontecer só no frame 7 da animação do statedef.
O ampl é o nivel de tremor, quanto maior o valor mais forte.
O time = "tempo" = o tempo em "mile segundos" que vai durar esse tremor. No caso esse tremor vai durar 5 segundos.
--- Imagem 4 ---
[state 0]
type = playsnd
trigger1 = animelem = 50
value = S1,2
Esse código playsnd é utilizado em simplesmente todos personagens, pois ele é o código que você usa para tocar os sons do personagem que por sinal devem ser .wav, não indico usar mp3 por questão de qualidade.
Nesse caso vai aparecer só no frame 50, de acordo com o trigger.
O Value nesse caso indica qual o grupo e o index do som, ou seja qual é o som que vai tocar ne kkk
Value = S1,2, ou seja vai tocar o som que está no grupo 1, no frame 2 do grupo, no index 2 do grupo.
--- Imagem 5 ---
[State 0]
type = ChangeState
trigger1 = time = 500
value = 0
O Changestate (Trocar de estado, trocar de state), é o código mais utilizado pois ele que faz com que um golpe acabe e vá para a posição inicial ou vá para outro código...
Ele normalmente está sempre no fim do statedef, indicando que aquele statedef acabou, que aquele ""código"" acabou.
Como a condição é tempo = 500, significa que esse golpe independente de ter terminado a animação ou os outros códigos, vai trocar de estar ali ao completar esse tempo.
Value = 0 , significa que ele vai voltar para o statedef 0. Entendam que o statedef 0 em qualquer personagem/char é sempre o personagem parado, sempre. Ou seja terminou o statedef ele vai voltar para o personagem parado. Ai você pode ate adicionar ctrl = 1, no fim desse código para garantir que você vai retomar o controle do personagem, isso evita alguns bugs de chars mal programados. Esse value pode ser qualquer valor que você queira, pode ser value = 500, ou seja, ato terminar esse statedef ele vai direto pro [statedef 500].
--- Imagem 6 ---
[state 0]
type = poweradd
trigger1 = 1
value = 10
O Poweradd ( Poder Adicionar ) serve para você adicionar ou tirar energia da barra de MP (Da barra de energia, não da de vida)
Trigger = 1 ou trigger = null, significa que não tem condição nenhuma, mas o mugen te força em todo esse tipo de código usar/ter no minimo 1 trigger, por isso que você tem que por assim.
Value = 10, vai adicionar 10 de energia na barra de energia. Tanto o máximo de energia ou de vida, ta sempre configurado la no incio do CNS, em life e power.
Se o value é "value = -10" ele em vez de adicionar vai remover 10 de energia.
--- Imagem 7 ---
[State 0]
type = BGPalFX
trigger1 = 1
time = 1
add = 10,-20,-20
mul = 250,250,250
supermove = 1
O BGPalFX, serve para fazer um efeito na paleta... Sabe aqueles poder de KOF que faz o cara ficar dourado? Sabe aquelas dash atrás do Ryu em Marvel vs Capcom ? Pois é esse código serve para isso. Eu teria que fazer um tutorial só para isso, só para dizer todas as cores. Como você pode ver na imagem da direita você tem uma forma de fazer os efeitos já prontos no antigo fighter factory ultimate.
--- Imagem 8 ---
[State 0]
type = HitDef
trigger1 = movecontact = 0
damage = 25,10
attr = S, NA
hitflag = MAF
guardflag = MAF
hitsound = S1,9
guardsound = S1,10
pausetime = 0,5
ground.slidetime = 0
ground.hittime = 20
air.hittime = 20
ground.velocity = -2
air.velocity = -1,-2
getpower = 25
Bom chegamos ao tão utilizado HitDef, é aqui que seu personagem vai tirar vida do outro personagem. Porém para que ele tire vida, la na Animação tem que estar a "hitbox" vermelha exatamente no local que você quer que encoste o player 2 e tome dano. Caso a hitbox esteja errada na animaçao, como Verde ou Azul ele não irá fazer a "colisão com o player 2". a Hitbox tem que estar ou a vermelha ou amarela que são as de ataque.
Bom no trigger1 está o movecontact, que esta desligado por estar 0 e não 1. Ele serve para dizer que se ao atacar o player 2, o player 1 deve se afastar/desgrudar do player 2.
Damage = "Dano" = É o responsável por tirar vida do player 2. Conforme o valor, é o que vai tirar da vida do outro player ao colidir com esse ataque.
O attr = S, é o tipo de ataque.
Hitflag e Guardflag não sei dizer o que é.
Hitsound como vocês já podem imaginar é qual o som que vai tocar ao colidir com o outro player.
Guardsound é qual o som que vai tocar se o player defender ao colidir.
pausetime = não sei explicar. ( Essas coisas que eu não sei explicar não se assustem vocês não vão precisar )
Bom pulando alguns códigos que não sei explicar corretamente... air.hittime = é o tempo de colisão no ar.
ground.velocity = a direção na horizontal que ele vai deslizar ao acertar o ataque. getpower = se ele vai conseguir alguma energia ao acertar o ataque.
--- Imagem 9 ---
[State 0, PlayerPush]
type = PlayerPush
trigger1 = 1
value = 0
Push é empurrar, serve para empurrar o outro player como diz já o nome.
--- Imagem 10 ---
[State 0, PosAdd]
type = PosAdd
trigger1 = AnimElem = 1
x = (p2dist X) =10
y = (p2dist Y) -35
PosAdd, como diz já o nome serve para colocar o player instantaneamente em uma posição.
No caso de acordo com o trigger1 isto irá ocorrer no primeiro frame da animação.
O player 1 será colocado a 10 pixel de distancia do player 2 na horizontal, e 35 pixels acima do player 2, instantaneamente que nem teleporte.
--- Imagem 11 ---
[state 0]
type = turn
triggerall = enemynear,facing = facing
trigger1 = time = 0
Turn, serve para girar de direção contrária o player. Se ele está olhando para a esquerda agora vai olhar para a direita. Tem uma condição ali no triggerall = enemynear ( inimigo/player 2 esta perto ) se ele estiver perto, então facing vai ser igual a facing, ou seja, eles obrigatóriamente por causa do código vão ser forçados a se olhar.
--- Imagem 12 ---
[State 0]
type = velset
trigger1 = time = 5
x = -25
y = -4
Velset, já falei mais lá em cima sobre, serve para colocar aquele personagem ou algo em movimento. Tem relação direta com o eixo x e y.
--- Imagem 13 ---
[State 0]
type = AssertSpecial
trigger1 = 1
flag = noshadow
AssertSpecial tem a ver com um efeito especial. Não conheço esse código, mas creio que ele sirva para remover a sombra do personagem. (no é não, e shadow é sombra )
--- Imagem 14 ---
[State 0]
type = Destroyself
trigger1 = AnimTime = 0
DestroySelf ( Seria destruir a si mesmo, é até meio filosófico kkk ). Muito utilizado com os explod ou helpers ( não falei ainda deles ) em vez de trocar de statedef, aquela coisa se auto destrói.
--- Imagem 15 ---
[State 0]
type = Helper
trigger1 = animelem = 2
helpertype = normal
name = "Effect"
ID = 6202
stateno = 6202
pos = 39,-49
postype = p1
ownpal = 1
size.xscale = 0.5
size.yscale = 0.5
"Helper" Esse é complicado de explicar. Helper = "AJUDANTE". Ele serve para que você faça um efeito ou novo código naquele statedef que ele está sendo colocado. Você vai colocar esse código em um statedef A, que vai fazer uma chamada no statedef B, que vai alterar o Statedef A com coisas que teoricamente você não poderia fazer no próprio Statedef A. Um exemplo disso é quando um personagem joga uma bola de fogo, mas você quer que aquela bola de fogo fique girando em rotação, é possível fazer essa rotação por meio do Helper.
Ele vai ser ativado no frame 2 daquela animação.
O nome e o ID, difícilmente vão ser utilizados.
O "stateno" é exatamente o numero do statedef desse helper, se o statedef do Hlper é "statedef 1999" então o stateno = 1999.
Todos os outros códigos abaixo nesse código eu já expliquei.
O helper é mais fácil de entender na prática do que lendo aqui.
--- Imagem 16 ---
[state 0]
type = angledraw
trigger1 = 1
scale = 1,1
Analisando: Angle é angulo. Draw é desenho. É esse efeito que você vai utilizar, usando seno e coseno, para fazer a animação girar no exemplo que dei do helper na imagem anterior.
--- Imagem 17 ---
[State 0]
type = SuperPause
trigger1 = time = 0
time = 30
anim = -1
movetime = 30
darken = 1
unhittable = 0
O "Superpause" ( Super Pausa ) é utilizado geralmente em quase todo especial, ele que da a cara de especial para um especial. Ele é aquele mini pause em todo jogo, antes de começar o golpe especial... também é aquele escurecimento do cenário durante o especial, ou aquele brilho no especial.
O Time de 30 mile segundos é o tempo que vai durar.
O Darken é relativo ao escurecimento ou não do cenário.
O Unhittable é se o personagem pode ser atingido ou não e cortar o especial ou não. Se o unhittable for 1, significa que durante o especial o player não pode ser atingido pelo outro player e o especial não vai ser cor
--- Imagem 18 ---
[State 0, BindToTarget]
type = BindToTarget
trigger1 = 1
time = 5000
;ID = -1
pos = 0,0,Mid";"Mid","Head"
;ignorehitpause =
;persistent =
Esse código serve para fazer com que aquela coisa/player fique grudado em algo.
--- Imagem 19 ---
[State 0, BindToRoot]
type = BindToRoot
Trigger1 =1
time = 1
;facing = 0
pos = 0,-39
Deixa o player grudado em uma posição.
--- Imagem 20 ---
[State 881, 2]
type = lifeadd
triggerall = p2stateno != 1000
Trigger1 = time = 1
trigger1 = life >= 61
trigger2 = time = 99
trigger2 = life <= 60
value = -40
Serve para adicionar vida ao personagem, se está negativo (-40) então vai remover vida dele.
--- Imagem 21 ---
[State 881, 4]
type = NotHitBy
trigger1 = time = 0
value = ,AP
time = 110
Faz com que não seja atacado naquele statedef.
  • Respondendo duvida aleatoria: Como alterar o screenpack do mugen? só abrir o arquivo system.def na pasta data do seu mugen.
Bom muito obrigado pessoal por ler ate aqui, desejo uma boa caminhada para vocês, esse tutorial me deu trabalho, foi feito por Diogo Studios Mugen.. Se forem utilizar de alguma forma peço que creditem... os próximos textos serão de conversão de personagem em versões diferentes de mugen.
 
Imagem em maior resolução: