h1

M2 – Confronto (Confrontation) – Sprites

1 01UTC Fevereiro 01UTC 2009

Visitors from other countries I suggest http://babelfish.yahoo.com/ these articles are written in Portuguese but they could be converted to English with few errors

Boas novas gente, é chegado o dia de mais outra atualização; Sempre há novidades sobre o projeto quando atualizo… (se bem que essa é a finalidade do site).

Antes de mais nada, para aqueles que chegaram a este site atravéz de sistemas de buscas, procurando por sprites e animações em flash com sprites e que ainda não me conhecem, estes são os meus 2 trabalhos até o momento http://www.newgrounds.com/portal/search/author/suroy caso tenha dificuldades para visualisa-las, no final deste tópico explico de forma rápida como assistir as animações postadas no Newgrounds.

E agora os links que vocês caçadores famintos por sprites estão procurando. Embora eu prefira extrair os meus próprios sprites, vejo que inúmeras pessoas aportam em meu blog procurando por isto, então aí vai algumas opções.

http://www.zweifuss.com/
http://www.spriters-resource.com/
http://tsgk.captainn.net/
http://spritecity0.tripod.com/id4.html

Voltando a falar sobre o meu projeto….

Finalmente terminei a edição dos sprites dos personagens principais desta animação.
Agora saibam em primeira mão quem serão os próximos no Confronto.

striderchun-lisubzeroscorpion

Abaixo seguem alguns dos muitos frames novos que montei para o aprimoramentos das abilidades que Sub-Zero e Scorpion detêm:

scorpion3 scorpion2 scorpion1

Escorpion agora usará seu arpão em qualquer direção no chão ou no ar além de alguns golpes novos.

sub_zero3 sub_zero1 sub_zero2

O Sub-Zero Clássico também não fica para traz e abusa de suas técnicas de domínio sob o gelo com maestria, e claro também usa alguns golpes incorporados de outros ninjas.

É isso mesmo gente, os 2 ninjas mais antigos e queridos de Mortal Kombat vieram em dupla. Alguns já devem estar questionando “Mas eles são inimigos… nunca uniriam forças”, bom,” inimigo do meu inimigo é meu amigo”, quer motivo maior para temporariamente unir forças do que com este provérbio..?

Agora só falta começar a animação em sí. Porém estarei viajando dia 9 de Fevereiro e terei de me afastar do projeto por 10 dias… isso concerteza não estava em meus planos e atrazará a data de lançamento que estava prevista para o final de Fevereiro, mas com sorte, talvez em Março tudo esteja pronto para ser publicado.

Respondendo ao post de Wagnelles, segue a baixo uma lista de autores que conheço e que publicaram animações feitas com sprites . Para quem curte esse tipo de animação aqui há material suficiente para que todos possam passar horas se deleitando com as várias histórias e embates de idéias sobre:

STREET FIGHTER & MORTAL KOMBAT

http://www.newgrounds.com/portal/search/author/Procixide
http://www.newgrounds.com/portal/search/author/R1665
http://www.newgrounds.com/portal/search/author/Trixiaoyu
http://www.newgrounds.com/portal/search/author/Hugosimpson
http://www.newgrounds.com/portal/search/author/skater007
http://www.newgrounds.com/portal/search/author/slicing-claws
http://www.newgrounds.com/portal/search/author/khote
http://www.newgrounds.com/portal/search/author/mortis5000
http://www.newgrounds.com/portal/search/author/TechLeSSWaYz
http://www.newgrounds.com/portal/search/author/bhograj
http://www.newgrounds.com/portal/search/author/manishan
http://www.newgrounds.com/portal/search/author/Y-Disciple
http://www.newgrounds.com/portal/search/author/Red-Lantern
http://www.newgrounds.com/portal/search/author/Yeury
http://www.newgrounds.com/portal/search/author/EvilEgg

CASTLEVANIA

http://www.newgrounds.com/portal/search/author/RopeDrink

MARIO & SONIC

http://www.newgrounds.com/portal/search/author/Alvin-Earthworm

VARIADOS

http://www.newgrounds.com/portal/search/author/Pkmn2
http://www.newgrounds.com/portal/search/author/DaRkLiNk19
http://www.newgrounds.com/portal/search/author/Big-Dave
http://www.newgrounds.com/portal/search/author/Teenplayer84
http://www.newgrounds.com/portal/search/author/BlazingGamer
http://www.newgrounds.com/portal/search/author/shiguy-master

Todos os links acima estão vinculados ao site www.newgrounds.com e ao sistema de busca do próprio site, então sempre que você clicar em qualquer link a busca estará atualizada com os mais recentes trabalhos destes autores.

COMO ESCOLHER UMA ANIMAÇÃO E ASSISTIR:

tela_resultado

O site organiza os resultados em forma de planilha, onde:

Rating - É a classificação de censura para a animação.

Submissions & Details -
São as animações já publicadas pelo autor e uma breve introdução sobre cada trabalho.
Este campo é um link por completo que te leva a página da animação. Basta  escolher uma e clicar.

Author -
É o nome do autor do trabalho

Current Score -
São os dados estatísticos sobre cada uma das animações publicadas. São elas: Score: avaliação do trabalho de 0,1 até 5 pontos, Votes: quantidade de votos recebidos e Views: quantidade de visitas já recebidas.

tela_resultado2

Clique em WATCH THIS MOVIE, localizado no canto direito do browser para iniciar o download da animação. Depois de esperar por alguns minutos dependendo da sua conexão e do tamanho do arquivo, você poderá assistir a animação.

Se quiser deixar seu voto, vá até CLICK AN ICON TO VOTE THIS, basta clicar em uma das carinhas localizadas no canto esquerdo indicada pelo da tela numeradas de 0 a 5. Não é necessário ser cadastrado para votar .

Se alquém quiser adicionar o seu próprio link ou de algum outro trabalho que esteja em qualquer lugar da WEB, qualquer site, basta responder a este posts e eu adicionarei a lista.

h1

M2 – Confronto (Confrontation) – Audio

18 18UTC Janeiro 18UTC 2009

Bom venho hoje aqui somente esclarecer uma pendência deixada no meu último post.

A música mencionada da cantora Emma Shapplin, se chama The Inferno. A versão que estou usando não é a original, mas sim uma versão remixada no estilo trance na qual eu também fiz algumas modificações para extendê-la, a fim de prepara-la para uma batalha de 11 minutos

No momento estou editando os personagens que serão utilizados. Como todo o meu aprendizado parte de um processo de experimentos, tentativa e erro, tive que refazer todos os sprites dos personagens Chun-Li e Strider Hiryu, pois não seria possível usa-los para o novo método empregado nessa terceira animação.

Nesse momento estou trabalhando nos dois adversários que os protagonistas confrontarão, logo após retornarei para os sprites do Strider Hiryu para modificar alguns movimentos e ampliar os seus combos em solo.

Correção da Trilha Sonora:

Deal in Blood  – Yoshihiro Ike -  Ergo Proxy OST
Bregna 2415  – Graeme Revell -  Aeon Flux OST  (novamente na parada)
The Inferno (Remix)  – Emma Shapplin -  (Não disponível em nenhum album da própria)
Run For a Fall  - Epica -  The Phanton Agony
Dryka  - Robert L. Bennet, Jr & R. Dario –  Ultraviolet  OST – Ars Arcana
To Victory  - Tyler Bates -  300 OST

h1

M2 – Confronto (Confrontation)

2 02UTC Janeiro 02UTC 2009

Adeus ano velho… Feliz ano novo…. Com muito sucesso, paz e trabalho para todos.

E chega finalmente mais uma atualização sobre o meu trabalho. Peço desculpas as poucas pessoas que visitam regularmente este blog, pela demora, infelizmente é inviável postar semanalmente pois demanda tempo criar material suficiente para justificar uma atualização.

Vamos lá. O que há de novo?
Estou postando as fotos dos cenários já finalizados para esse próximo embate insano entre duplas. Como vocês podem ver… desta vez os cenários serão variados e também serão bem amplos, o que possibilitará mais liberdade de exploração do confronto no desenrolar da animação.

Com ajuda do meu ASSM estou tentando tridimensionalizar o bidimensional. HAHAHAHAHA….  o efeito é bem semelhante ao que fizeram no Sonic quando foi lançado para o MEGA DRIVE (Sega Genesis)…

The Living Forrest

The Living Forest

 

The Living Forrest Top

The Living Forest Top

Goro's Lair

Goro's Lair

The Pit

The Pit

The Graveyard

The Graveyard

Por ora é só pessoal. Logo estarei postando outras novidades. até…
h1

M2 – Confronto (Confrontation)

11 11UTC Dezembro 11UTC 2008

É isso aê gente…. hoje oficialmente comecei a produção do episódio 3 que levará o subtítulo ” Confronto”.

Desta vez Strider Hiryu e Chun-Li formarão dupla para encarar novos adversários na The Living Forrest, isso mesmo gente uma luta entre duplas…. mas ainda não revelarei quem serão os adversários para não estragar a surpresa. HAHAHAHAHAhahahahahha…… Mediante o desinvolvimento do 3 episodio, colocarei aqui o material  editado para que todos possam acompanhar o andamento até a finalização.

Posso adiantar para vocês que toda a trilha sonora que será usada nessa animação,  já está pronta desde a fase de seleção de músicas para o episódio M2 - Sobrevivendo.

Deal in Blood – Yoshihiro Ike – Ergo Proxy OST
Bregna 2415 – Graeme Revell - Aeon Flux OST  (novamente na parada)
(Ed. trance desconhecida) – Emma Chapplin
Run For a Fall – Epica – The Phanton Agony
Dryka – Robert L. Bennet, Jr & R. Dario - Ultraviolet  OST – Ars Arcana
To Victory – Tyler Bates - 300 OST

Posso adiantar também que como já dito no tópico anterior, eu estava trabalhando na versão 2.0 do meu ASSM (Action Script Scenario Mananger), tentando otimiza-lo, entretanto percebi que ao diminuir o número de variáveis e de linhas de instrução, o aumento do uso do processador é inevitável pois ele tem que realizar mais cálculos de números irracionais no mesmo espaço de tempo.
Então só fiz algumas modificações na legibilidade do código, transformei todas as variáveis em globais para que o código seja reaproveitado inúmeras vezes sem precisar criar outras variáveis e alterei as condições ( if ) para que elas sejam compatíveis com um MC que simula a lente da câmera.

Então como ficaria o procedimento para o uso deste meu código:

 - Crie um novo MC com o nome de ASSM e faça um retângulo na medida exata do seu palco com a ferramenta retangle tool 
 - Alinhe-a ao centro deste MC
 - Crie uma nova layer e nesta coloque a declaração das variáveis.

_global.ASSM_X =_root.ASSM._x
_global.plano1_X = _root.plano1._x
_global.plano2_X = _root.plano2._x
_global.plano3_X = _root.plano3._x

_global.ASSM_Y =_root.ASSM._y
_global.plano1_Y = _root.plano1._y
_global.plano2_Y = _root.plano2._y
_global.plano3_Y = _root.plano3._y

- Crie un novo Keyframe no frame 2 e coloque o ASSM

_global.ASSM_X2 =_root.ASSM._x

 if (_global.ASSM_X > ASSM_X2){
  _global.ASSM_valor = (_global.ASSM_X – _global.ASSM_X2)
  
  _global.plano1_X2 = (_global.ASSM_valor)
  _global.plano2_X2 = (_global.ASSM_valor / 1.25)
   _global.plano3_X2 = (_global.ASSM_valor / 4)

  _root.plano1._x = (_global.plano1_X + _global.plano1_X2)
  _root.plano2._x = (_global.plano2_X + _global.plano2_X2)
  _root.plano3._x = (_global.plano3_X + _global.plano3_X2)
  
  _global.ASSM_X = _root.ASSM._x
  _global.plano1_X = (_global.plano1_X + _global.plano1_X2)
  _global.plano2_X = (_global.plano2_X + _global.plano2_X2)
  _global.plano3_X = (_global.plano3_X + _global.plano3_X2)
 }

 if (_global.ASSM_X < _global.ASSM_X2){
  _global.ASSM_valor = (_global.ASSM_X2 – _global.ASSM_X)
  
  _global.plano1_X2 = (_global.ASSM_valor)
  _global.plano2_X2 = (_global.ASSM_valor / 1.25)
  _global.plano3_X2 = (_global.ASSM_valor / 4)

  _root.plano0._x = (_global.plano0_X – _global.plano0_X2)
  _root.plano1._x = (_global.plano1_X – _global.plano1_X2)
  _root.plano2._x = (_global.plano2_X – _global.plano2_X2)+0.05
  _root.plano3._x = (_global.plano3_X – _global.plano3_X2)

  _global.ASSM_X =_root.ASSM._x
  _global.plano1_X = (_global.plano1_X – _global.plano1_X2)
  _global.plano2_X = (_global.plano2_X – _global.plano2_X2)
  _global.plano3_X = (_global.plano3_X – _global.plano3_X2)
 }

_global.ASSM_Y2 =_root.ASSM._y

  if (_global.ASSM_Y > ASSM_Y2){
  _global.ASSM_valor = (_global.ASSM_Y – _global.ASSM_Y2)
  
  _global.plano1_Y2 = (_global.ASSM_valor)
  _global.plano2_Y2 = (_global.ASSM_valor / 1.25)
   _global.plano3_Y2 = (_global.ASSM_valor / 4)
  
  _root.plano1._y = (_global.plano1_Y + _global.plano1_Y2)
  _root.plano2._y = (_global.plano2_Y + _global.plano2_Y2)
  _root.plano3._y = (_global.plano3_Y + _global.plano3_Y2)
  
  _global.ASSM_Y = _root.ASSM._y
  _global.plano1_Y = (_global.plano1_Y + _global.plano1_Y2)
  _global.plano2_Y = (_global.plano2_Y + _global.plano2_Y2)
  _global.plano3_Y = (_global.plano3_Y + _global.plano3_Y2)
 }

 if (_global.ASSM_Y < _global.ASSM_Y2){
  _global.ASSM_valor = (_global.ASSM_Y2 – _global.ASSM_Y)
  
  _global.plano1_Y2 = (_global.ASSM_valor)
  _global.plano2_Y2 = (_global.ASSM_valor / 1.25)
  _global.plano3_Y2 = (_global.ASSM_valor / 4)

  _root.plano1._y = (_global.plano1_Y – _global.plano1_Y2)
  _root.plano2._y = (_global.plano2_Y – _global.plano2_Y2)+0.05
  _root.plano3._y = (_global.plano3_Y – _global.plano3_Y2)

  _global.ASSM_Y =_root.ASSM._y
  _global.plano1_Y = (_global.plano1_Y – _global.plano1_Y2)
  _global.plano2_Y = (_global.plano2_Y – _global.plano2_Y2)
  _global.plano3_Y = (_global.plano3_Y – _global.plano3_Y2)
 }

- Crie un novo Keyframe no frame 3 e coloque a instrução

gotoAndPlay(2);

 - Para ver o ASSM funcionando basta colocar seu cenario com até três planos em forma de  MCs respectivamente nomeados  como plano1 (cenário onde os protagonistas estão), plano2 (plano de fundo) e plano3 (plano do horizonte ou parede).
 - Agora crie uma camada específicamete para o ASSM e coloque-o nesta.
 - faça os movimentos da câmera de um local para o outro atravéz de keyframes e interpolações de movimento (Motion Tween)
 - Pressione Crtl + Enter
e veja o resultado.
 - Você pode alterar a velocidade em que os planos se movem mudando os valores destes parâmetros:  
  _global.plano2_X2 = (_global.ASSM_valor /
1.25 )
  _global.plano3_X2 = (_global.ASSM_valor /
4 )

 _global.plano2_Y2 = (_global.ASSM_valor / 1.25 )
 _global.plano3_Y2 = (_global.ASSM_valor /
4 )

- Você também pode aumentar o número de planos que se movem copiando e colando mais linhas de código, mudando somente a nomenclatura de plano3 para plano4, plano5, plano6 … em cada linha acrescentada.

Bom por hoje é isso… se alguém quizer modificar meu AS para aperfeiçoa-lo ou souber de algum código que faça o mesmo ou melhor sinta-se livre para modifica-lo ou notificar-me…

Um abraço a todos

h1

Finalmente finalizado

18 18UTC Novembro 18UTC 2008

É isso aê gente. o projeto está no ar neste link: http://www.newgrounds.com/portal/view/469669

Deu muito trabalho no percurso até a conclusão, mas valeu a pena. e como Comemoração estou postando aqui abaixo o AS Code que desenvolvi para gerenciar mos cenários na animação e alguns dos melhores momentos da animação.

O custo de uma linguada

O custo de uma linguada

 
 
 
 
 
 
 
 
 
 
 
 
 
Heroi e Vilão... aff clichê

Heroi e Vilão... aff clichê

 

Até as forças do bem agem covardemente as vezes

Até as forças do bem agem covardemente as vezes

 
Ninjas em cena... quem é mais habilidoso?

Ninjas em cena... quem é mais habilidoso?

Meu primeiro AS Code – sintam-se livres para mexer e melhora-lo se possivel, eu também estou trabalhando em uma segunda versão muito mais otimizada que atualmente contém metade das linhas dessa primeira versão e usa muito menos variáveis.

No primeiro keyframe do palco:
_global.movx1 =_root.master._x
_global.movxplan1 = _root.plan1._x
_global.movxplan2 = _root.plan2._x
_global.movy1 =_root.master._y
_global.movyplan1 = _root.plan1._y
_global.movyplan2 = _root.plan2._y
Agora no segundo Keyframe do palco eu criei um MC com 2 frames e coloquei o seguinte código:
No primeiro Keyframe do MC:
var movx2:Number =_root.master._x
 if (_global.movx1 < movx2){
  var movx3d:Number = (movx2 – _global.movx1)  
  var movxpplan1:Number = (movx3d / 1.8)
  _root.plan1._x = (_global.movxplan1 + movxpplan1)
  var movxpplan2:Number = (movx3d / 6)
  _root.plan2._x = (_global.movxplan2 + movxpplan2)
  _global.movx1 =_root.master._x
  _global.movxplan1 = (movxplan1 + movxpplan1)
  _global.movxplan2 = (movxplan2 + movxpplan2)
 }
 if (_global.movx1 > movx2){
  var movx3d:Number = (_global.movx1 – movx2)
  
  var movxpplan1:Number = (movx3d / 1.8)
  _root.plan1._x = (movxplan1 – movxpplan1)
  var movxpplan2:Number = (movx3d / 6)
  _root.plan2._x = (movxplan2 – movxpplan2)
  _global.movx1 =_root.master._x
  _global.movxplan1 = (movxplan1 – movxpplan1)
  _global.movxplan2 = (movxplan2 – movxpplan2)
 }
var movy2:Number =_root.master._y
 if (_global.movy1 < movy2){
  var movy3d:Number = (movy2 – _global.movy1)
  
  var movypplan1:Number = (movy3d / 1.1)
  _root.plan1._y = (_global.movyplan1 + movypplan1)
  var movypplan2:Number = (movy3d / 1.2)
  _root.plan2._y = (_global.movyplan2 + movypplan2)
  var movypplan3:Number = (movy3d / 1.9)
  _root.lua._y = (_global.movylua + movypplan3)
  
  _global.movy1 =_root.master._y
  _global.movyplan1 = (_global.movyplan1 + movypplan1)
  _global.movyplan2 = (_global.movyplan2 + movypplan2)
  _global.movylua = (_global.movylua + movypplan3)
 }
 if (_global.movy1 > movy2){
  var movy3d:Number = (_global.movy1 – movy2)
  
  var movypplan1:Number = (movy3d / 1.1)
  _root.plan1._y = (movyplan1 – movypplan1)
  var movypplan2:Number = (movy3d / 1.2)
  _root.plan2._y = (movyplan2 – movypplan2)
  var movypplan3:Number = (movy3d / 1.9)
  _root.lua._y = (_global.movylua – movypplan3)
  _global.movy1 =_root.master._y
  _global.movyplan1 = (movyplan1 – movypplan1)
  _global.movyplan2 = (movyplan2 – movypplan2)
  _global.movylua = (_global.movylua – movypplan3)
 }

No Segundo Keyframe do MC:

gotoAndPlay(1);
Esse código gerencia 3 cenários no planos de fundo na forma de MCs respectivamente nomeados:  plan1, plan2 e lua. Há um cenário principal chamado master que deverá ser movido através de interpolações de movimento.
O código descrito acima trabalha com proporções da posição atual e posição final, matematicamente falando X = X1 – X2  e Y = Y1 – Y2  ou X = X2 – X1 e Y = Y2 – Y1 dependendo da posição em que o MC master esteve e está na tela.
Claro que a cada vez que o cenário for modificado o código também deverá ser atualizado dependendo das proporções de distância que houverem entre os planos. Para isso basta alterar todos os números multiplicadores que seguem dentro dos parênteses proporcionalmente a distância desejada( movy3d / 1.2 ). Leve em conta que 1 é igual ao mesmo movimento da camada mestre, 2 é igual a metade , 4 será igual a 1/4 e assim por diante… como uma PG.
Bom é só por enquanto… quando eu tiver concluido minha segunda versão do código eu postarei aqui também para todos, porque achei esse um pouco eficiente na troca embora seja uma mão na roda pra quem não tem nada.