본문 바로가기

Studies/게임 디자인 패턴7

[게임 디자인 패턴] 방문자 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 에 대한 공부 노트입니다.  개요  방문자 패턴은 객체 구조에 새로운 기능을 추가할 때, 객체 구조를 변경하기 않도록 기능을 확장할 수 있도록 해주는 디자인 패턴이다. 이 패턴은 기능들을 객체의 클래스들로부터 분리하여 별도의 방문자 객체에 캡슐화함으로써, 객체 구조를 유지하면서 다양한 기능들을 추가할 수 있도록 한다.   구성 요소Element : Element는 방문자가 방문할 요소를 의미한다. Element는 주로 Accept라는 매서드를 통해 Visitor의 방문을 허락하고, 이 때 Visitor의 Visit 메서드가 호출된다. Visitor : Element를 방문하는 방문자 클래스를 의미한다. Element의 허가가 떨어.. 2024. 9. 26.
[게임 디자인 패턴] 옵저버 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다. 개요  옵저버 패턴(Observer Pattern)은 객체의 상태 변화에 따라 다른 객체들에게 자동으로 통지할 수 있는 디자인 패턴이다. 이는 발행자-구독자 패턴(Publisher-Subscriber Pattern)이라고도 불리는데, 객체 간의 느슨한 결합을 구현하는 데에 유용하다.    옵저버 패턴은 주로 GUI, 이벤트 시스템, 또는 데이터의 상태 변화가 여러 객체에게 알려져야 하는 경우에 주로 사용된다.  구성 요소주체 (Subject) : 상태 변화를 통지해야 하는 객체. 상태가 변경되면 옵저버에게 알리기 위해 옵저버를 등록하고 관리한다.옵저버 (Observer) : 주체의 상태 변화를 감지하여.. 2024. 9. 24.
[게임 디자인 패턴] 오브젝트 풀 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다.참고자료 : https://docs.unity3d.com/kr/2022.1/ScriptReference/Pool.ObjectPool_1.html 개요  많은 게임들의 화면 속에서는 수많은 객체들이 각자 행동하고, 상호작용하는 모습들을 볼 수가 있다. 투사체가 이리저리 날아다니거나, 다양한 파티클 효과가 터지고, 갑자기 수많은 적의 무리가 덮칠 수도 있다.    다양한 객체를 효과적으로 다루기 위해서는 오브젝트 풀 패턴이 사용된다.    오브젝트 풀 패턴은 자주 사용되는 요소를 위해 일부 메모리를 예약한다. 최근 사라진 객체를 메모리에서 없애지 않고, 다시 사용할 수 있도록 오브젝트 풀에 추가한다. 이를 .. 2024. 9. 10.
[게임 디자인 패턴] 커맨드 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수)에 대한 공부 요약 글입니다.  개요이번 글에서는 커맨드 패턴에 대해서 공부하고, 예제를 통해 이해해보자. 커맨트 패턴의 매커니즘은 플레이어 컨트롤러 입력과 그에 해당하는 타임스탬프를 기록한다.커맨드 패턴을 사용하여 게임의 리플레이 기능을 구현해보자. 커맨드 패턴 이해하기불을 끄고 키는 기능을 구현하기몇 가지 대안 살펴보기 커맨드 패턴이란,커맨드 패턴(Command Pattern)은 디자인 패턴 중 하나로, 요청을 캡슐화하여 객체로 만드는 디자인 패턴이다. 이를 통해 서로 다른 요청을 사용자가 선택적으로 사용할 수 있도록 하거나, 요청의 큐잉 및 로깅, 되돌리기(undo) 기능 등을 쉽게 구현할 수 있다. 커맨드 패턴의 구성 요소는.. 2024. 8. 5.
[게임 디자인 패턴] 이벤트 버스 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수)에 대한 공부 요약 글입니다. 개요이벤트 버스는 객체가 구독하거나 게시할 수 있는 특정한 전역 이벤트의 목록을 관리하는 중앙 허브 역할을 한다.이벤트 관리와 관련된 가장 간단한 패턴이며, 한 줄의 코드로 객체에 구독자 혹은 게시자의 역할을 할당하는 과정을 줄인다.빠른 결과가 필요할 때 유용한 디자인 패턴이다. (빠른 프로토타이핑이 필요할 때 유용하다!)복잡한 이벤트 타입 / 구조체를 다루지 않을 때 아주 유용하다.게시자(Publisher)가 이벤트를 발생하면, 게시자로부터 구독자(Subscriber)가 받을 수 있는 신호를 보내게 된다. 해당 신호는 구독자들만 받게 되며, 어떻게 처리할지 결정한다. 해당 과정의 중심에는 이벤트 버스.. 2024. 7. 16.
[게임 디자인 패턴] 상태 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다.참고자료 : https://unity.com/kr/how-to/develop-modular-flexible-codebase-state-programming-pattern 개요 - 상태 패턴 State Pattern 게임이 진행되면서, 게임 속의 존재(Entity)들은 저마다의 상태가 존재한다.예를 들어, 플레이어 캐릭터는 다음과 같은 상태들이 존재할 수 있다.가만히 서있는 Idle 상태입력을 받아 움직이는 Move 상태더 빠르게 움직이는 Dash 상태점프하는 Jump 상태... 게임 속 존재들의 상태들을 관리하고, 내부적으로 동작하도록 제어하기 위해서 사용하는 디자인 패턴이 바로 상태 패턴이다.상태 패.. 2024. 7. 10.
[게임 디자인 패턴] Singleton Pattern // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다. 싱글턴 패턴 Singleton Pattern유니티 개발자들 사이에서 가장 널리 사용되는 패턴인 싱글턴 패턴. 특정 인스턴스의 유일성을 보장한다.싱글턴 패턴에 의해 초기화된 이후에는, 런타임 동안 단 하나의 인스턴스만 메모리에 존재한다. 주로 게임 매니저와 같은 매니저 클래스들이 싱글턴으로 구현된다.씬 사이를 드나들면서도, 매니저 클래스들은 사라지지 않고 존재하며, 덕분에 다른 씬에서의 정보도 그대로 가져갈 수 있다. 즉, 여러 씬이나 스크립트에서 동일한 데이터를 공유하고 접근하므로 데이터의 일관성이 만들어진다!예를 들어, 1번 씬에서 플레이어의 골드가 50이 되었다면, 2번 씬으로 이동한 뒤에서 플레이.. 2024. 7. 3.