SelfState 회피법
페이지 정보
작성자 Aravis 작성일 24-02-06 16:50 조회 1,550 댓글 0본문
*** 시작하기에 앞서 드리는 말씀 ***
무겐의 거의 모든 흉악 캐릭터는 윈무겐 (WinMugen) 에서만 작동합니다.
저 또한 윈무겐에 대해서만 다룹니다. 무겐 1.0은 다루지 않습니다.
하지만 무겐 1.0에서 흉악 캐릭터가 작동하지 않는 건 전혀 아닙니다.
기존의 캐릭터는 윈무겐 전용 흉악 캐릭터이기 때문에 무겐 1.0에서 작동하지 않는 것이고,
무겐 1.0 전용으로 만들어진 흉악 캐릭터는 무겐 1.0에서도 잘 작동합니다.
단, 윈무겐과 달리 무겐 1.0은 역사가 깊지 않기에 무겐 1.0 전용 흉악 캐릭터는
만들어진 것이 거의 없습니다.
따라서 무겐에 존재하는 거의 모든 흉악 캐릭터는 윈무겐 전용 캐릭터라고 할 수 있습니다.
*** 서론 ***
"SelfState 회피" 코드를 다루기 위해서는 먼저 "state 고정"에 대해 알아둘 필요가 있습니다.
이 글을 읽으시기에 앞서 아래 글을 먼저 읽어주셨으면 좋겠습니다.
http://blog.naver.com/snuphe/40180337145
스테이트 고정법을 사용하면 리버설과 같이 상대 스테이트로 끌고가는 공격을
전부 방어해낼 수 있게 됩니다.
그러나 자신마저 하나의 스테이트에 고정되어서 꼼짝 못하게 된다는 단점이 존재합니다.
이를 보완한 것이 바로 "SelfState 회피"법입니다.
별로 어렵지 않으니, 바로 본론으로 들어가겠습니다.
*** 본론 ***
원리는 아주 간단합니다.
만약 자신의 캐릭터가 상대방의 스테이트로 간다면,
이를 감지해서 다시 원래대로 되돌려놓는 것입니다.
그렇다면 상대 스테이트로 간 상황은 어떻게 감지할 수 있을까요?
답은 바로 [statedef -3]에 있습니다.
[statedef -3] 은 자기 자신의 스테이트에 있을때만 발동되고,
상대방의 스테이트에 있을 땐 발동되지 않습니다.
따라서,
[statedef -3]
[state ]
type = VarSet
trigger1 = 1
var(0) = gametime
ignorehitpause = 1
[statedef -2]
[state ]
type = SelfState
trigger1 = var(0) != gametime
value = 0
ctrl = 1
ignorehitpause = 1
이런 식으로 작성하면 어떤 일이 일어날까요 ??
일단 VarSet 의 효과로 인해서 var(0) 값은 항상 gametime 과 같은 값으로 고정되게 됩니다.
하지만 자신의 캐릭터가 상대방의 스테이트로 간다면, [statedef -3] 에 있는 VarSet 이 발동되지
않게 되고, var(0) 은 gametime 과 같은 값을 가지지 않게 됩니다.
이때 [statedef -2]에 있는 SelfState 가 발동됩니다.
[statedef -2]에 있는 스테이트 컨트롤러들은 상대방의 스테이트에 가있을 때도 발동되기 때문에
상대방의 스테이트로 간 즉시 SelfState 가 발동되서 다시 자기자신의 스테이트로 돌아오게 됩니다.
보통
var(0) = gametime
은 너무 단순하기 때문에
var(0) = gametime + 3
이런 식의 함수나
var(0) = 35*gametime + 1
또는
var(0) = 7*gametime*gametime + 3*gametime + 2
이런 식의 이차함수가 이용되기도 합니다.
좌우지간, SelfState 회피법만 정밀하게 짜놓는다면,
그 캐릭터는 웬만한 코드로는 깰 수 없을 정도로 강력한 방어력을 가지게 됩니다.
대표적인 예로는 보스-이그니스 12P가 있습니다.
댓글목록 0
등록된 댓글이 없습니다.