FAL.노드이름에 관해서 알아보자
서론.
FAL.노드이름은 매우 독특하게도 그 값이 부정적(不定的)이다. 이 특성을 이용해 피니엔진을 이용해 슈팅게임을 제작하는 강좌가 두 번 올라온 적 있었다. 그러나 아쉽게도 FAL.노드이름은 지금까지 그 실체에 대해 명확하게 설명하고 있는 글이 없어서, Dana님의 도움을 받아서 불완전하게나마 FAL.노드이름에 대해 이야기해보고자 한다.
하언님의 15분만에 똥피하기 게임을 만드는 방법(http://nooslab.com/piniengine/bbs/board.php?bo_table=TIPBoard&wr_id=106&page=2)
PR3A님의 슈팅게임 예제(http://nooslab.com/piniengine/bbs/board.php?bo_table=TIPBoard&wr_id=90&page=2)
본론.
FAL.노드이름은 정확히는 사용자애니메이션 매크로(http://nooslab.com/piniengine/wiki/index.php?title=Reference:custom_animation)에 포함된 변수이다. FAL.노드이름의 정확한 기능은 사용자애니메이션 매크로에서 다른 매크로를 호출했을 때, 그 매크로의 대상을 특정하기 위해서 사용자애니메이션의 대상의 아이디를 저장하는 것이다. 뭔가 상당히 복잡하게 설명했는데, 사실 아래와 같다.
=====
이미지 1 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
이미지 2 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
=====
이런 과정이 있다고 하자. 만일 사용자애니메이션을 사용할 이미지가 A와 B 둘 뿐이라면, 조건을 사용하든, 뭐를 사용하든 사람의 손으로 값을 조정할 수 있다. 그런데 만약 셀 수 없이 많은 이미지가 등장한다면? 예들 들어 '총알'을 구현할 때 말이다. 노가다를 하려고 해도, 끝이 있어야 노가다를 하든지 말든지 할 텐데 이건 노가다를 해서는 답이 안나오는 수준이다.
=====
이미지 1 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
이미지 2 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
이미지 3 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
이미지 4 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
이미지 5 소환 -> a사용자애니메이션 실행! -> c 매크로 실행!
…
=====
위와 같이 작동한다고 했을 때, 이 과정 중에서 서로를 구분할 수 있는 유일한 요소가 이미지의 아이디이다. 따라서, 사용자애니메이션에서 매크로를 호출할 때 그사용자애니메이션의 대상이 되는 이미지의 아이디를 FAL.노드이름에 저장하는 것이다.
=====
이미지 1 소환 -> a사용자애니메이션 실행! -> a사용자애니메이션의 대상을 FAL.노드이름에 저장 -> c 매크로 실행!
이미지 2 소환 -> a사용자애니메이션 실행! -> a사용자애니메이션의 대상을 FAL.노드이름에 저장 -> c 매크로 실행!
이미지 3 소환 -> a사용자애니메이션 실행! -> a사용자애니메이션의 대상을 FAL.노드이름에 저장 -> c 매크로 실행!
이미지 4 소환 -> a사용자애니메이션 실행! -> a사용자애니메이션의 대상을 FAL.노드이름에 저장 -> c 매크로 실행!
이미지 5 소환 -> a사용자애니메이션 실행! -> a사용자애니메이션의 대상을 FAL.노드이름에 저장 -> c 매크로 실행!
…
=====
이 과정에서 마치 FAL.노드이름에 두 개 이상의 아이디가 저장되는 것처럼 보일 수 있는데, 그 이유는 대기 계열 매크로가 들어가지 않는 이상 매우 빠르게 처리되기 때문이다. 실제로는 한 FAL.노드이름에는 하나의 아이디만 저장되니 주의하자.
결론.
FAL.노드이름이 필요할 때는 특유의 부정성이 가장 필요한 순간, 즉 제작자도, 사용자도 정확히 알기 힘든, 혹은 너무 많아서 일일히 써넣기 힘든 것을 처리할 때이다. 그 외에 FAL은 반드시 대문자야 한다는 점과,FAL.노드이름의 최종 값은 맨 마지막에 실행된 사용자애니메이션의 대상이란 것을 기억하도록 하자.