Transcript
Page 1: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

기술내용

최종문서수정일

문서작성자

MEMO

오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

서버 프레임워크 CGSF에 대한 소개

박주항

KGC 강연 최종 문서

2012-10-18

Page 2: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Casual Game Server Framework(CGSF)

1. CGSF

게임 서버 제작시 공통적으로 나타나는 부분을 모듈화한 서버 프레임워크

MMO / MO 서버를 제외한 게임 서버의 유사성

2. 착 안

초기 비용 절감 / 공통 플랫폼 제공

매번 서버 새로 만들어야 돼??

Page 3: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Casual Game Server Framework(CGSF)

3. 특 징

오픈 소스의 활용

License Free

완전한 게임 서버의 구현

모듈 교체 용이

게임 서버 개발 비용 절감

Page 4: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Casual Game Server Framework(CGSF)

4. 지향점 : 지엽적인 부분 최대한 배제

- 문자열 처리

- 네트워크 엔진

- 압축 라이브러리 누가 이미 만들어 놓은 거.. 새로 만들 필요는 없겠지…

Page 5: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

CGSF - Table of Contents

5

1. CGSF Internal Structure

2. Network Layer

3. Logic Queue

4. Logic Layer

5. Database Layer

6. P2P Layer

7. Sample FPS Server / Client

8. Conclusion

Page 6: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

6

Work Thread

ACE Proactor

Work Thread

Work Thread

1……N

Logic Queue (IOCP)

Logic Thread

1. Single Thread 2. 멀티 쓰레드로 변경 가능

Database Proxy

Database Impl Local Database Impl Remote

DataBase Server (DB Thread)

Half Sync Half Async Pattern

DataBase

Page 7: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

7

Network Layer

Network Layer Logic Layer Database Layer P2P Layer

Page 8: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Packet Packet

Analyzer ACE

Proactor

Network Layer 데이터 흐름

8

데이터 유효성 체크 압축

대기중이던 일꾼 스레드

작업 시작

Logic Queue

네트워크 ACE Framework 패킷 분석 완성된 패킷

해당 유저 소켓 관련 이벤트 발생

Kernel ACE Thread Worker Thread = (Core * 2) ??

의미있는 내용 완성

TCP Data

Page 9: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer ACE Application

9

▣ Acceptor & Service Handler

Page 10: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer ACE Application

10

▣ Acceptor & Service Handler Expansion

Page 11: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer ACE Application

11

▣ Worker Thread Creation

ACE_Thread_Manager::instance()->spawn_n(ThreadCount, ProactorWorkThread, …);

1. ThreadCount : 생성할 쓰레드 수

2. ProcatorWorkThread : Thread Entry

Page 12: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer ACE Application

12

▣ Worker Thread Event Detection

void ProactorWorkThread(void* Args)

{

ACE_Proactor::instance()->proactor_run_event_loop();

}

::GetQueuedCompletionStatus(m_hIOCP, …, &pCompletionKey, …, …);

Page 13: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer ACE Application

13

▣ proactor_run_event_loop()

NetworkEngine.dll!SFProactorService::handle_read_stream()

ACEd.dll!ACE_WIN32_Asynch_Read_Stream_Result::complete()

ACEd.dll!ACE_WIN32_Proactor::application_specific_code()

ACEd.dll!ACE_WIN32_Proactor::handle_events(unsigned long milli_seconds=4294967295)

ACEd.dll!ACE_WIN32_Proactor::handle_events()

ACEd.dll!ACE_Proactor::handle_events()

ACEd.dll!ACE_Proactor::proactor_run_event_loop(int (ACE_Proactor *)* eh=0x00000000)

NetworkEngine.dll!ProactorWorkThread(void * Args=0x00000000)

ACEd.dll!ACE_Thread_Adapter::invoke_i()

ACEd.dll!ACE_Thread_Adapter::invoke()

ACEd.dll!ace_thread_adapter(void * args=0x0118b558)

유저를 나타내는 오브젝트인 SFProactorService의

메소드가 호출되네

Page 14: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Packet Analyzer

14

이젠 유저가 보낸 데이터를 분석할 필요가 있겠지?

Page 15: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer ACE Application

15

▣ User Session(Socket) & Received Data Process

Page 16: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Packet Analyzer

16

▣ Packet Analyzer

Header Data

- 유저가 전송한 데이터를 버퍼링

- 게임 패킷을 완성

▣ 패킷의 구조

Page 17: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Packet Analyzer

17

▣ Packet Header

구 성 요 소 내 용

Packet Length 패킷의 전체 길이

Encryption 데이터 암호화 여부

Compress 패킷 압축

Checksum(CRC) 패킷 유효성 검증

Directive 패킷 번호

Page 18: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Packet Analyzer

18

▣ 버퍼 상태

Header

Header

Header Data

Header Data

TCP 데이터가 뭉쳐오기 때문에 필요한 만큼의 데이터가 도착할 때 까지 기다릴

필요가 있어

Page 19: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Packet Analyzer

19

▣ 클라이언트 패킷 전송

압축 암호화 CRC 생성 Raw Packet Packet

▣ 서버 패킷 수신

Packet 복호화 압축 해제 CRC 비교 Raw

Packet

Page 20: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer 단위 전략 패턴

20

음… 그런데 lzf 압축 라이브러리가 마음에 들지 않아. Zlib로 교체하고

싶은데 쉬운 방법이 없을까??

Page 21: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer 단위 전략 패턴

21

▣ 템플릿을 사용한 단위 전략 패턴

2. 컴파일 타임 코드 바인딩

1. 상황에 따른 정책 변경 용이

Page 22: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer 단위 전략 패턴

22

▣ Example – Lzf, Zlib

1. class SFCompressLzf

2. BOOL Compress(BYTE* pDest, int& DestLen, BYTE* pSrc, int SrcLen);

3. BOOL Uncompress(BYTE* pDest, int& DestLen, BYTE* pSrc, int

SrcLen);

1. class SFCompressZLib

2. BOOL Compress(BYTE* pDest, int& DestLen, BYTE* pSrc, int SrcLen);

3. BOOL Uncompress(BYTE* pDest, int& DestLen, BYTE* pSrc, int SrcLen);

Page 23: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer 단위 전략 패턴

23

▣ Example – Packet Analyzer

1. template <typename T>

2. class SFPacketAnalyzer

3. {

4. ….

5. static T& GetCompressor(){return m_Compress;}

6. static T m_Compress;

7. ….

8. };

Page 24: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer 단위 전략 패턴

24

▣ Example - SFProactorService

SFPacketAnalyzer<SFCompressLzf>::GetCompressor().Compress(……);

http://www.zlib.net http://oldhome.schmorp.de/marc/liblzf.html

Page 25: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Queue

25

네트워크 레이어의 종착역

Logic Queue

Page 26: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Logic Queue

26

▣ Logic Queue

1. 네트워크 이벤트나 타이머 이벤트 등을 수신하기 위한 Queue - 로직 쓰레드에서 사용

2. IOCP 활용

Page 27: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Logic Queue

27

▣ Logic Queue

template <typename T>

class SFIOCPQueue : public SFTSSyncQueue<T>

{

BOOL Push(T* pMsg)

{

::PostQueuedCompletionStatus(m_hIOCP, 0, (ULONG_PTR)pMsg, NULL);

return TRUE;

}

T* Pop()

{

……

SFASSERT( FALSE != ::GetQueuedCompletionStatus(m_hIOCP,

&NumberOfBytesTransferred, &pCompletionKey, &pOverlapped, INFINITE));

return (T*)(pCompletionKey);

}

Page 28: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Network Layer Logic Queue

28

▣ Logic Queue의 사용

1. Worker Thread

LogicGatewaySingleton::instance()->PushPacket(pPacket);

2. Logic Thread

pCommand = LogicGatewaySingleton::instance()->PopPacket();

LogicEntrySingleton::instance()->ProcessPacket(pCommand);

이걸로 무사히 네트워크 레이어로 부터 로직 레이어로 패킷을 넘기게

되었어 휴…

Page 29: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

29

Logic Layer

Network Layer Logic Layer Database Layer P2P Layer

Page 30: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer CGSF

30

▣ Logic Layer

1. 캐쥬얼 온라인 게임에서 공통적으로 나타나는 부분을 모듈화

2. 공통부분 - 채널선택 - 로비 - 게임방 진입 - 게임 로딩, - 게임 플레이 - 결과 화면

Page 31: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer Logic Thread

31

▣ Single Thread

1. 깔끔한 코드 - Lock(); SharedVar++; Unlock();

2. 컨텐츠 프로그래머

3. 원활한 게임 서비스

4. 고속 코드 수행(Node.js)

Page 32: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer Logic Thread

32

▣ 주의사항

1. Blocking Code ex) Sleep()

2. 오브젝트 풀, 메모리 풀

Page 33: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer Logic Thread

33

▣ Logic Thread Entry

Page 34: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer CGSF

34

▣ Game Lobby

Page 35: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer CGSF

35

▣ GameRoom

Page 36: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer CGSF

36

▣ GameLoading

Page 37: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer CGSF

37

▣ GamePlay

Page 38: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer CGSF

38

▣ GameResult

Page 39: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer

39

룸 오브젝트와 플레이어 오브젝트를 State Design Pattern으로 구현하면 되겠어!!

Page 40: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer GameRoom

40

▣ Game Room State Design

Page 41: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer GameRoom

41

▣ Player State Design

Page 42: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer GameRoom

42

▣ Packet Flow(유저가 로비에서 대기방으로 진입)

Page 43: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer GameRoom

43

▣ SFRoomPlay

빨강색 상자 : 최종 어플리케이션이 구현해야 될 부분

Page 44: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer GameRoom

44

▣ GameMode Example

FPSServer 프로젝트의 SFFreeForAll 클래스 참조

Page 45: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer

45

이젠 유저로 부터 받은 데이터를 게임에서 쓰는 형태로 변환해야 겠지…

Page 46: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer Google protocol buffer

46

▣ Google Protocol Buffer

1. http://code.google.com/p/protobuf/

2. 패킷 뭉쳐오기 처리(http://javawork.egloos.com/2726467)

▣ MessagePack

http://msgpack.org/

Page 47: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Logic Layer Google protocol buffer

47

▣ Example – 채팅 메시지

message Chat

{

required string ChatMessage = 1;

}

Chat PktChat;

PktChat.chatmessage();

Page 48: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

48

Database Layer

Network Layer Logic Layer Database Layer P2P Layer

Page 49: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Database

49

▣ 대표적인 데이터베이스

1. MS-SQL

2. MySQL

게임서버에는 두 데이터베이스 접근을 위한 모듈이 준비되어 있으나

MS-SQL은 상용이므로 예제로 MySQL을 사용합니다

회사에서는 mysql 잘 안써요…

Page 50: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer MySQL

50

▣ MySQL : http://www.mysql.com/

Page 51: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

51

▣ 구현사항

1. 데이터베이스 쿼리 호출은 블럭킹 방식 - 비동기 쿼리 호출 방식 필요

2. 로직쓰레드, DB 쓰레드간 쿼리 전달 구현 필요

Page 52: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

52

▣ 비동기 처리 방식

1. DB 서버를 이용한 방식

2. IOCP를 이용한 방식

3. 쓰레드 세이프 큐를 이용한 방식

Game

Server

Database

Server Database

쿼리를 담은 패킷 전송

데이터베이스 쿼리

Page 53: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

53

▣ Half-Sync/Half-Async 모델 http://javawork.egloos.com/1818696

Page 54: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

54

▣ 데이터베이스 처리

Logic Thread

Manager Thread

DBWorker Thread

Page 55: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

55

▣ Logic Thread 에서의 데이터베이스 쿼리 요청

1. SFMessage* pMessage = LogicEntrySingleton::instance()->GetDBMessage();

2. ….

3. LogicEntrySingleton::instance()->GetDataBaseProxy()->SendDBRequest(pMessage);

※ Send

Page 56: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

56

▣ Command Pattern

커맨드 생성 및 전송 커맨드 큐잉, 디스패치 커맨드 수행

Page 57: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

57

▣ DB Query Command 수행 – SFDBWorker(Thread)

1. while(TRUE)

2. {

3. ACE_Method_Request* pReq = this->m_Queue.dequeue();

4. ….

5. int Result = pReq->call();

6. ….

7. }

DB 일꾼 쓰레드는 정말 간단하군요!!

Page 58: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementation

58

▣ Request의 call method

1.extern ACE_TSS<SFDatabaseMySQL> Database;

2.

3.int SFDBRequest::call(void)

4.{

5. …..

6. Database->Call(m_pMessage);

7. …..

8. return 0;

9.}

Page 59: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer TLS

59

▣ Thread Local Storage(TLS)

Page 60: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Database Layer Implementaion

60

데이터베이스 호출 관련 예제로 유저 로그인 관련

샘플을 구현해 두었습니다~

Page 61: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

61

P2P Layer

Network Layer Logic Layer Database Layer P2P Layer

Page 62: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

62

▣ P2P Layer

1. 기존 P2P 모듈 활용을 목표

Page 63: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

63

▣ P2P Module

1. OCF P2P - 서버 엔진 OCF의 기능 중 하나 - http://www.ocf.kr/

2. Raknet

3. Enet - League of Legends에서도 사용?? - http://enet.bespin.org

Page 64: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

64

▣ 피어간 연결망 - 1

Peer22

Peer11

Peer33

Super Peer

Relay Server

Peer2

Peer1

Peer3

Super Peer

Relay Server

Page 65: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

▣ 피어간 연결망 - 1

Peer2

Peer1

Peer3

Relay Server

Peer1

Peer3

Relay Server

Peer2

Peer4 Peer4

65

Page 66: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

66

▣ 피어간 연결망 - 2

Peer2

Peer1

Peer3

Peer4

Relay Server

Peer2

Peer1

Peer3

Peer4

Relay Server

Page 67: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

67

▣ P2P Manager Interface

Page 68: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

68

▣ P2P Method(IUDPNetworkCallback)

1. HandleUDPNetworkMessage

2. ReportMyIP

Page 69: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P

69

▣ Lock Free Library : liblfds(http://www.liblfds.org)

BOOL P2PManager::PushPacket(BYTE* pData, int Length)

queue_guaranteed_enqueue(m_pQueue, pP2PData);

BOOL P2PManager::Update()

while (queue_dequeue(m_pQueue, (void**)&pP2PData))

{

m_pUDPCallback->HandleUDPNetworkMessage(…);

Page 70: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P Mechanism

70

Relay Svr

Client 1

Game Svr

▣ Report My IP

1. Request My Public IP

2. Receive My Public IP

3. Report My IP

1 2 3

Page 71: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

P2P Layer P2P Mechanism

71

Client 1 Client 2

Game Room

Client 3

▣ Sharing IP & Connect

1. Enter Room

2. Receive Room Member IP List

3. Receive New Member IP

4. Connect Each Other

1 2 3

4

방에 입장하자 마자 피어간 연결을 하니

게임 시작이 빠르겠군요.

Page 72: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

CGSF

72

Sample FPS Server / Client

Page 73: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Sample FPS Server / Client Sample FPS Client

73

▣ Programming a Multiplayer FPS in DirectX

1. 2004년에 출간

2. 네트워크를 DirectPlay로 구현

3. GUI Library

Page 74: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Sample FPS Server / Client Sample FPS Client

74

▣ CEGUI(Crazy Eddi’s GUI)

http://www.cegui.org.uk/wiki/index.php/Main_Page

Page 75: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

Sample FPS Server / Client Sample FPS Server

75

▣ FPS Server

1. 소스 코드 참조

Page 76: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

CGSF

76

결론 및 정리

Page 77: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

결론 및 정리 정리

77

CGSF의 목적

Page 78: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

결론 및 정리 CGSF의 보강

78

▣ CGSF의 보강

1. TDD 기반 개발

2. 스트레스 테스트

3. 로직 쓰레드의 멀티쓰레드화

4. 서버간 연결 구조

5. 게임 옵션 세분화

6. 서비스 툴 제작

CGSF CGSS

Page 79: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

결론 및 정리 CGSF

79

▣ CGSF 관련 사항

1. Source Code : http://dev.naver.com/projects/cgsf

2. 개발 툴 : Visual Studio 2012 RC Professional 버전

3. DirectX SDK

4. Tortoise SVN 차후 소스 업데이트는

Git-Hub에서

Page 80: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

CGSF

80

Q & A

Page 81: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

결론 및 정리 CGSF

81

▣ 제 소개

1. 약 력 서강대 물리학/컴퓨터학 복수전공 한국산업기술대학 디지털엔터테인먼트 석사 서강대학교 게임교육원 시스템 프로그래밍 시간 강사 JCE Server Programmer(2006 ~ 현재)

2. E-Mail : [email protected]

3. 블로그 : http://blog.naver.com/pdpdds

4. 목표 : C++ OS 제작

5. 좋아하는 게임 장르 : 어드벤처

Page 82: 오픈 소스를 활용한 캐쥬얼 게임 서버 프레임워크 개발

Casual Game Server Framework

CGSF

82

감사합니다 !!!!


Recommended