KR101576107B1 - 네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템 - Google Patents

네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템 Download PDF

Info

Publication number
KR101576107B1
KR101576107B1 KR1020157006852A KR20157006852A KR101576107B1 KR 101576107 B1 KR101576107 B1 KR 101576107B1 KR 1020157006852 A KR1020157006852 A KR 1020157006852A KR 20157006852 A KR20157006852 A KR 20157006852A KR 101576107 B1 KR101576107 B1 KR 101576107B1
Authority
KR
South Korea
Prior art keywords
data
user input
image frame
input event
response data
Prior art date
Application number
KR1020157006852A
Other languages
English (en)
Other versions
KR20150036829A (ko
Inventor
쉬신 왕
젠후이 야오
셴원 천
원 탕
Original Assignee
텐센트 테크놀로지(센젠) 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 filed Critical 텐센트 테크놀로지(센젠) 컴퍼니 리미티드
Publication of KR20150036829A publication Critical patent/KR20150036829A/ko
Application granted granted Critical
Publication of KR101576107B1 publication Critical patent/KR101576107B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • H04L65/602
    • G06F9/4443
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Abstract

컴퓨터는 네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신한다. 각각의 사용자 입력 이벤트는 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고 사용자 입력 이벤트는 원격 소스(remote source)로부터 적어도 하나의 원격 사용자 입력 이벤트를 포함한다. 컴퓨터는 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 이 응답 데이터를 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 일부 실시예에서는, 사용자 입력 이벤트는 모두 컴퓨터의 로컬 사용자로부터 수신된다. 또한 컴퓨터는 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 마지막으로 컴퓨터는 응답 데이터를 동기화 데이터로 교체한다.

Description

네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템{SYSTEMS AND METHODS FOR DATA SYNCHRONIZATION IN A NETWORK APPLICATION}
본 특허출원은 2012년 8월 21일에 출원되고 발명의 명칭이 “네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템”인 중국 출원 제201210297918.8호에 대한 우선권을 주장하는 바이며, 상기 문헌의 내용은 그 전체로서 원용에 의해 본 명세서에 포함된다.
본 발명은 개괄적으로는 인터넷 기술에 관한 것으로서, 구체적으로는, 데이터 동기화를 위한 네트워크 어플리케이션 방법 및 장치에 관한 것이다.
인터넷의 발전과 함께, 네트워크 어플리케이션 또한 인터넷 상에서 호황을 누리고 있으며, 사용자는 상이한 네트워크 상에서 실행 중인 다양한 네트워크 어플리케이션을 통해 데이터 교환을 할 수 있다. 구체적으로는, 동일한 네트워크 어플리케이션을 실행하는 복수의 사용자 중에서, 각 사용자는 네트워크 어플리케이션에 의해 제공되는 네트워크 인터페이스를 이용하여 다양한 작업 명령(operation instruction)을 트리거할 수 있다. 네트워크 어플리케이션 서버는 수신된 작업 명령을 처리하고 적절한 데이터를 생성할 것이다. 그 후, 생성된 작업 데이터에 기초하여, 네트워크 어플리케이션 서버는 사용자에 의해 트리거된 작업을 어플리케이션의 상이한 사용자 인터페이스에 피드백함으로서 리턴한다(return). 예를 들어, 만일 네트워크 어플리케이션이 게임 어플리케이션이라면, 2명의 사용자가 게임 어플리케이션을 실행하고 인터넷을 이용하여 서로 정보를 교환한다. 한 사용자가 임의의 어플리케이션 인터페이스를 통해 게임 어플리케이션의 캐릭터의 움직임을 트리거할 때, 게임 캐릭터는 이에 따라 움직일 것이다. 그러면 이 게임 어플리케이션 서버는 다른 사용자에 의해 이용되는 다른 네트워크 어플리케이션에 캐릭터 움직임 명령을 보낼 것이므로, 이 사용자 인터페이스에서 이에 대응하는 캐릭터 움직임이 가능하다. 그러나, 상이한 네트워크 어플리케이션은 상이한 네트워크 환경을 가지기 때문에, 만일 네트워크 어플리케이션의 네트워크 환경이 나쁘거나 네트워크 환경이 크게 변동된다면, 이것은 상이한 네트워크 어플리케이션의 적절한 데이터 동기화를 방해할 수 있다.
네트워크 환경 변동과 연관된 상술한 결함과 다른 문제는 아래에서 개시된 본 발명에 의해 줄어들거나 제거될 수 있다. 일부 실시예에서, 본 발명은, 하나 이상의 프로세서, 메모리, 및 하나 이상의 모듈, 복수의 기능을 실행하기 위해 메모리에 저장되어 있는 프로그램 또는 명령 집합을 포함하는, 컴퓨터 시스템에 의해 구현된다. 이러한 기능들을 실행하기 위한 명령은 하나 이상의 프로세서에 의해 구현되도록 구성되어 있는 컴퓨터 프로그램 제품에 포함될 수 있다.
본 발명의 일 측면은 컴퓨터 시스템에 의해 구현되는 컴퓨터 구현 방법에 관한 것이다. 컴퓨터 시스템은 네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신한다. 각각의 사용자 입력 이벤트는 상기 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고, 상기 사용자 입력 이벤트는 원격 소스(remote source)로부터 적어도 하나의 원격 사용자 입력 이벤트를 포함한다. 컴퓨터는 상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 또한, 컴퓨터는 상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 마지막으로, 컴퓨터는 상기 응답 데이터를 상기 동기화 데이터로 교체한다.
본 발명의 또 다른 측면은 컴퓨터 시스템에 관한 것이다. 컴퓨터 시스템은 하나 이상의 프로세서, 메모리, 및 상기 메모리에 저장되어 있으며 상기 하나 이상의 프로세서에 의한 실행을 위해 구성되어 있는 하나 이상의 프로그램 모듈을 포함한다. 상기 하나 이상의 프로그램 모듈은 다음을 포함한다: 사용자 입력 이벤트 수신 모듈은 네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신하도록 구성되어 있으며, 각각의 사용자 입력 이벤트는 상기 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고, 상기 사용자 입력 이벤트는 원격 소스(remote source)로부터의 적어도 하나의 원격 사용자 입력 이벤트를 포함한다. 로컬 응답 데이터 업데이트 모듈은 상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하도록 구성되어 있다. 원격 데이터 동기화 모듈은 상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 상기 현재 이미지 프레임으로 업데이트하도록 구성되어 있다. 데이터 교체 모듈은 상기 응답 데이터를 상기 동기화 데이터로 교체하도록 구성되어 있다.
본 발명의 또 다른 측면은 하나 이상의 명령을 저장하고 있는 비일시적 컴퓨터 판독 가능 저장 매체에 관한 것이다. 상기 하나 이상의 명령은, 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 다음을 실행하도록 한다: 네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신하고 각각의 사용자 입력 이벤트는 상기 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고 상기 사용자 입력 이벤트는 원격 소스(remote source)로부터 적어도 하나의 원격 사용자 입력 이벤트를 포함한다. 상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 상기 현재 이미지 프레임으로 업데이트한다. 상기 응답 데이터를 상기 동기화 데이터로 교체하도록 한다.
일부 실시예는 클라이언트-서버 네트워크 환경의 클라이언트 측 또는 서버 측에서 구현될 수 있다.
본 발명의 전술한 특징 및 이점뿐만 아니라 이의 부가적인 특징 및 이점은 이하 본 명세서에서 도면과 함께 바람직한 실시예의 상세한 설명으로 인해 명확하게 이해될 것이다.
도 1은, 일부 실시예에 따른, 네트워크 어플리케이션이 어떻게 상이한 유형의 사용자 입력 이벤트를 처리하는 지를 도시한 흐름도이다.
도 2는, 일부 실시예에 따른, 네트워크 어플리케이션이 어떻게 원격 컴퓨터로부터의 원격 사용자 입력 이벤트를 처리하는 지를 도시한 흐름도이다.
도 3은, 일부 실시예에 따른, 응답 데이터에 기초하여 네트워크 어플리케이션이 어떻게 동기화 데이터를 업데이트하는 지를 도시한 흐름도이다.
도 4는, 일부 실시예에 따른, 상이한 유형의 사용자 입력 이벤트를 처리하기 위한 네트워크 어플리케이션의 모듈을 도시한 블록도이다.
도 5는, 일부 실시예에 따른 네트워크 어플리케이션의 원격 데이터 동기화 모듈을 도시한 블록도이다.
도 6은 일부 실시예에 따른 네트워크 어플리케이션의 데이터 프로세싱 모듈을 도시한 블록도이다.
도 7은, 일부 실시예에 따른, 네트워크 어플리케이션의 2명의 사용자와 연관된 컴퓨터가 어떻게 사용자 입력 이벤트를 서로 동기화하는 지를 도시한 블록도이다.
도 8은 일부 실시예에 따른 네트워크 환경의 블록도이다.
도 9는 일부 실시예에 따른 예시적인 클라이언트 컴퓨터의 블록도이다.
도 10은 일부 실시예에 따른 서버의 블록도이다.
유사한 참조 번호는 여러 관점의 도면에서의 서로 상응하는 요소를 지시한다.
참조는 첨부된 도면에서 도시된 예시, 실시예들을 참조하여 상세하게 설명할 것이다. 다음의 상세한 설명에서, 다수의 구체적인 세부 사항은 본 명세서에 나타난 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나 통상의 기술자에게 이 발명은 이러한 구체적인 세부 사항 없이도 실행될 수 있음은 명백할 것이다. 다른 예시에서는, 실시예들의 잘 알려지지 않은 측면을 불필요하게 불명확하게 할 수 있으므로 공지의 방법, 과정, 구성 요소 및 회로에 대해 상세히 설명되지 않는다.
도 8은 일부 실시예에 따른 네트워크 환경의 블록도이다. 네트워크 환경(800)은 하나 이상의 클라이언트 컴퓨터(830-1, 830-3) 및 하나 이상의 서버(810)를 포함한다. 클라이언트 컴퓨터는 네트워크(820) (예를 들면, 인터넷)를 통해 서버에 연결된다. 한편 상이한 클라이언트 컴퓨터 또한 이 네트워크(820)를 통해 서로 통신할 수 있을 것이다. 예를 들면, 아래에 기재한 바와 같이, 클라이언트 컴퓨터(830-1)에서 생성된 사용자 입력 이벤트는 서버(810) 및/또는 클라이언트 컴퓨터(830-2)에 전송될 수 있다. 네트워크(810)를 통해, 네트워크 환경(800)의 상이한 개체들이 서로 정보를 교환할 수 있다. 일부 실시예에서, 네트워크 환경(800)은 온라인 게임 어플리케이션을 제공한다. 상이한 사용자가 상이한 클라이언트 컴퓨터로부터 이 온라인 게임 어플리케이션에 참여한다. 서버(810)는, 한정되는 것은 아니지만, 사용자 식별자, 패스워드, 사용자 계정, 현재 사용자 상태(예를 들면, 사용자에 의한 마지막 입력) 등을 포함하는, 사용자의 정보를 저장하기 위해 사용자 정보 데이터베이스(812)를 구비한다.
도 1은, 일부 실시예에 따른, 네트워크 어플리케이션이 어떻게 상이한 유형의 사용자 입력 이벤트를 처리하는 지를 도시한 흐름도이다. 설명을 위해, 네트워크 어플리케이션은 도 8에서 도시된 클라이언트 컴퓨터 중 하나에서 실행중인 온라인 게임 어플리케이션이다. 단계 S10에서, 컴퓨터는 네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신한다. 사용자 입력 이벤트는 컴퓨터로부터의 로컬 사용자 입력 이벤트뿐만 아니라 원격 컴퓨터로부터의 원격 사용자 입력 이벤트를 모두 포함한다. 로컬 사용자 입력 이벤트는 컴퓨터의 사용자에 의해 생성되거나 사용자의 동작에 의해 트리거된다. 예를 들면, 사용자가 마우스를 움직이거나 키보드를 누를 때, 로컬 사용자 입력 이벤트는 이에 따라 생성될 수 있다. 유사하게, 동일한 네트워크 어플리케이션을 현재 실행 중인 제2 클라이언트 컴퓨터에서 제2 사용자에 의한 마우스의 움직임은 먼저 제2 클라이언트 컴퓨터에서 로컬 사용자 입력 이벤트를 생성하고, 그 후 이 로컬 사용자 입력 이벤트는 네트워크(810)를 통해 이것이 원격 사용자 입력 이벤트로 간주될 수 있는 클라이언트 컴퓨터에 전송된다. 이러한 사용자 입력 이벤트는 네트워크 어플리케이션의 그래픽 사용자 인터페이스 상의 객체의 움직임을 야기할 수 있다. 이상적으로는, 상이한 컴퓨터에서 상이한 그래픽 사용자 인터페이스 상의 동일한 객체의 움직임은 거의 동시에 발생하여야 한다. 그러나, 실제로는, 잠재적인 네트워크 혼잡(network congestion)으로 인해 동일한 사용자 입력 이벤트가 상이한 클라이언트 컴퓨터에 도착하는데 걸리는 시간이 서로 다를 수 있다. 따라서, 본 발명의 하나의 기능은 상이한 그래픽 사용자 인터페이스 상의 상이한 사용자에 의해 제어되는 객체의 움직임 사이의 동기화를 개선하는 것이다. 일부 실시예에서, 컴퓨터에 의해 수신된 각 사용자 입력 이벤트는, 그 이벤트가 네트워크 어플리케이션에 의해 획득된 때를 나타내는, 네트워크 어플리케이션의 각각의 이미지 프레임에 대응하고, 사용자 입력 이벤트는 원격 소스(remote source)으로부터의 적어도 하나의 원격 사용자 입력 이벤트를 포함한다.
단계 S30에서, 컴퓨터는 사용자 입력 이벤트와 연관된 이미지 프레임으로부터 응답 데이터를 생성하고 이 응답 데이터를 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 일부 실시예에서, 로컬 사용자 입력 이벤트(또는 거의 지연이 없는 주변 컴퓨터로부터의 사용자 입력 이벤트)를 수신하는 대로, 컴퓨터는 사용자 입력 이벤트와 연관된 초기 이미지 프레임을 결정하고, 그 후 이 초기 이미지 프레임과 연관된 응답 데이터를 생성한다. 예를 들면, 응답 데이터는 특정 객체가 어떻게 상이한 이미지 프레임에 걸쳐 그래픽 사용자 인터페이스 상에서 움직이는지에 대한 정보를 포함할 수 있다. 초기 이미지 프레임이 현재 이미지 프레임과 다른 경우, 컴퓨터는 이에 따라 응답 데이터를 업데이트한다. 아래에서 설명되는 바와 같이, 응답 데이터는 그래픽 사용자 인터페이스 상에서 현재 이미지 프레임을 랜더링하기 위해 이용된다. 일부 실시예에서, 컴퓨터는 사용자 입력 이벤트와 연관된 각각의 이미지 프레임에 대응하는 응답 데이터를 제1 프레임 속도(frame rate)(예를 들면, 일반적으로 네트워크 어플리케이션의 디폴트(default) 프레임 속도인 초당 60 프레임)로 업데이트한다. 그래픽 사용자 인터페이스는 프레임마다 랜더링되기 때문에, 응답 데이터를 업데이트하는 것도 기본적으로 프레임마다 실행된다. 응답 데이터가 업데이트될 때마다, 대응하는 이미지 프레임도 업데이트된 응답 데이터를 이용하여 재랜더링(re-render)되므로, 컴퓨터는 사용자 입력에 대해 거의 즉각적으로 응답할 수 있다. 이 과정은 연속적이고 반복적으로 실행되므로 새로운 사용자 입력 이벤트(예를 들면, 로컬 사용자 입력 이벤트)가 있을 때마다 컴퓨터는 응답 데이터를 업데이트할 것이어서 네트워크 어플리케이션은 항상 사용자의 명령을 동기(synch)한다.
위에서 지적한 바와 같이, 하나의 컴퓨터에서의 로컬 사용자 입력 이벤트는 다른 컴퓨터에서 원격 사용자 입력 이벤트가 될 수 있다. 유사하게, 컴퓨터에 수신된 사용자 입력 이벤트는, 컴퓨터에서 네트워크 어플리케이션의 로컬 현재 상태와 동기화되지 않았을 수 있는(out-of-synch) 원격 사용자 입력 이벤트도 포함할 수 있다. 그러므로, 단계 S50에서, 컴퓨터는 또한 적어도 하나의 원격 사용자 입력 이벤트와 연관된 이미지 프레임으로부터 동기화 데이터를 생성하고 이 동기화 데이터를 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트한다. 응답 데이터를 업데이트하는 것과 같이, 동기화 데이터를 업데이트 하는 것도, 응답 데이터의 업데이트의 수와 동기화 데이터의 업데이트의 수가 동일해질 때까지, 프레임마다 실행된다. 일부 실시예에서, 동기화 데이터는 현재 이미지 프레임을 랜더링하기 위해 이용될 수 없다. 대신, 단계 S70에서, 컴퓨터는 먼저 현재 그래픽 사용자 인터페이스를 랜더링하기 위해 이미 이용된 응답 데이터를 동기화 데이터로 교체하며, 예를 들면 응답 데이터를 저장하기 위한 데이터 구조에 동기화 데이터를 저장하여 교체한다. 일부 실시예에서, 그 후 컴퓨터는 네트워크 어플리케이션의 그래픽 사용자 인터페이스를 랜더링하는 데 동기화 데이터를 이용한다. 동기화 데이터를 네트워크 어플리케이션에 이용함으로써, 컴퓨터에서 실행 중인 네트워크 어플리케이션의 인스턴스(instance)가 다른 컴퓨터에서 실행 중인 동일한 네트워크 어플리케이션의 다른 인스턴스와 동기(synch)를 유지하여, 상이한 클라이언트 컴퓨터에서의 사용자들이 서로와 동기화되어 동일한 게임을 할 수 있다.
일부 실시예에서, 응답 데이터는 네트워크 환경(예를 들면, 네트워크 혼잡)으로부터 영향을 받지 않는 것으로 간주된다. 컴퓨터에 수신되는 사용자 입력 이벤트가 로컬이든 원격이든 관계없이, 컴퓨터는 응답 데이터를 빠르게 업데이트할 것이며 업데이트된 응답 데이터를 현재 이미지 프레임을 랜더링하는 데 이용한다. 그러나 현저한 지연(significant delay)이 있는 클라이언트 컴퓨터로부터 수신된 원격 사용자 입력 이벤트에 대해, 컴퓨터는, 원격 사용자 입력 이벤트의 수신 전에 소스(source) 클라이언트 컴퓨터가 이미 그것의 응답 데이터를 업데이트했을 수 있기 때문에, 원격 사용자 입력 이벤트에 따라 응답 데이터를 업데이트 할 수 없다. 대신 컴퓨터는, 원격 사용자 입력 이벤트와 연관된 이미지 프레임과 네트워크 어플리케이션의 현재 이미지 프레임 사이의 갭(gap)을 효과적으로 측정하는, 그것의 동기화 데이터를 업데이트하는 데 원격 사용자 입력 이벤트를 이용한다. 그 후 동기화 데이터는, 그것이 응답 데이터와 동일한 이미지 프레임에 대응할 때까지, 반복적으로 (예를 들면, 프레임마다) 업데이트된다. 마지막으로, 컴퓨터는 업데이트된 동기화 데이터를 이미지 프레임을 랜더링하는 데 이용하여, 상이한 사용자들이 동일한 네트워크 어플리케이션을 이용하는 서로와 동시에 데이터를 교환할 수 있게 한다.
도 2는, 일부 실시예에 따른, 네트워크 어플리케이션이 어떻게 원격 컴퓨터로부터의 원격 사용자 입력 이벤트를 처리하는 지를 도시한 흐름도이다. 단계 S500에서, 컴퓨터는 원격 컴퓨터로부터 원격 사용자 입력 이벤트를 수신한다. 원격 사용자 입력 이벤트는 컴퓨터와 동기화되지 않았다고 가정되므로, 바로 응답 데이터를 업데이트하는 데 이용될 수 없다. 이에 따라, 단계 S510에서, 컴퓨터는 원격 사용자 입력 이벤트와 연관된 각각의 이미지 프레임에 대한 초기 동기화 데이터를 생성한다. 예를 들면, 컴퓨터가 원격 컴퓨터로부터 원격 사용자 입력 이벤트를 처음으로 수신한 경우라면, 컴퓨터는 원격 사용자 입력 이벤트와 연관된 이미지 프레임에 대응하는 초기 동기화 데이터를 생성할 필요가 있을 수 있다. 다음으로, 단계 S530에서, 컴퓨터는, 동기화 데이터의 업데이트의 수와 응답 데이터의 업데이트의 수가 동일해질 때까지, 초기 동기화 데이터의 업데이트를 프레임마다 실행하고, 그 후 응답 데이터를 동기화 데이터로 교체한다.
예를 들면, 컴퓨터가 원격 사용자 입력 이벤트를 수신한다고 가정하면, 이 원격 사용자 입력 이벤트는 네트워크 어플리케이션의 N번째 이미지 프레임에 대응하고, 응답 데이터는 (N+M)번째 이미지 프레임에 대응한다(M≥0). 다시 말하면, 두 개의 컴퓨터는 현재 동기화되어 있지 않다. 따라서, 컴퓨터는, 두 개의 컴퓨터가 다시 동기(synch)되도록 하기 위해, 동기화 데이터를 (N+M)번째 이미지 프레임으로 빨리 업데이트해야 한다.
도 3은, 일부 실시예에 따른, 응답 데이터와 동기(synch)하기 위한 동기화 데이터를 네트워크 어플리케이션이 어떻게 업데이트하는 지를 도시한 흐름도이다. 단계 S531에서, 컴퓨터는 원격 사용자 입력 이벤트와 연관된 이미지 프레임에 대응하는 동기화 데이터를, 통상적으로 응답 데이터를 업데이트하기 위해 컴퓨터에 의해 이용되는 제1 프레임 속도보다 큰, 제2 프레임 속도(예를 들면, 초당 90 또는 120 프레임)로 업데이트한다. 만약 그렇지 않다면, 동기화 데이터는 응답 데이터와 다시 동기화될 수 없을 것이다. 단계 S533에서, 컴퓨터는 동기화 데이터의 업데이트의 수와 응답 데이터의 업데이트의 수를 결정한다. 단계 S535에서, 컴퓨터는 동기화 데이터의 업데이트의 수와 응답 데이터의 업데이트의 수가 동일한지를 판단한다. 만약 그렇다면 (즉, 동일하다면), 단계 S537에서, 컴퓨터는 응답 데이터를 업데이트된 동기화 데이터로 교체한다. 만약 그렇지 않다면 (즉, 동일하지 않다면), 컴퓨터는 단계 S531에서 동기화 데이터를 업데이트하도록 리턴한다.
위에서 설명된 접근에서는, 응답 데이터의 생성 및 업데이트와 동기화 데이터의 생성 및 업데이트는, 그들이 동일한 네트워크 어플리케이션을 이용하는 상이한 컴퓨터에서 상이한 사용자에 의해 생성되기 때문에, 서로 독립적이다. 그러나, 동기화 데이터의 업데이트가 미리 설정된 조건을 만족할 때, 동기화 데이터는 응답 데이터와 다시 동기화될 수 있으므로 네트워크 어플리케이션의 사용자 경험을 개선한다.
도 4는, 일부 실시예에 따른, 상이한 유형의 사용자 입력 이벤트를 처리하기 위한 네트워크 어플리케이션에서의 모듈을 도시한 블록도이다. 구체적으로, 사용자 입력 이벤트 수신 모듈(10)은 네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신하도록 구성되어 있다. 사용자 입력 이벤트는 컴퓨터로부터의 로컬 사용자 입력 이벤트뿐만 아니라 원격 컴퓨터로부터의 원격 사용자 입력 이벤트를 모두 포함한다. 로컬 사용자 입력 이벤트는 컴퓨터의 사용자에 의해 생성되거나 사용자의 동작에 의해 트리거된다. 예를 들면, 사용자가 마우스를 움직이거나 키보드를 누를 때, 로컬 사용자 입력 이벤트는 이에 따라 생성될 수 있다. 유사하게, 동일한 네트워크 어플리케이션을 현재 실행 중인 제2 클라이언트 컴퓨터에서 제2 사용자에 의한 마우스의 움직임은 먼저 제2 클라이언트 컴퓨터에서 로컬 사용자 입력 이벤트를 생성하고, 그 후 이 로컬 사용자 입력 이벤트는 네트워크(810)를 통해 이것이 원격 사용자 입력 이벤트로 간주될 수 있는 클라이언트 컴퓨터에 전송된다. 이러한 사용자 입력 이벤트는 네트워크 어플리케이션의 그래픽 사용자 인터페이스 상의 객체의 움직임을 야기할 수 있다. 이상적으로는, 상이한 컴퓨터에서 상이한 그래픽 사용자 인터페이스 상의 동일한 객체의 움직임은 거의 동시에 발생하여야 한다. 그러나, 실제로는, 잠재적인 네트워크 혼잡(network congestion)으로 인해 동일한 사용자 입력 이벤트에 대해 상이한 클라이언트 컴퓨터에 도착하는 데 걸리는 시간이 다를 수 있다. 따라서, 본 발명의 하나의 기능은 상이한 그래픽 사용자 인터페이스 상의 상이한 사용자에 의해 제어되는 객체의 움직임 사이의 동기화를 개선하는 것이다. 일부 실시예에서, 사용자 입력 이벤트 수신 모듈(10)에 의해 수신된 각 사용자 입력 이벤트는, 이벤트가 네트워크 어플리케이션에 의해 획득된 때를 나타내는 네트워크 어플리케이션의 각각의 이미지 프레임에 대응하고, 사용자 입력 이벤트는 원격 소스(remote source)으로부터 적어도 하나의 원격 사용자 입력 이벤트를 포함한다.
로컬 응답 데이터 업데이트 모듈(30)은 사용자 입력 이벤트와 연관된 이미지 프레임으로부터 응답 데이터를 생성하고 이 응답 데이터를 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하도록 구성되어 있다. 일부 실시예에서, 로컬 사용자 입력 이벤트(또는 거의 지연이 거의 없는 주변 컴퓨터로부터의 사용자 입력 이벤트)를 수신하는 대로, 로컬 응답 데이터 업데이트 모듈(30)은 사용자 입력 이벤트와 연관된 초기 이미지 프레임을 결정하고, 그 후 이 초기 이미지 프레임과 연관된 응답 데이터를 생성한다. 예를 들면, 응답 데이터는 특정 객체가 어떻게 상이한 이미지 프레임에 걸쳐 그래픽 사용자 인터페이스 상에서 움직이는지에 대한 정보를 포함할 수 있다. 초기 이미지 프레임이 현재 이미지 프레임과 다른 경우, 로컬 응답 데이터 업데이트 모듈(30)은 이에 따라 응답 데이터를 업데이트한다. 아래에서 설명되는 바와 같이, 응답 데이터는 그래픽 사용자 인터페이스 상에서 현재 이미지 프레임을 랜더링하는 데 이용된다. 일부 실시예에서, 로컬 응답 데이터 업데이트 모듈(30)은 사용자 입력 이벤트와 연관된 각각의 이미지 프레임에 대응하는 응답 데이터를 제1 프레임 속도(예를 들면, 일반적으로 네트워크 어플리케이션의 디폴트(default) 프레임 속도(frame rate)인 초당 60 프레임)로 업데이트한다. 그래픽 사용자 인터페이스는 프레임마다 랜더링되기 때문에, 응답 데이터를 업데이트하는 것도 기본적으로 프레임마다 실행된다. 응답 데이터가 업데이트될 때마다, 대응하는 이미지 프레임도 업데이트된 응답 데이터를 이용하여 재랜더링(re-render)되므로, 컴퓨터는 사용자 입력에 대해 거의 즉각적으로 응답할 수 있다. 이 프로세스는 연속적이고 반복적으로 실행되므로 새로운 사용자 입력 이벤트(예를 들면, 로컬 사용자 입력 이벤트)가 있을 때마다 컴퓨터는 응답 데이터를 업데이트할 것이어서 네트워크 어플리케이션은 항상 사용자의 명령에 동기(synch)한다.
원격 데이터 동기화 모듈(50)은 적어도 하나의 원격 사용자 입력 이벤트와 연관된 이미지 프레임으로부터 네트워크 어플리케이션의 현재 이미지 프레임에 동기화 데이터를 생성하고 업데이트하도록 구성되어 있다. 응답 데이터의 업데이트와 같이, 동기화 데이터의 업데이트도, 응답 데이터의 업데이트의 수와 동기화 데이터의 업데이트의 수가 동일해질 때까지, 원격 데이터 동기화 모듈(50)에 의해 기본적으로 프레임마다 실행된다. 일부 실시예에서, 동기화 데이터는 현재 이미지 프레임을 랜더링하기 위해 이용될 수 없다. 대신에, 원격 데이터 동기화 모듈(50)은, 예를 들면, 응답 데이터를 저장하기 위한 데이터 구조에 동기화 데이터를 저장함으로써, 먼저 응답 데이터를 동기화 데이터로 교체하도록 구성되어 있는 데이터 교체 모듈(70)에 업데이트된 동기화 데이터를 제공한다. 일부 실시예에서, 이미지 렌디션 모듈(image rendition module) (도 4에 도시되지 않음)은 네트워크 어플리케이션의 그래픽 사용자 인터페이스를 랜더링하는 데 동기화 데이터를 이용한다. 동기화 데이터를 네트워크 어플리케이션에 이용함으로써, 컴퓨터에서 실행 중인 네트워크 어플리케이션의 인스턴스가 상이한 컴퓨터에서 실행 중인 동일한 네트워크 어플리케이션의 다른 인스턴스와 동기(synch)를 유지하여, 상이한 클라이언트 컴퓨터에서의 상이한 사용자들이 서로와 동기화되어 동일한 게임을 할 수 있다.
일부 실시예에서, 응답 데이터는 네트워크 환경(예를 들면, 네트워크 혼잡)으로부터 영향을 받지 않는 것으로 간주된다. 컴퓨터에 수신되는 사용자 입력 이벤트가 로컬이든 원격이든 관계없이, 컴퓨터는 응답 데이터를 빠르게 업데이트할 것이며 업데이트된 응답 데이터를 현재 이미지 프레임을 랜더링하는 데 이용한다. 그러나 현저한 지연(significant delay)이 있는 클라이언트 컴퓨터로부터 수신된 원격 사용자 입력 이벤트에 대해, 컴퓨터는, 원격 사용자 입력 이벤트의 수신 전에 소스(source) 클라이언트 컴퓨터가 이미 그것의 응답 데이터를 업데이트했을 수 있기 때문에, 원격 사용자 입력 이벤트에 따라 응답 데이터를 업데이트 할 수 없다. 대신 컴퓨터는, 원격 사용자 입력 이벤트와 연관된 이미지 프레임과 네트워크 어플리케이션의 현재 이미지 프레임 사이의 갭(gap)을 효과적으로 측정하는 그것의 동기화 데이터를 업데이트하는 데 원격 사용자 입력 이벤트를 이용한다. 그 후 동기화 데이터는, 그것이 응답 데이터와 동일한 이미지 프레임에 대응할 때까지, 반복적으로 (예를 들면, 프레임마다) 업데이트된다. 마지막으로, 컴퓨터는 업데이트된 동기화 데이터를 이미지 프레임을 랜더링하는 데 이용하여, 상이한 사용자들이 동일한 네트워크 어플리케이션을 이용하는 서로 다른 사용자들과 동시에 데이터를 교환할 수 있게 한다.
도 5는, 일부 실시예에 따른, 네트워크 어플리케이션에서의 원격 데이터 동기화 모듈을 도시한 블록도이다. 이 예시에서, 원격 데이터 동기화 모듈(50)은 입력 이벤트 응답 모듈(510)과 데이터 프로세싱 모듈(530)을 더 포함한다. 예를 들면, 입력 이벤트 응답 모듈(510)은 원격 컴퓨터로부터 원격 사용자 입력 이벤트를 수신하고 원격 사용자 입력 이벤트와 연관된 각각의 이미지 프레임에 대한 초기 동기화 데이터를 생성하도록 구성되어 있다. 예를 들면, 원격 사용자 입력 이벤트는 컴퓨터와 동기(synch)되지 않는다고 가정되므로, 바로 응답 데이터를 업데이트하는 데 이용될 수 없다. 컴퓨터가 원격 컴퓨터로부터 원격 사용자 입력 이벤트를 처음으로 수신한 경우라면, 컴퓨터는 원격 사용자 입력 이벤트와 연관된 이미지 프레임에 대응하는 초기 동기화 데이터를 생성할 필요가 있을 수 있다. 데이터 프로세싱 모듈(530)은, 동기화 데이터의 업데이트의 수와 응답 데이터의 업데이트의 수가 동일해질 때까지, 초기 동기화 데이터의 업데이트를 프레임마다 실행하고, 그 후 응답 데이터를 동기화 데이터로 교체하도록 구성되어 있다.
예를 들면, 컴퓨터가 원격 사용자 입력 이벤트를 수신한다고 가정하면, 이 원격 사용자 입력 이벤트는 네트워크 어플리케이션의 N번째 이미지 프레임에 대응하고, 응답 데이터는 (N+M)번째 이미지 프레임에 대응한다(M≥0). 다시 말하면, 두 개의 컴퓨터는 현재 동기화되어 있지 않다. 따라서, 컴퓨터는, 두 개의 컴퓨터가 다시 동기(synch)되도록 하기 위해, 동기화 데이터를 (N+M)번째 이미지 프레임으로 빨리 업데이트해야 한다.
도 6은, 일부 실시예에 따른, 네트워크 어플리케이션에서의 데이터 프로세싱 모듈을 도시한 블록도이다. 이 예시에서, 데이터 프로세싱 모듈(530)은 동기화 데이터 업데이트 모듈(531), 데이터 업데이트 주파수 결정 모듈(533), 응답 데이터 업데이트 모듈(535)을 더 포함한다. 예를 들면, 동기화 데이터 업데이트 모듈(531)은 원격 사용자 입력 이벤트와 연관된 이미지 프레임에 대응하는 동기화 데이터를, 통상적으로 응답 데이터를 업데이트하기 위해 컴퓨터에 의해 이용되는 제1 프레임 속도보다 큰 제2 프레임 속도(예를 들면, 초당 90 또는 120 프레임)로 업데이트하도록 구성되어 있다. 데이터 업데이트 빈도수 결정 모듈(533)은 동기화 데이터의 업데이트의 수와 응답 데이터의 업데이트의 수를 결정하도록 구성되어 있다. 응답 데이터 업데이트 모듈(535)는 동기화 데이터의 업데이트의 수와 응답 데이터의 업데이트의 수가 동일한지 판단하도록 구성되어 있다. 만약 그렇다면, 응답 데이터 업데이트 모듈(535)은 응답 데이터를 업데이트된 동기화 데이터로 교체한다. 만약 그렇지 않다면, 응답 데이터 업데이트 모듈(535)은 동기화 데이터를 업데이트하기 위해 동기화 데이터 업데이트 모듈(531)에 알린다.
위에서 설명된 접근에서, 로컬 응답 데이터 업데이트 모듈(30)과 원격 데이터 동기화 모듈(50)은, 그들이 동일한 네트워크 어플리케이션을 이용하는 상이한 컴퓨터에서 상이한 사용자에 의해 생성되기 때문에, 서로 독립적으로 작동한다. 그러나, 동기화 데이터의 업데이트가 미리 설정된 조건을 만족할 때, 동기화 데이터는 응답 데이터와 다시 동기화될 수 있으므로 네트워크 어플리케이션의 사용자 경험을 개선한다. 일부 실시예에서, 원격 데이터 동기화 모듈(50)이 서버(810)에 위치하는 반면, 응답 데이터 업데이트 모듈(30)은, 클라이언트 컴퓨터에 위치한다. 일부 실시예에서, 응답 데이터 업데이트 모듈(30)과 원격 데이터 동기화 모듈(50) 모두 서버(810)에 위치할 수 있다.
도 7은, 일부 실시예에 따라, 네트워크 어플리케이션의 두 명의 사용자와 연관된 컴퓨터가 어떻게 서로와 사용자 입력 이벤트를 동기화하는지를 도시한 블록도이다. 이 예시에서, 사용자 1(700-1)은 다른 컴퓨터를 이용하는 사용자 2(700-2)와 정보를 교환하기 위해 로컬 컴퓨터를 사용할 수 있다. 예를 들어, 두 명의 사용자가 온라인 게임 어플리케이션을 할 수 있다. 예를 들어, 사용자 1과 연관된 컴퓨터는 상이한 유형의 사용자 입력 이벤트를 수신하기 위한 사용자 입력 이벤트 수신 모듈(10)을 포함할 수 있다. 수신된 사용자 입력 이벤트에 대해, 로컬 응답 데이터 업데이트 모듈(30)은 사용자 1으로부터의 로컬 사용자 입력 이벤트를 처리하는 것을 맡고 있다(예를 들면, 로컬 사용자 입력 이벤트와 연관된 응답 데이터를 생성하고 업데이트함). 원격 데이터 동기화 모듈(50)에서, 입력 이벤트 응답 모듈(510)과 데이터 프로세싱 모듈(530)은 (로컬 사용자 입력 이벤트와 동기화 되지 않았을 수 있는) 원격 사용자 입력 이벤트를 프로세싱하고 상이한 컴퓨터들이 서로 동기(synch)하며 동일한 네트워크 어플리케이션을 실행하도록 유지하는 것을 맡고 있다.
이 예시에서, 사용자 1과 연관된 컴퓨터는 사용자 1에 의해 트리거되는 3개의 로컬 입력 이벤트를 수신하고, 이 로컬 입력 이벤트는 3개의 상이한 네트워크 어플리케이션의 이미지 프레임과 각각 연관된 로컬 사용자 입력 이벤트 1, 로컬 사용자 입력 이벤트 2, 및 로컬 사용자 입력 이벤트 3이다. 위에서 언급된 바와 같이, 각 사용자 입력 이벤트에 대해, 로컬 응답 데이터 업데이트 모듈(30)은 응답 데이터를 생성하고 업데이트하고, 각각의 이미지 프레임을 랜더링하는 데 응답 데이터를 이용하도록 구현된다. 네트워크 어플리케이션이 네 번째 이미지 프레임을 랜더링할 때, 사용자 2와 연관된 컴퓨터로부터의 원격 사용자 입력 이벤트가 컴퓨터에 도착한다. 이 이벤트는 컴퓨터의 입력 이벤트 응답 모듈(510)이 로컬 사용자 입력 이벤트 1과 원격 사용자 입력 이벤트 1에 따라 동기화 데이터를 생성하도록 작동한다. 그러면 데이터 프로세싱 모듈(530)은 제1 이미지 프레임으로부터 제2, 제3, 및 제4 이미지 프레임으로 동기화 데이터를 업데이트함으로써, 동기화 데이터가 응답 데이터와 같이 동일한 횟수로 업데이트되도록 한다. 마지막으로, 동기화 데이터는 응답 데이터를 저장하기 위한 데이터 구조에 저장되고, 이에 따라 제4 이미지 프레임을 랜더링하는 데 이용되므로, 사용자 1과 연관된 컴퓨터에서의 제4 이미지 프레임은 사용자 2와 연관된 컴퓨터에서의 대응하는 이미지 프레임과 동기화되도록 한다. 사용자 2와 연관된 컴퓨터는, 3개의 로컬 사용자 입력 이벤트가 컴퓨터에 오랜 시간 지연되어 컴퓨터에 도착하여 응답 데이터를 업데이트하는 데 사용될 수 없는 경우, 거의 동일한 방법으로 3개의 로컬 사용자 입력 이벤트를 처리한다.
도 9는 일부 실시예에 따른 예시적인 클라이언트 컴퓨터의 블록도이다. 예시적인 클라이언트 컴퓨터(830)는 일반적으로 하나 이상의 프로세싱 유닛(CPU)(902), 하나 이상의 네트워크 또는 다른 통신 인터페이스(904), 메모리(910), 및 이러한 구성 요소들을 서로 연결하기 위한 하나 이상의 통신 버스(909)를 포함한다. 통신 버스(909)는 시스템 구성 요소 사이의 통신을 서로 연결하고 제어하는 회로 소자(가끔 칩셋(chipset)으로 불림)를 포함할 수 있다. 클라이언트 컴퓨터(830)는 사용자 입력 장치(905), 예를 들면 디스플레이(906)와 키보드(908)을 포함할 수 있다. 메모리(910)는 고속 랜덤 액세스 메모리(high speed random access memory)를 포함할 수 있고, 하나 이상의 마그네틱 디스크 기억 장치(magnetic disk storage device)와 같은, 비휘발성 메모리도 포함할 수 있다. 메모리(910)는 CPU(902)로부터 떨어져서 위치하는 대용량 기억 장치를 포함할 수 있다. 일부 실시예에서, 메모리(910)는 다음의 프로그램, 모듈, 및 데이터 구조, 또는 그것의 하위집합 또는 상위집합을 포함할 수 있다.
- 다양한 기본 시스템 서비스를 처리하기 위한 절차와 하드웨어 의존 과제(task)를 실행하기 위한 절차를 포함하는 운영 체제(912)
- 인터넷, 다른 광대역 네트워크(wide area network), 근거리 네트워크(local area network), 도시권 네트워크(metropolitan area network), 등과 같은 하나 이상의 (유선 또는 무선) 통신 네트워크를 통해, 클라이언트 컴퓨터(830)를 서버(810) 또는 다른 컴퓨터에 연결하기 위해 이용되는 네트워크 통신 모듈(914)
- 사용자 인터페이스(905)를 통해 사용자 입력을 수신하도록 구성되어 있는 사용자 인터페이스 모듈(916)
- 하나 이상의 클라이언트측 네트워크 어플리케이션(918), 도 4와 관련되어 위에서 설명한 바와 같이, 각 네트워크 어플리케이션은 사용자 입력 이벤트 수신 모듈(10), 로컬 응답 데이터 업데이트 모듈(30), 원격 데이터 동기화 모듈(50), 및 데이터 교체 모듈(70)을 더 포함한다.
도 10은 일부 실시예에 따른 서버의 블록도이다. 예시적인 서버(810)는 일반적으로 하나 이상의 프로세싱 유닛(CPU)(1002), 하나 이상의 네트워크 또는 다른 통신 인터페이스(1004), 메모리(1010), 및 이들 구성 요소를 서로 연결하기 위한 하나 이상의 통신 버스(1009)를 포함한다. 통신 버스(1009)는 시스템 구성 요소 사이의 통신을 서로 연결하고 제어하는 회로 소자(가끔 칩셋(chipset)으로 불림)를 포함할 수 있다. 서버(810)는 선택적으로 사용자 인터페이스(1005), 예를 들면 디스플레이(1006) 및 키보드(1008)를 포함할 수 있다. 메모리(1010)는 고속 랜덤 액세스 메모리(high speed random access memory)를 포함할 수 있고, 하나 이상의 마그네틱 디스크 기억 장치(magnetic disk storage device)와 같은, 비휘발성 메모리도 포함할 수 있다. 메모리(1010)는 CPU(1002)로부터 떨어져서 위치하는 대용량 기억 장치를 포함할 수 있다. 일부 실시예에서, 메모리(910)는 다음의 프로그램, 모듈, 및 데이터 구조, 또는 그것의 하위집합 또는 상위집합을 포함할 수 있다.
- 다양한 기본 시스템 서비스를 처리하기 위한 절차와 하드웨어 의존 과제(task)를 실행하기 위한 절차를 포함하는 운영 체제(1012)
- 인터넷, 다른 광대역 네트워크(wide area network), 근거리 네트워크(local area network), 도시권 네트워크(metropolitan area network), 등과 같은 하나 이상의 (유선 또는 무선) 통신 네트워크를 통해, 서버(810)를 다른 서버 또는 클라이언트 컴퓨터(830)에 연결하기 위해 이용되는 네트워크 통신 모듈(1014)
- 서버(810)의 적절한 운영을 위해 요구되는 메모리(1012)에 저장된 다른 모듈 및 데이터 구조를 초기화하는 시스템 초기화 모듈(1016)
- 사용자 인터페이스(1005)를 통해 사용자 입력을 수신하도록 구성되어 있는 사용자 인터페이스 모듈(1016)
- 하나 이상의 서버측 네트워크 어플리케이션(1020), 각 네트워크 어플리케이션은 사용자 정보 데이터(1022) (예를 들면, 사용자 식별자, 패스워드, 사용자 계정, 현재 사용자 상태)를 더 포함한다.
구체적인 실시예들은 위에서 설명되는데, 이는 본 발명을 이러한 구체적인 실시예들에 한정하고자 하는 의도는 없다고 이해될 것이다. 이와 반대로, 본 발명은 첨부된 청구항의 정신과 범위에 속하는 대체, 변형, 및 등가를 포함한다. 다수의 구체적 세부 사항은 본 명세서에 나타난 주제의 완전한 이해를 제공하기 위해 제시된다. 그러나 이 주제가 이러한 구체적인 세부 사항 없이도 실행될 수 있다는 것은 통상의 기술자에게 명백할 것이다. 다른 예시에서, 실시예들의 잘 알려지지 않은 측면을 불필요하게 불명확하게 할 수 있으므로 공지의 방법, 과정, 구성 요소 및 회로에 대해 상세히 설명되지 않는다.
본 명세서에서 본 발명의 설명에 사용되는 용어는 오직 구체적인 실시예들을 설명하려는 목적인것이며, 본 발명을 제한하고자 의도한 바는 아니다. 본 발명의 상세한 설명과 첨부된 청구항에서 사용된 바와 같이, 단수의 표현은 문맥에서 다른 뜻을 명확하게 지적하지 않는 한, 복수의 표현도 포함하는 것으로 의도된다. 본 명세서에서 사용된 “및/또는”이라는 표현 또한 하나 이상의 관련되어 열거된 구성에 대해 가능한 일부 또는 전부의 조합을 나타내고 포함한다고 이해될 것이다. 본 명세서에서 사용된 “포함하다”, “포함된”, 및/또는 “구비하는”이라는 표현은 언급된 특징, 작업, 구성 요소 및/또는 구성 부품의 존재를 명시하는 것이고, 하나 이상의 다른 특징, 작업, 구성 요소, 구성 부품, 및/또는 이들의 그룹의 존재 또는 부가는 배제하는 것이 아니라고 이해될 것이다.
본 명세서에서 사용된 바와 같이, “…이면”이라는 표현은, 문맥에 따라 이전에 제시된 조건에 부합하면, “…할 때” 또는 “…하는 대로” 또는 “판단에 대하여” 또는 “판단에 따라” 또는 “탐지한 것에 대하여”의 의미로 해석될 수 있다. 유사하게, “[이전에 제시된 조건에 부합한다고] 판단하면” 또는 “[이전에 제시된 조건에 부합]한다면” 또는 “[이전에 제시된 조건에 부합]할 때”라는 표현은, 문맥에 따라 이전에 제시된 조건에 부합하면, “판단된 대로” 또는 “판단에 대하여” 또는 “판단에 따라” 또는 “탐지한 대로” 또는 “탐지에 대하여”의 의미로 해석될 수 있다.
다양한 도면 중 일부는 특정한 순서로 일련의 논리적 단계들을 도시하고 있지만, 순서대로 되지 않은 단계들은 재배치될 수 있고 다른 단계들은 결합되거나 삭제될 수 있다. 일부 재배치되거나 다른 그룹화되는 것이 구체적으로 언급되어 있지는 않으나, 다른 것들은 당업자에게 명백할 것이므로, 대안의 모든 목록이 기재되지는 않는다. 뿐만 아니라, 단계들은 하드웨어, 펌웨어, 스프트웨어 또는 이들의 임의의 조합으로 실행될 수 있다는 것을 이해해야 한다.
전술한 설명은 설명의 목적으로 구체적인 실시예들에 참조되어 설명된다. 그러나, 위에서 도시된 논의는 본 발명이 개시된 정확한 형태로 제한된다거나 완전해야 한다는 의도는 아니다. 수많은 수정 및 변형이 전술한 지침의 측면에서 가능하다. 실시예들은 본 발명의 원리 및 그것의 실질적인 응용을 가장 잘 설명하기 위해 선택되어 설명되었으므로, 당업자가 특별한 사용에 적합하도록 다양한 변형을 한 다양한 실시예 및 발명을 가장 잘 활용할 수 있도록 한다.

Claims (18)

  1. 컴퓨터에 의해 구현되는 데이터 동기화 방법에 있어서,
    하나 이상의 프로세서와, 상기 하나 이상의 프로세서에 의해 실행되는 프로그램을 저장하는 메모리를 가진 컴퓨터에 의해 수행되는 이하의 단계:
    네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신하는 단계 - 각각의 사용자 입력 이벤트는 상기 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고, 상기 사용자 입력 이벤트는 원격 소스(remote source)로부터 적어도 하나의 원격 사용자 입력 이벤트를 포함함 - ;
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하는 단계;
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하는 단계;
    상기 응답 데이터를 상기 동기화 데이터로 교체하는 단계; 및
    상기 동기화 데이터를 이용하여 상기 네트워크 어플리케이션의 현재 이미지 프레임을 렌더링하는 단계
    를 포함하는 데이터 동기화 방법.
  2. 제1항에 있어서,
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하는 단계는:
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대응하는 응답 데이터를 제1 프레임 속도(frame rate)로 업데이트하는 단계; 및
    상기 응답 데이터를 이용하여 상기 네트워크 어플리케이션의 현재 이미지 프레임을 렌더링(rendering)하는 단계
    를 더 포함하는,
    데이터 동기화 방법.
  3. 제2항에 있어서,
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하는 단계는:
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대한 초기 동기화 데이터를 생성하는 단계; 및
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일해질 때까지 상기 초기 동기화 데이터에 프레임마다 업데이트를 실행하는 단계
    를 더 포함하는,
    데이터 동기화 방법.
  4. 제3항에 있어서,
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일해질 때까지 상기 초기 동기화 데이터에 프레임마다 업데이트를 실행하는 단계는:
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대응하는 동기화 데이터를 제2 프레임 속도로 업데이트하는 단계;
    상기 동기화 데이터의 업데이트의 수와 상기 응답 데이터의 업데이트의 수를 각각 결정하는 단계;
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일한 경우, 상기 응답 데이터를 상기 동기화 데이터로 교체하는 단계; 및
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일하지 않은 경우, 상기 동기화 데이터를 제2 프레임 속도로 업데이트하는 상기 단계를 반복하는 단계
    를 더 포함하는,
    데이터 동기화 방법.
  5. 제4항에 있어서,
    상기 제2 프레임 속도는 상기 제1 프레임 속도보다 큰, 데이터 동기화 방법.
  6. 컴퓨터 시스템에 있어서,
    하나 이상의 프로세서;
    메모리; 및
    상기 메모리에 저장되어 있으며 상기 하나 이상의 프로세서에 의한 실행을 위해 구성되어 있는 하나 이상의 프로그램 모듈
    을 포함하고,
    상기 하나 이상의 프로그램 모듈은:
    네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신하도록 구성되어 있는 사용자 입력 이벤트 수신 모듈 --각각의 사용자 입력 이벤트는 상기 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고, 상기 사용자 입력 이벤트는 원격 소스(remote source)로부터의 적어도 하나의 원격 사용자 입력 이벤트를 포함함 - ;
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하도록 구성되어 있는 로컬 응답 데이터 업데이트 모듈;
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 상기 현재 이미지 프레임으로 업데이트하도록 구성되어 있는 원격 데이터 동기화 모듈; 및
    상기 응답 데이터를 상기 동기화 데이터로 교체하고, 상기 동기화 데이터를 이용하여 상기 네트워크 어플리케이션의 현재 이미지 프레임을 렌더링하도록 구성되어 있는 데이터 교체 모듈
    을 포함하는,
    컴퓨터 시스템.
  7. 제6항에 있어서,
    상기 로컬 응답 데이터 업데이트 모듈은:
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대응하는 응답 데이터를 제1 프레임 속도(frame rate)로 업데이트하고;
    상기 응답 데이터를 이용하여 상기 네트워크 어플리케이션의 현재 이미지 프레임을 렌더링하도록
    더 구성된,
    컴퓨터 시스템.
  8. 제7항에 있어서,
    상기 원격 데이터 동기화 모듈은:
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대한 초기 동기화 데이터를 생성하고;
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일해질 때까지 상기 초기 동기화 데이터에 프레임마다 업데이트를 실행하도록
    더 구성된,
    컴퓨터 시스템.
  9. 제8항에 있어서,
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일해질 때까지 상기 초기 동기화 데이터에 프레임마다 업데이트를 실행하도록 하는 명령은:
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대응하는 동기화 데이터를 제2 프레임 속도로 업데이트하도록 하는 명령;
    상기 동기화 데이터의 업데이트의 수와 상기 응답 데이터의 업데이트의 수를 각각 결정하도록 하는 명령;
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일한 경우, 상기 응답 데이터를 상기 동기화 데이터로 교체하도록 하는 명령; 및
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일하지 않는 경우, 상기 동기화 데이터의 업데이트를 반복하도록 하는 명령
    을 더 포함하는,
    컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 제2 프레임 속도는 상기 제1 프레임 속도보다 큰, 컴퓨터 시스템.
  11. 하나 이상의 명령을 저장하고 있는, 비일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 하나 이상의 명령은, 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    네트워크 어플리케이션과 연관된 사용자 입력 이벤트를 수신하고, - 각각의 사용자 입력 이벤트는 상기 네트워크 어플리케이션의 각 이미지 프레임에 각각 대응하고 상기 사용자 입력 이벤트는 원격 소스(remote source)로부터 적어도 하나의 원격 사용자 입력 이벤트를 포함함 - ;
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하고;
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 상기 현재 이미지 프레임으로 업데이트하고;
    상기 응답 데이터를 상기 동기화 데이터로 교체하고,
    상기 동기화 데이터를 이용하여 상기 네트워크 어플리케이션의 현재 이미지 프레임을 렌더링하도록 하는,
    비일시적 컴퓨터 판독 가능 저장 매체.
  12. 제11항에 있어서,
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 응답 데이터를 생성하고 상기 응답 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하도록 하는 명령은:
    상기 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대응하는 응답 데이터를 제1 프레임 속도(frame rate)로 업데이트하도록 하는 명령; 및
    상기 응답 데이터를 이용하여 상기 네트워크 어플리케이션의 상기 현재 이미지 프레임을 렌더링(rendering)하도록 하는 명령
    을 더 포함하는,
    비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제12항에 있어서,
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임으로부터 동기화 데이터를 생성하고 상기 동기화 데이터를 상기 네트워크 어플리케이션의 현재 이미지 프레임으로 업데이트하기 위한 명령은:
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대한 초기 동기화 데이터를 생성하기 위한 명령; 및
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일해질 때까지 상기 초기 동기화 데이터에 프레임마다 업데이트를 실행하기 위한 명령
    을 더 포함하는,
    비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서,
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일해질 때까지 상기 초기 동기화 데이터에 프레임마다 업데이트를 실행하기 위한 명령은:
    상기 적어도 하나의 원격 사용자 입력 이벤트와 연관된 각 이미지 프레임에 대응하는 동기화 데이터를 제2 프레임 속도로 업데이트하기 위한 명령;
    상기 동기화 데이터의 업데이트의 수와 상기 응답 데이터의 업데이트의 수를 각각 결정하기 위한 명령;
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일한 경우, 상기 응답 데이터를 상기 동기화 데이터로 교체하기 위한 명령; 및
    상기 동기화 데이터의 업데이트의 수가 상기 응답 데이터의 업데이트의 수와 동일하지 않는 경우, 상기 동기화 데이터의 업데이트를 반복하기 위한 명령
    을 더 포함하는,
    비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제14항에 있어서,
    상기 제2 프레임 속도는 상기 제1 프레임 속도보다 큰, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 삭제
  17. 삭제
  18. 삭제
KR1020157006852A 2012-08-21 2013-08-19 네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템 KR101576107B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201210297918.8 2012-08-21
CN201210297918.8A CN103634333B (zh) 2012-08-21 2012-08-21 网络应用的数据同步方法和装置
PCT/CN2013/081791 WO2014029312A1 (en) 2012-08-21 2013-08-19 Systems and methods for data synchronization in a network application

Publications (2)

Publication Number Publication Date
KR20150036829A KR20150036829A (ko) 2015-04-07
KR101576107B1 true KR101576107B1 (ko) 2015-12-09

Family

ID=50149438

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157006852A KR101576107B1 (ko) 2012-08-21 2013-08-19 네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템

Country Status (9)

Country Link
US (1) US9444867B2 (ko)
EP (1) EP2888660B1 (ko)
JP (1) JP5922846B2 (ko)
KR (1) KR101576107B1 (ko)
CN (1) CN103634333B (ko)
CA (1) CA2881513C (ko)
HK (1) HK1190534A1 (ko)
SG (1) SG11201501081QA (ko)
WO (1) WO2014029312A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107222510B (zh) * 2017-07-21 2018-10-09 腾讯科技(深圳)有限公司 一种游戏同步方法、系统及相关设备
CN110898425B (zh) * 2019-11-27 2021-05-11 腾讯科技(深圳)有限公司 信息同步方法和装置、存储介质及电子装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1431819A (zh) * 2002-01-09 2003-07-23 英华达(上海)电子有限公司 可令移动电话进行无线网络对打游戏的方法
CN1567822A (zh) * 2003-06-23 2005-01-19 英华达(上海)电子有限公司 令多个电子装置同时进行网络游戏的方法
CN100589499C (zh) * 2005-09-26 2010-02-10 腾讯科技(深圳)有限公司 一种联网游戏中角色的移动方法
US20070198744A1 (en) * 2005-11-30 2007-08-23 Ava Mobile, Inc. System, method, and computer program product for concurrent collaboration of media
US20080133736A1 (en) * 2006-11-30 2008-06-05 Ava Mobile, Inc. System, method, and computer program product for tracking digital media in collaborative environments
US20080133551A1 (en) * 2006-11-30 2008-06-05 Ava Mobile, Inc. System, method, and computer program product for managing rights of media in collaborative environments
US8506404B2 (en) * 2007-05-07 2013-08-13 Samsung Electronics Co., Ltd. Wireless gaming method and wireless gaming-enabled mobile terminal
US20090193345A1 (en) * 2008-01-28 2009-07-30 Apeer Inc. Collaborative interface
CN101420347B (zh) * 2008-03-18 2011-11-09 王睿斌 一种将Flash单机双人游戏在双主机上同步运行的方法
CN101330418A (zh) * 2008-07-21 2008-12-24 中国民航大学 一种机场航班信息实时跟踪装置及其处理方法
JP2010172732A (ja) * 2010-04-01 2010-08-12 Keizo Watanabe ネットワークゲームシステム及びプログラム
CN102158633B (zh) * 2011-01-24 2012-12-26 广东威创视讯科技股份有限公司 一种图像信号同步处理方法

Also Published As

Publication number Publication date
CA2881513C (en) 2017-09-26
EP2888660A4 (en) 2015-07-08
WO2014029312A1 (en) 2014-02-27
CN103634333A (zh) 2014-03-12
CN103634333B (zh) 2015-04-08
US20140067928A1 (en) 2014-03-06
US9444867B2 (en) 2016-09-13
JP5922846B2 (ja) 2016-05-24
EP2888660B1 (en) 2021-10-06
HK1190534A1 (en) 2014-07-04
EP2888660A1 (en) 2015-07-01
KR20150036829A (ko) 2015-04-07
SG11201501081QA (en) 2015-04-29
JP2015534147A (ja) 2015-11-26
CA2881513A1 (en) 2014-02-27

Similar Documents

Publication Publication Date Title
JP7072677B2 (ja) 仮想シーンのシーン画像を送信するための方法及び装置、コンピュータデバイス並びにコンピュータ読み取り可能記憶媒体
Verbelen et al. Leveraging cloudlets for immersive collaborative applications
CN104954349B (zh) 一种2d游戏中客户端的同步方法、装置和系统
WO2018201935A1 (zh) 多化身位置同步系统、方法、装置及电子设备和存储介质
Luo et al. Plink: Discovering and exploiting locality for accelerated distributed training on the public cloud
CN105208060B (zh) 业务数据同步方法、装置及系统
Cidon et al. MARS: adaptive remote execution for multi-threaded mobile devices
CN112260853B (zh) 容灾切换方法、装置、存储介质及电子设备
CN111327692A (zh) 模型训练方法、装置及集群系统
KR101576107B1 (ko) 네트워크 어플리케이션에서 데이터 동기화하는 방법 및 시스템
WO2022132970A1 (en) Systems and methods for control of a virtual world
CN113556387A (zh) 边缘网关控制方法及系统、装置、电子设备、存储介质
CN111865720A (zh) 用于处理请求的方法、装置、设备以及存储介质
CN111090783A (zh) 推荐方法、装置和系统、图嵌入的游走方法、电子设备
CN113472638B (zh) 边缘网关控制方法及系统、装置、电子设备、存储介质
CN109802989A (zh) 数据传输方法和装置、服务器和终端
Rehfeld et al. An actor-based distribution model for realtime interactive systems
CN109768897B (zh) 一种服务器部署方法及装置
CN114205414A (zh) 基于服务网格的数据处理方法、装置、电子设备和介质
CN112612780A (zh) 数据库操作方法及装置
CN114222167B (zh) 云投屏控制方法、装置、服务器、系统和可读存储介质
CN115580667B (zh) 数据传输方法、装置、设备及存储介质
US11853797B2 (en) Method, device, and computer program product for deploying visual resource
CN113676746B (zh) 用于检测直播抖动的方法、装置、设备和介质
CN115733836A (zh) 用于远程多人vr互动的云边协同实现方法、装置和系统

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181119

Year of fee payment: 4