C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[12791] MMORPG 게임을 하던중 궁금한게 있어서...
Starlet [starlet5] 2258 읽음    2007-03-07 16:12
안녕하세요. 혹시 월드오브워크래프트 같은 MMORPG(이렇게 부르는게 맞나요?) 게임 개발에 대해 아시분 있으시면 답변 좀 부탁드리겠습니다.
게임 중 몇가지 테스트를 해봤는데 프로그램을 강제종료를 시키고 다시 시작해도 정확히 강제종료되는 시점에 있던 자리와 상황에 그대로 있더군요. 매번 움직일때나 상황이 발생할때마다 서버에 기록을 하는것 같은데... 당연히 이렇게 해야 다른 플레이어와 연동이 되겠지요.. 플레이어 뿐만 아니라 그냥 지나다니는 동물들이나 몬스터들도 계속 서버에서 위치를 바꾸면서 그 위치를 보내주는것 같더군요.
그러면 이러한 정보들이 서버 DB에 저장되어 있을텐데 각각의 플레이어나 몬스터들이 움직일때 계속해서 DB에 UPDATE가 되고 있는 것인가요? 이렇게 되면 서버 DB에 1초에도 수백만개의 UPDATE 쿼리가 적용될것 같은데 이게 처리 가능한 일인지 의문입니다.
도대체 어떻게 작동되고 있는건가요?
이현진 [cyberpd]   2007-03-07 16:41 X
온라인 게임은 클라이언트/서버 구조라 생각하시면 되됩니다. 대부문의 중요 데이터 처리는 서버에서 치리되고 클라이언트는 사용자의 Visual한 부분을 중점으로 처리를 합니다.
캐릭터의 이동/공격 등의 이벤트는 클라이언트에서 적절히(?) 걸러서 최소한의 이벤트 정보를 서버에 전달하게 됩니다. 서버와 사용자 컴퓨터간의 동기화를 위해 'dead reckoning' 등의 알고리듬을 이용하기도 합니다.

서버에서 데이터베이스 접근도 최적화를 통해 접근 횟수를 줄입니다. 캐릭터등의 정보등이 변경되도 바로바로 데이터베이스에 저장되는게 아니라 일종의 캐쉬 상태로 메모리에서 관리합니다.
김호광 [testcode]   2007-03-08 02:46 X
game server에서 유저 정보를 가지고 있다가 로그 아웃 / 이벤트 상황 등 특이 사항이 되면 DB에 저장합니다. 실시간으로 DB에는 어떤 게임이던지 저장 안합니다.

+ -

관련 글 리스트
12791 MMORPG 게임을 하던중 궁금한게 있어서... Starlet 2258 2007/03/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.