인터넷을 이용하는 다양한 게임 장르 중에서 대규모의 게임 유저들이 이용하는 게임 장르인 MMORPG(Massively Multi-player Online Role-Playing Game)를 개발하기위해서는 많은 기술들이 필요하다. 특히 분산 작업의 효율을 높이기 위해서 C++와 같은 객체지향언어가 사용되는데, 대규모의 게임을 만들 때 객체지향개념을 충분히 활용할 수 있는 설계기법이 유용하다. GoF(Gang of Four)의 디자인 패턴에는 소프트웨어 분산 설계에 응용할 수 있는 다양한 패턴이 있는데, 게임 유저들 사이에 커뮤니티를 형성하기 위한 파티 시스템 설계에 Observer 패턴을 이용하면, 필요한 새로운 클래스의 추가나 유지보수를 쉽게 할 수 있다. MMORPG 게임 내에서 파티 사냥 시스템은 게임 이용자들의 커뮤니티를 형성하기 위해 자주 이용되는 중요한 시스템이다. 파티 사냥 시스템에서 중요하게 고려해야 할 사항은 파티 사냥 결과로 얻어지는 획득물과 경험치를 다양한 레벨의 이용자들에게 공평하게 나누어 주는 것이다. 시스템의 유지보수적인 측면을 고려한 파티 사냥 시스템을 구현하기 위하여, 본 논문에서는 GoF의 디자인 패턴 중 Observer Pattern을 이용한 기법을 제안하고, 제안된 기법이 C++언어가 가지는 장점인 동적메모리 할당과 가상 메소드 호출을 이용하여 프로그램 실행 시에 실시간으로 객체를 변경하고 새로운 클래스를 추가하는데 효율적이며, 시스템을 유지 보수하는데 장점이 있음을 보인다.
인터넷을 이용하는 다양한 게임 장르 중에서 대규모의 게임 유저들이 이용하는 게임 장르인 MMORPG(Massively Multi-player Online Role-Playing Game)를 개발하기위해서는 많은 기술들이 필요하다. 특히 분산 작업의 효율을 높이기 위해서 C++와 같은 객체지향언어가 사용되는데, 대규모의 게임을 만들 때 객체지향개념을 충분히 활용할 수 있는 설계기법이 유용하다. GoF(Gang of Four)의 디자인 패턴에는 소프트웨어 분산 설계에 응용할 수 있는 다양한 패턴이 있는데, 게임 유저들 사이에 커뮤니티를 형성하기 위한 파티 시스템 설계에 Observer 패턴을 이용하면, 필요한 새로운 클래스의 추가나 유지보수를 쉽게 할 수 있다. MMORPG 게임 내에서 파티 사냥 시스템은 게임 이용자들의 커뮤니티를 형성하기 위해 자주 이용되는 중요한 시스템이다. 파티 사냥 시스템에서 중요하게 고려해야 할 사항은 파티 사냥 결과로 얻어지는 획득물과 경험치를 다양한 레벨의 이용자들에게 공평하게 나누어 주는 것이다. 시스템의 유지보수적인 측면을 고려한 파티 사냥 시스템을 구현하기 위하여, 본 논문에서는 GoF의 디자인 패턴 중 Observer Pattern을 이용한 기법을 제안하고, 제안된 기법이 C++언어가 가지는 장점인 동적메모리 할당과 가상 메소드 호출을 이용하여 프로그램 실행 시에 실시간으로 객체를 변경하고 새로운 클래스를 추가하는데 효율적이며, 시스템을 유지 보수하는데 장점이 있음을 보인다.
We need various methods to develop MMORPG that is game genre which many users use among various game genre using Internet. Specially, to heighten efficiency of distributing work, Object-oriented language such as C++ is used and we need design techniques that can take advantage of enough object-orien...
We need various methods to develop MMORPG that is game genre which many users use among various game genre using Internet. Specially, to heighten efficiency of distributing work, Object-oriented language such as C++ is used and we need design techniques that can take advantage of enough object-oriented concept when making large-scale game. There is various pattern that can apply in software breakup design in GoF's design pattern for these design techniques. If you apply Observer pattern to Party System Design for forming community between game users, you can easily add new class and maintain system later. Party Play is one of the important system that is used to form game users' community in MMORPG games. The main point that must be considered in Party-Play-System is to divide evenly experience value and acquisition that is got by Party-Play among users according to each user's level. To implement Party Play System that consider maintenance of system, in this paper, we propose a method using GoF's Observer-Pattern, showing you that proposed method which has advantage to dynamic memory allocation and to virtual method call can be used usefully to change object to real time at program run and to add new class and to maintain system new.
We need various methods to develop MMORPG that is game genre which many users use among various game genre using Internet. Specially, to heighten efficiency of distributing work, Object-oriented language such as C++ is used and we need design techniques that can take advantage of enough object-oriented concept when making large-scale game. There is various pattern that can apply in software breakup design in GoF's design pattern for these design techniques. If you apply Observer pattern to Party System Design for forming community between game users, you can easily add new class and maintain system later. Party Play is one of the important system that is used to form game users' community in MMORPG games. The main point that must be considered in Party-Play-System is to divide evenly experience value and acquisition that is got by Party-Play among users according to each user's level. To implement Party Play System that consider maintenance of system, in this paper, we propose a method using GoF's Observer-Pattern, showing you that proposed method which has advantage to dynamic memory allocation and to virtual method call can be used usefully to change object to real time at program run and to add new class and to maintain system new.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서 파티 시스템의 효율적인 설계를 위하여 GoF의 디자인 패턴 카탈로그에 있는 Observer 패턴을 이용하는 설계방법을 보였다. 일반적인 설계로 파티 시스템을 구현하면, 관련 클래스들의 수정이 자주 일어날 수 있는데, 특히 Character 클래스에 계속되는 코드의 추가로 인해 시스템 내에서 부담하는 역할이 커져서, 결과적으로는 컴퓨터 자원을 비효율적으로 사용하는 결과를 초래하고, 교착상태 발생과 같은 문제점을 일으킬 수 있다는 단점이 있다.
게임 유저들은 특정한 퀘스트를 수행하거나 몬스터를 사냥하기 위해서 파티 시스템을 사용할 수 있고, 그 결과에 따른 경험치와 전리품을 나누어 가진다. 본 논문에서는 파티 사냥 시스템의 효율적인 설계를 위해, GoF의 디자인 패턴 카탈로그 중에서 Observer 패턴의 적용에 대해서 연구하였고, 패턴을 사용한 설계와 구현이 유효한 것을 확인한다[2-4].
본 논문에서도 Observer 패턴의 장점을 활용하기 위해 Character클래스가 구현해야 하는 파티와 관련된 일을 Party 클래스와 Observer 클래스에 위임하는 방식을 검토하여 적용하기로 하였다. 논문에서 제안하는 방식을 적용하면, 클래스 설계가 그림 4와 같이 된다.
본 절에서는 GoF의 디자인 패턴을 연구한 다수의 국내외 문헌을 조사하여 분석하고, 파티 시스템에 경험치 배분에 사용되는 공식의 예를 바탕으로 경험치가 배분되는 방법과 게임에서 사용되고 있는 다양한 파티시스템에 대해서 고찰한다.
패턴을 이용할 수 있다[10-12]. 본 절에서는 파티플레이 시스템을 구현하기위한 문제 영역을 정의하여, 파티 시스템 설계와 구현에 있어서, 기존의 설계 방법과 이를 개선하기 위해 사용할 수 있는 Observer Pattern에 대해서 살펴본다.
제안 방법
검색 사이트를 이용하였다. 관련 문헌 조사를 위하여 검색어로 “design pattern", ''network game", “RPG”라는 단어를 사용하였고, 검색결과는 표 1과 같이 나왔다.
Thief 클래스의 추가에서 보듯이 게임 시스템 전체에서 기존의 캐릭터와 다른 속성을 가진 새로운 캐릭터가 추가되거나 새로운 파티시스템이 추가될 경우에 Observer Pattern을 이용한 파티 사냥 시스템설계는 새로운 캐릭터가 사냥의 결과로 얻어지는 경험치의 배분 조건을 Observer클래스로부터 유도된 새로운 클래스에 구현하면 되고, GuildParty 클래스에서 이것을 관찰할 수 있도록 attachO 메소드를 사용하여 Observer인 Party를 추가하였다. 이러한 설계 방법은 Character 클래스가 파티 시스템 처리와 같은 기능을 구현하기 위해 비대해지는 것을 방지할 수 있고, 파티 처리를 담당하는 전문가 클래스에게 처리를 위임하게 하여, 유지보수를 쉽게 할 수 있다는 장점이 있다.
다이어그램에서 CounterObserver 를 상속받은 FighterCounterObserver, ArcherCounterObserver, WizardCounterObserver가 Party 객체에서 알려주는 정보를 바탕으로 updateO 메소드를 이용하여 각각의 경험치를 갱신한다. Observer 패턴을 이용함으로써, 새로운 observer 객체가 GuildParty의 통보를 받기 위해서 쉽게 추가될 수 있다.
"[5] 에서는 시스템을 구현하기 위한 몇 가지 디자인 패턴을 제안하였다. 첫 번째로 제안된 패턴은 Learning Session 을 구현하기 위한 Composite 패턴, 코스웨 어를 사용하기 위한 학생과 선생을 구현하기 위한 State 패턴, 학생들의 이력과 시험 결과에 따라 계획과 관련된 Learning Session 설계에 Strategy 패턴, 그리고 학생들이 수업을 받는 과정에 상황에 자유롭게 바꾸기 위한 Iterator 패턴을 제안하였다.
대상 데이터
본 연구와 관련된 국내외 동향을 파악하기 위하여 IEEE의 저널과 논문을 탐색할 수 있는 lEEEXplore 라는 검색 사이트를 이용하였다. 관련 문헌 조사를 위하여 검색어로 “design pattern", ''network game", “RPG”라는 단어를 사용하였고, 검색결과는 표 1과 같이 나왔다.
성능/효과
논문에서 보여준 Observer 패턴을 이용한 파티시스템 설계에서 Party 클래스로부터 유도된 GuildParty 클래스는 파티에 참여하는 Character 클래스들로부터 파티 처리를 위임받은 Observer 객체들의 추가, 삭제가 쉽게 이루어질 수 있도록 해주었고, 몬스터 사냥에 따라 획득한 경험치를 각각의 캐릭터들에게 효율적으로 배분한 후, 경험치 변경에 따른 변화를 관찰할 수 있도록 해주었다. 또한 CounterObserver 클래스로부터 유도된 Fighter- CounterObserver, ThiefCounteObserver와 같은 클래스들은 파티에 참가하여 얻어지는 경험치를 GuildParty 클래스로부터 전달받아 자신의 정보를 갱신하고, 그 결과로 발생되는 변화를 GuildParty 클래스의 공지를 통해서 각각의 Character 객체에 전달할 수 있었다.
또한 CounterObserver 클래스로부터 유도된 Fighter- CounterObserver, ThiefCounteObserver와 같은 클래스들은 파티에 참가하여 얻어지는 경험치를 GuildParty 클래스로부터 전달받아 자신의 정보를 갱신하고, 그 결과로 발생되는 변화를 GuildParty 클래스의 공지를 통해서 각각의 Character 객체에 전달할 수 있었다.
본 논문에서 제안하는 설계방법을 게임 제작자들이 이용하면 게임 설계를 위한 기존의 설계 방법보다 더 좋은 설계나 아키텍처를 재사용하기 쉬워진다는 장점이 있고, 논문에서 보여준 설계와 코드를 참고로 새로운 게임 개발자들이 Observer 패턴을 더 유용하게 사용할 수 있고, 재사용이 가능한 설계를 선택하도록 도와줄 수 있다.
본 절에서는 Observer Pattern을 이용하여 파티플레이 시스템을 효율적으로 설계하기위한 방법과 제안된 방법이 새로운 API의 추가와 유지 보수가 있을 때, 효율적이라는 것을 보인다.
어떤 몬스터를 혼자서 사냥해서 얻을 수 있는 경험치가 3382라고 했을 때, 파티 시스템을 사용하여 사냥할 때 획득할 수 있는 경험치를 계산해 보면, n=2 일 때 경험치는 3, 382+((2/3)*3, 382)=5, 638이고, n=3 일 때 3, 382 + (2*(2/3) *3, 382) = 7, 891로 점점 증가하고 10명이 동시에 잡았을 경우를 생각해 보면, 23680 의 경험치가 각각 분배되어, 같은 시간에 혼자서 사냥하는 것보다 경험치를 많이 얻는다는 것을 알 수 있다. 게임 내에서 파티 플레이가 활성화되면 게임을 시작한 지 얼마 되지 않는 초보자들이 다른 유저들의 도움을 받아서 게임을 쉽게 익힐 수 있다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.