전체 글(23)
-
[Unity3D] The world most simple MotionTrail effect
All you need to do is just attach the MotionTrailGenerator.cs to a GameObject with a SkinnedMeshRenderer on it. Just call the On() & Off() methods.
2022.11.16 -
[FSM vs Behavior Tree] Part.4 - Behavior Tree 의 구현
Behavior Tree 의 구현 Part.2 에서 BehaviorTree의 개념에 대해 알아보았는데요, 이번에는 BehaviorTree 를 C#으로 구현해보겠습니다. BehaviorTree 구조의 장점들은 1. 단순함. 2. FSM 을 개선하기위한 HFSM 이나 PushdownAutomata 처럼 이전 상태/상태머신에 대한 정보를 기억해둘 필요가 없음. 3. 노드 단위를 사용하기 때문에 FSM 처럼 Transition 을 위해 다른 상태들에 의존할 필요가 없음. 4. Base 노드 기반으로 다른 노드들을 확장해서 만들기 때문에, 새로운 기능의 노드를 만들때 확장만 해서 사용하면 되기 때문에 확장성이 높음 BehaviorTree 구조의 단점들은 1. 매번 루트로부터 DFS 탐색을 해야하기 때문에 한번에 ..
2022.11.07 -
[FSM vs Behavior Tree] Part.3 - Behavior Tree 의 개념
Behavior Tree 의 개념 행동 트리 행동트리는 FSM 에서처럼 상태들끼리 의존하는 문제를 해소할 수 있습니다. Tree 구조에서 알 수 있듯, 상태 개념없이 특정 행동에 대한 노드단위 개념을 사용합니다. 이 구조를 쓰는 핵심 목적은 루트노드로부터 DFS (깊이탐색)을 하여 실행 가능한 행동을 찾고, 최종적으로 찾은 행동에 대해 동작(Action)을 수행하기 위함입니다. 매번 DFS 를 수행해야하기 때문에, 성능면에서는 실행시간도 FSM 보다 길고, 노드단위 탐색이다 보니 캐시 미스가 잦아서 좋지 않습니다. 노드의 종류는 크게 다음 세가지가 있습니다. Root : 최상단 노드 Control flow : 하위 트리의 반환 종류에 따라 DFS의 흐름을 제어하기위한 노드 Execution : 최하위 노..
2022.11.03 -
[FSM vs Behavior Tree] Part.2 - FSM 의 구현
FSM 의 구현 Part.1 에서 FSM 의 개념에 대해서 보았습니다. 이번에는 FSM 을 구현하기위해 먼저 UML 로 컨셉을 보겠습니다. FSM Concept UML 우선, 핵심부분은 상태머신이 상태 인터페이스에대한 콜렉션을 가지고있고, 현재 상태에 따라 상태의 로직을 수행한다는 것입니다. 해당 컨셉을 좀더 자세히보면, IState 인터페이스는 enum 타입의 명령종류에 대해 열거하고있으며, 실행가능 여부를 따지고(CanExecute) 실행할 수 있습니다(Execute()). Iterating 을 하기위한 MoveNext() 를 가지고있고, 해당 상태가 종료되어야할때 Machine이 중단시킬 수 있도록 Stop() 을 추상화해놓고있습니다. IState 인터페이스는 해당 상태가 Machine입장에서 어떤..
2022.10.28 -
[FSM vs Behavior Tree] Part.1 - FSM 의 개념
FSM 의 개념 FSM (Finite State Machine) 유한 상태머신 우선 상태머신이란 특정 상태에 대한 일정한 동작을 수행하는 기계를 의미합니다. 정해져있는 상태들에 따라 연산을 수행하고 각 상태들은 특정 조건에서 다른 상태들로 전이될 수 있습니다. '특정 상태' 에서 '특정 조건' 일 때 '다른 특정 상태' 로 전환하는지 명시되기때문에, 컨셉이 간단하고 직관적이어서 코드를 봤을 때 누구나 쉽게 이해할 수 있고, 또 쉽게 작성할 수 있기 때문에 일반적으로 생산성이 높습니다. 구조 자체가 GOTO 구문 컨셉과 비슷하기때문에 상태들이 많아지고 구조가 복잡해질 수록 코드가 꼬일 가능성이 높은 단점이 있습니다. 단계별/ 조건별 애니메이션이나 캐스팅과정 등이 각 상태에 들어가야할 경우, Root-Sta..
2022.10.27 -
[메이플스토리월드] 리듬게임 출시
메이플스토리월드의 게임 엔진이 정말 잘 만들어진것 같아서 나도 간단한 게임하나를 만들어서 배포해보았다. 에디터 자체의 컨셉은 유니티엔진과 유사해서 다루는데 크게 어려움이 없었고, 스크립트는 처음써보는 Lua 를 사용했는데, C#보다 훨씬 쉬운 언어라 금방 매뉴얼 보고서 할 수 있는 정도인 것 같다. Lua 스크립트는 Lua Interpreter 로 Interpretation이 가능하다. 로블록스도 이걸 사용하고있다는데, 뭔가 사용하면서 느낀건 Interpreter 특성상 컴파일타임 없이 빠르게 동작을 확인해 볼 수 있던 점이 좋았고, 유니티엔진에서도 Interpreter 를 활용해봐야겠다는 생각이 들었다. 어쨌든, 그래서 만들어본 게임은 리듬게임이다. 메이플스토리 하면 아직까지도 나는 노동요로 거의 매일..
2022.10.19