본문 바로가기

FSM

유한 상태 기계(Finite State Machines, FSM) #2 (3/3) 원문보기 1편보기 2편보기(이어서 계속) 클로저 (역자 주 : 클로저에 대해서 처음들어보시는 분은 밑에 내용을 읽기 전에 링크를 통해서 클로저에 대한 대략적인 이해를 하시고 보시면 좀 더 쉽게 내용을 이해하실 수 있습니다.) 자, 우리는 위에서 클로저를 만들기 위해 델리게이트에 인스턴스의 참조를 어떻게 숨기는지를 봤다. 이런 이유로, 델리게이트를 사용할 때, Action이 인스턴스 맴버 혹은 static 맴버를 가리키는지, 이 메소드가 존재하는 클래스가 무엇인지 등을 알 필요가 없다. 단지 알아야 하는 것은 someAction()를 호출했을 때 그저 잘 작동할 것이라는 것이다. 여기 놀라운 소식이 하나있다 : 클로저 내부에서도 다른 변수를 숨길 수 있다! 방법은 익명 함수(anonymous functio.. 더보기
유한 상태 기계(Finite State Machines, FSM) #2 (2/3) 원문보기 1편보기 3편보기 (이어서 계속) * 전편에 약간 누락된 부분이 있어 전편 마지막부분에 추가하였습니다. (13. 12. 2)델리게이트 그럼 이제 델리게이트를 한번 써보자. .NET에는 2개의 일반적인 델리게이트 타입(Func, Action)이 내장되어 있고, 스스로도 정의할 수 있는데, 첫번째 함수를 예로 들어 보자.public delegate void UnityTriggerFunctionDelegate(Collider collider); 이제 트리거 함수를 가리키는 변수를 정의할 수 있다:UnityTriggerFunctionDelegate _triggerFunc;그리고 다음과 같이 델리게이트에 함수를 할당할 것이다. 123456789void Start(){ _triggerFunc = OnTri.. 더보기
유한 상태 기계(Finite State Machines, FSM) #2 (1/3) 원문보기 간단한 switch기반 FSM에서 강력한 힘을 가진 delegate기반 프레임으로 변경하기 두번째 강좌에 온 것을 환영한다. 사실 첫번째 튜토리얼은 꽤 쉬운 편이였다. 이번 강좌에서는 성능이 좋고, 깔끔한 FSM 프레임워크를 만들어 볼 생각이다. 이 튜토리얼은 FSM 프레임워크를 어떻게 만드는지 보여주는데, 분량이 많다고 너무 걱정하지는 마라. 뒷부분에서는 FSM을 사용해서 어떤식으로 게임을 디자인하는지 보여줄 것이다. 이런 상황은 노트북을 살때, 샐러리맨이 다음과 같이 말하는 것과 같다."좋아요, 제가 CPU를 만드는데 사용된 실리콘 동판화 프로세스를 설명해드리죠. 걱정마세요 딱 1시간이면 충분합니다"첫번째 튜토리얼 이후에, 이 튜토리얼은 많이 발전되었다. 대충 느낌을 파악하기 위해서 비디오를.. 더보기
유한 상태 기계(Finite State Machines, FSM) #1 (3/3) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. (2편에 이어서 계속) 우리의 첫번째 실용적인 유한 상태 기계 enemy에 대해서 더 주의깊게 생각하고, 상태를 정의한 다음, enemy들을 한 번에(at a time) 하나의 상태에 넣어보자. enemy는 다음 중 하나의 상태에 있을 수 있다 : sleeping, following, attacking, being hit, dying. 우리는 실제 다음과 같이 작동하기를 바란다: Part 1/Scene 2우리는 FiniteStateMachine1.cs파일을 만든 다음, 파일안에서 가장 먼저 해야할 일은 상태를 정의하는 열거형을 만드는 것이다: 0102030405060708091011public enum EnemyStates{.. 더보기
유한 상태 기계(Finite State Machines, FSM) #1 (2/3) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. *번역을 하면서 이해가 잘되지 않은 부분은 원문과 같이 배치하였습니다. (1편에 이어서 계속) 유한 상태 기계의 타입 많은 사람들이 알다시피, 유한 상태 기계를 만드는 것을 도와주는 많은 그래픽 툴이 있다. - 이 튜토리얼은 코드 기반의 FSM에 대한 것이다. 만약 그래픽 툴을 사용하고 싶다면, PlayMaker 또는 그외 경쟁사 제품을 확인해봐라. - 하지만 그래픽 툴을 이용하는 것은 스스로 코드를 작성하는 것보다 훨씬 더 많은 제약이 존재한다. 여기에는 2가지 형태의 코드 기반 FSM이 있다. Discoverable FSM/On Demand FSM 가끔씩, 특별한 목적으로 특정 시간에, 어떤 대상의 상태만 알면 되는 경우.. 더보기
유한 상태 기계(Finite State Machines, FSM) #1 (1/3) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. 튜토리얼의 첫 부분에서, 우리는 유한 상태 기계를 사용하는 이유를 파헤치고, switch문을 사용하여 이를 구현하는 가장 간단한 방법을 보여줄 것이다. Getting in a State? 당신이 작성하는 모든 프로그램은 상태 기계이다. if문을 작성하는 순간에도, 적어도 2개의 상태중 하나를 만든 것이다. - 코드를 작성할수록, 프로그램에는 더 많은 상태가 들어갈 것이다. switch와 if문의 과도한 사용은, 겉으로 이해하기 힘든 이상한 버그들과 함께, 해결방법의 복잡성은 증가하고 컴포넌트간의 상호작용은 예기치 않은 결과를 초래하면서, 감당할 수 없게 될 것이다. 당신의 프로젝트는 확장하기 어려워 지게 되고, 심지어 개념화.. 더보기
Space Shooter AI(우주 발사체 인공지능) - 3 (마지막) 원문은 이곳에서 보실수 있습니다. 내용이 길어 총 3편으로 나눠서 올리겠습니다. 본문에서 프로젝트 파일을 다운받아서 같이 따라하시면 더 이해가 쉽습니다.:) 숨바꼭질 (first FSM) 우리는 여기서 유한-상태-기계(FSM)이라는 새로운 단어를 소개하려고 한다. 이 화려한 단어 뒤에 있는 것은 무엇인가? 다른 행동 또는 주변 환경에 따른 행동의 집합이다. 이는 당신의 NPC가 자신의 상태와 주변의 환경에 대해서 행동을 수행하고 있다는 것을 의미한다. 여기 이 주제에 대한 상급 튜토리얼이 있지만, 명심해라! 그것은 상급이다. (역자 주: 해보시면 쉽습니다 ^^) 적 우주선에 대해서, 자신을 보호하기 위해 바위 뒤로 숨으면서, 계속 앞으로 나아가는 간단한 FSM을 만들 것이다. 코드로 이동하기 전에, 항상.. 더보기