반응형

전체 글 80

[디자인패턴] 9. 유니티에서의 어댑터 패턴 퍼사드 패턴

이번 챕터에서는 두개의 패턴이 함께 있어서 같이 작성했습니다. 첫번째로 어댑터 패턴입니다. 어댑터 패턴 정의 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다. 유니티에서 예시로는 결제모듈을 예시로 들었습니다. 실제로는 문제 없지만 만약에 AOS와 IOS의 결제 함수명이 다를때를 가정하고 구현했습니다. // 결제 어댑터 인터페이스 public interface PurchaseAdapter { void Purchase(); } // AOS 결제 모듈 public class AndroidInApp : PurchaseAdapter { public void Purchase()..

[디자인패턴] 8. 유니티에서의 커맨드 패턴

꿀같은 추석시즌동안 너무 행복하게 쉬었답니다. 추석이 전부 가버리기 전에 지난주에 공부했던 커맨드 패턴에 대해 정리해보겠습니다. 커맨드 패턴 핵심 요청하는 객체와 요청을 수행하는 객체를 분리한다. 커맨드 객체의 Execute()를 호출한다. 작업취소기능도 지원할 수 있다. (구현할때는 사용하지 않았습니다.) 아래 객체지향의 원칙을 따른다. 객체지향의 원칙 바뀌는 부분을 캡슐화한다. 상속보다는 구성을 활용한다. 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 서로 상호작용하는 객체사이에서 가능하면 느슨하게 결합하는 디자인을 사용한다. 확장에는 열려있지만 변경에는 닫혀있어야한다. 추상화된것에 의존하라 구상클래스에 의존하지 않도록 한다. 유니티에서 커맨드 패턴 사용 유니티에서 커맨드 패턴을 사용하기 적절한 곳..

[전 프로젝트 이야기] "레전드 오브 시티"

3인 인디게임 개발을 하면서 가장 마지막에 개발했던 프로젝트 '레전드 오브 시티'다. 전작 '레전드 오브 아레나'의 좋은 반응을 그대로 타고올라가 높은 성적의 후속작으로 데뷔할 예정이었다. 90%이상 개발완료 상태임에도 불구하고 팀내 사정으로 팀이 해체가 되면서 프로젝트가 종료되었다. 베타 테스트 반응도 좋고 이전작을 뛰어넘는 완성도를 자랑했지만 결국에는 어쩔 수 없었던 것 같다. 4개월동안 클라이언트 개발을 담당했고 여기서 크게 신경쓴 파트는 아무래도 캐릭터간의 FSM(유한상태머신)을 극한으로 활용해서 각 일반 몬스터, 특수 몬스터 그리고 보스의 행동패턴을 구현을 했던 기억이 난다. 2019.03.01 - [게임 개발/디자인 패턴] - [디자인패턴]02. - FSM (Finite State Machin..

개발 프로젝트 2021.09.04

[유니티 C#] MonoBehaviour를 상속 받아야하는 Singleton, 모노 싱글톤

이전에 싱글톤 관련 글을 정리하면서 마지막에 한번 언급했던 내용을 다뤄보겠습니다! https://welcomeheesuk.tistory.com/62 [디자인패턴] 03. 유니티에서의 싱글톤(Singleton) 패턴 지난 수요일에 친구들과 디자인패턴에 대해 스터디를 하면서 제 스스로로 잘 알고 사용하고 있으면서도 잘 모르겠는 아리송한 싱글톤 패턴에 대해서 다시 한번 정리하고자 합니다. 저는 예전에 welcomeheesuk.tistory.com 유니티로 게임을 개발하다보면 Sington패턴으로 정보들을 관리하면 좋을때가 많습니다. 그러면서 MonoBehaviour를 상속받는데 싱글톤처럼 동작하도록 구현하고 싶을때가 있습니다. 그럴때 사용하면 좋은것이 바로 '모노싱글톤(MonoSingleton)'입니다. 이 ..

게임 개발/Unity 2021.08.29

[전 프로젝트 이야기] "레전드 오브 아레나"

히스토리도 남길 겸 예전에 개발했던 프로젝트를 소개하고자 합니다. 인디개발을 시작하고 2번째 프로젝트로써 출시 후 1만 누적 다운로드와 영광의 구글 피처드에 등록되었던 나름 괜찮은 성적을 보여준 게임이다. 심지어 광고도 처음으로 요청해봤다. https://youtu.be/DQrFJ0zXQ98 식은땀 흘리면서 본 기억이.. 이래저래 게임개발과 서비스에 있어서 많은 경험을 안겨준 효자같은 게임이었습니다. 3인 개발 인디게임 개발기간: 3개월 사용기술 : Unity, C# 제한된 공간안에서 오랫동안 살아남는 캐주얼 서바이벌 게임 누적 다운로드 1만, ‘금주의 신규 추천게임’ 구글 피처드 등 가장 많은 반응을 받은 게임 출시 후 다양한 마케팅 업체와 함께 SDK 연동 경험 구글 , 페이스북 애널리틱스를 처음으로..

개발 프로젝트 2021.08.28

[디자인패턴] 7. 유니티에서 데코레이터 패턴

오늘의 디자인 패턴은 데코레이터 패턴입니다. 데코레이터 패턴의 정의는 객체에 추가적인 요건을 동적으로 첨가한다는 것입니다. 그리고 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공해줍니다. 이번에 핵심적으로 다루는 객체지향 디자인 원칙은 OCP(Open-Closed Principle)으로써 클래스는 확장에 대해서는 열려있어야하며, 코드변경에 대해서는 닫혀있어야 한다는 원칙입니다. 위의 두가지를 고려해보면 어떤 클래스의 추가적인 요건을 동적으로 첨가할때 코드변경에 대해 닫혀있는 방식이 바로 데코레이터 패턴이라고 할수있습니다. 게임을 구현하는데 있어서 그렇게 자주 볼 수 있는 패턴은 아닌 것 같지만 해당패턴을 적용시켜 아이템을 꾸며보았습니다. // 데코레이터 패턴으로 꾸며질 객체 ..

[디자인패턴] 6. 유니티에서 옵저버패턴

오늘 유니티에서 적용해볼 패턴은 '옵저버 패턴'입니다. 옵저버 패턴의 정의는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이가고 자동으로 갱신되는 방식으로 일대다 의존성을 가집니다. 위의 정의를 유의하면서 게임에서 전투를 통한 체력 표시를 구현해봅시다! 구현하기에 앞서 오늘 패턴의 또다른 중요한 원칙 '느슨한 결합'에 대해서 먼저 정리해봅시다. 옵저버 패턴에서는 주제(Subject)와 옵저버(Observer)가 느슨하게 결합되어있는 객체 디자인 원칙을 제공합니다. 특징 1. 주제가 옵저버에 대해서 아는것은 옵저버가 특정 인터페이스를 구현한다는 것뿐입니다. 2. 옵저버는 언제든지 새로 추가할수있습니다. 3. 새로운 형식의 옵저버를 추가하려고 할때도 주제를 전혀 변경할 필요가 없습니다. ..

[디자인패턴] 5. 유니티에서 추상팩토리

지난시간에는 팩토리메소드 패턴을 유니티에서 표현해봤습니다. 다음은 추상팩토리를 정리해보고자 합니다. 추상 팩토리의 특징은 인터페이스를 이용하여 서로 관련있는, 의존하는 객체를 구상클래스를 지정하지않고 생성하는 방식입니다. 팩토리메소드 패턴과 두드러진 차이점은 바로 구상클래스의 유무입니다. 그외의 특징이 있다면 게임을 예로들어서 '무기', '헬멧', '옷' 등 몬스터의 장비를 세팅하는 등의 규격이 정해진 어떠한 객체를 꾸며줘서 객체의 정의를 결정하는 시스템에 어울립니다. 2021.07.21 - [디자인패턴 정리] - [디자인패턴]4. 유니티에서 팩토리 메소드 패턴 [디자인패턴]4. 유니티에서 팩토리 메소드 패턴 유니티에서 객체를 생성하는 일이 많습니다. 몬스터, 장애물, 유저캐릭터 등등... 오늘 정리할 ..

반응형