Game Develop(46)
-
Type Object Pattern(타입 객체 패턴)
타입 객체 패턴은 클래스 하나를 인스턴스별로 다른 개체형으로 표현할 수 있게 만들어 새로운 클래스들을 유연하게 만들 수 있게 하는 디자인 패턴이다. RPG 게임을 개발한다고 해보자. 우리는 몬스터를 구현하기 위해서 체력, 공격, 그래픽 리소스, 사운드 등 다양한 속성을 정의해야한다. 모든 몬스터는 위의 속성들을 무조건 가지고 있다. 기획자는 용이나 트롤 등과 같은 다양한 몬스터 종족을 만들고 싶어한다. 각 종족은 몬스터의 특징을 나타내고 또 필드에는 같은 종족 몬스터가 여러 마리 동시에 돌아다닐 수 있다. 종족은 몬스터의 최대 체력을 결정한다. 따라서 용은 트롤보다 최대 체력이 더 높기 때문에 죽이기가 훨씬 힘들다. 또한 종족이 같은 몬스터들은 공격하는 방식도 모두 같아야한다. 자 이제 전형적인 객체 ..
2024.07.01 -
Subclass Sandbox Pattern(하위 클래스 샌드박스 패턴)
하위 클래스 샌드박스 패턴은 상위 클래스가 제공하는 기능들을 통해서 하위 클래스에서 행동을 정희하는 것이다. 슈퍼히어로 게임을 만든다고 과정해보자. 유저의 다양한 경험을 위해 우리는 수십 개가 넘는 초능력을 구현해야한다 먼저 Superpower라는 상위 클래스를 만든 후 초능력별로 이를 상속받는 클래스를 정의해보자. 이렇게 하면 수십 개가 넘는 초능력 클래스가 만들어질 것이다. 또한 더욱더 풍부한 경험을 위해 Superpower를 상속받은 초능력 클래스에서 사운드, 시각 이펙트, AI와의 상호작용, 다른 게임 개체의 생성과 파괴, 물리 작용 같은 모든 일을 할 수 있어야 한다. 만약 이런 식으로 초능력 클래스를 구현하면 어떻게 될까?중복 코드가 많아진다. 초능력은 다양하겠지만 여러 부분이 겹칠 가능성이 ..
2024.06.27 -
Update Method Pattern(업데이트 메서드 패턴)
업데이트 메서드 패턴은 컬렉션에 들어 있는 객체별로 한 프레임 단위의 작업을 진행하라고 알려줘서 전체를 시뮬레이션하는 방법이다. 용사가 보물을 찾기 위해 마왕성에 들어간다. 하지만 커다란 성문 앞에는 저주받은 가고일 석상과 흉측한 언데드 전사가 그 문 앞을 지키고 있다. 그냥 만들어 놓기만 하면 밋밋하니 언데드 병사부터 문 주위를 순찰하게 만들어 보자. 게임 프로그래밍을 전혀 모른다면 해골 병사가 왔다갔다하는 코드를 이렇게 작성할 것이다.while(){ // 오른쪽으로 간다. for(double x = 0; x 0; x--) { skeleton.setX(x); }} 물론 이 코드는 무한루프가 있어 해골 병사가 순찰도는 걸 플레이어는 볼 수 없다는 문제가 있다(게임이 멈춘다는 뜻이다).우리가 ..
2024.06.25 -
Bytecode Pattern(바이트코드 패턴)
바이트코드 패턴은 가상 머신 명령어를 요즘 코딩한 데이터로 행동을 표현할 수 있는 유연함을 제공한다. 요즘 게임을 만들려면 엄청난 양의 복잡한 소스 코드를 구현해야 한다. 크래시가 나지 않게 구현도 해야하고 동시에 플랫폼의 성능도 최대한 끄집어내야 한다. 게임은 다른 모든 소프트웨어보다 성능이 중요하다. 또한 게임 시장 경쟁력에서 뒤쳐지지 않게 최적화도 지속해야한다. 성능과 안정성을 위해 C++ 같은 중량언어를 사용한다. 이런 언어는 성능을 최대한 끌어낼 수 있는 저수준 표현과 버그를 막거나 적어도 가둬두기 위한 풍부한 타입 시스템을 함께 제공한다. 게임에는 골치 아프면서도 가장 중요한 제약이 하나 더 있는데 그것은 바로 재미다. 유저들은 신선하면서도 배런스가 잘 맞는 게임을 원한다. 이런 게임 개발을 ..
2024.06.24 -
Game Loop Pattern(게임 루프 패턴)
게임 루프 패턴은 거의 모든 게임에서 사용하며, 어느 것도 서로 똑같지 않고. 게임이 아닌 분야에서는 그다지 쓰이지 않는 다는 점에서 전형적인 '게임 프로그래밍 패턴'이다. 게임 루프 패턴은 게임 시간 진행을 유저 입력, 프로세서 속도와 디커플링 하기 위해서 만들어 졌다. 예전 프로그램은 배치 모드 프로그램으로 코드를 작성하고 버튼을 누르면 한참 기다려야 결과를 볼 수 있었고, 작업이 끝나고 나면 프로그램은 멈췄다. vs의 콘솔창도 배치 모드 프로그램의 일종이다.아무튼 이런 비효율적인 프로그램 대신에 즉각적인 피드백을 원했던 개발자들이 대화형 프로그램을 만들었다. 초기 대화형 프로그램 중에는 게임도 있었다. 작자가 예전에 만들었던 텍스트 RPG도 여기 해당된다.프로그램은 입력을 기다렸다가 응답한다. 입력..
2024.06.17