블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Idea/portpolio 2003. 9. 20. 11:32

[Infinity Engine Ver 5.2.0] 스노우팡EX 서버

[개발기간]
2003년 7월 중순 ~ 2003년 9월 15일

[플랫폼]
Based Windows NT계열


[설명]

장장 3개월에 걸친 대작(?) 이었다..으흐흐..

스탠드얼론형의 스노우팡의 차기 버젼으로

네트워크 대전게임이다.

클라이언트의 이미지를 올리려 했으나...

귀찮아서 놔두고 있다. (사실 클라이언트는 내가 안짰기 때문에 ^^;)



이번에 서버를 짜면서 가장 염두해둔부분은 확장성이다.

모듈의 확장성이 아니라...

동시접속자의 증가에 따라 실시간으로 게임서버를 늘릴수 있게...

뭐 요즘나오는 대부분의 게임에서 다 지원하는 기능이지만...

처음으로 확장성을 고려해서 짰다는데 의의를 둔다 ^^


스노우팡EX와 관련된 서버는

파일서버, 로그인서버, 게임서버, DB서버, 더미서버로 총 5개로 구성된다.

자세한 설명은 그림과 함께 밑으로..

//
//        Infinity Engine
//
//        Written by Lee Gun-Ho(FiaDot)
//        lovin@hellonet.co.kr
//        http://www.fiadot.com
//
//        CopyRight 2003 (c)Hellonet & Lee Gun-Ho(FiaDot).
//



#define        PRJ_TITLE                        "SnowPangEX"
#define        PRJ_VERSION                        "5.2.0"
#define        CREATOR_INFO                "FiaDot(lovin@hellonet.co.kr)"
#define        CREATOR_HOMEPAGE        "http://www.fiadot.com"


//
// History~~
//

// 5.2.0
// 관리툴 프로젝트 추가!

// 5.1.0
// 더미 추가!

// 5.0.1
// 방 관련 루틴!

// 5.0.0
// 스노우팡EX용

// 4.1.1
// 로그 포맷 변경
// what? #2 버그 패치 - 패킷 사이즈 못알아올떄

// 4.1.0
// OLEDB접근을 ATL로 하며 다이나믹 엑세서 적용
// DBUser를 통해 각 서버에 하나의 소켓을 할당해서 클라이언트처럼 처리!

// 4.0.3
// 스크립트~~ 넣어야지~ 후후

// 4.0.2
// OLE DB 접근시 Lowlevel API와 ATL을 이용한 2개의 접근 방법을 포함
// API는 아직 테스트 단계, ATL은 바로 응용가능 수준.






로그인 서버는 처음 접속했을때 DB로 부터 사용자의 정보를 긁어오고, 게임서버의 목록을 가지고 각게임서버별 사용자수와 정보를 클라이언트에게 보내준다.




게임서버는 100개의 고정 방을 가지고 게임을 운영하는 역할을 한다. 만약에 대전할 상대가 없을때 더미서버를 통해 로봇을 집어넣어 사용자가 게임을 진행할수 있도록 해준다.





유저와 관련된 모든정보를 읽고 저장하는 역할을 담당한다.
그리고 유저의 순위, 전체순위등등 랭킹정보도 긁어온다~
(쿼리만든다고 죽는주 알았다 ㅡㅡ;;)


캐릭터와 맵을 업데이트 가능하도록 추가되는 리소스는
파일서버가 가지고 클라이언트에게 보내준다.
파일풀을 가지고 주기적으로 사용될때 파일을 엑세스 함으로써 발생하는 오버헤드를 줄이려고 했다.



게임서버와 연결되서 임시유저를 생성한다.
FSM(Finite State Machine)방식으로 구동되는 AI는 아이템이나 스페셜기능등을 확률과 상태에 따라 돌아가게 구현되어 있다.




뭐 별달리 대단한건 없다.

처음으로 실시간게임을 위한 서버를 구현했다는거...

(사실 클라이언트에서 보간및 실제 동기화를 다해서 나는 별로 할게 없었다 ^^;;)

확장성을 고려했다는거..

그리고 AI에 대해서 한번 생각해보는 계기가 됐다는거 정도...

우야동동 3개월동안 지긋지긋하게 텍스트만 봐서.. 죽는줄알았다.
,
TOTAL TODAY