kyuseo의 게임 프로그래밍

CCR, X2Game 게임 아바타 엔진 본문

만든 게임 및 프로그램

CCR, X2Game 게임 아바타 엔진

kyuseo 2008. 1. 1. 15:41

개요..

 

CCR과 오랫동안의 인연으로 인하여 게임 내에서 사용할 수 있는 아바타 엔진을 외주로 만들었습니다. 가격은 싸게 ㅠㅠ, 버그는 없게, AS까지 확실하게 개발을 하였습니다.

 

최초 작업시간은 짧았으나 이후 AS 기간 까지 합친다면 조금 시간이 걸린 프로젝트 이네요. 프로젝트가 엔진이고 외주작업이다 보니까 문서 작성, DLL을 이용한 켑슐화, 무엇보다 인터넷에 떠도는 AniGif 코덱들은 거의 다 버그가 있어서AniGif 코덱 분석이 오래걸렸습니다.

 

이때 습득한 AniGif 코덱 및 아바타 관련 캐시 시스템 등의 노하우로 이후 프리챌 게임, www.TK.co.kr 등에서 큰 활용을 할 수 있었습니다.

 

 

관련 이미지 ..

 

 

 

관련문서 ..

 

개요 :

웹상에서 GIF 형태의 단일 이미지로 존재하는 X2게임의 아바타를 클라이언트의 하드디스크에 다운로드 받아 프로그램에서 사용하기 쉽도록 제작한다.

 

폴더 설명 :

AvatarDll : 아바타 모듈

AvatarTest : 아바타 테스트

Bin : 배포용 디렉토리

CxImage : GIF 코덱 분석에 사용한 이미지 라이블러리 (공개용 라이블러리임)

 

중요 소스 코드 설명 :

!

파일 : AvatarBase.h

 

// 아바타 URL

#define AVATAR_URL    "http://demo.x2game.com:1004/avatar/_Dokdo/%c/%s.gif"

 

// 아바타 임시 저장 디렉토리

#define AVATAR_DIR    "Avatar"

 

// 아바타 로딩 이미지

#define AVATAR_LOADING    "AvatarL.gif"

 

// 아바타 기본 이미지 (다운로드 실패시 로드한다.)

#define AVATAR_DEFAULT    "AvatarM.gif"

 

/// 아바타 시스템을 시작한다.

extern AVATAR_API BOOL CreateAvatarSystem();

 

/// 아바타 시스템을 종료한다.

extern AVATAR_API void DestroyAvatarSystem();

 

/// 아바타를 클래스를 생성한다.

extern AVATAR_API CAvatarBase* CreateAvatar();

 

/// 아바타를 클래스를 제거한다.

extern AVATAR_API void DestroyAvatar( CAvatarBase* pAvatar );

 

사용법 및 예제 설명 :

(AvatarTest 프로젝트를 참고하세요)

 

1. 선언

// 아바타 헤더를 선언한다.

#include "..\Bin\AvatarBase.h"

 

// 아바타를 선언한다. (주의 : 꼭 포인터로 생성한다.)

CAvatarBase* m_pAvatar;

 

2. 초기화

// 아바타 시스템 초기화

CreateAvatarSystem();

 

// 아바타 생성

m_pAvatar = CreateAvatar();    ASSERT( m_pAvatar );

 

3. 아바타 로드

// 아이디로 아바타를 로드한다.

m_pAvatar->LoadFromID( szID[ nSelect ] );

 

4. 업데이트 루틴 설정 설정

(본 프로젝트에서는 타이머를 이용하였다)

아래와 같이 아바타의 이미지 변경 및 갱신에 사용 할 타이머를 생성한다.

 

// 아바타 타이머 생성

SetTimer( 10001, 10, NULL );

 

OnTimer 함수 에서 아바타를 갱신한다.

만일 Move 함수가 TRUE 리턴시 이미지가 변경되었으므로 화면을 갱신한다.

// 아바타 이동 (갱신)

if( m_pAvatar->Move() == TRUE )

    Invalidate( FALSE );

    

 

5. 출력

주의 : 출력시 투명하게 출력된다.

// 아바타 출력

m_pAvatar->Draw( MemDC.GetSafeHdc(), 0, 0 );    

 

6. 라이블러리 추가

..\Bin\AvatarDll.lib

위 라이블러리를 추가한다.

 

7. 제거

// 아바타 제거

DestroyAvatar( m_pAvatar );

 

// 아바타 시스템 제거

DestroyAvatarSystem();