본문 바로가기

관심분야

(20)
객체 이동 방식에 대한 반전!!! 온라인 게임을 논하는 중에 이동 처리 방식에 대한 다양한 의견들이 제시되고 시험되고 있다. 지금 이 시간에도 이러한 논의를 계속 하고 있는 개발자 들이 상당히 있을 것이다. 그럼, 왜 이에 대한 논의가 많은 것일까? 객체 이동은 게임의 기본적인 동작의 표현이자, 서버에게는 데이터 처리를 위해 가장 많은 시간을 사용하게 되는 처리이기 때문이다. -- 그리고, 서버 부하의 주된 원인이 이동 때문에 발생된다고 해도 될 만큼의 부하가 존재하기 때문이다. 그럼, 몇가지 객체 이동 방식에 대해 알아 보자. 1. 현재 위치를 일정 조건에 서버로 전송하는 방식 : 위치의 변화 또는 일정 시간(예를 들어 0.5초) 경과후 현재 위치를 서버로 전송 하는 방식 - 장점 * 위치 이동 응답성이 빠르다 * 비교적 개발이 간단하..
NPC 처리의 구성에서... 온라인 게임에서 NPC의 비중은 최소 최대 예상 PC의 5배수 이상인 경우가 많다. 그만큼 많은 NPC의 처리가 발생하게 된다. 이러한 상황에서 고려해야 할 상황을 정리해 보자~ 1. 이동 - 특징: 주기성을 가지게 되어, 부하 분산 처리에 용의하다. * 일정 주기 단위로(수초 이상) 이동 - 처리 부하 분산 목적 * 이동을 마친후 해당 위치에서 일정 시간 이상 대기 하도록 처리 - 처리 부하 분산 목적 - 이동 중 공격 발생에 대한 처리 상황 - 사용 가능 알고리즘 : 이동해야 할 객체를 판단하기 위해, 3x3 블럭별 Priority Queue 구성 - 이동전 블럭의 PQ에서 이동해야할 NPC를 얻어 이동할 블럭의 PQ로 저장 * 제한: 블럭당 최대 NPC갯수 지정을 통해, NPC가 한곳으로 모이는 것..
시야관리 - 또 다른 관리 방식: Viewport~ 온라인 게임에서 시야란.. 데이터 처리를 위한 것과, 처리된 데이터를 받아야 하는 객체를 관리하는데 가장 큰 목적이 있다. 그런데 문제는 데이터를 받아야 하는 객체의 수가 증가 한다는 것이고, 이를 위해, 시야를 근거리~원거리로 분리하여 관리하는 방법을 소개 하였다. 이번에 고민하는 부분은 데이터를 받아야 하는 객체가 실제로 필요로 하는 데이터를 걸러내기 위한 방법이다. 기존 방식의 객체가 View(보고 있는)하는 범위의 객체 뿐만 아니라 보고 있지 않는 음영에 존재하는 객체에게 까지 데이터를 전달한다는 것이다. 만약, O 라는 객체의 Viewport가 B' 방향으로 향하고 있다면 음영(뒷쪽)에 있는 객체의 정보 중요성은 낮아지게 된다. 다른 객체로 부터 데이터가 발생이 될때 O 객체의 뒷쪽에 존재한다면..
객체 이동 경로 관리 여기에서 말하고자 하는 것은 앞으로 이동할 경로에 대한 예측이 아닌, 현재 객체가 이동한 경로를 관리하고 처리하는 방식에 대해 논의해 보고자 한다. 어떻게 보면 이미 지난 데이터라 의미없을지 모르지만 예측이 아닌 객체(A)의 이동 처리 방식에서는 타 객체(B)의 현재 위치는 예전 위치이기 때문에 만약, 타 객체(B)가 객체(A)를 공격할때 이에 대한 정확한 판단이 필요하게 된다. == 이를 위해 다음과 같은 객체의 처리가 필요하게 된다. 다음과 같이 객체의 이동이 발생 되었다고 가정하다. 객체(A)는 이동을 하지만, 객체(A)를 보고 있는 다른 객체(B)는 일정 시간 이후에 객체(A)의 이동을 보게 된다. 이러한 시점에서 객체(B)가 객체(A)를 공격한다면? 서버에서는 객체(A)가 객체(B)가 보고 있는..
시야관리 - 데이터 최적화 여기에서 말하고자 하는 것은 시야 범위내 객체의 이동으로 인해 주변 객체에 전달해야 하는 데이터를 최적화 하는 방식에 대해 논하고자 하는 것이다. 화면은 일반적으로 MMO 계열의 객체 관리 방식을 나타낸 것이다. 일반적으로 3x3 방식의 블럭을 통해 객체에 대한 시야를 관리하고 데이터를 관리(전송)하게 된다. 이 방식의 장점은 데이터 발생에 대한 처리를 범위내 객체에 제한 되어 데이터 처리의 효율성을 증가시킨다는 장점을 가지고 있고, 물론 현재 대부분의 MMO 계열에서 사용되고 있다. 그러나 해당 방식의 가장 큰 단점은 바로 객체가 해당 3x3 블럭에 모여 있을 경우 데이터에 대한 처리가 많아 진다는 것이다. 즉, 100개의 객체가 존재한다면 발생 데이터당 100번의 데이터 전송을 해야 한다는 내용이 된..
[기사] 정부, 온라인게임에 '피로도 시스템' 도입 의무화 정부, 온라인게임에 '피로도 시스템' 도입 의무화 http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&sid2=&oid=031&aid=0000126727&iid= 게임을 몇시간 이상 못하게 하는 방식에 비해 좀더 지능화 한 방식이군요. 점점 규제가 가시화 되어 가는듯~ 한쪽에서는 온라인게임 분야에 대한 활성화를 논하고 한쪽에서는 규제방식을 논하고... 이러한 규제는 별 도움이 안될듯~ GPGStudy에 이에 대한 글이 떴네요. 링크: http://www.gpgstudy.com/forum/viewtopic.php?topic=18836
NPC/AI 처리 1) 각 NPC는 Hate List를 통해 분노도가 높은 객체(플레이어 또는 NPC)를 우선 공격하도록 구성 할수 있다. : 이러한 처리 만으로 NPC는 기본적인 AI만으로 플레이어에 대한 공격을 처리 할수 있다. 예를 들어, 몬스터를 직접 공격하는 플레이어와, 해당 플레이어에게 힐을 해주는 플레이어가 있다고 가정한다면 몬스터는 힐을 해주는 플레이어를 공격할수도 있게 된다. 2) 전략 및 전술을 위한, NPC간의 적대/우호 관계 및 상하 관계 리스트 구성 : 이러한 구성을 통해 몬스터가 전투중 도망가야 하는 상황이 발생될때, 자신의 시야에서 자신에게 유리한 방향을 선택할수 있으며 만약, 시야중에 자신과 상하 및 우호 관계에 있는 다른 몬스터에게 도움을 요청할 수 있도록 처리할수 있다. 3) NPC 지형 ..
NPC의 이동 관리 1) MOVE를 통보(Notify)받는 NPC에 대한 Priority Queue 관리 : 해당 처리를 통해 NPC가 플레이어가 존재하는 블럭에서만 이동할수 있도록 할수 있다. - Priority Queue는 전체 NPC를 한번에 처리 하지 않는 구조에 적합하며, 전체 NPC를 한번에 처리해야 하는 구조에서는 일반 list 처리가 빠른 성능을 보인다. - 해당 방식을 사용하기 위해서는 전체 NPC의 처리가 특정 시간에 집중 되지 않도록 분포시키는 기법이 중요하다. : 예를 들어, 전투/선공 상태의 NPC를 우선 처리하는 기법이 사용될수 있다. : 또한 Priority Queue의 insert/remove 시간을 줄이기 위해 형태별 독립된 Queue의 구성도 고려될수 있다. : 이러한 처리를 통해, CPU로..