https://www.youtube.com/watch?v=51sFAT2xZ40&list=PL412Ym60h6uvqYiCVKk5NiEFpDEwOMQFX&index=4
 
 
명령 객체(Command)를 
저장·되돌리기·실행
커맨드 패턴(Command Pattern)*

“행동 + 필요한 모든 데이터” 를 하나의 객체로 싸서 택배 보내는 걸 의미함



누가 실행? 👉 Invoker
무엇을 실행? 👉 Command
실제 실행은 ? 👉 Receiver
 
 
Command (명령 자체) — 📄 지침서
Invoker (명령 예약 실행자) — 🕹️ 트리거
Receiver (실제 행동 담당자) — ⚙️ 실행
Client (세팅 담당) — 🧑‍💻 준비자


플레이어 이동, 애니 재생은 리시버 이다



왜 유니티에서 Command 패턴이 유용함?

✔ 여러 정보를 한 번에 넘기기 좋음

함수 파라미터 줄줄 쓰는 대신 Command 객체 하나.

✔ 입력 처리랑 실제 행동을 분리

Input → Command → 실행
(키보드/패드/UI 버튼 바뀌어도 행동 코드 수정 없음)

✔ Undo / Replay 쉽게 구현

Command를 리스트에 저장 →
되돌리기(Undo), 재생(Replay) 가능.

✔ AI / 스킬 시스템에 특히 강함

스킬 하나를 Command 로 만들면
데미지/ 효과/ 범위/ 시전자 등 모든 정보 패킹 가능.
 
+
 
undo 뒤로 가기
 
redo 뒤로 가기 취소
 
 
+
 
커맨드 객체는 아래 컨텐츠에 쓰일 수 있다
undo, redo, 시간여행 , 리플레이  , 따라쟁이 미믹몹
 
 
+
 

일반적으로 게임만들 땐
이렇게 인풋과 플레이어 이동만 연결함
 

 
커맨드 객체는 
거기서 더 나아가 인보커, 인터페이스, 커맨드 를 만듦
더 확장함
 
+
 
undo 매커니즘은 각각 다른데
이동 의 undo 가 가장 심플하다 함
 
공격 의 undo 는 데미지 되돌려주고 뭐하고 하는 구조라 함
 
+
 

 
언두 stack
리두 stack 각각 별개로 씀
 
스택은 후입후출
 
+
 
 

 
언두 리두 는 stack 이 아닌 queue 방식으로도 구현할 수 있다
선입선출 개념임
 
 
 
+
 

 
격투게임의 커맨드도 구현가능하다
→ → 공격키
이렇게 세 개의 커맨드 키를 순서대로 입력하면 기술이 나가게 할 수 있음
 
관련 용어는
command pattern combo , queue
 
 
+
 

 
스킬 하나마다 클래스를 따로 분리시켜야 좋음
 
스킬 추가가 쉬워서 확장성 있고
테스트 하기도 좋음
 
 
+



커맨드 패턴 요약

소분한다


대상과 명령을 같이 두지 않고 따로 둠
단일 책임 원칙
single responsibility principle

기존 코드 수정 필요없게 만듦
개방/폐쇄 원칙
open/closed principle


여러 요청들을 저장하고 로그로 기록 가능

결합하지 않아서 유연해짐


분리를 했기 때문에 재사용성을 높임
한 Command 클래스를 데이터만 바꿔서 계속 재사용




명령,호출,수신 
이렇게 나눠서 복잡해 보이긴 함

오버헤드 만드는 게 단점,
관리자 위에 관리자 이런 게 많아져서 복잡해지는 게 단점



+

오버헤드 뜻
overhead

추가 비용이 든다 
더 느려질 수 있다

호출이 너무 많아질 수 있다


 

반응형
Posted by 이름이 익명
: