728x90
반응형

object 4

Object Pooling 유니티에서 이용하기

Object Pooling은 많이 들어봤고 디자인 패턴 중에 가장 이해하기 쉬운 것이라고 생각한다. [Game Developer, 게임개발자/디자인패턴] - Object Pool, 오브젝트 풀, 객체 풀 [디자인패턴](최적화) 더군다나 Unity 2021에서는 이제 엔진에서 지원한다. 그래서 더 좋다. 공부할 때도 유니티의 native에서 지원하는 함수들을 바탕으로 하면 될 것이다. 1. ObjectPool을 이용하는 주체 using UnityEngine; using UnityEngine.Pool; public class Launcher : MonoBehaviour { [SerializeField] Bullet bulletPrefab; private IObjectPool bulletPool; privat..

Type Object, 타입 객체 [디자인패턴](행동)

이러한 패턴을 만드는 의도는 클래스 하나를 인스턴스 별로 다른 객체형으로 표현할 수 있게 만들어서 새로운 "클래스들"을 유연하게 만드는 것이다. 이것은.. 객체지향프로그래밍의 원칙, SOLID에서 비슷한 것이 있었지 아마? ?? 왜..?? 게임에서 플레이어가 잡을 몬스터 무리를 구현해보자. 몬스터는 체력, 공격, 그래픽 리소스, 사운드 등 다양한 속성이 있다. 다만.. 예제에서는 체력과 공격 속성만 고려해보자. class Monster { public: virtual ~Monster() {} virtual const char* getAttack() = 0; protected: Monster(int startingHealth) : health_(startingHealth) {} private: int he..

Object Pool, 오브젝트 풀, 객체 풀 [디자인패턴](최적화)

의도는 객체를 매번 할당, 해제하지 않고 고정 크기 풀에 들어있는 객체를 재사용함으로써 메모리 사용 성능을 개선한다. ?? 해제하지 않는데.. 어떻게 메모리 사용 성능이 개선된다는거지??? 알아보자 게임에서는 시각적 효과가 필요하다. 플레이어가 마법을 쓰면 빛이 나고 플레이어가 총을 쏘면 총알이 날라간다. 그 중에서 빛은 파티클 시스템이 필요하다. 마법을 몇 번 쓰는 것만으로도 수많은 파티클 생성되어야 하기 때문에.. 굉장히 빠르게 만들 수 있어야 한다. 더욱 중요한 것은 파티클을 생성, 제거하는 과정에 메모리 단편화가 생겨서 안 된다는 점이다. **메모리 단편화는 경계해야 한다. 단편화란 힙에 사용 가능한 메모리 공간이 크게 뭉쳐 있지 않고 작게 조각나 있는 상태를 말한다. 그림을 보자 ?? 메모리는 ..

Object Pooling, 오브젝트 풀링, 디자인 패턴 [Game Development]

게임을 조금 더 개발자의 입장에서 용이하게 만들어주는 디자인 패턴인 오브젝트 풀링에 대해서 알아보자 **딱히 어떠한 게임엔진에 국한된 패턴은 아니다. 그냥 ~한 개념이다. 우선 오브젝트 풀링이란 것이 무엇인가? 오브젝트 풀링이란 오브젝트를 재활용하기 위한 디자인 패턴을 의미한다. **여기서 재활용이란 정말 다시 활용하는 것을 의미한다. 예를 들자면 총알, bullet이 가장 대표적이다. 우리가 흔히 총을 쏠 때 버튼을 누르면 총알이 생기고 날아가게끔 만든다. 근데 미니건 쏜다고 생각해보자. 1분에 600발이었나 K-2가? 우습지 미니건 쏘면 1분에 몇천 발 쓸건데.. 그렇게 되면 몇천개의 총알을 만들어야 한다. 여기서 생각한 것이 ... 좀 아까운데..? 아니 쏠 때마다 오브젝트 만들면... 몇천 발이 ..

728x90
반응형