현재 인터넷에서 서비스되고 있는 네트워크 게임을 개발하는 경우, 개발 인원과 시간이 많이 투입되는 프로젝트이기 때문에, 게임 제작 시 기존에 작성되어 있는 코드를 재사용이 가능하도록 설계하는 것은 중요한 일이다. 게임에 사용되는 데이터베이스는 많은 클라이언트들이 접근하는데, 자원의 효율적인 관리를 위해서, 데이터베이스의 접근횟수를 최소화하고 데이터를 효율적으로 처리할 수 있는 API(application program interface) 설계가 필수적이다. 이러한 문제를 해결하기 위해 관련 소프트웨어 모듈의 객체지향적인 설계가 필요하다. 본 논문에서는 데이터베이스 자원을 다루는데 필요한 효율적인 API 구현을 위해 GoF(gang of four)의 디자인 패턴을 제안한다. 몇 개의 게임 GUI(graphical user interface) 분석을 통해 설계된 데이터베이스는 일반적인 데이터베이스 설계 단계에서 설계의 검토 및 수정을 최소화하여 최적화된 스키마 집합을 빠른 시간에 생성할 수 있다는 장점이 있고, 이것을 기초로 데이터베이스 서버 측 API 설계에 GoF의 디자인 패턴을 적용함으로써 게임 서버와 데이터베이스의 호출 횟수가 실질적으로 감소하고, 개발된 API를 손쉽게 유지보수 할 수 있으며, 새로운 API의 추가가 쉽다는 장점이 있었다.
현재 인터넷에서 서비스되고 있는 네트워크 게임을 개발하는 경우, 개발 인원과 시간이 많이 투입되는 프로젝트이기 때문에, 게임 제작 시 기존에 작성되어 있는 코드를 재사용이 가능하도록 설계하는 것은 중요한 일이다. 게임에 사용되는 데이터베이스는 많은 클라이언트들이 접근하는데, 자원의 효율적인 관리를 위해서, 데이터베이스의 접근횟수를 최소화하고 데이터를 효율적으로 처리할 수 있는 API(application program interface) 설계가 필수적이다. 이러한 문제를 해결하기 위해 관련 소프트웨어 모듈의 객체지향적인 설계가 필요하다. 본 논문에서는 데이터베이스 자원을 다루는데 필요한 효율적인 API 구현을 위해 GoF(gang of four)의 디자인 패턴을 제안한다. 몇 개의 게임 GUI(graphical user interface) 분석을 통해 설계된 데이터베이스는 일반적인 데이터베이스 설계 단계에서 설계의 검토 및 수정을 최소화하여 최적화된 스키마 집합을 빠른 시간에 생성할 수 있다는 장점이 있고, 이것을 기초로 데이터베이스 서버 측 API 설계에 GoF의 디자인 패턴을 적용함으로써 게임 서버와 데이터베이스의 호출 횟수가 실질적으로 감소하고, 개발된 API를 손쉽게 유지보수 할 수 있으며, 새로운 API의 추가가 쉽다는 장점이 있었다.
Developing a network game that is serviced on the internet requires a lot of work, time and manpower. Therefore, it is important to design a game in such a way so that existing design codes could be used. The database for the multi-player network game is accessed from many clients. To manage the res...
Developing a network game that is serviced on the internet requires a lot of work, time and manpower. Therefore, it is important to design a game in such a way so that existing design codes could be used. The database for the multi-player network game is accessed from many clients. To manage the resource effectively, it is required to design the APIs to be minimized the database access and to be dealt with the related data efficiently. For this, it is needed to apply the object-oriented design for the related software modules. In the paper, we propose the design patterns of GoF to implement the APIs thatis needed to deal with the database resource. The database design through the analysis of some game's GUI has the advantage to create the optimized schema set more quickly, because it minimize the review step and the modification step of the database design generally. In addition, we apply to the design patterns of GoF for the APIs design of the server-side database. These reduce the times of the program call between the game server and the database server. These also make easily the maintenance for the already developed APIs, and it makes easily the addition of new APIs.
Developing a network game that is serviced on the internet requires a lot of work, time and manpower. Therefore, it is important to design a game in such a way so that existing design codes could be used. The database for the multi-player network game is accessed from many clients. To manage the resource effectively, it is required to design the APIs to be minimized the database access and to be dealt with the related data efficiently. For this, it is needed to apply the object-oriented design for the related software modules. In the paper, we propose the design patterns of GoF to implement the APIs thatis needed to deal with the database resource. The database design through the analysis of some game's GUI has the advantage to create the optimized schema set more quickly, because it minimize the review step and the modification step of the database design generally. In addition, we apply to the design patterns of GoF for the APIs design of the server-side database. These reduce the times of the program call between the game server and the database server. These also make easily the maintenance for the already developed APIs, and it makes easily the addition of new APIs.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
스키마 집합을 생성하는 것이다. 본 논문에서는 일반적인 시스템 설계 과정과 다르게 이미 네트워크게임으로 성공적으로 운영되고 있는 몇 개의 게임을 바탕으로 게임에서 사용하는 몇 가지 GUI를 이용하여 데이터베이스 설계를 분석하고, 일반적인 네트워크 게임에 적용할 수 있는 데이터베이스 설계 예를 보인다.
language) 설계 기술이 필요하다. 본 장에서는 게임 서버와 관련된 기술 중 서버의 구성 방식, 데이터베이스 관련 기술 그리고 디자인 패턴과 관련된 기술에 대해서 알아본다.
특히 데이터베이스 서버와 같이 별도의 계층으로 존재하는 애플리케이션의 인터페이스에 퍼사드(Facade)와 같은 디자인 패턴은 아주 유용하다. 본 절에서는 데이터베이스 설계의 예를 기초로 네트워크 게임 설계에서 일관된 인터페이스를 제공하기 위한 디자인 패턴의 적용을 검토해 보고, 이것을 사용한 효율적인 데이터베이스 서버를 구축하기 위한 방안을 제시한다.
제안 방법
DirectPlay를 사용하여 구현된 간단한 클라이언트와 서버의 통신을 테스트하기 위한 애플리케이션 구현에 커맨트 패턴이 적용되었다. 행위패턴 영역의 커맨드(Command) 패턴은 상속 기법을 이용하여 오퍼레이션 수행과 구현객체를 분리하는 방법을 제공하여, 분산작업이 가능하였다.
게임에 필요한 프로토콜은 DirectPlay를 이용하여 간단한 모듈로 설계되었다. 게임 클라이언트는 그림 8, 게임 서버는 그림 9와 같이 구현되었다.
보인다. 그리고 이것을 바탕으로 클라이언트와 게임서버가 주고받아야 하는 패킷들 중에서 데이터베이스로 저장되어야 하는 데이터를 관리하는데 사용될 수 있는 효율적인 API의 설계에 GoF 디자인 패턴을 적용하였다.
우수한 mysql을 사용하였다. 네트워크 게임에서 통신을 위해 사용되는 DirextPlay를 이용해 간단하게 정보를 주고받을 수 있는 클라이언트와 서버는 C++로 구현하였다.
다수의 사용자가 데이터베이스에 동시에 접속하는데 있어서 부하를 감소시키기 위해 커넥션 풀 API 의 구현이 검토되었다. 커넥션 풀 API의 구현은 메모리를 절약시켜주고 액세스 시간을 감소시켜 준다는 효과가 있었고, 커넥션 풀 API의 구현에 싱글톤이 효율적으로 적용되었다.
다이어그램에서 애플리케이션 구현에 명령과 요청을 캡슐화하기 위해서 Command 추상클래스를 상속받는 LoginCommand, LoadCharacterCommand, SaveCharacterCommand, UserGetCommand, UserSetCommand 클래스를 추가하였다. 각각의 클래스는 부모 클래스인 Command로부터 상속받은 가상 excuteO 메소드를 구현하고 있다.
메소드 parseCommandO에서 로긴, 캐릭터 조회, 채팅, 데이터베이스 접속, 자료 조회와 같은 작업을 위해 get과 set으로 정의된 메소드(getLoginO, getCharacterO, getUserO, setUserO 등등)를 클라이언트와 서버가 보내오는 KXinput output) 스트림을 가공하는데 사용한다. 그러나 이러한 방법은 사용자(User)와 같은 다른 객체가 추가되어 통신을 해야 하는 경우에 parseCommandO 메소드를 수정해야 하고, 새로운 클래스와 그것을 다루는 새로운 메소드를 추가되어야 한다는 단점이 생긴다.
본 논문에서 DirectX API를 기반으로 일반인들에게 크게 인기를 얻고 있는 네트워크 온라인 게임의 GUI를 바탕으로 서버 측 구현에 필요한 데이터베이스 설계의 한 예를 보였고, 이것과 관련된 API의 구현에 GoF가 제안한 디자인 패턴이 사용되었다.
생성된 스키마를 사용하기 위한 RDBMS (rela tional database management system)로 여 러 가지가 있을 수 있지만, 손쉽게 구할 수 있고 가격대 성능비가 우수한 mysql을 사용하였다. 네트워크 게임에서 통신을 위해 사용되는 DirextPlay를 이용해 간단하게 정보를 주고받을 수 있는 클라이언트와 서버는 C++로 구현하였다.
서버 측과 클라이언트 측 애플리케이션 구현에 커맨드 패턴이 적용되었고, 퍼사드 패턴은 서버 측에서 데이터베이스와 관련된 작업을 하기 위해 적용되었다. 새로 추가된 User 클래스와 이것의 정보를 가져오고 추가하는 UserGetCommand, UserSetCommand 는 Command 패턴이 적용되기 전에는 다음과 같은 코딩을 가진다.
성능/효과
게임의 GUI 분석을 바탕으로 한 데이터베이스 설계는 개발 단계에서 반복되어지는 관계형 데이터베이스의 설계를 최소화 시켜준다는 장점이 있었고, 데이터베이스 설계 툴인 ER-Win을 사용하여 만들어진 다이어그램은 게임에 필요한 테이블 스키마를 쉽게 생성할 수 있었다.
게임의 GUI 분석을 통한 데이터베이스 설계는 설계의 검토 및 수정 작업을 최소화하여 최적화된 스키마 집합을 빠른 시간에 생성할 수 있다는 장점이 있었고, 데이터베이스 서버 측 API 설계에 적용된 GoF의 싱글톤(Singleton), 퍼사드(Facade), 커맨드(Command) 패턴은 개발된 API를 손쉽게 유지보수 할 수 있으며, 새로운 API의 추가가 쉽다는 장점이 있었다.
구현이 검토되었다. 커넥션 풀 API의 구현은 메모리를 절약시켜주고 액세스 시간을 감소시켜 준다는 효과가 있었고, 커넥션 풀 API의 구현에 싱글톤이 효율적으로 적용되었다.
각각의 클래스는 부모 클래스인 Command로부터 상속받은 가상 excuteO 메소드를 구현하고 있다. 클라이언트와 서버와의 통신에 커맨드 패턴을 적용함으로써, 서버의 자료를 요청하는 객체와 요청 정보에 따른 수행을 분리하여 별도의 객체로 구현할 수 있다는 장점이 있었다. 또한 메시지를 주고받는데 사용되는 새로운 명령의 추가가 쉽다는 장점이 있었다.
수 있다는 장점이 있었다. 퍼사드 객체를 만드는데 있어서 적용될 수 있는 싱글톤(Singleton)은 인스턴스가 유일함을 보장함으로써, 메모리를 효율적으로 사용할 수 있었다.
효율적인 소프트웨어의 설계를 위해 사용된 구조패턴의 영역에서 퍼사드(Facade) 패턴은 데이터베이스를 사용하는데 하나의 통합된 인터페이스를 제공하여 하위 시스템과의 종속성을 줄임으로써, 데이터베이스를 사용하는 서버 측 애플리케이션과 데이터베이스 시스템사이에 실질적인 호출횟수를 감소시킬 수 있다는 장점이 있었다. 퍼사드 객체를 만드는데 있어서 적용될 수 있는 싱글톤(Singleton)은 인스턴스가 유일함을 보장함으로써, 메모리를 효율적으로 사용할 수 있었다.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.