KR20100113503A - System and method for storing program code and data within an application hosting center - Google Patents
System and method for storing program code and data within an application hosting center Download PDFInfo
- Publication number
- KR20100113503A KR20100113503A KR1020107014738A KR20107014738A KR20100113503A KR 20100113503 A KR20100113503 A KR 20100113503A KR 1020107014738 A KR1020107014738 A KR 1020107014738A KR 20107014738 A KR20107014738 A KR 20107014738A KR 20100113503 A KR20100113503 A KR 20100113503A
- Authority
- KR
- South Korea
- Prior art keywords
- video
- game
- user
- frame
- latency
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000002452 interceptive effect Effects 0.000 claims abstract description 35
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000007906 compression Methods 0.000 description 134
- 230000006835 compression Effects 0.000 description 129
- 230000033001 locomotion Effects 0.000 description 54
- 238000003860 storage Methods 0.000 description 35
- 230000005540 biological transmission Effects 0.000 description 33
- 238000012545 processing Methods 0.000 description 30
- 238000004422 calculation algorithm Methods 0.000 description 27
- 239000000872 buffer Substances 0.000 description 25
- 230000003111 delayed effect Effects 0.000 description 25
- 230000009471 action Effects 0.000 description 23
- 238000013459 approach Methods 0.000 description 21
- 230000003287 optical effect Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 20
- 230000000007 visual effect Effects 0.000 description 20
- 230000008901 benefit Effects 0.000 description 19
- 238000005516 engineering process Methods 0.000 description 19
- 230000018109 developmental process Effects 0.000 description 17
- 230000000694 effects Effects 0.000 description 17
- 230000008859 change Effects 0.000 description 16
- 238000004519 manufacturing process Methods 0.000 description 15
- 238000012546 transfer Methods 0.000 description 15
- 238000003491 array Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 14
- 241000282414 Homo sapiens Species 0.000 description 13
- 238000011161 development Methods 0.000 description 13
- 230000002829 reductive effect Effects 0.000 description 12
- 230000006399 behavior Effects 0.000 description 11
- 230000001413 cellular effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 11
- 230000001934 delay Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 10
- 239000004606 Fillers/Extenders Substances 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000008520 organization Effects 0.000 description 9
- 238000012937 correction Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 8
- 239000000835 fiber Substances 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 239000000463 material Substances 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000012384 transportation and delivery Methods 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000001351 cycling effect Effects 0.000 description 4
- 239000013307 optical fiber Substances 0.000 description 4
- 238000012856 packing Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000002411 adverse Effects 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 239000011521 glass Substances 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 239000011449 brick Substances 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 230000001815 facial effect Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 241000209202 Bromus secalinus Species 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 101100346764 Mus musculus Mtln gene Proteins 0.000 description 1
- 241001025261 Neoraja caerulea Species 0.000 description 1
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 description 1
- 240000007591 Tilia tomentosa Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000000386 athletic effect Effects 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000036461 convulsion Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000002996 emotional effect Effects 0.000 description 1
- 230000006397 emotional response Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007103 stamina Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8545—Content authoring for generating interactive applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2402—Monitoring of the downstream path of the transmission network, e.g. bandwidth available
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4781—Games
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
어플리케이션 호스팅 센터 내에 프로그램 코드 및 데이터를 저장하기 위한 시스템 및 방법이 개시된다. 예컨대, 일 실시예의 컴퓨터-실행 방법은 온라인 어플리케이션을 실행하기 위해 사용된 프로그램 코드 및/또는 데이터를 제1타입 및 제2타입으로 분할하는 단계; 상기 제1타입의 프로그램 코드 및 데이터를 비교적 낮은 레이턴시 메모리 접근을 제공하는 제1타입의 메모리에 저장하는 단계; 상기 제2타입의 프로그램 코드 및 데이터를 상기 제1타입의 메모리에 비해 비교적 높은 레이턴시 메모리 접근을 제공하는 제2타입의 메모리에 저장하는 단계; 온라인 어플리케이션을 실행하기 위해 클라이언트 요청에 따라 상기 제1 및 제2타입의 메모리로부터 프로그램 코드 및 데이터를 가져오는 단계; 및 상기 어플리케이션에 의해 생성된 이미지를 나타내는 스트리밍 인터랙티브 비디오 스트림을 클라이언트로 전송하는 단계를 포함한다.Systems and methods for storing program code and data in an application hosting center are disclosed. For example, a computer-implemented method of one embodiment may include partitioning program code and / or data used to execute an online application into a first type and a second type; Storing the first type of program code and data in a first type of memory that provides relatively low latency memory access; Storing the second type of program code and data in a second type of memory that provides relatively higher latency memory access than the first type of memory; Retrieving program code and data from the first and second types of memory in response to a client request to execute an online application; And transmitting to the client a streaming interactive video stream representing an image generated by the application.
Description
본 출원은 "무선 비디오 게이밍을 위한 방법 및 장치"란 명칭으로 2002년 12월 10일 출원된 10/315,460의 부분 계속출원(continuation-in-part; CIP)으로, 이는 본 CIP 출원의 양수인에 의해서 양수되었다.This application is a continuation-in-part (CIP) filed 10 / 315,460 filed Dec. 10, 2002 entitled “Method and Apparatus for Wireless Video Gaming,” by the assignee of the CIP application. Was positive.
본 발명은 일반적으로 오디오 및 비디오 매체의 접근 및 조작을 위한 사용자의 능력을 향상시키는 데이터 처리 시스템 분야에 관하여 개시한다.The present invention generally relates to the field of data processing systems that enhances a user's ability to access and manipulate audio and video media.
기록된 오디오 및 동영상 매체는 토마스 에디슨의 날 이래로 사회의 한 측면이 되었다. 20세기의 시작에는 기록된 오디오 미디어(실린더(cylinders) 및 레코드) 및 동영상 미디어(니켈로디언(nickelodeons) 및 무비)가 널리 보급되었으나, 양 기술은 아직 초창기에 놓여 있었다. 1920년대 후반에 대중 시장에서 영화는 오디오와 결합하였고, 오디오를 갖는 컬러 동영상이 뒤따랐다. 라디오 방송은 크게 방송 대중 시장 오디오 미디어의 광고 지지 형태로 점진적으로 발전했다. 텔레비전 방송 표준이 1940년대 중반에 확립되었을 때, 텔레비전은 이미 기록되거나 라이브 영화를 홈으로 가져오는 방송 대중 시장 매체의 한 형태로 라디오와 결합하였다.Recorded audio and video media have been an aspect of society since the day of Thomas Edison. At the beginning of the twentieth century, recorded audio media (cylinders and records) and video media (nickelodeons and movies) became widespread, but both technologies were still in their infancy. In the late 1920s, in the mass market, movies were combined with audio, followed by color video with audio. Radio broadcasting has evolved significantly in the form of ad support for broadcast mass market audio media. When television broadcast standards were established in the mid-1940s, television combined with radio as a form of broadcast mass-market medium that already recorded or brought live movies home.
20세기 중반까지, 미국 가정의 대다수는 기록된 오디오 매체를 재생하기 위해 포노그래프(phonograph) 레코드 플레이어, 생방송 오디오를 수신하기 위한 라디오, 및 라이브 방송 오디오/비디오(A/V) 미디어를 재생하기 위한 텔레비전 세트를 갖고 있었다. 매우 자주 이러한 3가지 "미디어 플레이어(media players)"(레코드 플레이어, 라디오 및 텔레비전)은 가정에서 "미디어 센터(media center)"가 되는 공통 스피커를 공유하는 하나의 캐비닛으로 합쳐진다. 비록 미디어 선택은 소비자에게 제한되었을지라도, 미디어 "환경(ecosystem)"은 꽤 안정적이었다. 대부분 소비자는 "미디어 플레이어"를 어떻게 사용하는지 알았고, 그들 능력의 전체 범위를 즐길 수 있었다. 동시에, 미디어 발행인(media publishers)(주로 동영상 및 텔레비전 스튜디오 및 음반 회사)은 그들의 미디어를 중고 미디어의 재판매(resale)와 같은 "두 번째 판매(second sales)" 또는 광범위한 저작권 침해(piracy)를 겪지 않고 극장과 가정에 배급할 수 있었다. 전형적인 발행인은 두 번째 판매로부터는 수익을 얻지 못하고, 그것만으로는 새로운 판매를 위해 중고 미디어의 구매자로부터 얻어지게 될 수익은 줄어든다. 비록 20세기 중반에 중고 레코드가 팔렸을지 모르지만, 그러한 판매는 레코드 발행인에게 큰 영향을 미치지 못하였다. 왜냐하면, 영화 또는 비디오 프로그램 - 어른들에 의해 한번 또는 적은 수로 시청 되는 것-과는 다르게 음악 트랙은 수백 또는 수천 번 듣게 될 것이기 때문이다. 그래서 음악 미디어는 영화/비디오 미디어보다 훨씬 적게 "손상되기 쉬운(perishable)"(예컨대 성인 소비자에게 지속적인 가치가 있다)것이다. 레코드가 한번 구매되면, 만약 소비자가 음악을 좋아한다면, 소비자는 오랫동안 그것을 보유할 수 있을 것이다.By the mid-twentieth century, the majority of American households used a phonograph record player to play recorded audio media, radio to receive live audio, and live broadcast audio / video (A / V) media. I had a television set. Very often these three "media players" (record players, radios and televisions) are combined into a cabinet that shares a common speaker that becomes a "media center" in the home. Although media choice was limited to consumers, the media "ecosystem" was quite stable. Most consumers knew how to use "media players" and enjoyed the full range of their capabilities. At the same time, media publishers (primarily video and television studios and record companies) do not suffer from "second sales" or extensive piracy, such as resale of used media. Could distribute to theaters and homes. A typical publisher does not profit from the second sale, which alone reduces the revenue from buyers of used media for new sales. Although used records may have been sold in the mid-20th century, such sales had little impact on record publishers. Because unlike a movie or video program—one or a few times watched by adults—the music tracks will be heard hundreds or thousands of times. So music media is much less "perishable" (e.g. of lasting value to adult consumers) than movie / video media. Once a record is purchased, if the consumer likes music, the consumer will be able to hold it for a long time.
20세기 중반부터 현재까지, 미디어 환경은 소비자 및 발행인의 이익 및 손해에 있어서 일련의 급진적인 변화들을 겪어왔다. 오디오 레코드, 특히 높은 품질의 스테레오 사운드를 가진 카세트 테이프의 광범위한 보급에 따르면, 확실히 거기에는 높은 정도의 소비자 편리성이 있었다. 그러나 그것은 또한 소비자 미디어로 광범위한 실시(저작권 침해)의 시작임을 보여준다. 확실히, 많은 소비자는 편리함을 위해 순수하게 그들 자신의 레코드를 테이프 녹음한 카세트 테이프를 사용했으나, 점점 더 소비자(예컨대, 서로 레코드 수집품에 쉽게 접근하는 기숙사의 학생들)는 저작권 침해된 카피들을 만들게 될 것이다. 또한, 소비자는 발행인으로부터 레코드 또는 테이프를 사는 것보다 라디오를 통해 재생된 음악을 테이프 녹음할 것이다.From the mid-20th century to the present day, the media environment has undergone a series of radical changes in the interests and losses of consumers and publishers. There was certainly a high degree of consumer convenience, according to the widespread use of audio records, especially cassette tapes with high quality stereo sound. But it also shows that consumer media is the beginning of widespread enforcement. Certainly, many consumers have used cassette tapes that purely taped their own records for convenience, but more and more consumers (eg, students in dormitories with easy access to each other's record collections) will make copyrighted copies . In addition, the consumer will tape record music played over the radio rather than buying a record or tape from the publisher.
소비자 VCR의 도래는 보다 많은 소비자 편의를 가져왔고, 현재 VCR이 늦은 시간에 시청될 수 있는 TV 쇼를 기록하기 위해 설치된 이래로, 그것은 또한 비디오 대여사업의 창조를 가져왔으며, TV 프로그래밍뿐만 아니라 영화는 "주문(On demand)"에 기초하여 접근할 수 있게 되었다. 1980년대 중반 이후에 홈 미디어 장치의 대중 시장의 빠른 발전은 전례가 없이 소비자를 위한 편의와 선택의 수준을 이끌어왔고, 미디어 출판 시장의 빠른 확장을 이끌어왔다.The advent of consumer VCRs has brought more consumer convenience, and since the VCR is now installed to record TV shows that can be watched late, it also brought about the creation of a video rental business, as well as TV programming as well as movies. On demand ". Since the mid-1980s, the rapid development of the mass market of home media devices has led to an unprecedented level of convenience and choice for consumers, and to a rapid expansion of the media publishing market.
오늘날, 소비자는 대부분 미디어의 특정 형태 또는 특정 발행인에 얽매여서, 미디어 장치의 과잉뿐만 아니라 미디어 선택의 과잉과 직면하고 있다. 미디어의 열렬한 소비자는 집의 다양한 방들에서 텔레비전 및 컴퓨터와 연결된 다수의 장치를 소유하여, 한 그룹의 무선 제어들뿐만 아니라 개인 컴퓨터(PCs) 및/또는 하나 이상의 텔레비전과 케이블의 "혼란 상태(rat's nest)"를 초래한다. (본 출원의 내용에서, "개인용 컴퓨터(Personal Computer)" 또는 "PC"는 홈이나 오피스에 적합한 어떠한 종류의 컴퓨터를 칭하고, 이는 데스크톱, Macintosh® 또는 그 밖의 윈도우 기반이 아닌 컴퓨터, 윈도우 기반의 장치, 유닉스 계열, 랩탑(laptop) 등을 포함한다.) 이러한 장치들은 비디오 게임 콘솔(Video game console), VCR, DVD 플레이어, 오디오 서라운드-사운드 프로세서/앰프(Audio sorround-sound processor/amplifier), 위성 셋톱 박스(satellite set-top box), 케이블 TV 셋톱 박스(cable TV set-top box) 등이다. 그리고 열광적인 소비자를 위해, 양립가능한 이슈들 때문에 다수의 비슷한 기능을 하는 장치가 있다. 예컨대, 소비자는 HD-DVD 및 Blu-ray DVD 플레이어, 또는 Microsoft XBOX®, Sony Playstation® 비디오 게임 시스템을 소유할 것이다. 더욱이, 어떤 게임간에 게임 콘솔 버전의 양립불가능성 때문에, 소비자는 XBox 및 XBox 360®과 같은 후 버전을 둘 다 소유할 것이다. 종종, 소비자들은 사용에 대한 어느 비디오 입력 및 어느 원격 조작에 관하여 어리둥절해진다. 디스크가 올바른 플레이어(예컨대, DVD, HD-DVD, Blu-ray, Xbox 또는 Playstation)에 위치하고, 그 비디오 및 오디오 입력이 해당 장치를 위해 선택되며, 올바른 리모트 컨트롤이 발견된 후에도, 소비자는 여전히 기술적 도전에 직면하게 된다. 예컨대, 와이드 스크린 DVD의 경우에, 사용자는 먼저 결정하고, TV 또는 모니터 스크린에 올바른 애스펙트비(aspect ratio)(예컨대. 4:3, Full, Zoom, Wide Zoom, Cinema Wide 등)로 설정하는 것이 필요로 된다. 유사하게, 사용자는 먼저 결정하고, 이어 올바른 오디오 서라운드 사운드 시스템 포맷(예컨대, AC-3, Dolby Digital, DTS 등)으로 설정하는 것이 필요로 된다. 매번, 소비자는 그들의 텔레비전 또는 오디오 시스템의 충분한 성능으로 미디오 컨텐츠를 즐기지 못한다는 것을 모른다(예컨대, 잘못된 애스팩트비로 일그러진 영화를 시청하는 것, 또는 서라운드 사운드(surround sound)보다 스테레오(stereo)에서 오디오를 청취하는 것).Today, most consumers are constrained by a particular type of media or a particular publisher, facing an excess of media choices as well as an excess of media devices. An avid consumer of media owns a number of devices connected to televisions and computers in various rooms of the home, so that not only a group of wireless controls, but also a "rat's nest" of personal computers (PCs) and / or one or more televisions and cables ) ". (In the context of this application, "Personal Computer" or "PC" refers to any kind of computer suitable for home or office, which is a desktop, Macintosh ® or other non-Windows-based, Windows-based device). These devices include video game consoles, VCRs, DVD players, audio sorround-sound processors / amplifiers, and satellite set-tops. Boxes (satellite set-top box), cable TV set-top box, and the like. And for the frenzied consumer, there are a number of similar functions because of compatible issues. For example, a consumer would own HD-DVD and Blu-ray DVD players, or Microsoft XBOX ® , Sony Playstation ® video game systems. Moreover, because of the incompatibility of game console versions between certain games, consumers will own both later versions, such as XBox and XBox 360 ® . Often, consumers are bewildered about which video input and which remote operation to use. Even after the disc is located in the correct player (e.g. DVD, HD-DVD, Blu-ray, Xbox or Playstation), its video and audio inputs are selected for the device, and the correct remote control is found, the consumer still remains a technical challenge Will face. For example, in the case of widescreen DVDs, the user needs to first determine and set the correct aspect ratio (eg 4: 3, Full, Zoom, Wide Zoom, Cinema Wide, etc.) for the TV or monitor screen. It becomes Similarly, the user needs to first determine and then set the correct audio surround sound system format (e.g., AC-3, Dolby Digital, DTS, etc.). Every time, consumers don't know that they don't enjoy the media content with the full performance of their television or audio system (e.g. watching a movie distorted with the wrong aspect ratio, or audio in stereo rather than surround sound). Listening).
점차로, 인터넷 기반의 미디어 장치들이 장치의 스택(stack)에 부가된다. Sonos® 디지털 음악 시스템(Digital Music System)과 같은 오디오 장치들은 인터넷으로부터 직접 오디오를 스트림(stream)한다. 마찬가지로, SlingboxTM 엔터테인먼트 플레이어와 같은 장치들은 홈네트워크를 통해서 비디오를 스트림하고, 레코드하거나 인터넷을 통해서 PC와 떨어져서 시청할 수 있다. 그리고 인터넷 프로토콜 텔레비젼(IPTV) 서비스는 종종 디지털 가입자 회선(Digital subscriber line ; DSL) 또는 그 밖의 홈 인터넷 연결을 통해서 케이블 TV와 같은 서비스를 제공한다. 또한 Moxi® 미디어 센터 및 윈도우XP 미디어 센터 에디션이 구동되는 PC들과 같은 단일 장치로 다수의 미디어 기능들을 통합하려는 최근의 노력이 있다. 이들 장치의 각각이 그를 수행하는 기능을 위한 편리성의 요소를 제공하는 반면에, 각각은 대부분의 미디어에 대한 유비쿼터스(ubiquitous) 및 단순한 접근이 부족하다. 더욱이, 잦은 비싼 처리 및/또는 로컬 기억장치에 대한 필요성 때문에 그러한 장치는 생산을 위해 수백 달러의 비용이 소비된다. 추가적으로 이러한 현대 소비자 전자 장치(consumer electronic devices)는 전형적으로 동작 중이 아님에도 많은 전력을 소모하고, 이는 에너지 자원의 낭비 및 시간 경과에 따라 고가로 됨을 의미한다. 예컨대, 어떤 장치는 소비자가 그것을 끄거나 다른 비디오 입력으로 전환하는 것을 무시하면, 작동을 계속하게 될 것이다. 그리고, 어떠한 장치도 완전한 솔루션이 아니기 때문에, 가정 내에서 다른 장치의 스택(stack)과 통합되어야 하고, 이는 여전히 리모트 컨트롤의 바다 및 혼란스런 전선으로 사용자를 떠나게 한다.Increasingly, Internet-based media devices are added to a stack of devices. Audio devices such as the Sonos ® Digital Music System stream audio directly from the Internet. Similarly, devices such as the Slingbox ™ entertainment player can stream, record, or watch video away from the PC via the home network. In addition, Internet Protocol Television (IPTV) services often provide services such as cable TV through digital subscriber line (DSL) or other home Internet connections. There is also recent effort to integrate multiple media functions into a single device, such as PCs running Moxi ® Media Center and Windows XP Media Center Edition. While each of these devices provides an element of convenience for the function that performs them, each lacks ubiquitous and simple access to most media. Moreover, due to frequent expensive processing and / or the need for local storage, such devices are costing hundreds of dollars for production. In addition, these modern consumer electronic devices typically consume a lot of power even when they are not in operation, which means that they waste energy resources and become expensive over time. For example, some devices will continue to operate if the consumer ignores turning them off or switching to another video input. And since no device is a complete solution, it must be integrated with a stack of other devices in the home, which still leaves the user on the sea and chaotic wires of the remote control.
더욱이, 많은 새로운 인터넷 기반의 장치가 적절히 동작할 때, 그들은 전형적으로 그 밖의 형태로 이용할 수 있는 것보다 포괄적인 형태(generic form)로 미디어를 제안한다. 예컨대, 인터넷을 통해 비디오를 스트림하는 장치는 단지 비디오, 게임, 또는 감독의 해설의 "구성(making of)" 과 같은, 종종 DVD에 동반되는 대화형 "추가(extras)"가 아닌 비디오 재료(video material)를 스트림한다. 이는 종종 대화형 재료가 국부적으로 대화(interactivity)를 다루는 특정 장치를 위해 의도된 특정 형식으로 제조된다는 사실에 기인한다. 예컨대, DVD, HD-DVD, 및 Blu-ray 디스크 각각은 그들 자신의 특정한 인터랙티브 형식을 가지고 있다. 모든 인기있는 형식을 지원하기 위해서 개발되었던 어떤 홈 미디어 장치 또는 로컬 컴퓨터는 소비자가 작동시키는데 복잡하고 상당히 고가로 되는 정교화(sophistication) 및 유연성(flexibility)의 수준을 요구한다.Moreover, when many new Internet-based devices work properly, they typically offer media in a generic form than is available in other forms. For example, a device that streams video over the Internet is a video material other than the interactive "extras" that often accompany DVDs, such as "making of" video, games, or director's commentary. stream the material. This is often due to the fact that the interactive material is made in a particular format intended for a particular device that handles interactivity locally. For example, DVD, HD-DVD, and Blu-ray Discs each have their own specific interactive format. Some home media devices or local computers that have been developed to support all popular formats require a level of sophistication and flexibility that is complex and fairly expensive for consumers to operate.
그 문제에 추가하여, 만약 앞으로 새로운 포맷이 소개되면, 로컬 장치는 새로운 포맷을 지원하기 위한 하드웨어 성능을 갖지 못할 것이고, 이는 소비자가 업그레이드된 로컬 미디어 장치를 구입해야함을 의미한다. 예컨대, 만약 고해상도(higher-resolution) 비디오 또는 입체음향(stereoscopic) 비디오(예컨대, 각각의 눈을 위한 하나의 비디오 스트림)는 최근에 소개되었고, 로컬 장치가 비디오를 디코드하기 위해 컴퓨터적인 성능을 갖추지 않거나 새로운 포맷(예컨대, 가령 입체음향이 각각의 눈으로 60fps 전달되는 셔터된 안경(shuttered glasses)과 동기화된 120fps 비디오를 통해 달성된다면, 이러한 옵션은 업그레이드된 하드웨어가 부재할 경우 이용될 수 없을 것이다)으로 비디오를 출력하기 위한 하드웨어를 갖지 않을 것이다.In addition to that problem, if a new format is introduced in the future, the local device will not have the hardware capability to support the new format, which means that the consumer must purchase an upgraded local media device. For example, if higher-resolution video or stereoscopic video (eg, one video stream for each eye) has been introduced recently, the local device may not have computer capability to decode the video, or In new formats (e.g., if stereophonic sound is achieved through 120 fps video synchronized with shuttered glasses delivering 60 fps to each eye, this option will not be available in the absence of upgraded hardware). You will not have the hardware to output the video.
미디어 장치의 진부화 및 복잡성의 이슈는 그것이 정교한 인터랙티브 미디어가 될 때, 특히 비디오 게임에서 심각한 문제이다.The issue of media device obsolescence and complexity is a serious problem when it becomes sophisticated interactive media, especially in video games.
현재 비디오 게임 어플리케이션은 크게 4대 메이저 비-휴대용(non-portable) 하드웨어 플랫폼 : Sony PlayStation® 1,2 및 3(PS1, PS2, 및 PS3); Microsoft Xbox®; 및 Nintendo Gamecube® 및 WiiTM; 및 PC 기반 게임이다. 이러한 플랫폼(platforms) 각각은 서로 달라서 한 플랫폼에서 동작하는 기록된 게임은 보통 다른 플랫폼에서 동작하지 않는다. 또한, 장치의 한 세대에서 다음 세대로 양립가능성(compatibility)의 문제가 있다. 소프트웨어 게임 개발자의 대다수가 특정 플랫폼에 독립적으로 디자인된 소프트웨어를 창조함에도 불구하고, 특정 플랫폼에서 특정 게임을 구동하기 위해 소프트웨어의 독점 레이어(proprietary layer)(흔히 "게임 개발자 엔진(game development engine)"으로 불림)은 특정 플랫폼에서 사용을 위해 게임을 채택하는 것이 필요해진다. 각 플랫폼은 "콘솔"(예컨대, TV 또는 모니터/스피커에 부착된 독립형(standalone) 박스)로서 소비자에게 팔리거나 그것은 PC 자체이다. 전형적으로, 비디오 게임은 Blu-ray, DVD, DVD-ROM 또는 CD-ROM과 같은 광학적 미디어로 팔리고, 그것은 정교한 실시간 소프트웨어 어플리케이션으로서 구체화된 비디오 게임을 포함한다.Current video game applications include four major non-portable hardware platforms: Sony PlayStation® 1,2 and 3 (PS1, PS2, and PS3); Microsoft Xbox®; And Nintendo Gamecube® and Wii ™ ; And PC based games. Each of these platforms is different, so recorded games that run on one platform usually do not run on another. There is also a problem of compatibility from one generation of device to the next. Although the majority of software game developers create software that is designed to be platform-independent, a proprietary layer of software (often referred to as the "game development engine") to run a particular game on a particular platform. Is required to adapt the game for use on a particular platform. Each platform is sold to the consumer as a "console" (eg, standalone box attached to a TV or monitor / speaker) or it is the PC itself. Typically, video games are sold on optical media such as Blu-ray, DVD, DVD-ROM or CD-ROM, which include video games embodied as sophisticated real-time software applications.
비디오 게임 소프트웨어와 양립가능한 플랫폼을 달성하기 위한 특정 요구는 실시간 특성 및 진보된 비디오 게임의 높은 컴퓨터적인 요구(computational requirement)에 기인하여 부득이해질 것이다. 예컨대, 한 PC에서 더 빠른 처리 유닛과 코어를 가진 다른 것으로 생산성 어플리케이션(예컨대, Misrosoft Word)의 일반적 양립가능성이 있는 것처럼 비디오 게임의 한 세대에서 다음 세대(예컨대, Xbox에서 Xbox 360으로 또는 Playstation 2("PS2")에서 Playstation 3("PS3"))로 충분히 양립가능한 게임을 기대할 수 있을 것이다. 그러나, 이는 비디오 게임의 경우에는 그렇지 않다. 왜냐하면 전형적으로 비디오 게임 제조자들은 비디오 게임 세대가 출시된 때, 주어진 가격 포인트(point)에서 가능한 최상의 성능을 찾고, 시스템의 획기적인 구조적인 변화가 빈번하게 생겨서 이전 세대 시스템을 위해 기록된 많은 게임은 최신 세대 시스템에서 동작하지 않게 된다. 예컨대, XBox는 x86- 계열 프로세서에 기초하고, 반면, XBox 360은 PowerPC 계열에 기초한다.Particular needs to achieve a platform compatible with video game software will be inevitable due to real-time characteristics and the high computational requirements of advanced video games. For example, from one generation of video games to the next generation (e.g., Xbox to Xbox 360 or Playstation 2), as is the general compatibility of productivity applications (e.g. Misrosoft Word) with other faster processing units and cores on one PC. One can expect a game that is sufficiently compatible with Playstation 3 ("PS3")). However, this is not the case for video games. Because typically video game manufacturers look for the best possible performance at a given price point when a video game generation is released, and breakthrough structural changes in the system frequently occur so that many games recorded for previous generation systems are the latest generation. It will not work on the system. For example, XBox is based on the x86-series processor, while XBox 360 is based on the PowerPC family.
이전 아키텍쳐를 에뮬레이트(emulate)하기 위한 기술이 이용될 수 있지만, 주어진 비디오 게임은 실시간 어플리케이션으로, 에뮬레이션에서 정확하게 동일한 동작을 달성하도록 실행될 수는 없다. 이는 소비자, 비디오 게임 콘솔 제조자 및 비디오 게임 소프트웨어 발행인에게 손실이 된다. 소비자를 위해서는, 모든 게임을 플레이할 수 있도록 TV와 연결된 비디오 게임 콘솔의 구세대 및 신세대 모두를 유지하는 것이 필요하다는 것을 의미한다. 그것은 콘솔 제조자에게는 새로운 콘솔의 더 늦은 채택과 에뮬레이션과 관련된 비용을 의미한다. 그리고 발행인에게는 새로운 게임의 다양한 버전들이 모든 잠재적인 소비자에게 접근하기 위해서 출시되어야만 하는 것--비디오 게임의 각 브랜드(예, XBox, Playstation)를 위한 버전뿐만 아니라 기존 브랜드(예, PS2 및 PS3)의 각 버전을 위한 버전을 출시하는 것을 의미한다. 예컨대, Electronic Art의 "Madden NFL 08"는 XBox, XBox360, PS2, PS3, Gamecube, Wii, 및 PC, 그 밖의 플랫폼을 위해 개발되었다.While techniques for emulating previous architectures can be used, a given video game is a real-time application and cannot be executed to achieve exactly the same behavior in emulation. This is a loss for consumers, video game console manufacturers, and video game software publishers. For consumers, this means keeping both old and new generations of video game consoles connected to TVs to play all games. That means the costs associated with later adoption and emulation of new consoles for console manufacturers. And for publishers, different versions of new games must be released to reach all potential consumers--not only for each brand of video game (e.g., XBox, Playstation), but also for existing brands (e.g. PS2 and PS3). That means releasing a version for each version. For example, Electronic Art's "Madden NFL 08" was developed for XBox, XBox360, PS2, PS3, Gamecube, Wii, and PC, and other platforms.
셀룰러("셀(cell)") 폰 및 휴대용 미디어 플레이어와 같은 휴대용 장치는 또한 게임 개발자에게 도전을 하고 있다. 점차적으로 그러한 장치는 무선 데이터 네트워크와 연결되고 비디오 게임을 다운로드 받을 수 있다. 그러나, 시장에는 다른 디스플레이 해상도 및 컴퓨팅 성능을 갖춘 넓은 다양한 셀 폰 및 미디어 장치가 존재한다. 또한, 전형적으로 그러한 장치가 전력 소비, 가격 및 무게의 제약이 있으므로, 그것들은 전형적으로 캘리포니아(CA) 산타클라라의 NVIDIA에 의해 만들어진 장치인 진보적인 그래픽 처리 유닛(Graphics Processing Unit ; "GPU" )과 같은 그래픽 가속 하드웨어가 부족하다. 결과적으로, 게임 소프트웨어 개발자들은 전형적으로 기존 게임 타이틀을 동시에 많은 다른 형태의 휴대용 장치를 위해 개발한다. 한 사용자가 기존 게임 타이틀이 그의 셀 폰 또는 휴대용 미디어 플레이어에서 이용될 수 없다는 것을 발견하게 될 것이다.Portable devices such as cellular (“cell”) phones and portable media players are also challenging game developers. Increasingly, such devices can connect to wireless data networks and download video games. However, there are a wide variety of cell phones and media devices with different display resolutions and computing capabilities in the market. Also, as such devices typically have power consumption, price, and weight constraints, they typically have advanced graphics processing units ("GPUs"), which are devices made by NVIDIA, Santa Clara, CA. Lack of the same graphics acceleration hardware. As a result, game software developers typically develop existing game titles for many different types of portable devices at the same time. One user will find that an existing game title cannot be used on his cell phone or portable media player.
홈 게임 콘솔의 경우에, 하드웨어 플랫폼 제조업체는 전형적으로 소프트웨어 게임 개발자에게 그들의 플랫폼에 게임을 출시할 수 있도록 로얄티를 청구한다. 셀 폰 무선 캐리어(cell phone wireless carriers)는 전형적으로 셀 폰으로 게임을 다운로드하기 위해 게임 발행인에게 로얄티를 청구한다. PC 게임의 경우에, 공개 게임(publish game)에 대해 지급하는 로얄티는 없지만, 게임 개발자들은 전형적으로 넓은 범위의 PC 구성을 지원하기 위해 부담하는 높은 고객 서비스와 발생 가능한 설치 문제로 인한 높은 비용의 문제에 직면한다. 또한, PC는 전형적으로 기술적인 지식을 가진 사용자에 의해서 쉽게 다시 프로그램되기 때문에 게임 소프트웨어의 해적 행위에 대한 장벽이 낮고, 게임은 보다 쉽게 약탈되고 배포된다(예컨대, 인터넷을 통해서). 따라서, 소프트웨어 게임 개발자에게는, 게임 콘솔, 셀 폰 및 PC에 출시하는 것은 불이익 및 비용이 존재한다.In the case of home game consoles, hardware platform manufacturers typically charge royalties to software game developers to release games on their platforms. Cell phone wireless carriers typically charge royalties to game publishers for downloading games to cell phones. In the case of PC games, there are no royalties paid for published games, but game developers typically pay a high cost due to the high customer service and possible installation issues they support to support a wide range of PC configurations. Face problems. In addition, PCs are typically easily reprogrammed by technically knowledgeable users, so the barrier to piracy of game software is low, and games are more easily looted and distributed (eg, via the Internet). Thus, for software game developers, there are disadvantages and costs to launching on game consoles, cell phones and PCs.
콘솔 및 PC 소프트웨어 게임 출판인에게, 비용은 거기서 끝이 아니다. 소매 채널을 통해서 게임을 보급하기 위해서, 소매상이 이익을 낼 수 있도록 출판인은 판매가격(selling price) 아래의 도매가격(wholesale price)을 청구한다. 출판인들은 또한 전형적으로 게임을 담고 있는 물리적 미디어를 생산하고 보급하는 비용을 지불해야 한다. 출판인은 또한 만약 게임이 안팔리거나, 게임의 가격이 하락되거나, 만약 소매자가 도매가격의 일부 또는 전체를 환불하고 그리고/또는 구매자로부터 게임을 교환받는 것과 같은 가능한 우연성을 감당하기 위해 소매자에 의해 "가격 보호 수수료(price protection fee)"를 부과당하게 된다. 추가로, 소매자는 또한 전형적으로 광고 전단지에서 게임 판매를 돕기 위해 출판인에게 수수료를 청구한다. 더욱이, 소매자들은 점차적으로 플레이를 마친 사용자로부터 게임을 다시 구매하고, 그 후에 그것들을 중고 게임으로 판매하며, 전형적으로 게임 출판인과 중고 게임 수익 중 아무것도 분배하지 않는다. 게임 출판인에게 추가되는 비용부담은 게임이 자주 불법복제되고 인터넷을 통해서 배포되어 사용자들이 다운로드하여 무료로 복사한다는 것이다.For console and PC software game publishers, the cost is not the end there. To distribute games through retail channels, the publisher charges a wholesale price below the selling price so that the retailer can make a profit. Publishers also typically have to pay for the production and dissemination of the physical media containing the game. Publishers may also choose to be "sponsored" by the retailer to cover possible contingencies, such as if the game does not sell, the price of the game falls, or if the retailer refunds some or all of the wholesale price and / or exchanges the game from the buyer. You will be charged a price protection fee. In addition, the retailer also typically charges the publisher a fee to help sell the game in the advertising leaflet. Moreover, retailers gradually buy back games from users who have played, then sell them as used games, and typically distribute none of the game publishers and used game revenue. The added cost to game publishers is that games are often pirated and distributed over the Internet, which users download and copy for free.
인터넷 광대역 속도는 증가되어 왔고 광대역 연결도(connectivity)는 미국 및 전세계에서 보다 광범위하게 되었으며, 특히 홈 그리고 인터넷 "카페"에 인터넷이 연결된 PC가 대여되고, 게임은 점차적으로 PC 또는 콘솔을 위해 다운로드를 통해서 배포된다. 또한, 광대역 접속은 멀티플레이어 및 대량 멀티유저 온라인 게임(양쪽 모두 본 개시에 있어서, "MMOG"로 칭함)을 플레이 하기 위해 점차적으로 사용된다. 이러한 변화는 소매 유통과 관련된 비용 및 이슈를 완화시킨다. 온라인 게임을 다운로드하는 것은 유통 비용이 전형적으로 적고 팔리지 않은 미디어로부터 비용이 없거나 거의 없다는 점에서 어떤 불이익을 게임 출판인에게 제기한다. 그러나 다운로드된 게임은 여전히 저작권 침해되기 쉽고, 그들의 크기(종종 많은 기가바이트 크기)때문에 그들은 다운로드 하기에 매우 많은 시간이 걸릴 수 있다. 덧붙여, 멀티플 게임은 휴대용 컴퓨터와 함께 판매되거나 비디오 게임 콘솔과 함께 판매되는 것처럼 작은 디스크 드라이브를 가득 채울 수 있다. 그러나, 확장 게임 또는 MMOG는 플레이하기 위해 게임과 온라인 연결이 필요하고, 저작권 침해 문제는 사용자가 통상적으로 합법적인 사용자 계정(valid user account)을 가질 것이 요구됨으로써 완화될 수 있다. 스피커로부터 오디오를 기록하는 마이크로폰(microphone) 또는 디스플레이 화면의 비디오를 촬영하는 카메라에 의해서 복제될 수 있는 선형 미디어(linear media)(예컨대, 비디오 및 음악)와는 달리 각 비디오 게임 경험은 독특하고, 단순히 비디오/오디오 기록을 사용하여 복제될 수 없다. 따라서, 저작권법이 있는 지역에서조차 강력하게 제재되지 못하고, 불법 복제가 만연하게 된다. MMOG는 불법복제로부터 보호될 수 있고 따라서 사업은 지원을 받을 수 있다. 예컨대, Vivendi SA의 "월드 오브 워크래프트" MMOG는 전세계적으로 불법복제를 겪지 않고 성공적으로 배치되었다. 그리고 Linden Lab의 "세컨드 라이프" MMOG와 같은 많은 온라인 또는 MMOG 게임은 자본이 구매, 판매 및 온라인 툴을 사용해서 창조될 수 있는 게임으로 구축된 경제 모델을 통해서 게임의 오퍼레이터(operator)를 위해 수익을 창출한다. 따라서, 전형적인 게임 소프트웨어 구입 또는 구독에 추가된 메카니즘은 온라인 게임의 사용을 위해 지불될 수 있다.Internet broadband speeds have been increasing and broadband connectivity has become more widespread in the US and around the world, especially with home-connected PCs on the Internet and cafés, and games are increasingly being downloaded for PCs or consoles. It is distributed through. In addition, broadband connections are increasingly used to play multiplayer and mass multiuser online games (both referred to herein as "MMOG"). These changes alleviate the costs and issues associated with retail distribution. Downloading online games presents some disadvantages to game publishers in that distribution costs are typically low and little or no cost from unsold media. However, downloaded games are still susceptible to copyright infringement, and because of their size (often many gigabytes in size), they can take a lot of time to download. In addition, multiple games can fill small disk drives, such as those sold with portable computers or with video game consoles. However, extended games or MMOGs require an online connection with the game to play, and the copyright infringement problem can be mitigated by requiring that the user typically have a valid user account. Unlike linear media (eg, video and music) that can be replicated by a microphone recording audio from a speaker or a camera taking video on a display screen, each video game experience is unique and simply video Can't be duplicated using audio recording. Thus, even in areas where copyright law exists, illegal sanctions are not available, and piracy is rampant. MMOGs can be protected from piracy and so businesses can be supported. For example, Vivendi SA's "World of Warcraft" MMOG has been successfully deployed without piracy worldwide. And many online or MMOG games, such as Linden Lab's "Second Life" MMOG, generate revenue for the operator of the game through an economic model built on games where capital can be created using buy, sell and online tools. Create. Thus, mechanisms added to a typical game software purchase or subscription can be paid for use of the online game.
반면 불법복제는 자주 온라인 또는 MMOG의 특성에 기인하여 완화될 수 있고, 온라인 게임 오퍼레이터는 여전히 잔존하는 도전에 직면하게 된다. 많은 게임은 적당히 작업하기 위한 온라인 또는 MMOG를 위해 실질적으로 로컬(예컨대, 가정) 프로세싱 리소스를 요구한다. 만약 사용자가 낮은 성능의 로컬 컴퓨터(예컨대, 낮은 성능의 랩탑과 같은 GPU가 없는)를 갖고 있다면, 게임을 플레이할 수 없다. 더욱이, 게임 콘솔의 년차(age)에 따라, 그들이 최신 기술에 훨씬 뒤떨어져 있고 더 이상 진보된 게임을 다룰 수 없을 것이다. 사용자의 로컬 PC가 게임의 컴퓨터적인 요구사항을 다룰 수 있을지라도, 거기에는 종종 설치의 복잡성이 있다. 드라이버의 비양립성이 있을 수 있다(예컨대, 만약 새로운 게임이 다운로드되면, 구 버전의 그래픽 드라이버에 의존하는 먼저 설치된 게임은 동작하지 않게 되는 새로운 버전의 그래픽 드라이버를 인스톨할 것이다). 콘솔은 많은 게임이 다운로드됨으로써 로컬 디스크 공간이 바닥나게 될 것이다. 복잡한 게임은 버그가 발견되어 고쳐짐에 따라, 또는 만약 변경이 게임에 만들어지면(예컨대, 만약 게임 개발자가 게임의 수준이 플레이하기에 너무 어렵거나 너무 쉽다는 것을 발견하면) 게임 개발자로부터 시간 경과에 따라 전형적으로 다운로드된 패치를 수신한다. 이러한 패치들은 새로운 다운로드를 요구한다. 그러나 때때로 모든 사용자가 모든 패치의 다운로드를 완료하지는 않는다. 다른 한편, 다운로드된 패치는 그 밖의 호환 가능성, 디스크 공간의 소비와 같은 이슈를 소개한다.Piracy, on the other hand, can often be mitigated due to the nature of online or MMOGs, and online game operators are still faced with remaining challenges. Many games require substantially local (eg, home) processing resources for online or MMOG to work properly. If the user has a low-performance local computer (eg, no GPU, such as a low-performance laptop), he cannot play the game. Moreover, depending on the age of game consoles, they are far behind the latest technology and will no longer be able to handle advanced games. Although the user's local PC can handle the computer's computer requirements, there is often a complex setup. There may be incompatibilities in the driver (eg, if a new game is downloaded, a previously installed game that depends on the older version of the graphics driver will install a new version of the graphics driver that will not work). The console will run out of local disk space as many games are downloaded. Complicated games can be created over time as bugs are found and fixed, or if changes are made to the game (eg, if the game developer finds the level of the game too difficult or too easy to play). Thus typically receive the downloaded patch. These patches require a new download. However, sometimes not all users complete the download of all patches. On the other hand, downloaded patches introduce issues such as other compatibility and disk space consumption.
또한, 게임을 플레이하는 동안, 많은 데이터 다운로드가 로컬 PC 또는 콘솔에 대해 그래픽 또는 동작 정보를 제공하기 위해 요구된다. 예컨대, 만약 사용자가 MMOG 룸에 들어가서 사용자의 로컬 머신에 이용될 수 없는 그래픽 데이터와 행동으로 구성되는 장면 또는 캐릭터를 직면하면, 장소 또는 캐릭터의 데이터는 다운로드되어야 한다. 이는 만약 인터넷 연결이 충분히 빠르지 않다면, 게임 플레이 동안에 실질적인 지연을 초래한다. 그리고, 만약 직면하는 장소 및 캐릭터가 저장 공간 또는 로컬 PC 혹은 콘솔의 컴퓨터적인 성능을 넘어서는 요구를 한다면, 이는 게임에서 사용자가 진행을 할 수 없거나, 저품질의 그래픽으로 계속해야되는 상황을 초래한다. 따라서, 온라인 또는 MMOG 게임은 자주 그들의 저장소 및/또는 컴퓨터적인 복잡한 요구를 제한한다. 더욱이, 게임 도중에 종종 많은 양의 데이터 전송을 제한한다. 온라인 또는 MMOG 게임은 또한 게임을 플레이할 수 있는 사용자의 시장을 좁힐 수도 있다.In addition, while playing a game, many data downloads are required to provide graphical or operational information to the local PC or console. For example, if a user enters an MMOG room and encounters a scene or character consisting of graphical data and actions that are not available to the user's local machine, the location or character's data must be downloaded. This causes a substantial delay during game play if the internet connection is not fast enough. And if the places and characters faced demand beyond the computer's capabilities of the storage space or the local PC or console, this results in a situation where the user cannot proceed in the game or continue with low-quality graphics. Thus, online or MMOG games often limit their storage and / or computer complex needs. Moreover, it often limits the amount of data transfer during the game. Online or MMOG games may also narrow the market for users who can play the game.
뿐만 아니라, 기술적-지식을 가진 사용자는 점차적으로 게임의 로컬 카피를 역-엔지니어링(reverse-engineering)할 것이고 게임을 변형하게 되어서 그들을 속일 수 있다. 속임수(cheats)는 인간이 할 수 있는 것보다 더 빠르게 버튼을 누르는 것을 만드는 것만큼 쉬울 것이다(예컨대, 매우 반복적으로 총을 쏘는 것). 게임 내 자산 거래(in-game asset transaction)를 지원하는 게임에 있어서, 속임수는 실제적 경제 가치의 자산을 포함하는 사기 거래를 초래하는 정교한 수준에 도달할 수 있다. 온라인 또는 MMOG 경제 모델은 그러한 자본 거래에 기초할 때, 이는 게임 오퍼레이터에게 실질적인 해로운 결과를 초래하게 할 수 있다. In addition, a technically knowledgeable user will gradually reverse-engineer local copies of the game and can deceive them by transforming the game. Cheats will be as easy as making a button press faster than humans can (eg, shooting very repeatedly). In games that support in-game asset transactions, the trick can reach a sophisticated level that results in fraudulent transactions involving assets of real economic value. When an online or MMOG economic model is based on such capital transactions, this can lead to substantial detrimental effects for game operators.
새로운 게임의 개발 비용은 PC 및 콘솔이 점차적으로 세련된 게임(예컨대, 실시간 레이-트레이싱(ray-tracing)과 같은 더욱 사실적인 그래픽, 그리고 실시간 물리적 시뮬레이션과 같은 보다 사실적인 동작)을 생산하도록 함으로써 증가된다. 비디오 게임 사업의 초창기에, 비디오 게임 개발은 어플리케이션 소프트웨어 개발에 대한 프로세스와 매우 유사하였는 바, 즉 대부분의 개발 비용은 광범위한 특별한 효과를 갖는 움직임 화상을 위해 개발되어지는 것과 같은, 그래픽, 오디오, 및 동작적인 요소 또는 "애셋(assets)"과 반대로, 소프트웨어의 개발에 들어갔다. 오늘날, 많은 정교한 비디오 게임 개발은 소프트웨어 개발 보다 풍부한 특수 효과 움직임 화상 개발을 더욱 닮기 위해 노력한다. 예컨대, 많은 비디오 게임은 3-D 월드의 시뮬레이션을 제공하고, 점차적으로 포토리얼리즘(photorealistic)(예컨대, 포토그래픽으로 찍은 생동감 있는 이미지처럼 실사적인 컴퓨터 그래픽) 캐릭터, 소품, 및 환경을 창출한다. 포토리얼리즘 게임 개발의 가장 도전적인 측면 중 하나는 생생하게 동작하는 인간 얼굴과 구별할 수 없는 컴퓨터에 의해 창조된 인간 얼굴을 창조하는 것이다. 캘리포니아 샌프란시스코의 Mova에 의해서 개발된 ContourTM Reality Capture와 같은 얼굴 캡쳐 기술은, 동작중인 동작자의 얼굴을 높은 해상도의 정확한 기하학적 구조로 추적하고 캡쳐한다. 이는 캡쳐된 살아있는 얼굴 움직임과 시각적으로 구별할 수 없도록 PC 또는 게임 콘솔에 랜더링된 3D 얼굴을 허용하게 된다. 정확하게 인간의 얼굴을 "포토리얼(photoreal)"로 캡쳐링(capturing) 및 랜더링(rendering)하는 것은 여러 측면에서 유용하다. 먼저, 잘 알아볼 수 있는 유명인사 또는 운동선수는 자주 비디오 게임에서 이용되고(종종 높은 비용으로 고용됨), 결함이 사용자에게 보일 수 있어 집중이 안되거나 즐겁지 않은 관찰 체험을 만들게 된다. 종종, 높은 정도의 상세함은 잠재적으로 페이스 무비(face movie)로서 프레임마다 변하는 폴리건(polygon) 및/또는 텍스쳐(textures)를 갖는 다수의 폴리건 및 높은 해상도 텍스쳐의 랜더링을 요구하는, 높은 정도의 포토리얼리즘을 달성하기 위해 요구된다.Development costs for new games are increased by allowing PCs and consoles to produce increasingly sophisticated games (eg, more realistic graphics such as real-time ray-tracing, and more realistic behaviors such as real-time physical simulation). . In the early days of the video game business, video game development was very similar to the process for developing application software, i.e., most of the development costs were developed for motion pictures with a wide range of special effects, such as graphics, audio, and motion. Contrary to traditional elements or "assets", software development has begun. Today, many sophisticated video game developments try to more closely resemble rich special effect motion picture development than software development. For example, many video games provide simulations of 3-D worlds, and gradually create photorealistic (eg, photorealistic computer graphics like photorealistic images taken with photographics) characters, props, and environments. One of the most challenging aspects of photorealistic game development is the creation of computer-generated human faces that are indistinguishable from living human faces. Face captured, such as the Contour TM Reality Capture developed by Mova of San Francisco, California, technology, track, and capture the face of a running motion with the correct geometry for high resolution. This will allow 3D faces to be rendered on a PC or game console so that they are not visually indistinguishable from captured live facial movements. Capturing and rendering the human face exactly as a "photoreal" is useful in many respects. First, recognizable celebrities or athletes are often used in video games (often employed at high cost), and defects can be visible to the user, creating an unfocused or unpleasant observation experience. Often, a high degree of detail is potentially a face movie as a face movie, which requires the rendering of multiple polygons and / or high resolution textures with polygons and / or textures that vary from frame to frame. It is required to achieve realism.
상세한 텍스처를 가진 높은 폴리건-카운트 장면이 빠르게 변화할 때, 게임을 지원하는 PC 또는 게임 콘솔은 게임 세그먼트(segment)에서 만들어지는 애니메이션 프레임이 요구하는 수를 위해 충분한 폴리건 및 텍스쳐 데이터를 저장하기 위해서 충분한 RAM을 가지고 있지 않게 될 것이다. 더 나아가, 전형적으로 PC 또는 게임 콘솔에 이용되는 단일 광학 드라이버 또는 단일 디스크 드라이버는 보통 RAM 보다 속도가 느리고, 전형적으로 GPU가 다각형 및 텍스쳐를 랜더링하는데 허용될 수 있는 최대 전송률(즉, 데이터 비율(data rate))을 유지하지 못할 수 있다. 현재 게임은 전형적으로 대부분의 폴리건 및 텍스쳐를 RAM으로 로드하고, 이는 주어진 장면이 대체로 RAM의 성능에 의해서 복잡성 및 지속성에 제한된다는 것을 의미한다. 얼굴 애니메이션의 경우에, 예컨대 이는 PC 또는 게임 콘솔은 게임을 멈추기 전에 실사 사진 같지 않은 낮은 해상도 얼굴, 또는 오직 제한된 수의 프레임으로 애니메이팅될 수 있는 실사 같은 얼굴 어느 하나로 제한되고, 폴리건 및 텍스쳐를 보다 많은 프레임을 위해 로드한다.When high polygon-count scenes with detailed textures change rapidly, the PC or game console that supports the game has enough space to store enough polygon and texture data for the required number of animation frames created in the game segment. You will not have RAM. Furthermore, single optical drivers or single disk drivers typically used in PCs or game consoles are usually slower than RAM, and typically the maximum transfer rate (i.e. data rate) that the GPU can allow to render polygons and textures. rate)) may not be maintained. Current games typically load most polygons and textures into RAM, which means that a given scene is usually limited in complexity and persistence by the performance of the RAM. In the case of facial animation, for example, it is limited to either a low resolution face that is not a photorealistic picture, or a photorealistic face that can only be animated with a limited number of frames before the game or game console stops. Load for many frames.
PC 또는 콘솔은 "로딩..."과 비슷한 메세지를 디스플레이하는 것처럼 화면을 가로질러 천천히 움직이는 진행 바(progress bar)를 지켜보는 것은 복잡한 비디오 게임의 오늘날의 사용자에 의해서 내재하는 결점으로 받아들여진다. 디스크(여기서 "디스크(disk)"는, 다른 것으로 한정하지 않는 한, 반도체"플래시(flash)" 메모리와 같은 비디스크 미디어뿐만 아니라 비휘발성 광학 또는 자기 미디어로 언급된다.)에서 다음 장면이 로드되는 동안 지연은 몇 초 또는 몇 분이 걸릴 수 있다. 이는 시간의 낭비이고 게임 플레이어게 꽤 당혹스럽게 할 수 있다. 앞서 논의한 것처럼, 지연의 많은 부분 또는 전부는 폴리건, 텍스쳐 또는 그 밖의 디스크로부터 데이터를 위한 로드 시간에 기인할 것이지만, 또한 프로세서 및/또는 PC 또는 콘솔에서 GPU가 장면을 위한 데이터를 준비하는 동안에 소비되는 로드 시간의 일부일 것이다. 예컨대, 축구 비디오 게임은 플레이어가 많은 플레이어, 팀, 운동장 및 날씨 상태 등을 선택하도록 허용한다. 따라서 특정 조합(combination)이 선택된 것에 따라, 다른 폴리건, 텍스쳐 및 그 밖의 데이타(집합적으로"객체(object)")가 장면을 위해서 요구된다(예컨대, 다른 팀은 그들의 유니폼에 다른 색 및 패턴을 가진다). 게임을 저장하기 위해 사용되는 디스크에 객체를 저장하고 미리 모든 객체 또는 많은 객체를 미리 연산하고 많은 또는 모든 다양한 치환(permutations)을 열거하는 것이 가능할 것이다. 그러나 만약 치환이 너무 크다면, 모든 객체를 위해 요구되는 많은 스토리지는 디스크에 고정하기 위해 너무 클 것이다(또는 다운로드 하기에 너무 실제적이지 않다). 따라서, 현존하는 PC 또는 콘솔 시스템은 전형적으로 복잡성 및 주어진 장면의 기간 모두에 강요되어 복잡한 장면을 위해 긴 로드 시간을 겪게 된다.Watching a progress bar move slowly across the screen as a PC or console displays a message similar to "loading ..." is an inherent drawback by today's users of complex video games. The next scene is loaded from a disc (here "disk" is referred to as non-volatile optical or magnetic media as well as non-disk media such as semiconductor "flash" memory, unless otherwise limited). The delay can take several seconds or minutes. This is a waste of time and can be quite embarrassing for game players. As discussed above, much or all of the delay will be due to the load time for data from polygons, textures or other disks, but may also be spent while the GPU on the processor and / or PC or console prepares the data for the scene. It will be part of the load time. For example, football video games allow players to select many players, teams, playgrounds, weather conditions, and the like. Thus, depending on the particular combination selected, different polygons, textures and other data (collectively "object") are required for the scene (e.g., different teams may assign different colors and patterns to their uniforms). Have). It would be possible to store objects on the disk used to store the game, precompute all objects or many objects in advance, and enumerate many or all the various permutations. But if the substitution is too large, much of the storage required for all objects will be too large (or not too practical to download) to the disk. Thus, existing PC or console systems are typically forced to both complexity and duration of a given scene, resulting in long load times for complex scenes.
종래 기술 비디오 게임 시스템 및 어플리케이션 소프트웨어 시스템의 다른 현저한 제한은 처리를 위해 PC 또는 게임 콘솔으로 로드되는 것이 필요한 예컨대 폴리건 및 텍스쳐와 같은 3D 객체의, 큰 데이터베이스를 점차적으로 사용하게 된다는 것이다. 상술한 것처럼, 그러한 데이터베이스는 디스크에 국지적으로 저장된 때 로드를 위해 긴 시간이 걸렸다. 그러나, 로드 시간은 만약 데이터베이스가 원격 위치에 저장되고 인터넷을 통해서 접근될 수 있다면 보다 훨씬 심각한다. 그러한 상황에서 많은 데이터베이스를 다운로드 하기 위해서는 몇 분, 몇 시간 또는 몇 일이 걸릴 수도 있다. 보다 더, 그러한 데이터베이스는 종종 매우 비싸게(예컨대, 게임, 영화, 또는 역사적 다큐멘터리에서 사용되는 상세한 톨-마스트된(tall-masted) 범선의 3D 모델) 만들어지고, 로컬 최종-사용자에게 판매를 위해 의도된다. 그러나 데이터베이스가 로컬 사용자에게 다운로드되어지면서 불법복제되는 위험이 있다. 많은 경우에, 사용자는 사용자의 요구(예컨대, 만약 게임 캐릭터를 위한 3D 의상은 사용자가 특정 움직임을 수행할 때, 만족스러운 외형 또는 외관을 갖는다)에 어울린다면 그것을 보기 위한 평가의 이유를 위해 단순히 데이터베이스를 다운로드하기를 원한다. 긴 로드 시간은 구입을 결정하기 전에 3D 데이터베이스를 사용자가 평가하는 것을 제지할 수 있다.Another significant limitation of prior art video game systems and application software systems is the gradual use of large databases of 3D objects, such as polygons and textures, which need to be loaded into a PC or game console for processing. As mentioned above, such a database took a long time to load when stored locally on disk. However, load time is even more serious if the database is stored at a remote location and can be accessed over the Internet. In such a situation, it may take several minutes, hours, or days to download many databases. Even more, such databases are often made very expensive (eg 3D models of detailed tall-masted sailboats used in games, movies, or historical documentaries) and are intended for sale to local end-users. . However, there is a risk of piracy as the database is downloaded to local users. In many cases, the user simply selects a database for evaluation reasons to see if it suits the user's needs (e.g., the 3D costume for the game character has a satisfactory appearance or appearance when the user performs a particular movement). I want to download it. Long load times can restrain the user from evaluating the 3D database before making a purchase decision.
유사한 이슈가, 특히 게임처럼 사용자가 점차적으로 맞춤형 캐릭터를 이용하는 것을 허용하는 게임과 같은 MMOG에서 야기된다. 캐릭터를 디스플레이하기 위한 PC 또는 게임 콘솔에 대해, 캐릭터를 위한 행동뿐만 아니라(예컨대, 만약 캐릭터가 쉴드를 갖는다면, 그 쉴드(shield)가 스피어(spear)를 피하기에 충분히 강한지 아닌지) 3D 지오메트리 데이터베이스(폴리곤, 텍스처 등)에 접근하는 것이 필요하다. 전형적으로 먼저 사용자에 의해서 MMOG가 플레이된 때, 캐릭터를 위한 많은 데이터베이스가 이미 게임의 초기 카피로 이용될 수 있고, 이는 게임의 광학적 디스크 또는 디스크로 다운로드되어 국지적으로 이용된다. 그러나, 게임이 진행됨에 따라, 만약 사용자가 캐릭터 또는 객체의 데이터베이스와 직면하면, 그것의 데이터베이스는 캐릭터 또는 객체가 디스플레이되기 전에, 국지적으로 이용할 수 없고(예컨대, 만약 다른 사용자가 맞춤형 캐릭터를 창조했다면), 그것의 데이터베이스는 다운로드되어야 한다. 이는 실질적으로 게임의 지연을 초래한다.Similar issues arise, especially in MMOGs such as games that allow users to gradually use custom characters, such as games. For a PC or game console to display a character, not only the behavior for the character (eg, if the character has a shield, is the shield strong enough to avoid spears), and the 3D geometry database You need access to (polygons, textures, etc.). Typically, when an MMOG is first played by a user, many databases for the character can already be used as an initial copy of the game, which is downloaded to the game's optical disc or disk and used locally. However, as the game progresses, if a user encounters a database of characters or objects, their database is not available locally (eg, if another user has created a custom character) before the character or object is displayed. , Its database must be downloaded. This substantially causes game delays.
주어진 비디오 게임의 세련과 복잡함, 종래 기술 비디오 게임 콘솔을 가진 비디오 게임 개발자 및 출판인에 대한 다른 도전은, 비디오 게임을 개발하는데 수천만달러의 비용으로 종종 2~ 3년간 걸릴 것이다. 새로운 비디오 게임 콘솔 플랫폼이 대략 매 5년의 비율로 소개된다고 하면, 게임 개발자는 새 플랫폼이 출시될 때, 동시에 이용가능한 비디오 게임을 가지도록 새로운 게임 콘솔의 개시에 앞선 몇 년에 미리 이러한 게임 개발 업무를 시작하는 것이 필요하다. 경쟁 업체들의 몇몇 콘솔은 때때로 동시에 출시되거나(예컨대, 1년 또는 2년 안에), 보여지는 나머지는 콘솔의 인기도이고, 이는 콘솔이 가장 큰 비디오 게임 소프트웨어 판매를 만들것이다. 예컨대, 최근 콘솔 주기(cycle에서, 마이크로 소프트 XBox 360, Sony Playstation 3, 및 Nintendo Wii는 동일한 일반 기간에 소개되었다. 그러나 소개되기 전 몇년에 게임 개발자들은 콘솔 플랫폼이 다른 것보다 더 성공적일 것인지에 관하여 "그들의 추측에 놓여(place their bets)"져야 하고, 그들의 개발 자원을 일치하도록 헌신한다. 동영상 제작 회사는 또한 영화의 출시에 앞서서 상당히 영화가 성공할 것인지 평가한 것에 기초하여 그들의 제한된 생산 자원을 배분해야 한다. 비디오 게임을 위해 요구되는 투자의 증가하는 수준이 주어지면, 게임 제작은 동영상 제작처럼 점차로 증가될 것이고, 게임 제작 회사는 특정 비디오 게임의 미래 성공에 대한 그들의 평가에 기초하여 통상적으로 그들의 생산 리소스를 충당한다. 그러나, 동영상 제작 회사와 달리, 이러한 추측은 단지 생산의 성공 자체에 기초하지 않는다; 꽤, 그 게임이 동작되도록 의도된 게임 콘솔의 성공에 기초하여 예측된다. 동시에 멀티 콘솔에서 게임을 출시하는 것은 위험을 완화시키지만, 이러한 추가되는 노력은 비용을 증가시키고 종종 게임의 실질적인 출시를 지연한다.The sophistication and complexity of a given video game, another challenge for video game developers and publishers with prior art video game consoles, will often take two to three years at a cost of tens of millions of dollars to develop a video game. Given that new video game console platforms are introduced at a rate of approximately every five years, game developers will be able to develop these game development tasks in advance of the launch of new game consoles in advance of the launch of new game consoles to have video games available at the same time when the new platform is released. It is necessary to start. Some consoles from competitors are sometimes released at the same time (eg within a year or two), or the remainder is the popularity of the console, which will make the console the largest video game software sales. For example, in the recent console cycle, Microsoft XBox 360,
PC에서 어플리케이션 소프트웨어 및 사용자 환경은 보다 컴퓨터적으로 집중적, 동적 및 인터랙티브이고, 사용자에게 보다 시각적으로 표현하도록 하는 것뿐만 아니라, 보다 유용하고 이용하기 쉽도록 만드는 것이다. 예컨대, 새로운 Window VistaTM 운영 시스템 및 Macintosh® 운영 시스템의 연속하는 버전은 시각적 애니메이션 효과를 포함한다. Autodesk, Inc의 MayaTM와 같은 진보된 그래픽 도구는 매우 최신 기술의 CPU 및 GPU에 제한을 가하는 정교한 3D 랜더링 및 애니메이션 성능을 제공한다. 그러나 이러한 새로운 도구의 컴퓨터적인 요구는 그러한 제품의 사용자 및 소프트웨어 개발자에게 많은 실질적인 이슈를 만든다.Application software and user environments on PCs are more computer intensive, dynamic and interactive, not only making them more visually visible to users, but also making them more useful and easier to use. For example, successive versions of the new Window Vista ™ operating system and the Macintosh® operating system include visual animation effects. Advanced graphics tools such as Maya TM from Autodesk, Inc. offer sophisticated 3D rendering and animation capabilities that limit the very latest CPUs and GPUs. However, the computer requirements of these new tools create many practical issues for users and software developers of such products.
운영 시스템(OS)의 시각적(visual) 디스플레이는--더 이상 팔리지 않지만, 여전히 새로운 OS로 업그레이드 가능한 이전 세대의 컴퓨터를 포함하는 넓은 범위의 등급의 컴퓨터에서 동작해야만 하기 때문에, OS 그래픽 요구사항이 OS가 대상이 되는 컴퓨터의 최소한의 공통된 요구사항(requirement)에 의해서 큰 정도로 제한되고, 이는 전형적으로 GPU가 없는 컴퓨터를 포함한다. 이는 OS의 그래픽 성능을 심각하게 제한한다. 더욱이, 휴대용 컴퓨터(예, 랩탑) 배터리 파워(battery-powered)는 CPU 또는 GPU에서 높은 연산적 성능이 전형적으로 높은 전력 소모와 짧은 배터리 수명을 초래하기 때문에 시각적 디스플레이 성능을 제한한다. 휴대용 컴퓨터는 프로세스가 이용되지 않을 때 전력 소비를 줄이기 위해서 프로세서 활동을 자동적으로 낮추는 소프트웨어를 포함한다. 어떤 컴퓨터 모델에서 사용자는 수동으로 프로세서의 동작을 낮추게 할 것이다. 예컨대, Sony의 VGN-SZ280P 랩탑은 일측면에 "스태미너(Stamina)"(낮은 성능을 위해, 보다 긴 배터리 수명) 및 다른 측면에 "스피드(Speed)"(높은 성능을 위해, 보다 짧은 배터리 수명)라고 라벨된 스위치를 포함한다. 휴대용 컴퓨터에서 OS 구동은 컴퓨터가 그것의 최고조 성능의 일부에서 동작하는 경우에도 사용가능하게 기능할 수 있도록 해야한다. 따라서, OS 그래픽 성능은 자주 최신 기술의 이용가능한 컴퓨터적인 성능보다 훨씬 아래 놓인다.Since the visual display of the operating system (OS) is no longer sold, but must still operate on a wide range of computers, including older generations of computers that can be upgraded to the new OS, OS graphics requirements Is limited to a large extent by the minimum common requirements of the target computer, which typically includes a computer without a GPU. This severely limits the graphics performance of the OS. Moreover, portable computer (eg, laptop) battery-powered limits visual display performance because high computational performance in a CPU or GPU typically results in high power consumption and short battery life. Portable computers include software that automatically lowers processor activity to reduce power consumption when a process is not used. In some computer models, the user will manually lower the operation of the processor. For example, Sony's VGN-SZ280P laptops have "stamina" on one side (longer battery life for lower performance) and "Speed" on the other side (shorter battery life for higher performance). And a switch labeled. Running an OS on a portable computer should allow the computer to function even when it is operating at some of its peak performance. Thus, OS graphics performance often lags far below the available computer capabilities of the state of the art.
Maya와 같은 하이-엔드(high-end) 컴퓨터적으로 집중된(intense) 어플리케이션은 종종 고성능 PC에서 사용될 것이라는 기대를 갖고 판매된다. 이는 일반적으로 매우 높은 성능, 더 많은 비용과 적은 휴대성이라는 적어도 공통 분모 요구 사항을 확립한다. 이는 결과적으로, 그러한 어플리케이션은 일반 목적의 OS보다 훨씬 제한된 타켓 관중을 갖고(또는 일반 목적 생산 어플리케이션, Microsoft Office와 같은), 전형적으로 일반 목적 OS 소프트웨어 또는 일반 목적 어플리케이션 소프트웨어 보다 훨씬 적은 규모로 팔린다. 장래 사용자가 사전에 그러한 컴퓨터적으로 집중된 어플리케이션을 시도하는 것이 어렵기 때문에 잠재 소비자들은 더욱 제한된다. 예컨대, 한 학생이 Maya를 어떻게 사용하는지 배우기를 원한다고 고려하거나 이미 그러한 어플리케이션에 대한 지식이 있는 잠재적 구매자가 구입에 투자하기에 앞서서 Maya를 사용하도록 시도하길 원하는(이는 Maya를 구동할 수 있는 하이-엔드 컴퓨터를 또한 구입하는 것을 포함할 것이다) 것을 고려해 본다. 반면에 학생이나 잠재적인 구매자가 다운로드를 할 수도 있겠지만, Maya의 데모버전의 물리적 미디어 카피를 얻을 수 있고, 만약 그들은 컴퓨터의 전체 잠재력(full potential)(예컨대, 복잡한 3D 장면을 다루는 것)으로 Maya를 구동하는 컴퓨터의 성능이 부족하면, 그때 그들은 제품의 정보를 완벽하게 평가를 할 수 없게 될 것이다. 이는 실질적으로 그러한 하이-엔드 어플리케이션을 위한 소비자를 제한한다. 또한 개발 비용이 일반 목적 어플리케이션보다 매우 적은 수량의 구입으로 분할되기 때문에 높은 판매 가격을 형성하게 할 것이다.High-end, computer-intensive applications such as Maya are often sold with the expectation that they will be used in high-performance PCs. This generally establishes at least common denominator requirements of very high performance, more cost and less portability. As a result, such applications have a much limited target audience (or general purpose production applications, such as Microsoft Office) than general purpose OSs, and are typically sold on a much smaller scale than general purpose OS software or general purpose application software. Potential consumers are further limited because it is difficult for future users to attempt such computer intensive applications in advance. For example, consider a student wanting to learn how to use Maya, or a potential buyer who already has knowledge of such an application wants to try to use Maya before investing in a purchase (which is a high-end that can run Maya). Consider buying a computer as well). On the other hand, students or potential buyers may download, but you can get a physical media copy of Maya's demo version, and if they are using Maya as a computer's full potential (eg dealing with complex 3D scenes), If the running computer lacks performance, then they will not be able to fully evaluate the product's information. This substantially limits the consumer for such high-end applications. It will also result in higher selling prices, since development costs are split into fewer purchases than general purpose applications.
또한, 고가의 어플리케이션은 개인 및 기업이 어플리케이션 소프트웨어의 해적판 복사를 하는 것에 대한 인센티브(incentive)를 더 만들 수 있다. 그 결과로서, 다양한 기술에 의해서 그러한 불법 복제를 완화하기 위한 그러한 소프트웨어의 출판인의 상당한 노력에도 불구하고 하이-엔드 어플리케이션 소프트웨어는 만연된 불법 복제를 겪는다. 여전히, 불법 복제된 하이-엔드 어플리케이션을 사용할 때, 사용자들은 불법 복제 카피를 동작하기 위해 값비싼 최신 기술의 PC에 투자하기 위한 필요를 제거할 수 없다. 그래서, 그들이 실제 소매 가격의 일부로 소프트웨어 어플리케이션의 사용을 얻을 수 있는 동안, 불법 복제된 소프트웨어의 사용자들은 여전히 그 어플리케이션을 충분히 이용하기 위해서 값비싼 PC를 얻거나 사는 것이 필요하다.In addition, expensive applications can create additional incentives for individuals and companies to make pirated copies of application software. As a result, high-end application software suffers widespread piracy despite the considerable efforts of publishers of such software to mitigate such piracy by various techniques. Still, when using pirated high-end applications, users cannot eliminate the need to invest in expensive state-of-the-art PCs to run pirated copies. So, while they can get the use of a software application as part of the actual retail price, users of pirated software still need to get or buy an expensive PC to fully use the application.
이는 높은-성능 불법 복제된 비디오 게임의 사용자에게 동일한 사실이다. 비록 해적들이 실제 가격의 극히 일부로 게임을 얻을 수 있지만, 그들은 여전히 게임을 적절히 플레이하기 위해서 필요한 고가의 컴퓨팅 하드웨어(예컨대, 향상된 GPU의 PC 또는 Xbox 360과 같은 하이-엔드 비디오 게임 콘솔)를 사는 것이 요청된다. 비디오 게임은 일반적으로 소비자를 위한 취미 생활이 되면, 하이-엔드 비디오 게임 시스템을 위한 추가 비용이 금지될 수 있다. 이러한 상황은 노동자의 평균 연수입이 현재 대체적으로 미국에 비하여 꽤 낮은 나라(예컨대, 중국)에서 악화된다. 그 결과, 전체 인구의 아주 작은 비율이 하이-엔드 비디오 게임 시스템 또는 하이-엔드 PC를 소유하고 있다. 그러한 나라에서, 사용자가 인터넷에 연결된 컴퓨터의 사용을 위해 요금을 지불하는, "인터넷 카페"는 꽤 보편적이다. 자주, 이러한 인터넷 카페는 플레이어가 컴퓨터적으로 집중된 비디오 게임을 플레이를 할 수 있는 GPU와 같은 높은 성능 특징이 없는 오래된 모델 또는 로우-엔드 PC를 보유한다. 이는 대단히 성공한 Vivendi의 "World of Warcraft"와 처럼 로우-엔드 PC에서 동작하는 게임의 성공의 주된 요소이고 중국에 인터넷 카페에서 흔하게 플레이된다. 반면, "Second life"와 같은 컴퓨터적으로 집중된 게임은, 중국 인터넷 카페에서 인스톨된 PC에서 플레이하는 것이 상당히 쉽지 않다. 이러한 게임은 인터넷 카페에서 낮은 성능 PC에 대한 접근만 가능한 사용자에게는 사실상 받아들여질 수 없다.This is the same for users of high-performance piracy video games. Although pirates can get games at only a fraction of the actual price, they still ask for expensive computing hardware (such as PCs with enhanced GPUs or high-end video game consoles like Xbox 360) that are needed to play the game properly. do. If video games are generally a hobby for consumers, then additional costs for high-end video game systems may be banned. This situation is exacerbated in countries where the average annual income of workers is now considerably lower than in the United States (eg, China). As a result, a very small percentage of the total population owns high-end video game systems or high-end PCs. In such countries, "Internet cafes", in which users pay for the use of computers connected to the Internet, are quite common. Frequently, these Internet cafes have older models or low-end PCs without high performance features such as GPUs, which allow players to play computer-intensive video games. This is a major factor in the success of games running on low-end PCs, such as Vivendi's "World of Warcraft", which is very successful, and is commonly played in Internet cafes in China. On the other hand, computer-intensive games like "Second life" aren't very easy to play on PCs installed in Chinese Internet cafes. Such games are virtually unacceptable to users who only have access to low-performance PCs in Internet cafes.
또한, 비디오 게임 구입을 고려하는 사용자에게 장벽이 존재하고, 사용자는 홈에서 인터넷을 통해서 데모를 다운로드함으로써 게임의 데모 버전을 시도하기 쉬울 것이다. 비디오 게임 데모는 종종 일부 기능이 중지되거나 제한된 게임 플레이의 크기를 가진 게임의 본격적인 버전이다. 이는 게임이 PC 또는 콘솔에서 실행되거나 설치되기 전에 수 기가바이트의 데이터를 다운로딩하는 긴 과정(아마도 시간)을 포함할 것이다. PC의 경우에, 게임을 위해 특별한 드라이버(예컨대, DirectX, 또는 OpenGL)가 필요할지에 대해 이해하고, 올바른 버전을 다운로드하며, 그것을 설치하고, 그 후 PC가 그 게임을 플레이할 수 있는지를 결정하는 것을 포함할 것이다. 마지막 단계는 PC가 충분한 처리(CPU 및 GPU)성능, 충분한 RAM, 호환가능한 OS(예컨대, Window XP에서 구동되는 어떤 게임, 그러나 Vista에서 구동되지 않음)를 가졌는지 결정하는 것을 포함할 것이다. 따라서, 비디오 게임 데모를 실행하려고 시도하는 긴 과정 후, 사용자는 그 비디오 게임 데모가 잘 플레이되지 않을 수 있다는 것과, 주어진 사용자의 PC 환경설정에 대해서 이해할 수 있을 것이다. 더 심각하게, 사용자가 데모를 시행하기 위해 새로운 드라이버를 다운로드하게 되면, 이 드라이버 버전은 사용자가 PC에서 정기적으로 사용하는 다른 게임 또는 어플리케이션과 호환가능하지 않을지도 모르고, 따라서 데모의 설치는 미리 게임을 동작가능하게 하거나 어플리케이션을 동작가능하지 않게 할 것이다. 사용자를 당혹하게 하는 이러한 장벽뿐만 아니라, 그들은 게임을 판매하기 위한 비디오 게임 소프트웨어 출판인 및 비디오 게임 개발자에게 장벽을 만든다.In addition, barriers exist for users considering purchasing a video game, and the user will be likely to attempt a demo version of the game by downloading the demo over the Internet from home. Video game demos are often full versions of games with some features disabled or limited gameplay size. This would involve a lengthy process (perhaps time) of downloading gigabytes of data before the game is run or installed on a PC or console. In the case of a PC, it understands whether a special driver (eg DirectX, or OpenGL) is needed for the game, downloads the correct version, installs it, and then decides if the PC can play the game. Will include. The final step will include determining if the PC has sufficient processing (CPU and GPU) performance, sufficient RAM, and a compatible OS (eg, some games running on Windows XP, but not running Vista). Thus, after a lengthy process of attempting to run a video game demo, the user will be able to understand that the video game demo may not play well, and that a given user's PC preferences are present. More seriously, if the user downloads a new driver to run the demo, this driver version may not be compatible with other games or applications that the user regularly uses on the PC, so installing the demo will not play the game beforehand. It will either enable or disable the application. In addition to these barriers that embarrass the user, they create barriers for video game software publishers and video game developers to sell games.
경제적 비효율의 결과인 또 다른 문제는 주어진 PC 또는 게임 콘솔이 보통 어플리케이션 및/또는 게임을 위해 어떤 수준의 성능 요구를 수용하도록 디자인되었는지에 관한 사실과 관련되어 있다. 예컨대, 만약 그들이 전혀 GPU를 갖고 있지 않다면 어떤 PC는 더 많은 혹은 적은 RAM, 더 느린 또는 빠른 CPU, 및 더 느린 또는 빠른 GPU를 가진다. 어떤 게임 또는 어플리케이션은 주어진 PC 또는 콘솔의 충분한 컴퓨팅 파워의 이점을 가져다준다, 반면에 많은 게임 및 어플리케이션은 아니다. 만약 어떤 사용자의 게임 또는 어플리케이션 선택은 로컬 PC 또는 콘솔의 최고 수행 성능의 부족에 빠진다면, 사용자는 이용될 수 없는 특징을 위해 PC 또는 콘솔에 돈을 낭비하게 될 것이다. 콘솔의 경우에, 콘솔 제조자는 콘솔 비용으로 보조금을 지급하기 위해 필요했던 것보다 더 많이 지불하게 될 것이다.Another problem that is the result of economic inefficiencies is related to the fact that a given PC or game console is usually designed to accommodate what level of performance requirements for applications and / or games. For example, if they have no GPU at all, some PCs have more or less RAM, a slower or faster CPU, and a slower or faster GPU. Some games or applications bring the full computing power of a given PC or console, while not many games and applications. If a user's game or application selection falls into the lack of the best performance of the local PC or console, the user will waste money on the PC or console for features not available. In the case of a console, the console manufacturer will pay more than needed to subsidize the console cost.
비디오 게임의 마케팅과 즐거움에 존재하는 또 다른 문제는 사용자가 그 게임을 구입을 하기 전에 그 밖의 플레이 게임을 볼 수 있도록 허락하는 것을 포함한다. 몇 가지 선행 기술 접근은 후에 리플레이를 위한 비디오 게임의 레코딩을 위해 존재한다. 예컨대, 미국 특허 제5,558,339호는 비디오 게임 클라이언트 컴퓨터(동일한 또는 다른 사용자에 의해서 소유된 것)에서 "게임플레이" 동안에 게임 컨트롤러 동작을 포함하는 게임 상태 정보를 기록하는 것에 대해 알려준다. 이러한 상태 정보는 나중에 비디오 게임 클라이언트 컴퓨터(예컨대, PC 또는 콘솔)에서 게임 동작의 일부 또는 전부를 리플레이하기 위해 사용될 수 있다. 이 접근 방법의 현저한 단점은 사용자가 기록된 경기를 보기 위해서, 사용자는 게임을 플레이를 할 수 있는 비디오 게임 클라이언트 컴퓨터를 보유해야 하고 컴퓨터에서 동작하는 비디오 게임 어플리케이션을 소유해야하므로, 게임플레이는 기록된 게임의 상태가 리플레이된 때와 동일하다. 그 외에도, 비디오 게임 어플리케이션은 기록된 게임과 재생되는 게임 사이의 가능한 실행 차이가 존재하지 않는 방식으로 쓸 수 있다.Another problem with the marketing and enjoyment of video games involves allowing the user to view other play games before purchasing the game. Several prior art approaches exist for the recording of video games for later replay. For example, US Pat. No. 5,558,339 teaches the recording of game state information, including game controller operation, during "gameplay" at a video game client computer (owned by the same or another user). This state information can later be used to replay some or all of the game actions on the video game client computer (eg, PC or console). A significant disadvantage of this approach is that in order for a user to watch a recorded match, the user must have a video game client computer capable of playing the game and own a video game application running on the computer, so the gameplay is recorded. Same as when the game was replayed. In addition, video game applications can be written in such a way that there is no possible performance difference between the recorded game and the game being played.
예컨대, 게임 그래픽은 일반적으로 프레임마다 계산된다. 많은 게임에서, 게임 로직은 때때로 한 장면이 특히 복잡한지, 또는 만약 슬로우 다운 실행(예컨대, PC에서 다른 처리가 게임 어플리케이션으로부터 CPU 사이클을 가져가도록 실행될 것이다)과 같은 그 밖의 지연이 있는지에 따라, 다음 프레임을 디스플레이하기 위한 그래픽을 연산하기 위해 한 프레임 시간보다 짧거나 길게 걸릴 수 있을 것이다. 그러한 게임에서, 한 프레임 시간(소위, CPU 클럭 사이클보다 적음)보다 훨씬 적은 시간에 연산되는 "문턱(threshold)"프레임이 결국 일어날 수 있다. 동일한 장면은 정확히 동일한 게임 상태 정보를 사용하여 다시 연산될 때, 한 프레임 시간(예컨대, 만약 내부 CPU 버스가 외부 DRAM 버스와 조금 위상이 벗어나고(out of phase) 그것이 CPU 사이클 시간의 지연을 유도한다면, 그럼에도 불구하고 게임 처리에서 CPU 시간의 수 밀리세컨드(millisecond)가 걸리는 다른 처리에서 큰 지연이 있지 않다)보다 적은 CPU 클럭 사이클이 걸릴 수 있다. 따라서, 게임이 플레이 백(play back)된 때, 프레임은 단일 프레임 시간 보다 2개 프레임 시간으로 연산되어 얻어진다. 어떤 동작은 게임이 얼마나 자주 새로운 프레임(예컨대, 게임이 게임 컨트롤러로부터 입력을 샘플할 때)을 연산하는지에 기초한다. 게임이 재생되는 동안, 다른 동작을 위한 시간 기준에서 이러한 차이는 게임 플레이에 영향을 주지 않지만, 그것은 플레이백 게임에서 다른 결과를 생산하는 결과를 초래할 수 있다. 예컨대, 만약 농구공의 탄도는 안정적으로 60fps 속도로 연산되지만, 게임 컨트롤러 입력은 연산된 프레임의 속도에 기초하여 샘플되고, 게임이 기록된 때에 연산된 프레임의 속도는 53fps 일 것이지만 게임이 리플레이될 때는 52fps이므로, 이는 농구공이 바스켓으로 들어가는 것이 차단되는지 또는 아닌지 사이에 차이를 만들 수 있어, 다른 결과를 초래한다. 따라서, 비디오 게임을 기록하기 위해 게임 상태를 사용하는 것은 정확히 동일한 결과를 생산하는 동일한 게임 상태 정보를 사용하고, 리플레이를 보장하기 위해 매우 신중한 게임 소프트웨어 디자인이 요구된다. For example, game graphics are typically calculated frame by frame. In many games, game logic is sometimes the next depending on whether one scene is particularly complex, or if there are other delays, such as slow down execution (e.g., other processing on the PC will be executed to take CPU cycles from the game application). It may take shorter or longer than one frame time to compute the graphics for displaying the frame. In such a game, a "threshold" frame may eventually occur that computes in much less than one frame time (so-called less than a CPU clock cycle). When the same scene is recalculated using exactly the same game state information, one frame time (e.g., if the internal CPU bus is out of phase with the external DRAM bus and it leads to a delay in CPU cycle time, Nevertheless, game processing may take fewer CPU clock cycles than other processing, which takes a few milliseconds of CPU time. Thus, when the game is played back, the frame is computed and obtained at two frame times rather than a single frame time. Some actions are based on how often the game computes new frames (eg, when the game samples input from the game controller). While the game is playing, this difference in the time criteria for other actions does not affect game play, but it may result in producing different results in the playback game. For example, if the ballistics of a basketball are reliably computed at 60 fps, the game controller input is sampled based on the computed frame rate, and when the game is recorded, the computed frame rate would be 53 fps, but the game would be replayed. As it is 52 fps, this can make a difference between whether the basketball is blocked from entering the basket, resulting in different results. Thus, using game state to record a video game requires the same game state information to produce exactly the same result, and requires very careful game software design to ensure replay.
비디오 게임을 기록하기 위한 다른 종래 기술 접근은 단지 PC 또는 비디오 게임 시스템(예컨대, PC에서 비디오 캡처 보드를 위해 또는, VCR 또는 DVD 레코더를 위해서)의 비디오 출력을 단순히 기록하기 위한 것이다. 그 다음 비디오는 되감고 리플레이될 수 있거나, 또는 택일적으로, 전형적으로 압축된 후에 인터넷으로 업로드된 기록된 비디오일 수 있다. 이러한 접근의 단점은 3D 게임 시퀀스가 플레이 백될 때, 사용자는 시퀀스가 기록된 하나의 시점에서 시퀀스를 볼 수 있도록 제한된다. 다르게 말해서, 사용자는 장면의 시점을 변화할 수 없다.Another prior art approach for recording video games is simply to record the video output of a PC or video game system (eg, for a video capture board on a PC or for a VCR or DVD recorder). The video may then be rewound and replayed, or alternatively, it may be a recorded video that is typically uploaded to the Internet after being compressed. The disadvantage of this approach is that when a 3D game sequence is played back, the user is limited to seeing the sequence at one point in time when the sequence was recorded. In other words, the user cannot change the viewpoint of the scene.
더욱이, 홈 PC 또는 게임 콘솔에서 플레이된 기록된 게임 시퀀스의 압축된 비디오가 인터넷을 통해 그 밖의 사용자에게 이용가능하도록 만들어진 때, 비디오가 실시간으로 압축되었음에도 불구하고, 그것은 인터넷으로 실시간으로 압축비디오를 업로드하는 것이 불가능할 것이다. 그 이유는 전세계에 많은 가정은 높은 비대칭의 광대역 연결을 갖는 인터넷으로 연결된다(예컨대, DSL 및 케이블 모뎀은 전형적으로 업스트림 대역폭보다 다운스트림 대역폭이 훨씬 크다). 압축된 고해상도 비디오 시퀀스는 종종 네트워크의 업스트림 대역폭 성능보다 더 높은 대역폭을 갖고, 실시간으로 업로드하는 것을 불가능하게 만든다. 따라서, 게임 시퀀스가 플레이된 후에 인터넷에서 다른 사용자가 그 게임을 시청할 수 있기 전에 현저한 지연이 있을 것이다(아마도 수 분 또는 수 시간). 비록 이러한 지연은 어떤 상황에서는 견딜 수 있다(예컨대, 이전 시간에 일어난 게임 플레이어의 결과를 보는 것), 이는 게임을 실시간으로 볼 수 있는 성능을 없애거나(예컨대, 챔피언 플레이어에 의해서 플레이되는 농구 토너먼트), 게임이 라이브 플레이할 때는 "즉각적인 리플레이" 성능을 제거한다.Moreover, when a compressed video of a recorded game sequence played on a home PC or game console is made available to other users over the Internet, even though the video is compressed in real time, it uploads the compressed video in real time over the Internet. It would be impossible to do. The reason is that many homes around the world are connected to the Internet with high asymmetric broadband connections (eg, DSL and cable modems typically have much greater downstream bandwidth than upstream bandwidth). Compressed high resolution video sequences often have higher bandwidth than the upstream bandwidth performance of the network and make it impossible to upload in real time. Thus, there will be a significant delay (perhaps minutes or hours) after the game sequence is played and before other users can watch the game on the Internet. Although this delay can be tolerable in some situations (eg, seeing the results of a game player that happened in the previous time), it can either eliminate the ability to see the game in real time (eg, basketball tournaments played by champion players). When the game is live playing, remove the "immediate replay" performance.
또 다른 선행 기술 접근은 텔레비전 수신기를 구비한 시청자가 라이브로 비디오 게임을 시청할 수 있도록 하지만, 오직 텔레비전 제작자들의 제어하에 놓이게 된다. 일부 텔레비전 채널은 미국과 다른 나라에서 비디오 게임 관람 채널을 제공하고, 거기서 텔레비전 시청자는 비디오 게임 채널에서 어떤 비디오 게임 사용자(예컨대, 토너먼트에서 최상위 등급 선수 플레이)를 볼 수 있다. 이는 텔레비전 채널을 위한 처리 기구 및 비디오 분배에 반영되는 비디오 게임 시스템(PC 및/또는 콘솔)의 비디오 출력을 가짐으로써 달성된다. 이는 텔레비전 채널이 농구 코트 주변에 다른 각도를 반영하는 몇 개 카메라가 제공하는 라이브 농구 경기를 실시간으로 방송하는 것과는 다르다. 다음으로 텔레비전 채널은 다양한 비디오 게임 시스템으로부터 출력을 다루기 위해서 비디오/오디오 처리 및 효과 기구의 사용을 만들게 할 수 있다. 예컨대, 텔레비전 채널은 (라이브 농구 게임 동안 텍스트를 오버레이(overlay)할 수 있는 것과 처럼) 다른 플레이어의 상태를 가리키는 비디오 게임으로부터 비디오 상에 텍스트를 오버레이할 수 있고, 텔레비전 채널은 게임 중에 일어나는 동작에 대해 논의할 수 있는 해설자의 오디오에 다중 녹음(overdub)을 할 수 있다. 추가적으로, 비디오 게임 출력은 게임의 실제 플레어의 게임의 카메라 녹화된 비디오와 조합할 수 있다(예컨대, 게임에 대한 그들의 감정적인 응답을 보여주는). Another prior art approach allows viewers with television receivers to watch video games live, but only under the control of the television producers. Some television channels provide video game viewing channels in the United States and other countries, where television viewers can watch some video game users (eg, top-ranked player play in tournaments) in the video game channel. This is achieved by having the video output of the video game system (PC and / or console) reflected in the processing mechanism and video distribution for the television channel. This is not the same as a television channel broadcasting live basketball matches in real time, provided by several cameras reflecting different angles around the basketball court. Television channels can then make use of video / audio processing and effects mechanisms to handle output from various video game systems. For example, a television channel may overlay text on the video from a video game that indicates the status of another player (such as may overlay text during a live basketball game), and the television channel may Multiple recordings (overdub) can be made on the narrator's audio that can be discussed. Additionally, the video game output can be combined with the camera recorded video of the game of the actual flare of the game (eg, showing their emotional response to the game).
이러한 접근의 문제는 생방송의 흥분을 갖기 위해서 그러한 라이브 비디오 공급(feeds)이 실시간으로 텔레비전 채널의 비디오 분배 및 처리 기구를 이용해야 한다는 것이다. 그러나, 앞서 논의한 것처럼, 특히 만약 방송의 일부가 게임 플레이어의 실제 비디오를 캡쳐링하는 카메라로부터 라이브 비디오를 포함한다면, 가정에서 비디오 게임 시스템이 동작할 때 이는 불가능하게 된다. 또한, 토너먼트 상황에서, 앞서 언급한 것처럼 가정에 있는 게이머가 게임을 수정하고 속일 수 있는 우려가 있다. 이러한 이유로, 텔레비전 채널에 그러한 비디오 게임 방송은 종종 잠재적인 라이브 카메라 및 복수의 비디오 게임 시스템에서 반영된 비디오를 받아들일 수 있는 텔레비전 생산 장비가 있는 공통 위치(예컨대, 텔레비전 스튜디오 또는 운동장)에서 합쳐진 비디오 게임 시스템 및 플레이어와 배열된다. The problem with this approach is that such live video feeds must utilize the video distribution and processing mechanisms of television channels in real time in order to get the excitement of live broadcast. However, as discussed above, especially if part of the broadcast includes live video from a camera capturing the actual video of the game player, this becomes impossible when the video game system is operating at home. Also, in the tournament situation, there is a concern that gamers at home can modify and cheat the game as mentioned above. For this reason, such video game broadcasts on television channels are often combined in a common location (eg, a television studio or playground) with a television production equipment capable of accepting video reflected from potential live cameras and multiple video game systems. And a player.
비록 그러한 선행 비디오 게임 TV 채널은 예컨대 라이브 스포츠 이벤트와 유사한 경험인 매우 흥분되는 발표를 텔레비전 시청자에게 제공할 수 있고, "운동선수"로 나타나는 비디오 게임 플레이어와, 비디오 게임 세계에서 그들의 동작 형태 및 실제 세계에서 그들의 동작 형태 모두를, 이러한 비디오 시스템은 플레이어가 다른 것과 물리적으로 매우 가까운 곳에 있는 상황으로 제한된다. 그리고, 텔레비전 채널이 방송된 이후에, 각 방송된 채널은 오직 하나의 비디오 스트림으로 보일수 있고, 이는 텔레비전 생산 업체에 의해서 선택된다. 이러한 제한과 방송 시간, 생산 장비 및 생산 업체의 높은 비용으로 인하여 정상권 토너먼트에서 정상권 플레이어 경기만을 오직 시청할 수 있다.Although such a leading video game TV channel can provide television viewers with a very exciting presentation, for example an experience similar to a live sporting event, a video game player that appears as an "athlete", their form of action and the real world in the video game world. In all of their modes of operation, these video systems are limited to situations where the player is physically very close to others. And, after the television channel is broadcast, each broadcast channel can be seen as only one video stream, which is selected by the television manufacturer. Due to this limitation and the high cost of airtime, production equipment and producers, only top-ranked player matches can be watched in top-tier tournaments.
또한, 텔레비전 시청자에게 비디오 게임의 풀 스크린 이미지를 방송하는 기존 텔레비전 채널은 한번에 오직 하나의 비디오 게임을 보인다. 이는 심하게는 텔레비전 시청자의 선택을 제한한다. 예컨대, 텔레비전 시청자는 정해진 시간에 게임을 보는 것에 흥미가 없을 수 있을 것이다. 다른 시청자는 주어진 시간에 텔레비전 채널에 의해서 특징적이지 않는 특정 플레이어의 게임 플레이를 보는 것에 오직 관심이 있을 수 있다. 다른 경우에, 시청자는 전문 플레이어가 게임에서 특정 수준을 어떻게 다룰수 있는지에 관하여 관심이 있을 수 있다. 여전히 다른 시청자는 제작팀에 의해서 선택된 것과 다른, 비디오 게임이 보여지는 관점을 제어하길 바랄지도 모른다. 간단히 말해서, 텔레비전 시청자는 비록 몇 개 다른 텔레비전 채널이 이용가능할지라도, 텔레비전 네트워크의 특정 방송에 의해서 공급되지 않는 비디오 게임을 시청하는 것에 많은 선호를 가질 것이다. 전술한 모든 이유 때문에, 선행 기술 비디오 게임 텔레비전 채널은 텔레비전 시청자에게 비디오 게임을 나타내는 것에 상당한 제한을 가지고 있다.In addition, existing television channels that broadcast full-screen images of video games to television viewers show only one video game at a time. This severely limits the choice of television viewers. For example, a television viewer may not be interested in watching a game at a given time. Another viewer may only be interested in watching the gameplay of a particular player at a given time that is not characterized by the television channel. In other cases, the viewer may be interested in how a professional player can handle a particular level in the game. Still other viewers may wish to control the view of the video game different from the one chosen by the production team. In short, television viewers will have much preference for watching video games that are not supplied by a particular broadcast in a television network, although several other television channels are available. For all of the above reasons, prior art video game television channels have significant limitations in presenting video games to television viewers.
선행 기술 비디오 게임 시스템 및 어플리케이션 소프트웨어 시스템의 다른 단점들은 그것들이 복잡하고, 흔히 오류, 충돌 및/또는 의도되지 않고 선호되지 않는 동작(총괄해서, "버그")를 겪는다. 비록 게임 및 어플리케이션이 출시 전에 일반적으로 디버깅, 튜닝 과정(흔히 "소프트웨어 품질 보증(Software Quality Assurance)" 또는 SQA)을 겪을지라도, 거의 변함없이 게임 또는 어플리케이션이 넓은 청중에게 출시되면 그 분야에서 버그가 발생한다. 불행하게도 소프트웨어 개발자가 제품 출시 후에 많은 버그를 찾아내고 식별하는 것은 굉장히 어렵다. 소프트웨어 개발자가 버그를 알아내는 것도 굉장히 어렵다. 그들이 버그에 대해 알게 되더라도, 그 버그의 원인이 무엇인지를 인식하기 위해 그것들을 이용할 수 있는 많은 정보는 제한될지 모른다. 예컨대, 어떤 사용자가 게임 개발자의 고객 서비스로 전화를 걸 것이고 게임 플레이를 할 때 스크린이 깜빡이기 시작하고 솔리드 블루 컬러로 바뀌면서 PC가 멈춰버린다는 것을 진술하는 메세지를 남길 것이다. 이는 버그를 찾는데 매우 적은 유용한 정보를 SQA 팀에 제공한다. 온라인에 연결되는 일부 게임 또는 어플리케이션은 가끔 어떤 경우에 더 많은 정보를 제공할 수 있다. 예컨대, "감시(watchdog)" 프로세스는 때때로 "충돌(crashes)"에 대해 게임 또는 어플리케이션을 감시하기 위해 사용될 수 있다. 그것이 충돌되고 인터넷을 통해 SQA팀에게 정보를 업로드할 때, 감시 프로세서는 게임 또는 어플리케이션 프로세서(예컨대, 스택의 상태, 메모리 사용량, 게임 또는 어플리케이션이 얼마나 진척되었는지 등)의 상태에 대해 통계를 수집할 수 있다. 하지만 복잡한 게임 또는 어플리케이션에서, 그러한 정보는 충돌의 시간에 사용자가 사용할지를 정확하게 결정하기 위해 판독하는 것은 매우 긴 시간이 걸릴 수 있다. 설령 그렇더라도, 충돌을 이끄는 연속적인 이벤트가 무엇인지를 결정하는 것은 가능할 것이다.Other drawbacks of prior art video game systems and application software systems are that they are complex and often suffer from errors, crashes and / or unintended and undesirable behavior (collectively, "bugs"). Although games and applications typically undergo a debugging and tuning process (often referred to as "Software Quality Assurance" or SQA) prior to release, almost invariably bugs occur when a game or application is released to a wide audience. do. Unfortunately, it is extremely difficult for a software developer to find and identify many bugs after a product release. It is also very difficult for software developers to find bugs. Even if they become aware of bugs, much of the information that can be used to recognize the cause of the bug may be limited. For example, a user will call the game developer's customer service and leave a message stating that the PC will freeze as the screen begins to blink and turn solid blue when playing the game. This provides the SQA team with very little useful information for finding bugs. Some games or applications that go online can sometimes provide more information in some cases. For example, a "watchdog" process can sometimes be used to monitor a game or application for "crashes." When it crashes and uploads information to the SQA team via the Internet, the surveillance processor can collect statistics on the state of the game or application processor (eg, the state of the stack, memory usage, how far the game or application has progressed, etc.). have. However, in a complex game or application, it can take a very long time to read such information to determine exactly what the user will use at the time of the crash. Even so, it would be possible to determine what sequence of events led to the collision.
PC 및 게임 콘솔과 관련된 다른 문제는 소비자에게 매우 불편한 서비스 이슈에 관한 것이다. 또한, 서비스 이슈는 전형적으로 그들이 파손된 PC 또는 콘솔을 안전하게 선적하기 위해서 특정한 상자에 보내도록 요구되고, 그 후에 만약 PC 또는 콘솔이 보증기간 내이면 수리 비용을 초래하게 된다. 게임 또는 어플리케이션 소프트웨어 출판인은 또한 수리 상태에 놓인 PC 및 콘솔에 의해서 판매의 손실(또는 온라인 서비스 사용)에 따른 영향을 받을 수 있다.Another problem with PCs and game consoles concerns service issues that are very inconvenient for consumers. Also, service issues are typically associated with broken PCs or consoles. It is required to send it in a specific box for safe shipment, after which the PC or console will be incurred for repair if it is under warranty. Game or application software publishers may also lose sales (or May be affected by the use of online services).
도 1은 소니 플레이 스테이션® 3, 마이크로소프트 X 박스 360®, 닌텐도 Wii™, 윈도우 기반의 개인용 컴퓨터 또는 애플 매킨토시와 같은 종래 기술의 비디오 게이밍 시스템을 도시하고 있다. 이러한 각각의 시스템은 프로그램 코드를 실행하기 위해서 중앙 처리 장치(CPU), 전형적으로 진보된 그래픽 연산을 수행하기 위한 그래픽 처리 장치(GPU), 외부 장치 및 사용자와 통신(communication)하기 위한 다중 형태의 입력/출력(I/O)을 포함한다. 간단화를 위해, 이러한 구성은 단일 유닛(100)과 함께 결합된 것으로 도시된다. 또한, 도 1의 선행 기술 비디오 게임 시스템은 광학 미디어 드라이버(104)(예컨대, DVD-ROM 드라이브); 비디오 게임 프로그램 코드 및 데이터를 저장하기 위한 하드 드라이브(103); 멀티 플레이어 게임 플레이를 하고, 게임, 패치, 데모, 또는 그 밖의 미디어를 다운로드하기 위한 네트워크 연결(105); CPU/GPU(100)에 의해서 현재 실행되는 프로그램 코드를 저장하기 위한 랜덤 엑서스 메모리(RAM; 101); 게임을 플레이하는 동안 사용자로부터 입력 명령어를 수신하기 위한 게임 컨트롤러(106); 및 디스플레이 장치(102)(예컨대, SDTV/HDTV 또는 컴퓨터 모니터)를 포함하는 것을 도시한다.1 illustrates a prior art video gaming system such as
도 1에 도시된 선행 기술 시스템은 몇 가지 제한을 겪는다. 첫번째, 광학 드라이브(104) 및 하드 드라이브(103)는 RAM(101)과 비교했을 때 훨씬 느린 접근 속도를 보인다. RAM(101)을 통해서 직접 동작할 때, 실제적으로 CPU/GPU(100)는 하드 드라이브(103) 또는 광학 드라이브(104)로부터 직접 데이터 및 프로그램 코드를 얻을 때 가능한 것보다 초당 보다 훨씬 많은 폴리건을 처리한다. 그 이유는 RAM(101)이 일반적으로 보다 높은 대역폭을 갖고 디스크 매커니즘의 긴 탐색 지연을 대체로 겪지 않기 때문이다. 하지만 오직 제한된 용량의 RAM이 이러한 선행 기술 시스템에 제공된다(예컨대, 256 ~ 512 Mbytes). 따라서, 비디오 게임의 다음 장면을 위한 데이터로 주기적으로 채워지는 연속 RAM(101)에서 "로딩..." 시퀀스가 자주 요구된다.The prior art system shown in FIG. 1 suffers from some limitations. First, the
어떤 시스템은 게임플레이와 동시에 프로그램 코드의 로딩을 오버랩하기 위해 시도하나, 이는 알려진 이벤트들의 시퀀스가 있을 때만 행해질 수 있다(예컨대, 차가 도로를 따라 내려가면, 도로 측면 상의 빌딩들에 접근하기 위한 구조는 차가 운행하는 동안 로드될 수 있다). 복잡한 그리고/또는 신속한 화면의 변화를 위해, 이러한 형태의 오버랩핑은 보통 동작하지 않는다. 예컨대, 사용자가 전쟁 중에 있고 RAM(101)이 그 순간에 장면 내에 물체들을 나타내는 데이터로 완전히 채워지는 경우에 있어서, 사용자가 RAM(101) 내에 현재 로드되지 않은 물체를 보기 위해 장면들을 왼쪽으로 이동시킨다면, 새로운 객체들을 하드 드라이브(103) 또는 광학 미디어(104)로부터 RAM(101)으로 로드할 시간이 없기 때문에, 동작에는 불연속성이 생길 수 있을 것이다.Some systems attempt to overlap loading of program code at the same time as gameplay, but this can only be done when there is a sequence of known events (e.g., when the car descends along the road, the structure for accessing buildings on the side of the road is Can be loaded while the car is running). For complex and / or rapid screen changes, this form of overlapping usually does not work. For example, if the user is at war and the
도 1의 시스템의 또 다른 문제점은 하드 드라이브(103) 및 광학 미디어(104)의 저장 용량의 제한으로 인해 발생한다. 디스크 저장 장치가 상대적으로 큰 저장 공간(예컨대, 50 기가바이트 이상)으로 제조될 수 있음에도, 여전히 현재 비디오 게임들 내에서 직면하는 소정 시나리오들을 위한 저장 공간을 충분히 제공하지 않는다. 예컨대, 상기한 바와 같이, 축구 비디오 게임은 사용자가 그 세계를 통하여 12개의 팀들, 선수들 및 스타디움들 중에서 선택하는 것을 허락할 수 있다. 각 팀, 각 선수 및 각 스타디움을 위해 수많은 문서 맵들(maps) 및 환경 맵들이 그 세계 내에서 3D 외관을 특징화하기 위해 필요하다(예컨대, 각 팀은 고유의 운동 셔츠를 갖고, 각각 고유의 문서 맵을 요구한다).Another problem with the system of FIG. 1 arises due to the limitation of the storage capacity of
이러한 후자의 문제점을 다루기 위해 사용되는 하나의 기술은 그들이 사용자에 의해 선택되자마자 게임이 문서와 환경 맵들을 미리 컴퓨팅하는 것이다. 이는 신장되는 이미지들, 3D 맵핑(mapping), 쉐이딩(shading), 데이터 구조들을 조직하는 것 등을 포함하는, 여러 컴퓨터적으로 집약적인 프로세스들을 포함할 수 있다. 결과적으로, 비디오 게임이 이러한 연산들을 수행하는 동안에 사용자를 위한 지연이 있을 수 있다. 원칙적으로, 이러한 지연을 감소시키는 하나의 방법은 게임이 최초로 개발되었을 때, 팀, 선수 로스터(roster), 및 스타디움의 모든 변경을 포함하는 이러한 연산들을 전부 수행하는 것이다. 그 후에 게임의 출시된 버전은 사용자가 선택할 때 인터넷을 통해서 하드 드라이브(103)로 다운로드되는 스타디움 선택, 플레이어 로스터, 팀에 대해 선택된 이미 처리된 데이터를 인터넷에 하나 이상의 서버 또는 광학 미디어(104)에 저장된 이러한 미리 처리된 데이터 모두에 포함할 것이다. 실질적인 문제로서, 그러나 게임플레이 내에서 가능한 모든 치환들의 미리 로드된 이러한 데이터는 손쉽게 수 테라바이트(terabytes)일 수 있고, 이는 오늘날의 광학 미디어 장치들의 용량을 훨씬 초과한다. 더욱이, 주어진 팀, 선수 로스터, 스타디움 선택을 위한 데이터는 쉽게 수백 메가바이트(megabytes)의 데이터 이상이 될 수 있다. 소위 10Mbps의 홈 네트워크 연결로, 데이터를 국지적으로 계산하는 것보다 네트워크 연결(105)을 통하여 이러한 데이터를 다운로드하는 것이 더 오래 걸릴 수 있다.One technique used to address this latter problem is for the game to pre-compute documents and environment maps as soon as they are selected by the user. This may include several computer-intensive processes, including stretching images, 3D mapping, shading, organizing data structures, and the like. As a result, there may be a delay for the user while the video game performs these operations. In principle, one way to reduce this delay is to perform all of these operations, including all changes to the team, player roster, and stadium when the game was first developed. The released version of the game then transfers the already processed data selected for the stadium selection, player roster, and team to the one or more servers or
따라서, 도 1에 도시된 종래의 게임 구조는 사용자에게 복잡한 게임들의 주요 장면 변환들 사이의 현저한 지연들을 생기게 한다.Thus, the conventional game structure shown in FIG. 1 causes the user significant delays between major scene changes of complex games.
도 1에 도시된 바와 같이, 종래 기술의 또 다른 문제점은 수년에 걸쳐, 비디오 게임들이 더 개선되고, 더 많은 CPU/GPU 프로세싱 파워를 요구하는 경향을 갖는다는 것이다. 따라서, RAM의 양이 무제한으로 있다고 가정하면, 비디오 게임 하드웨어 요구사항은 이러한 시스템 내에서 이용할 수 있는 최고 수준의 프로세싱 파워를 넘어설 것이다. 결과적으로, 사용자는 페이스를 유지하기 위해(또는 낮은 질의 수준에서 새로운 게임을 플레이하거나) 매 수년마다 게이밍 하드웨어를 업그레이드하는 것이 요구된다. 보다 개선된 비디오 게임을 위한 경향 중의 중요한 결론은, 그들의 비용이 보통 그들이 지원할 수 있는 최고의 수행 게임의 요구사항들에 의해 결정되기 때문에 집에서 사용하기 위한 비디오 게임 플레잉 머신들은 전형적으로 경제적으로 비효율적이라는 것이다. 예컨대, Xbox 360은 수백 메가바이트의 RAM과 높은 성능 CPU, GPU를 요구하는 "Gears of War"와 같은 게임을 플레이하기 위해 사용될 수 있고, 또는 Xbox 360은 매우 낮은 수행 CPU와 단지 수 킬로바이트(kilobytes)의 램을 요구하는 1970년대의 게임 팩 맨(Pac Man)을 플레이하기 위해 사용될 수도 있다. 실제로, Xbox 360은 동시에 진행되는 팩 맨 게임들을 한번에 호스팅하기 위해 충분한 컴퓨팅 파워를 갖는다.As shown in FIG. 1, another problem with the prior art is that over the years, video games tend to be more improved and require more CPU / GPU processing power. Thus, assuming that the amount of RAM is unlimited, video game hardware requirements will exceed the highest processing power available within such a system. As a result, users are required to upgrade their gaming hardware every few years to maintain pace (or to play new games at low quality). An important conclusion among the trends for better video games is that video game playing machines for home use are typically economically inefficient because their cost is usually determined by the requirements of the best performing games they can support. . For example, Xbox 360 can be used to play games such as "Gears of War," which require hundreds of megabytes of RAM, high performance CPUs, and GPUs, or Xbox 360 has a very low performance CPU and only a few kilobytes. It can also be used to play the Pac Man of the 1970s game, which requires RAM. In fact, Xbox 360 has enough computing power to host concurrent Pac-Man games at once.
비디오 게임 기계들은 전형적으로 한 주의 시간들 대부분 동안 꺼져 있다. 13세 이상의 활동적인 게이머들에 대한 2006년 6월 Nielsen Entertainment 연구에 따르면, 평균적으로 활동적인 게이머들은 콘솔 비디오 게임들을 플레이하기 위해 주당 14시간을 쓰고, 또는 한 주의 전체 시간의 12%를 사용한다. 이는 평균 비디오 게임 콘솔이 88%의 시간 동안 동작하지 않음을 의미하고, 값비싼 자원의 비효율적인 사용을 의미한다. 이는 비디오 게임 콘솔들이 종종 소비자 가격을 내리기 위해 공급자들에 의해 보조금을 받는 것으로써 특별히 중요하다(보조금은 미래 비디오 게임 소프트웨어 구매로부터 로열티에 의해 다시 벌어질 수 있다는 기대와 함께).Video game machines are typically off for most of the time of the week. According to a June 2006 Nielsen Entertainment study of
비디오 게임 콘솔들은 또한 거의 어떠한 소비자 전자 장치와 연관된 비용들을 초래한다. 예컨대, 시스템들의 전자공학 및 메카니즘은 동봉되어 하우징(housing)될 필요가 있다. 제조업자는 서비스 보증서를 제공할 필요가 있다. 시스템을 파는 소매업자들은 시스템의 어느 판매 및/또는 비디오 게임 소프트웨어의 판매의 이윤을 수집할 필요가 있다. 이러한 모든 요소들은 제조업자에 의해 보조금이 제공되거나, 소비자에게 전가되거나, 둘 다일 수 있는 비디오 게임 콘솔의 비용에 더해진다. Video game consoles also incur costs associated with almost any consumer electronic device. For example, the electronics and mechanism of the systems need to be enclosed and housing. The manufacturer needs to provide a service certificate. Retailers who sell the system need to collect profits from any sales of the system and / or sales of video game software. All of these factors add to the cost of a video game console, which may be subsidized by the manufacturer, passed on to the consumer, or both.
더욱이, 불법 복제는 비디오 게임 산업에서 주요 문제점이다. 사실상 모든 주요 비디오 게이밍 시스템상에서 사용되는 보안 메카니즘(security mechanisms)은 연도에 걸쳐 "크랙(crack)" 되고, 비디오 게임의 공인되지 않은 불법 복제를 야기한다. 예컨대, Xbox 360 보안 시스템은 2006년 7월 내에 크랙되었고, 사용자는 이제 불법 복제물을 온라인으로 다운로드할 수 있다. 다운로드 가능한(예컨대, PC 또는 Mac을 위한 게임들) 게임들은 불법 복제에 부분적으로 약점이 있다. 불법 복제가 약하게 정책화된 세계의 어떤 지역에 있어서, 사용자들이 비용의 아주 작은 부분으로 합법적인 것만큼 쉽게 불법 복제물을 살 수 있기 때문에 본질적으로 독립형 비디오 게임 소프트웨어를 위한 어떠한 실행가능한 시장도 없다. 또한, 세계의 많은 지역에서 게임 콘솔의 비용이 수입의 높은 비율을 차지함에 따라, 침해가 제어된다고 하더라도, 얼마 안되는 사람들만이 기술분야의 게이밍 시스템을 살 여유가 있을 수 있다.Moreover, piracy is a major problem in the video game industry. The security mechanisms used on virtually all major video gaming systems are "cracked" over the years, resulting in unauthorized piracy of video games. For example, the Xbox 360 security system was cracked in July 2006, and users can now download pirated copies online. Downloadable (eg games for PC or Mac) games are partially weak in piracy. In some parts of the world where piracy is weakly policyd, there is essentially no viable market for standalone video game software because users can buy pirated copies as easily as legitimate at a fraction of the cost. Also, as the cost of game consoles accounts for a high percentage of income in many parts of the world, only a few people can afford to buy gaming systems in the technology, even if infringement is controlled.
더욱이, 사용되는 게임 시장은 비디오 게임 산업을 위한 수익을 감소시킨다. 사용자가 게임에 지루해질 때, 그들은 다른 사용자들에게 게임을 되팔 수 있는 상점에 게임을 팔 수 있다. 이러한 공인되지 않았으나 보통의 실행은 게임 발행자들의 수익을 현저하게 감소시킨다. 비슷하게, 50%의 주문상 판매의 감소는 보통 몇 년마다 플랫폼 변화가 있을 때 발생한다. 이는 사용자들이 더 새로운 버전 플랫폼이 막 출시되려고 할 때 더 오래된 플랫폼들을 위한 게임들을 사는 것을 멈추기 때문이다(예컨대, 플레이 스테이션 3가 막 출시되려할 때, 사람들은 플레이 스테이션 2 게임들을 사는 것을 멈춘다). 종합하면, 판매의 감소 및 새로운 플랫폼과 연관된, 증가하는 개발 비용들은 게임 개발자들의 적합성에 매우 중대한 불리한 영향을 가질 수 있다.Moreover, the game market used reduces revenue for the video game industry. When a user becomes bored with a game, they can sell the game to a store that can sell the game back to other users. This unauthorized but common practice significantly reduces the revenue for game publishers. Similarly, a 50% drop in on-demand sales usually occurs when there are platform changes every few years. This is because users stop buying games for older platforms when a newer version platform is about to be released (eg, when
또한 새로운 게임 콘솔들은 매우 비싸다. Xbox 360, Nintendo Wii, 및 소니 플레이스테이션 3는 모두 수백 달러에 팔린다. 고전력 PC 게이밍 시스템들은 8000달러 이상으로 비용이 들 수 있다. 이는 특별히 많은 시스템이 아이들에게 판매되었다는 사실 및 하드웨어는 몇 년 뒤에 못 쓰게 되는 것을 고려했을 때 사용자들을 위한 중요한 투자임을 나타낸다.New game consoles are also very expensive. The Xbox 360, Nintendo Wii, and
예상되는 문제로 하나의 접근법은 게이밍 프로그램 코드 및 데이터가 서버상에서 호스팅되고, 디지털 브로드밴드(broadband) 네트워크에 걸쳐 스트리밍되는 압축된 비디오와 오디오로서 주문 클라이언트 머신(machine)으로 전송되는 온라인 게이밍이다. 핀란드의 G-Cluster(지금 일본의 SOFTBANK Broadmedia의 자회사)와 같은 소정 기업들은 현재 이러한 온라인 서비스들을 제공한다. 유사한 게이밍 서비스들은 DSL 및 케이블 텔레비전 공급자들에 의해 제공되고 호텔들 내의 네트워크와 같은 로컬 네트워크에서 사용가능하다. 이러한 시스템들의 주요 약점은 레이턴시의 문제이고, 즉, 이는 신호가 오퍼레이터의 "전파중계소(Head-end)" 내에 전형적으로 위치하는 게이머 서버를 왕복하는 데 걸리는 시간을 말한다. 빠른 액션 비디오 게임들(또한 "twitch" 비디오 게임들로 알려져 있는)은 사용자가 게임 컨트롤러를 가지고 액션을 수행하는 시간과 디스플레이 스크린이 사용자 동작의 결과를 업데이트해서 보여주는 시간 사이의 매우 낮은-레이턴시를 요구한다. 낮은-레이턴시는 사용자가 게임이 "즉각(instantly)" 응답하는 지각력(perception)을 갖도록 하기 위해 필요하다. 사용자들은 사용자 스킬 레벨과 게임 형태(type)에 의존하여 다른 레이턴시 간격에 만족할 수 있다. 예컨대, 100ms의 레이턴시는 느린 캐주얼 게임(서양주사위놀이(backgammon)와 같은) 또는 느린-액션 롤 플레잉 게임(role playing game)에 꽤 좋지만, 빠른 액션 게임에 있어서, 70 또는 80ms 초과의 레이턴시는 사용자가 게임 내에서 더 좋지 않게 수행하는 것을 야기시킬 수 있고, 따라서 이는 받아들일 수 없다. 예컨대, 빠른 반응 시간이 요구되는 게임 내에서는, 레이턴시가 50 에서 100ms로 증가할 때 정확도에서 가파른 경사가 있다.One approach to anticipated problems is online gaming in which gaming program code and data are hosted on servers and transmitted as on-demand client machines as compressed video and audio streamed across digital broadband networks. Certain companies, such as Finland's G-Cluster (now a subsidiary of Japan's SOFTBANK Broadmedia), now offer these online services. Similar gaming services are provided by DSL and cable television providers and are available in the local network, such as the network in hotels. The main weakness of these systems is the issue of latency, i.e., the time it takes for the signal to travel to and from the gamer server, which is typically located within the operator's "head-end." Fast action video games (also known as "twitch" video games) require a very low latency between the time a user performs an action with the game controller and the time the display screen updates the result of the user's action. do. Low-latency is necessary for the user to have the perception of the game responding "instantly". Users may be satisfied with different latency intervals depending on user skill level and game type. For example, a latency of 100 ms is quite good for slow casual games (such as backgammon) or slow-action role playing games, but for fast action games, a latency greater than 70 or 80 ms can be It can cause performance to be worse in the game, so it is unacceptable. For example, in games where fast response time is required, there is a steep slope in accuracy as the latency increases from 50 to 100 ms.
게임 또는 어플리케이션 서버가 가까이에 설치될 때, 제어된 네트워크 환경, 또는 사용자까지 네트워크 경로는 예측할 수 있고 그리고/또는 대역폭 피크를 견딜 수 있으며, 그것은 최대 레이턴시의 관점 및 레이턴시의 일관성의 관점에서 모두 레이턴시를 제어하는 것이 훨씬 쉽다(예컨대, 그래서 사용자는 네트워크를 통한 디지털 비디오 스트리밍으로부터 꾸준한 동작을 관찰한다). 이러한 수준의 제어는 케이블 TV 네트워크 전파 중계소와 케이블 TV 가입자의 가정까지의 사이, 또는 DSL 센트럴 오피스에서 DSL 가입자 가정으로, 또는 서버 또는 사용자로부터의 상업 오피스 LAN 환경 내에서 달성될 수 있다. 또한, 보증된 대역폭 및 레이턴시를 갖는 사업들 사이의 특별히-등급된 점-대-점(point-to-point) 개인 연결들을 얻는 것은 가능하다. 그러나 일반 인터넷과 연결된 서버 센터 내에 게임들을 호스팅하고 그 다음 브로드밴드 연결을 통해서 사용자에게 압축된 비디오를 스트림하는 게임 또는 어플리케이션 시스템에서, 레이턴시는 많은 요소에 의해 발생하고, 종래 시스템의 배치(deployment)에서 심각한 제한을 야기한다.When a game or application server is installed in close proximity, the network path to the controlled network environment, or user, can predict and / or tolerate bandwidth peaks, which can deliver latency both in terms of maximum latency and consistency of latency. It is much easier to control (e.g., so the user observes steady motion from digital video streaming over the network). This level of control can be achieved between the cable TV network headend and the home of the cable TV subscriber, from the DSL central office to the DSL subscriber home, or from a server or user in a commercial office LAN environment. It is also possible to obtain specially-grade point-to-point personal connections between businesses with guaranteed bandwidth and latency. However, in a game or application system that hosts games in a server center connected to the general Internet and then streams compressed video to the user via a broadband connection, latency is caused by many factors and is critical in the deployment of conventional systems. Cause restrictions.
전형적인 브로드밴드 연결 홈에서, 사용자는 브로드밴드 서비스를 위한 DSL 또는 케이블 모뎀을 가질 수 있다. 이러한 브로드밴드 서비스는 보통 사용자의 가정과 일반 인터넷 사이에서 25ms의 왕복 레이턴시(그리고 두배 이상)만큼 발생한다. 더욱이, 인터넷을 통해 라우팅 데이터로부터 서버 센터까지 발생한 왕복 레이턴시들이 존재한다. 인터넷을 통한 레이턴시는, 데이터들이 주어지고 그것이 라우팅되는 것처럼 발생하는 지연들에 기초하여 변화한다. 라우팅 지연(routing delays)에 추가하여, 왕복 레이턴시는 또한 인터넷의 대부분을 서로 연결하는 광섬유를 통해 전송되는 빛의 속도로 인해 발생한다. 예컨대, 각 1000마일당, 약 22ms는 광섬유 및 다른 오버헤드(overhead)를 통하여 빛의 속도에 기인한 왕복 레이턴시로 발생된다. In a typical broadband connection home, a user may have a DSL or cable modem for broadband service. These broadband services typically generate 25ms round-trip latency (and more than double) between the user's home and the Internet. Moreover, there are round trip latencies that occur from routing data to server centers over the Internet. Latency over the Internet changes based on delays that occur as data is given and routed. In addition to routing delays, round-trip latency also occurs due to the speed of light transmitted through optical fibers that interconnect most of the Internet. For example, about 22 ms each 1000 miles is generated with reciprocal latency due to the speed of light through the optical fiber and other overhead.
추가적인 레이턴시는 인터넷을 통해 스트리밍되는 데이터의 전송률(data rate)에 기인하여 발생할 수 있다. 예컨대, 사용자가 "6Mbps DSL 서비스"로 팔리는 DSL 서비스를 갖고 있다면, 실제로 사용자는 아마도 최대 다운스트림의 5Mbps보다 작은 것을 갖을 것이고, 아마 DSLAM(Disital Subscriber Line Access Multiplexer)에서 피크 로드 타임 동안에 혼잡과 같은 여러 요소들로 인해 주기적으로 낮아지는 연결을 볼 수 있을 것이다. 비슷한 이슈는 케이블 모뎀 시스템 네트워크에서 그 밖의 장소 또는, 인접한 것을 통해 루프된(looped) 로컬 공유된 동축케이블(local shared coaxial cable)에 혼잡(congestion)이 있다면, 그것보다 훨씬 작은 "6Mbps 케이블 모뎀 서비스"로서 판매되는 연결을 사용하는 케이블 모뎀의 전송률을 감소할 수 있다. 만약 4Mbps의 안정된 속도에 데이터 패킷(data packets)이 이러한 연결을 통해 서버 센터로부터 UDP(User Datagram Protocol) 포맷 내에서 한쪽 방향으로 스트리밍된다면, 모두 잘 동작될 때, 데이터 패킷은 추가적인 레이턴시를 발생시키지 않고 통과할 것이나, 혼잡(또는 다른 장애물들)이 있다면, 단 3.5Mbps만이 사용자에게 데이터를 스트리밍하는데 사용될 수 있고, 따라서 전형적인 상황에 있어서, 패킷들은 떨어질 것이고, 잃어버린 데이터를 야기하며, 또는 패킷들은 그들이 거기에 추가적인 레이턴시를 발생시키면서 전송될 수 있을 때까지, 혼잡 포인트에서 큐잉(queuing)할 것이다. 혼잡의 다른 포인트들은 지연된 패킷들을 잡기 위해 다른 큐잉 용량을 갖고, 그래서 어떤 경우에 있어서, 혼잡을 통해 만들 수 없는 패킷들은 즉시 떨어질 것이다. 다른 경우에 있어서, 수 메가비트의 데이터가 큐잉 업(up)되고 결국 전송될 것이다. 그러나, 거의 모든 경우에 있어서, 혼잡 포인트들에서의 큐들은 용량 제한을 갖고, 이러한 제한들이 초과되는 경우, 큐들은 오버 플로우될 수 있고 패킷들은 떨어질 것이다. 따라서, 추가적인 레이턴시의 발생(또는 더 불량한 패킷의 손실)을 피하기 위해, 게임 또는 어플리케이션 서버로부터 사용자에게 전송률 용량의 초과를 피하는 것이 필요하다. Additional latency may occur due to the data rate of data streamed over the Internet. For example, if a user has a DSL service that is sold as a "6 Mbps DSL service," in fact, the user will probably have something less than 5 Mbps upstream, and probably a lot of things like congestion during peak load times in the Digital Subscriber Line Access Multiplexer (DSLAM). You will see the connection drop off periodically because of the factors. A similar issue is that if there is congestion at a local shared coaxial cable looped through another location or adjacent one in the cable modem system network, then a much smaller "6Mbps cable modem service". It is possible to reduce the transmission rate of cable modems using connections sold as If data packets are streamed in one direction in the User Datagram Protocol (UDP) format from the server center via this connection at a stable rate of 4 Mbps, when all works well, the data packets will not introduce additional latency. If it will pass, but there is congestion (or other obstacles), only 3.5 Mbps can be used to stream data to the user, so in a typical situation, packets will drop, causing lost data, or packets they It will queue at the congestion point until it can be transmitted with incurring additional latency. Different points of congestion have different queuing capacity to catch delayed packets, so in some cases, packets that cannot be made through congestion will drop immediately. In other cases, several megabits of data will be queued up and eventually sent. However, in almost all cases, the queues at congestion points have capacity limits, and if these limits are exceeded, the queues may overflow and packets will drop. Thus, in order to avoid the occurrence of additional latency (or loss of worse packets), it is necessary to avoid exceeding the rate capacity from the game or application server to the user.
또한 레이턴시는 서버 내에서 비디오를 압축하고 클라이언트 장치 내에서 비디오를 신장하기 위해 필요한 시간에 의해 발생된다. 레이턴시는 서버 상에서 진행중인 비디오 게임이 디스플레이되기 위해 다음 프레임을 계산하는 동안 더 발생된다. 현재 이용가능한 비디오 압축 알고리즘들은 높은 전송률 또는 높은 레이턴시 중 하나를 겪는다. 예컨대, 움직임 JPEG은 낮은-레이턴시에 의해 특성화되는 인트라프레임-전용 손실이 많은 압축 알고리즘이다. 비디오의 각 프레임은 비디오의 서로 다른 프레임과 독립적으로 압축된다. 클라이언트 장치가 압축된 움직임 JPEG 비디오의 프레임을 수신할 때, 그것은 즉시 프레임을 신장할 것이고 그것을 디스플레이할 수 있으며, 매우 낮은-레이턴시를 초래한다. 그러나 각 프레임이 각각 압축되기 때문에, 알고리즘은 연속적인 프레임들 사이의 유사성을 활용하는 것이 불가능하고, 결과적으로 인트라프레임(intraframe)-전용 비디오 압축 알고리즘은 매우 높은 전송률을 겪는다. 예컨대, 60fps(초당 프레임)에서 640x480 움직임 JPEG 비디오는 40Mbps 이상의 데이터를 요구할 수 있다. 이러한 낮은 해상도 비디오 윈도우를 위한 이러한 높은 전송률은 많은 방송 어플리케이션에서 엄청 비쌀 수 있다(그리고 확실히 대부분의 소비자 인터넷 기반의 어플리케이션을 위해). 더욱이, 각 프레임이 독립적으로 압축되기 때문에, 손실이 많은 압축으로부터 야기될 수 있는 프레임 내의 아티팩트들은 연속적인 프레임들 내에서 다른 장소들 안에 나타나는 것처럼 보인다. 이는 비디오가 신장될 때, 움직이는 시각적 아티팩트(visual artifacts)로서 보는 사람에게 나타나는 결과를 초래한다.Latency is also generated by the time required to compress the video within the server and to stretch the video within the client device. Latency is further generated while calculating the next frame for the video game in progress on the server to be displayed. Currently available video compression algorithms suffer from either high data rates or high latency. For example, motion JPEG is an intraframe-only lossy compression algorithm characterized by low latency. Each frame of video is compressed independently of the other frames of the video. When a client device receives a frame of compressed motion JPEG video, it will immediately stretch the frame and display it, resulting in very low latency. However, because each frame is compressed separately, it is impossible for the algorithm to take advantage of the similarity between successive frames, and consequently the intraframe-only video compression algorithm suffers from a very high bit rate. For example, 640x480 motion JPEG video at 60fps (frames per second) may require 40Mbps or more data. This high bit rate for such low resolution video windows can be very expensive in many broadcast applications (and certainly for most consumer Internet based applications). Moreover, because each frame is compressed independently, artifacts within a frame that may result from lossy compression appear to appear in different places within successive frames. This results in the viewer appearing as moving visual artifacts when the video is stretched.
그들이 종래 기술 구성에서 사용된 것처럼, Microsoft Corporation의 MPEG2, H.264 또는 VC9과 같은 다른 압축 알고리즘들은 높은 압축 비율을 달성할 수 있으나 높은 레이턴시의 비용에서 이루어진다. 이러한 알고리즘들은 프레임의 인트라프레임-전용 압축을 수행한다. 이러한 프레임은 키 프레임(key frame)으로 알려져 있다(전형적으로"I" 프레임으로 불리는). 따라서, 이러한 알고리즘들은 전형적으로 I 프레임과 이전 프레임들 및 연속적인 프레임을 비교한다. 이전 프레임들과 연속적인 프레임들을 독립적으로 압축하는 것보다, 알고리즘은 I 프레임에서 이전 및 연속적인 프레임들까지 이미지 내에서 변화하는 것을 결정하는 것이 더 좋고, 따라서 I 프레임을 앞서는 변화들을 위한 "B" 프레임, 및 I 프레임에 뒤따르는 변화들을 위한 "P" 프레임으로 불리는 이러한 변화들을 저장한다. 이는 인트라프레임-전용 압축보다 훨씬 더 낮은 전송률을 초래한다. 그러나, 그것은 전형적으로 더 높은 레이턴시의 비용으로 나타난다. I 프레임은 전형적으로 B 또는 P 프레임보다 훨씬 더 크고(종종 10배 더 크다), 결과적으로, 주어진 전송률에서 전송하는데 비례하여 더 오래 걸린다. 예컨대, I 프레임들이 B 및 P 프레임들의 크기의 10배인 상황이라면, 매 단일 I 프레임마다 29 B 프레임 + 30 P 프레임 = 59 인터프레임(interframes)이 있고, 또는 각 "프레임의 그룹(Group of Frames; GOP)"마다 총 60 프레임들이 있다. 따라서, 60 fps에서, 매 초당 하나의 60-프레임 GOP가 존재한다.As they are used in prior art configurations, other compression algorithms such as Microsoft Corporation's MPEG2, H.264 or VC9 can achieve high compression ratios but at a high latency cost. These algorithms perform intraframe-only compression of the frame. Such a frame is known as a key frame (typically called an "I" frame). Thus, these algorithms typically compare an I frame with previous frames and successive frames. Rather than compressing previous frames and successive frames independently, the algorithm is better to determine changing in the image from I frame to previous and successive frames, thus "B" for changes that precede the I frame. It stores these changes, called a "P" frame, for the frame, and the changes that follow the I frame. This results in a much lower bit rate than intraframe-only compression. However, it typically appears at a higher latency cost. I frames are typically much larger (often 10 times larger) than B or P frames, and consequently take longer to propagate at a given rate. For example, if I frames are 10 times the size of B and P frames, there are 29 B frames + 30 P frames = 59 interframes for every single I frame, or each " Group of Frames; Total 60 frames per GOP). Thus, at 60 fps, there is one 60-frame GOP per second.
전송 채널이 2Mbps의 최대 전송률을 갖는 것을 상상해보라. 채널 내에서 가장 높은 품질의 데이터 스트림을 달성하기 위해, 압축 알고리즘은 2Mbps 데이터 스트림을 생산할 것이고, 상기 비율이 주어진다면, 이는 2메가비트(Mb)/(59+10)= 30,394 비트/인트라프레임과 303,935 비트/I 프레임을 초래할 것이다. 압축된 비디오 스트림이 신장 알고리즘에 의해 수신될 때, 비디오가 안정적으로 실행되도록 하기 위해, 각 프레임은 정기적인 간격(예컨대, 60 fps)에서 디스플레이되고 신장될 필요가 있다. 이러한 결과를 달성하기 위해, 어떤 프레임이 전송 레이턴시의 대상이 되면, 모든 프레임들은 적어도 그 레이턴시에 의해 지연되는 것을 필요로 하고, 따라서, 가장 나쁜-경우 프레임 레이턴시는 모든 비디오 프레임동안 레이턴시를 정의할 것이다. I 프레임들은 가장 크기 때문에, 가장 긴 전송 레이턴시를 발생시키고, 전체 I 프레임은 I 프레임이 신장되고 디스플레이되기 전에 수신될 것이다(또는 I 프레임에 의존적인 인터프레임). 채널 전송률이 2Mbps로 주어진다면, I 프레임을 전송하는 데는 303,935/2Mb = 145ms이 걸릴 것이다.Imagine the transport channel has a maximum rate of 2Mbps. To achieve the highest quality data stream in the channel, the compression algorithm will produce a 2 Mbps data stream, given the above ratio, which is equal to 2 megabits (Mb) / (59 + 10) = 30,394 bits / intraframe. Will result in 303,935 bit / I frames. When a compressed video stream is received by the decompression algorithm, each frame needs to be displayed and decompressed at regular intervals (eg, 60 fps) in order for the video to run stably. To achieve this result, if a frame is subject to transmit latency, all frames need to be delayed by at least that latency, and thus the worst-case frame latency will define latency during all video frames. . Because I frames are the largest, they generate the longest transmission latency, and the entire I frame will be received before the I frame is stretched and displayed (or an interframe dependent on the I frame). Given a channel rate of 2Mbps, it would take 303,935 / 2Mb = 145ms to transmit an I frame.
전송 채널의 대역폭의 큰 비율을 사용하는 상기 설명한 것처럼 인터프레임(interframe) 비디오 압축 시스템은, 프레임의 평균 크기에 비례하는 I 프레임의 큰 크기로 인하여 긴 레이턴시의 대상이 될 것이다. 또는, 그것을 다른 방법으로 해결하기 위해, 종래 기술 인터프레임 압축 알고리즘들이 인트라프레임-전용 압축 알고리즘들보다 더 낮은 평균 프레임당 전송률을 달성하는 반면(예컨대, 2Mbps 대 40Mbps), 여전히 그들은 큰 I 프레임 때문에 여전히 높은 피크 프레임당 전송률을 겪는다(예컨대, 303,935 * 60 = 18.2Mbps). 명심하건대, 상기한 분석을 통해 P 및 B 프레임들은 모두 I 프레임들 보다 훨씬 더 작다는 것을 가정하라. 이것이 일반적으로 사실인 반면, 장면 변화, 많은 움직임, 또는 이전 프레임과 연관성이 없는 높은 이미지 복잡도를 갖는 프레임들에 대해서는 사실이 아니다. 이러한 상황에 있어서, P 또는 B 프레임들은 I 프레임만큼 커질 수 있다(P 또는 B 프레임이 I 프레임보다 더 크다면, 정교한 압축 알고리즘은 전형적으로 I 프레임을 "force"할 것이고 P 또는 B 프레임을 I 프레임으로 바꿀 것이다). 그래서, I 프레임-크기의 전송률의 피크는 디지털 비디오 스트림 내에서 어떠한 순간에도 발생할 수 있다. 따라서, 압축된 비디오로, 평균 비디오 전송률이 전송 채널들의 전송률 용량에 접근할 때(빈번한 경우, 비디오를 위한 높은 전송률 요구가 주어진다면), I 프레임 또는 큰 P 또는 B 프레임으로부터의 높은 피크 전송률은 높은 프레임 레이턴시를 야기한다. As described above using a large proportion of the bandwidth of the transport channel, an interframe video compression system will be subject to long latency due to the large size of the I frame proportional to the average size of the frame. Or, to solve it the other way, while prior art interframe compression algorithms achieve a lower average per frame rate than intraframe-only compression algorithms (e.g., 2 Mbps to 40 Mbps), still they are still due to large I frames Suffer a high peak per frame rate (e.g., 303,935 * 60 = 18.2 Mbps). Keep in mind, through the above analysis, assume that both P and B frames are much smaller than I frames. While this is generally true, it is not true for frames with high image complexity that are not associated with scene changes, a lot of motion, or previous frames. In such a situation, P or B frames can be as large as I frames (if the P or B frames are larger than I frames, sophisticated compression algorithms will typically "force" I frames and convert P or B frames to I frames). Will change to). Thus, peaks in I frame-size rates can occur at any instant in the digital video stream. Thus, with compressed video, when the average video rate approaches the rate capacity of the transmission channels (if frequent, given a high rate requirement for the video), high peak rates from I frames or large P or B frames are high. Cause frame latency.
당연히, 상기 논의는 단지 GOP 내의 큰 B,P 또는 I 프레임들에 의해 생성된 압축 알고리즘 레이턴시를 특징짓는다. B 프레임들이 사용된다면, 레이턴시는 훨씬 더 높은 것이다. 이유는 B 프레임이 디스플레이될 수 있기 전에, B 프레임 및 I 프레임 후의 B 프레임들의 전부가 수신되기 때문이다. 따라서, 각 I 프레임 전에 5개 B 프레임이 있는 BBBBBIPPPPPBBBBBIPPPPP와 같은 시퀀스의 한 그룹의 그림(Group Of Picture ; GOP) 내에서, 첫 번째 B 프레임들은 차후 발생한 B 프레임들 및 I 프레임이 수신될 때까지 비디오 신장기(decompressor)에 의해 디스플레이될 수 없다. 그래서 비디오가 60fps(즉, 16.67ms/frame)에서 스트리밍된다면, 5개 B 프레임들 및 I 프레임은 수신하는데 16.67 * 6 = 100ms가 걸리고, 채널 대역폭이 아무리 빠르다고 하더라도, 이는 단 5 B 프레임들만을 갖는다. 30 B 프레임들을 갖는 압축된 비디오 시퀀스들은 매우 일반적이다. 그리고, 2Mbps와 같은 낮은 채널 대역폭에서, I 프레임의 사이즈에 의해 야기된 레이턴시 영향은 B 프레임들이 도착하는 것을 기다리기 때문에 레이턴시 영향에 크게 더해진다. 따라서, 2Mbps 채널 상에서, 엄청난 수의 B 프레임을 갖는다면, 종래 비디오 압축 기술을 사용하여 500ms의 레이턴시를 초과하는 것은 매우 쉽다. B 프레임들이 사용되지 않는다면(주어진 품질 수준을 위한 낮은 압축비의 비용에서), 상기한 바와 같이, B 프레임 레이턴시는 발생하지 않고, 피크 프레임 사이즈들에 의해 야기된 레이턴시만이 여전히 발생한다. Naturally, the discussion above only characterizes the compression algorithm latency generated by large B, P or I frames in the GOP. If B frames are used, the latency is much higher. The reason is that before the B frame can be displayed, all of the B frames and the B frames after the I frame are received. Thus, within a group of picture (GOP) of a sequence such as BBBBBIPPPPPBBBBBIPPPPP, where there are five B frames before each I frame, the first B frames are video until subsequent B frames and I frames are received. It cannot be displayed by the decompressor. So if the video is streamed at 60fps (i.e. 16.67ms / frame), then 5 B frames and I frame take 16.67 * 6 = 100ms to receive, no matter how fast the channel bandwidth is, it has only 5 B frames. . Compressed video sequences with 30 B frames are very common. And at low channel bandwidths, such as 2 Mbps, the latency effect caused by the size of the I frame adds significantly to the latency effect because it waits for B frames to arrive. Thus, on a 2 Mbps channel, if you have a huge number of B frames, it is very easy to exceed the 500 ms latency using conventional video compression techniques. If B frames are not used (at the cost of a low compression ratio for a given quality level), as mentioned above, B frame latency does not occur, and only the latency caused by peak frame sizes still occurs.
그 문제가 많은 비디오 게임들의 중요한 특성으로 인해 악화된다. 상기한 GOP 구조를 사용하는 비디오 압축 알고리즘들은 수동적인 시청을 위해 의도된 라이브 동작 또는 그림 재료의 사용을 위해 매우 최적화되어왔다. 전형적으로, 단순히 카메라 또는 장면이 너무 갑자기 움직인다면, 비디오 또는 영화 재료가 (a) 전형적으로 시청하는데 불편하고 (b) 그것이 보여진다면, 보통 시청자는 카메라가 갑자기 움직일때, 액션을 가깝게 따라가지 못할 수 있기 때문에, 카메라(실제 카메라, 또는 컴퓨터-제작 애니메이션의 경우의 가상 카메라인지)와 장면들이 상대적으로 안정적이다(예컨대, 한 아이가 생일 케익 상의 초를 불어서 꺼뜨릴 때 및 갑자기 케이크로 돌아와 다시 불어서 초를 꺼뜨릴 때 카메라가 떨어진다면, 시청자들은 전형적으로 아이와 케이크에 포커스를 맞추고 카메라가 갑자기 움직일 때, 잠깐의 정지는 무시하게 된다). 비디오 인터뷰, 또는 비디오 원격 회의의 경우에 있어서, 카메라는 고정된 위치에 있을 수 있고 전혀 움직임이 없으며, 매우 작은 데이터 피크들을 초래한다. 그러나 3D 높은 액션 비디오 게임들은 일정한 동작에 의해 특정화된다(예컨대, 전체 프레임이 경기하는 동안 빠른 동작 내에 있을 때, 3D 레이싱을 생각하거나, 또는 가상 카메라가 항상 갑작스럽게 움직일 때, 첫 번째 사람을 쏜 사람을 생각하라). 이러한 비디오 게임들은 사용자가 이러한 갑작스런 동작들 동안 일어나는 것을 명확하게 보여줄 필요가 있는 크고 빈번한 피크들을 갖는 프레임 시퀀스를 초래한다. 이러한 경우처럼, 압축 아티팩트는 3D 높은 액션 비디오 게임들에서 매우 좋지 않다. 따라서, 많은 비디오 게임들의 비디오 출력은, 그들의 특성에 의해, 매우 높고 빈번한 피크들을 갖는 압축된 비디오 스트림을 생산한다. The problem is exacerbated by the important nature of many video games. Video compression algorithms using the GOP structure described above have been highly optimized for the use of live motion or picture material intended for passive viewing. Typically, if the camera or scene is moving too suddenly, if the video or movie material is (a) typically uncomfortable to watch and (b) it is visible, the average viewer may not be able to closely follow the action when the camera moves suddenly. Cameras (whether they are real cameras or virtual cameras for computer-made animations) and the scenes are relatively stable (eg, when a child blows out candles on a birthday cake and suddenly returns to the cake and blows again If the camera falls when the camera is turned off, viewers typically focus on the child and the cake, and when the camera suddenly moves, the short pause is ignored). In the case of a video interview, or video teleconferencing, the camera can be in a fixed position and there is no movement at all, resulting in very small data peaks. However, 3D high action video games are characterized by constant motion (eg, when the whole frame is in fast motion while playing, thinking about 3D racing, or when the virtual camera always moves suddenly, who shoots the first person). Think of it). Such video games result in a frame sequence with large and frequent peaks that the user needs to clearly show what happens during these sudden actions. As in this case, compression artifacts are very bad in 3D high action video games. Thus, the video output of many video games, by their nature, produces a compressed video stream with very high and frequent peaks.
빠른-동작 비디오 게임의 사용자가 높은 레이턴시, 및 주어진 상기 모든 레이턴시의 원인에 대해 작은 인내력을 갖는다면, 인터넷에 비디오를 스트림하는 서버-호스트된 비디오 게임에 제한이 있다. 더욱이, 상호 대화의 높은 정도를 요구하는 어플리케이션들의 사용자들은 어플리케이션들이 일반 인터넷 및 스트림 비디오 상에 호스팅된다면 유사한 제한들을 겪는다. 클라이언트 장치로부터 서버까지의 루트 및 거리가 레이턴시를 최소화되도록 제어되기 위해서 그리고 피크들이 레이턴시 없이 수용될 수 있도록 하기 위해, 이러한 서비스들은 호스팅 서버가 전파 중계소 내에(케이블 브로드밴드의 경우) 또는 센트럴 오피스(central office)(DSL의 경우), 또는 상업 세팅 안의 LAN(또는 특수-등급된(specially-graded) 개인 연결 상의) 내에 직접 구성된 네트워크 구성을 요구한다. 적합한 대역폭을 갖는 LAN들(전형적으로 100Mbps-1Gbps의 속도를 갖는) 및 임대 전선은 전형적으로 피크 대역폭 요구사항을 지원할 수 있다(예컨대, 18Mbps 피크 대역폭은 100Mbps LAN 용량의 작은 부분이다).If a user of a fast-action video game has high latency and a small endurance for the cause of all of the given latency, then there is a limitation in server-hosted video games that stream video to the Internet. Moreover, users of applications that require a high degree of interaction experience similar limitations if the applications are hosted on the general Internet and stream video. In order for the route and distance from the client device to the server to be controlled to minimize latency, and to allow peaks to be accommodated without latency, these services are provided by the hosting server in the head-end (in the case of cable broadband) or in the central office. (In the case of DSL), or directly within a LAN (or on a specially-graded personal connection) in commercial settings. LANs with adequate bandwidth (typically with speeds of 100 Mbps-1 Gbps) and leased lines can typically support peak bandwidth requirements (eg, 18 Mbps peak bandwidth is a small portion of 100 Mbps LAN capacity).
또한 피크 대역폭 요구사항들은 특별한 수용용량이 만들어진다면 가정용 브로드밴드 기반구조(infrastructure)에 의해 수용될 수 있다. 예컨대, 케이블 TV 시스템 상에서, 디지털 비디오 트래픽(digital video traffic)은 I 프레임들만큼 큰 피크들을 다룰 수 있는 전용 대역폭을 가질 수 있다. 그리고, DSL 시스템 상에서, 더 높은 속도의 DSL 모뎀이 높은 피크들을 허용하면서 공급될 수 있고, 또는 특수-등급된 연결이 더 높은 전송률을 다룰 수 있도록 공급될 수 있다. 그러나, 일반 인터넷에 부속된 전통적인 케이블 모뎀 및 DSL 기반구조는 압축된 비디오를 위한 피크 대역폭 요구사항들에 대해 훨씬 적은 오차 허용도를 갖는다. 그래서, 클라이언트 장치로부터 먼 거리에 있는 서버 센터들 내의 비디오 게임 또는 어플리케이션을 호스팅하고, 전통적인 가정용 브로드밴드 연결들을 통해 인터넷에 걸쳐 압축된 비디오 출력을 스트림하는 온라인 서비스는 특별히 매우 낮은-레이턴시를 요구하는 게임들과 어플리케이션(예컨대, 첫번째 사람 총잡이(shooters)와 다른 멀티-사용자, 인터랙티브 액션 게임들, 또는 빠른 반응 속도를 요구하는 어플리케이션)과 관련하여 중요한 레이턴시 및 피크 대역폭 제한들을 겪는다.Peak bandwidth requirements can also be accommodated by residential broadband infrastructure if special capacity is made. For example, on a cable TV system, digital video traffic may have a dedicated bandwidth that can handle peaks as large as I frames. And, on a DSL system, a higher speed DSL modem can be supplied allowing high peaks, or a special-grade connection can be supplied to handle higher data rates. However, traditional cable modem and DSL infrastructures attached to the general Internet have much less error tolerance for peak bandwidth requirements for compressed video. Thus, an online service that hosts a video game or application in server centers remote from a client device and streams compressed video output over the Internet over traditional home broadband connections is particularly demanding for games that require very low latency. And applications (eg, first-person shooters and other multi-user, interactive action games, or applications requiring fast response times) suffer from significant latency and peak bandwidth limitations.
본 발명은 상기한 점을 감안하여 이루어진 것으로, 어플리케이션 호스팅 센터 내에 프로그램 코드 및 데이터를 저장하기 위한 시스템 및 방법을 제공하는 것을 목적으로 한다.SUMMARY OF THE INVENTION The present invention has been made in view of the foregoing, and an object thereof is to provide a system and method for storing program code and data in an application hosting center.
본 발명에 따른 이러한 목적은 온라인 어플리케이션을 실행하기 위해 사용된 프로그램 코드 및/또는 데이터를 제1타입 및 제2타입으로 분할하는 단계; 상기 제1타입의 프로그램 코드 및 데이터를 비교적 낮은 레이턴시 메모리 접근을 제공하는 제1타입의 메모리에 저장하는 단계; 상기 제2타입의 프로그램 코드 및 데이터를 상기 제1타입의 메모리에 비해 비교적 높은 레이턴시 메모리 접근을 제공하는 제2타입의 메모리에 저장하는 단계; 온라인 어플리케이션을 실행하기 위해 클라이언트 요청에 따라 상기 제1 및 제2타입의 메모리로부터 프로그램 코드 및 데이터를 가져오는 단계; 및 상기 어플리케이션에 의해 생성된 이미지를 나타내는 스트리밍 인터랙티브 비디오 스트림을 클라이언트로 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터-실행 방법에 의해 달성된다.This object according to the invention comprises the steps of: dividing program code and / or data used to execute an online application into a first type and a second type; Storing the first type of program code and data in a first type of memory that provides relatively low latency memory access; Storing the second type of program code and data in a second type of memory that provides relatively higher latency memory access than the first type of memory; Retrieving program code and data from the first and second types of memory in response to a client request to execute an online application; And transmitting to the client a streaming interactive video stream representing an image generated by the application.
상기와 같은 어플리케이션 호스팅 센터 내에 프로그램 코드 및 데이터를 저장하기 위한 시스템 및 방법을 제공할 수 있다.A system and method for storing program code and data in such an application hosting center can be provided.
도 1은 종래 기술의 비디오 게이밍 프로그램 아키텍처를 나타낸 도면,
도 2a와 2b는 일 실시예에 따른 하이 레벨 시스템 아키텍처를 나타낸 도면,
도 3은 클라이언트 및 서버 사이의 통신을 위한 실제적, 속도, 요구되는 전송률을 나타낸 도면,
도 4a는 일 실시예에 따른 호스팅 서비스 및 채택된 클라이언트를 나타낸 도면,
도 4b는 클라이언트 및 호스팅 서비스 사이의 통신과 관련된 전형적인 레이턴시를 나타낸 도면,
도 4c는 일 실시예에 따른 클라이언트 장치를 나타낸 도면,
도 4d는 다른 실시예에 따른 클라이언트 장치를 나타낸 도면,
도 4e는 도 4c에 클라이언트 서비스의 블럭도의 예를 나타낸 도면,
도 4f는 도 4d에 클라이언트 서비스의 블럭도의 예를 나타낸 도면,
도 5는 일 실시예에 따른 채택될 수 있는 비디오 압축의 형태의 예를 나타낸 도면,
도 6a는 다른 실시예에서 채택될 수 있는 비디오 압축의 형태의 예를 나타낸 도면,
도 6b는 낮은 복잡성 전송, 낮은 동작 비디오 시퀀스와 관련된 전송률에 피크를 나타낸 도면,
도 6c는 높은 복잡성 전송, 높은 동작 비디오 시퀀스와 관련된 전송률에 피크를 나타낸 도면,
도 7a,7b는 일 실시예에서 채택된 비디오 압축 기술의 예를 나타낸 도면,
도 8은 일 실시예에서 채택된 비디오 압축 기술의 추가적인 예를 나타낸 도면,
도 9a ~ 9c는 완화된 전송률 피크를 위한 일 실시예에서 채택된 기술의 예를 나타낸 도면,
도 10a,10b는 패킷내에 이미지 타일을 효율적으로 포장(pack)하기 위한 일 실시예를 나타낸 도면.
도 11a ~ 11d는 순방향 에러 보정 기술을 채택하는 일 실시예를 나타낸 도면,
도 12는 압축을 위한 멀티 코어 프로세싱 유닛을 사용하는 일 실시예를 나타낸 도면,
도 13a,13b는 다양한 실시예에 따라 호스팅 서비스와 사이에 지리적인 포지셔닝 및 통신을 나타낸 도면,
도 14는 클라이언트 및 호스팅 서비스 사이 통신과 관련된 전형적인 레이턴시를 나타낸 도면,
도 15는 호스팅 서비스 서버 센터 아키텍쳐의 예를 나타낸 도면,
도 16은 다수의 라이브 비디오 윈도우를 포함하는 사용자 인터페이스의 일 실시예의 스크린 샷의 예를 나타낸 도면,
도 17은 특정 비디오 윈도우의 선택에 따라 도 16의 사용자 인터페이스를 나타낸 도면,
도 18은 풀 스크린 크기의 특정 비디오 윈도우의 확대에 따른 도 17의 사용자 인터페이스를 나타낸 도면,
도 19는 멀티플레이어 게임의 스크린에 오버레이된 공동의 사용자 비디오 데이터의 예를 나타낸 도면,
도 20은 호스팅 서비스에 게임 플레이어를 위한 유저 페이지의 예를 나타낸 도면,
도 21은 3D 인터렉티브 광고의 예를 나타낸 도면,
도 22는 라이브 퍼포먼스의 표면 캡쳐로부터 텍스쳐 표면을 갖는 포토리얼 이미지를 생산하는 단계의 시퀀스의 예를 나타낸 도면,
도 23은 선형 미디어 컨텐츠의 선택을 허용하는 유저 인터페이스 페이지의 예를 나타낸 도면,
도 24는 연결 속도에 대한 웹 페이지가 라이브 되기 전 흐르는 시간을 나타내는 그래프를 도시한다.1 illustrates a prior art video gaming program architecture;
2A and 2B illustrate a high level system architecture according to one embodiment;
3 is a diagram showing actual, speed, and required transmission rate for communication between a client and a server;
4A illustrates a hosting service and an adopted client, according to one embodiment;
4B illustrates an exemplary latency associated with communication between a client and a hosting service;
4C is a diagram of a client device according to one embodiment;
4d illustrates a client device according to another embodiment;
4E illustrates an example of a block diagram of a client service in FIG. 4C;
4F illustrates an example of a block diagram of a client service in FIG. 4D;
5 illustrates an example of a form of video compression that may be employed in accordance with one embodiment;
6A illustrates an example of a form of video compression that may be employed in another embodiment;
6b shows a peak in bit rate associated with low complexity transmission, low motion video sequence,
6C shows a peak in transmission rate associated with high complexity transmission, high motion video sequence,
7A, 7B illustrate an example of a video compression technique employed in one embodiment;
8 illustrates a further example of a video compression technique employed in one embodiment;
9A-9C show examples of techniques employed in one embodiment for relaxed rate peaks,
10A and 10B illustrate one embodiment for efficiently packing an image tile in a packet.
11A-11D illustrate an embodiment employing forward error correction techniques,
12 illustrates one embodiment using a multi-core processing unit for compression;
13A and 13B illustrate geographical positioning and communication with a hosting service according to various embodiments;
14 illustrates exemplary latency associated with communication between a client and a hosting service;
15 shows an example of a hosting service server center architecture,
16 shows an example of a screenshot of one embodiment of a user interface including multiple live video windows;
17 illustrates the user interface of FIG. 16 in accordance with the selection of a particular video window;
18 illustrates the user interface of FIG. 17 in accordance with an enlargement of a particular video window of full screen size;
19 shows an example of common user video data overlaid on the screen of a multiplayer game;
20 shows an example of a user page for a game player in a hosting service;
21 is a diagram showing an example of a 3D interactive advertisement,
FIG. 22 shows an example of a sequence of steps of producing a photoreal image with a textured surface from surface capture of live performance; FIG.
23 shows an example of a user interface page allowing the selection of linear media content;
FIG. 24 shows a graph of the speed of connection before the web page is live.
본 발명은 포함된 도면과 다음의 상세한 설명으로 보다 충분히 이해될 수 있을 것이다. 그러나 도시된 특정 실시예가 개시된 본 발명의 기술적 사상을 제한하는 것이 아니고 오직 이해와 설명을 위한 것이다. The invention will be more fully understood from the accompanying drawings and the following detailed description. However, the particular embodiments shown are not intended to limit the technical spirit of the disclosed invention, but are for understanding and explanation only.
다음의 상세한 설명에서 구체적인 세부사항은 본 발명 개시에 이해를 제공하기 위하여 장치 종류, 시스템 구성, 통신 방법과 같이 설정한다. 그러나, 관련 기술 분야의 통상의 기술을 가진 자가 이러한 구체적인 세부사항은 설명된 실시예를 실행하기 위하여 필요로 하지 않을지 모른다는 것을 인식할 것이다. In the following detailed description, specific details are set such as device type, system configuration, and communication method in order to provide an understanding of the present disclosure. However, one of ordinary skill in the relevant art will recognize that these specific details may not be required to practice the described embodiments.
도 2a와 2b는 가입 서비스 하에서 인터넷(206)(그 밖의 공공 또는 개인 네트워크)을 통해서 비디오 게임 및 소프트웨어 어플리케이션이 호스팅 서비스(210)에 의해서 호스트되고 사용자 구내(user premises; 211)("사용자 구내"는 만일 모바일 장치를 사용한다면 외부를 포함하는 사용자가 위치하는 장소를 의미한다)에서 클라이언트 장치(205)에 의해서 접속된다. 클라이언트 장치(205)는 인터넷과 유선 또는 무선으로 연결되는 마이크로소프트 윈도우(Microsoft Windows)와 같은 일반 목적 컴퓨터 또는 Linux기반 PC 또는 Apple Inc사의 매킨토시 컴퓨터이거나, 내부 또는 외부 디스플레이 장치(222)와 연결되거나 비디오 및 오디오를 모니터 또는 TV세트 (222)로 출력하는 셋톱 박스(인터넷과 유선 또는 무선으로 연결되고)와 같은 클라이언트 장치에 전용될 수 있으며, 인터넷과 유선 또는 무선으로 연결되는 아마 모바일 장치일 수도 있다. 2A and 2B show that video games and software applications are hosted by hosting
이러한 장치중 어떤 것은 그들 자신의 사용자 입력 장치(예컨대, 키보드, 버튼, 터치스크린, 트랙 패드, 또는 관성 감지 막대, 비디오 캡쳐 카메라 및/또는 동작 추적 카메라 등)를 가질 수 있거나, 그들은 유선 또는 무선으로 연결되는 내부 입력 장치(221)(예컨대, 키보드, 마우스, 게임 컨트롤러, 관성 감지 막대, 비디오 캡쳐 카메라 및/또는 동작 추적 카메라 등)를 사용한다. 보다 상세하게 아래에서 설명하는 것처럼, 호스팅 서비스(210)는 높은 전력의 CPU/GPU 프로세싱 성능을 포함하는 다양한 레벨의 성능의 서버를 포함한다. 호스팅 서버(210)에서 어플리케이션의 사용 또는 게임의 플레이 동안에, 홈 또는 오피스 클라이언트 장치(205)는 사용자로부터 키보드 및/또는 컨트롤러 입력을 수신하고, 그 후 그것은 인터넷(206)을 통해서 게임 또는 어플리케이션 소프트웨어(예컨대, 만일 사용자가 화면의 캐릭터를 오른쪽으로 움직이도록 지시하는 버튼을 누르면, 그 후 게임 프로그램은 오른쪽으로 캐릭터가 움직이는 것을 보여주는 비디오 이미지의 시퀀스를 만든다)를 위해 비디오 출력(비디오 이미지 시퀀스)의 연속적인 프레임을 생성하고 응답으로 게이밍 프로그램 코드를 실행하는 호스팅 서비스(210)로 컨트롤러 입력을 전송한다. 이러한 비디오 이미지의 시퀀스는 낮은-레이턴시 비디오 압축기를 사용하여 압축되고, 호스팅 서비스(210)은 낮은-레이턴시 비디오 스트림을 인터넷(206)을 통해서 전송한다. 홈 또는 오피스 클라이언트 장치는 압축된 비디오 스트림을 복호하고 모니터 또는 TV에 압축이 풀린 비디오 이미지를 랜더링(render)한다. 결과적으로, 클라이언트 장치(205)의 컴퓨팅 그리고 그래픽 하드웨어 요구는 현저하게 생략된다. 클라이언트(205)는 인터넷(206)으로 키보드/컨트롤러 입력을 전송하고, 인터넷(206)으로부터 수신된 압축된 비디오 스트림의 압축을 풀며, 복호화하기 위한 처리 능력(power)을 갖는 것이 오직 필요하고, 이는 사실상 개인용 컴퓨터가 그것의 CPU에서 소프트웨어를 구동할 능력이 있다(예컨대, 대략 2GHz로 동작하는 인텔의 Core Duo CPU는 윈도우 미디어 VC9과 H.264와 같은 압축기를 사용하여 엔코드된 720p HDTV의 압축을 풀 수 있다). 그리고, 어떤 클라이언트 장치의 경우에, 전용 칩은 또한 현대 PC를 위해 요구되는 것처럼 일반 목적 PC보다 낮은 가격 및 적은 전력 소모로 실시간으로 그러한 표준을 위한 비디오 압축을 푸는 것을 수행할 수 있다. 현저하게 컨트롤러 입력을 전송하고 비디오 압축을 푸는 것의 기능을 수행하기 위해서, 홈 클라이언트 장치(205)는 도 1에 도시한 선행 기술 비디오 게임 시스템과 같은 광학적 드라이브, 하드 드라이브, 또는 어떤 특별한 그래픽 처리 유닛(GPU)을 요구하지 않는다.Some of these devices may have their own user input devices (eg, keyboards, buttons, touchscreens, trackpads, or inertial sensing bars, video capture cameras, and / or motion tracking cameras), or they may be wired or wirelessly. A connected internal input device 221 (eg, keyboard, mouse, game controller, inertial sense bar, video capture camera and / or motion tracking camera, etc.) is used. As described below in more detail, hosting
게임 및 어플리케이션 소프트웨어가 보다 복잡하고 보다 포토리얼리즘이 되어가면서, 그들은 높은 성능 CPU, GPU, 더 많은 RAM, 더 크고 빠른 디스크 드라이브를 요구할 것이고, 호스팅 서비스(210)에서 컴퓨팅 파워는 연속적으로 업그레이드될 것이지만, 최종 사용자는 그것의 처리 요구가 기존 비디오 압축을 푸는 알고리즘으로 디스플레이 해상도 및 프레임 비율을 위해 고정되어 존재할 것이므로 홈 또는 오피스 클라이언트 플랫폼(205)을 업데이트하도록 요구되지 않을 것이다. 따라서, 하드웨어 제한 및 호환성 이슈는 오늘날 도 2a, 2b에서 도시된 시스템에서는 더 이상 존재하지 않는다.As gaming and application software become more complex and more photorealistic, they will require higher performance CPUs, GPUs, more RAM, larger and faster disk drives, and computing power in the hosting
더욱이, 게임 및 어플리케이션 소프트웨어가 오직 호스팅 서비스(210)의 서버에서 실행되기 때문에, 사용자의 홈이나 오피스(여기서 "오피스"는 만약 어떤 자격을 갖춘 어떤 비거주의 세팅을 포함할 것이고, 예컨대 스쿨룸을 포함함)에서 결코 게임 또는 어플리케이션 소프트웨어(광학 미디어의 형태, 또는 다운로드된 소프트웨어와 같은 것 중 어느 것)의 복사가 없다. 이는 게임 또는 어플리케이션이 불법 복제되는 공산을 현저하게 완화시키고, 그뿐만 아니라 불법 복제된 게임 또는 어플리케이션에 의해서 사용될 수 있는 있는 가치있는 데이터베이스의 확률을 완화시킨다. 정말, 만약 전문 서버(specialized servers)가 홈 오피스에서 사용을 위해서는 별로 실효성 없는 게임 또는 어플리케이션 소프트웨어를 플레이하기 위해 요구된다면, 게임 또는 어플리케이션 소프트웨어의 불법 복제가 얻어졌음에도 불구하고, 그것은 홈 또는 오피스에서 동작할 수 없을 것이다.Moreover, since the game and application software run only on the server of the hosting
일 실시예에서, 호스팅 서비스(210)는 비디오 게임을 개발하여 호스팅 서비스(210)에 실행될 수 있는 게임을 디자인하는 게임 또는 어플리케이션 소프트웨어 개발자(이는 일반적으로 소프트웨어 개발 회사, 게임 또는 무비 스튜디오 또는 게임 또는 어플리케이션 소프트웨어 출판인으로 언급된다; 220)를 위해 소프트웨어 개발 툴(tools)을 제공한다. 그러한 툴은 개발자가 표준 PC 또는 게임 콘솔에서 통상적으로 이용할 수 없는 호스팅 서비스의 특징을 활용하는 것을 허용하게 한다(예컨대, 복잡한 지오메트리("지오메트리(geometry))" 그렇지않으면 여기서는 3D 데이터세트로 정의되는 폴리건, 텍스쳐, 리깅(rigging), 라이트닝(lighting), 동작 및 그 밖의 요소 및 파라미터로 언급된다)의 매우 큰 데이터베이스로 매우 빠른 접근).In one embodiment, hosting
다른 비즈니스 모델은 이러한 아키텍쳐 하에서 가능하다. 하나의 모델 아래, 호스팅 서비스(210)는 도 2a에 도시된 것처럼, 최종 사용자로부터 가입 요금(subscription fee)을 수금하고 개발자(220)에게 로얄티를 지급한다. 도 2b에 도시된 택일적인 실행에서, 개발자(220)는 직접 사용자로부터 가입 요금을 수금하고 게임 또는 어플리케이션 컨텐츠 호스팅을 위해 호스팅 서비스(210)에 요금을 지불한다. 이러한 근본적인 이론은 온라인 게이밍 또는 어플리케이션 호스팅을 제공하기 위한 특정 비즈니스 모델로 제한되지는 않는다.
Other business models are possible under this architecture. Under one model, hosting
압축된 비디오 특징(Compressed video features ( CompressedCompressed VideoVideo CharacterisiticsCharacterisitics ))
앞서 논의한 대로, 비디오 게임 서비스 또는 어플리케이션 소프트웨어의 서비스 온라인 제공으로 인한 하나의 현저한 문제는 레이턴시(latency)이다. 70 ~ 80 ms(사용자에 의해서 작동되는 입력 장치의 포인트에서 디스플레이 장치에 디스플레이되는 응답 포인트까지)의 레이턴시는 빠른 응답 시간을 요구하는 게임 및 어플리케이션을 위한 상한(upper limit)이다. 그러나, 이는 많은 실제적 물리적 제약으로 인하여 도 2a 및 2b에 도시된 아키텍쳐와 관련하여 성취하는 것은 굉장히 어렵다.As discussed above, one prominent problem with service online provision of video game services or application software is latency. Latency of 70-80 ms (from the point of input device actuated by the user to the point of response displayed on the display device) is an upper limit for games and applications requiring fast response time. However, this is extremely difficult to achieve with respect to the architecture shown in FIGS. 2A and 2B due to many practical physical constraints.
도 3에 나타낸 바와 같이, 사용자가 인터넷 서비스에 가입한 때, 연결은 전형적으로 사용자의 홈 또는 오피스로 명목상 최대 전송률(301)로 평가된다. 제공자의 정책 및 전송 장비 능력에 따라, 최대 전송률은 엄격하게 더 빠르게 또는 느리게 강요되지만, 전형적으로 실제 이용가능한 전송률은 많은 다른 이유 중 하나에 의해서 더 느리다. 예컨대, DSL 센트럴 오피스 또는 로컬 케이블 모뎀 루프(loop)에는 너무 많은 네트워크 트래픽이 있거나, 떨어진 패킷 원인이 되는 케이블에 노이즈가 있거나, 제공자가 사용자마다 매달 최대 비트를 정할 것이다. 현재, 케이블 및 DSL 서비스를 위한 최대 다운스트림 전송률은 전형적으로 수백 킬로비트/초(Kbps)에서 30 Mbps 범위에 있다. 셀룰러 서비스는 전형적으로 수백 Kbps의 다운스트림 데이터로 제한된다. 그러나, 브로드밴드 서비스의 속도 및 브로드밴드 서비스에 가입한 다수의 사용자는 극적으로 시간 경과에 따라 증가될 것이다. 현재, 어떤 분석가는 미국 브로드밴드 가입자의 33%는 2Mbps 이상의 다운스트림 속도를 갖는 것으로 추정한다. 예컨대, 어떤 분석가는 2010년까지 미국 브로드밴드 가입자의 85% 이상은 2Mbps 이상의 전송률을 갖게 될 것으로 예상한다.As shown in Figure 3, when a user subscribes to an Internet service, the connection is typically rated at a nominal maximum transfer rate 301 to the user's home or office. Depending on the provider's policy and the capabilities of the transmitting equipment, the maximum rate is strictly faster or slower, but typically the actual rate available is slower for one of many other reasons. For example, in a DSL central office or local cable modem loop there may be too much network traffic, there may be noise in the cable causing dropped packets, or the provider will set a maximum bit per user per month. Currently, the maximum downstream rates for cable and DSL services typically range from several hundred kilobits per second (Kbps) to 30 Mbps. Cellular services are typically limited to hundreds of Kbps of downstream data. However, the speed of broadband services and the number of users who subscribe to broadband services will increase dramatically over time. Currently, some analysts estimate that 33% of US broadband subscribers have downstream speeds above 2Mbps. For example, some analysts predict that by 2010, more than 85% of US broadband subscribers will have data rates above 2Mbps.
도 3에 나타낸 바와 같이, 실제 이용가능한 최대 전송률(302)은 시간에 걸쳐 변동을 거듭할 것이다. 따라서, 낮은-레이턴시에서, 그것과 관련된 온라인 게임 또는 어플리케이션 소프트웨어는 특정 비디오 스트림에서 실제 이용가능한 전송률을 예상하기 어렵다. 만약 전송률(303)이 실제 이용가능한 최대 전송률(302)보다 늘어난 동작 및 어떤 다수의 복잡한 장면을 위해 주어진 해상도(예. 60fps에서 640 × 480)에서 주어진 다수의 초당 프레임(frames-per-second; fps)에서 주어진 수준의 품질을 유지하도록 요구된다면, 사용자의 비디오 스크린에 왜곡된/손실된 이미지 및 손실된 데이터를 초래하게 된다. 다른 서비스는 일시적으로 부가 패킷을 버퍼링하고(예, 큐 업(queue up)), - 이용가능한 전송률에서 클라이언트에게 패킷을 제공해서, 많은 비디오 게임 및 어플리케이션을 위해 받아들일 수 없는 결과인, 레이턴시의 증가를 초래한다. 마지막으로, 어떤 인터넷 서비스 제공자는 서비스 공격의 부정(네트워크 연결을 못하도록 해커들에 의해서 사용되는 잘 알려진 기술 사용자)처럼, 악의 있는 공격으로 전송률이 증가되고, 특정 시간 주기 동안 사용자의 인터넷 연결을 끊어지는 것을 볼 것이다. 따라서, 여기서 설명된 실시예는 비디오 게임을 위해 요구된 전송률이 최대 이용가능한 전송률을 초과하지 않는 것을 보장하기 위한 단계를 거친다.
As shown in FIG. 3, the actual maximum
호스팅 서비스 아키텍쳐(Hosting Service Architecture ( HostingHosting ServiceService ArchitectureArchitecture ))
도 4a는 일 실시예에 따른 호스팅 서비스(210)의 아키텍쳐를 도시하고 있다. 호스팅 서비스(210)는 단일 서버 센터에 위치되거나 다수의 서버 센터에 분포될 수 있다(그 밖의 사용자보다 어떤 서버 센터로 낮은-레이턴시 경로를 가진 사용자에게 낮은-레이턴시 연결을 제공하기 위해, 하나 이상의 서버 센터 실패의 경우에 리던던시(redundancy)를 제공하기 위해서 그리고 여러 사용자 중에서 균형잡힌 로드를 제공하기 위해서). 호스팅 서비스(210)는 결국 매우 많은 사용자 베이스를 제공하는 수십만 또는 수백만의 서버(402)를 포함할 것이다. 호스팅 서비스 제어 시스템(401)은 호스팅 서비스(201)를 전체적으로 제어하고, 라우터, 서버, 비디오 압축 시스템, 빌링(billing) 그리고 어카운팅(accounting) 시스템 등을 총괄한다. 일 실시예에서, 호스팅 서비스 제어 시스템(401)은 시스템 통계, 서버 정보, 사용자 정보를 위한 데이터베이스를 저장하기 위해 사용되는 RAID 배열과 묶인 분산 처리 리눅스 기반 시스템에서 실행된다. 앞서 말한 상세한 설명에서, 만약 그 밖의 특정 시스템의 결과로 보지않는다면, 호스팅 서비스(210)에 의해 실행된 다양한 동작은, 호스팅 서비스 제어 시스템(401)에 의해서 시작되고 제어된다.4A illustrates an architecture of hosting
호스팅 서비스(210)는 인텔, IBM, 휴렛 패커드, 및 그 밖의 회사에서 현재 이용가능한 것과 같은 다수의 서버(402)를 포함한다. 택일적으로, 서버(402)는 구성요소의 관습적인 구성으로 조립될 수 있거나, 결국 통합될 수 있어서 전체 서버는 단일 칩으로서 실행된다. 비록 이 다이어그램은 예시의 목적으로 작은 수의 서버(402)를 도시할지라도, 실제 배치에서는 적게는 한 서버(402) 또는 많게는 수백만 서버 이상이 있을 것이다. 서버(402)는 동일한 방법(구성 파라미터의 어떤 것의 예로서, 동일한 CPU 타입 및 성능을 갖고; GPU가 있거나 없고 만약 GPU가 있다면 동일한 GPU 타입이고 성능을 갖고; 동일한 수의 CPU 및 GPU를 갖고; 동일한 수량의 형태/스피드의 RAM을 갖고; 그리고 동일한 RAM 구성을 갖는 것)으로 모두 설정되거나, 또는 서버(402)의 다양한 서브셋(subset)은 동일한 구성(예컨대, 서버의 25%는 특정 방식으로 구성될 수 있고, 50%는 다른 방식으로 구성되고, 그리고 25%는 이미 다른 방식으로 구성된다)을 갖거나, 또는 모든 서버(402)가 다를 것이다.
일 실시예에서, 서버(402)는 디스크가 없고, 예컨대 그 자체가 로컬 대용량 스토리지(그것은 광학 또는 자기적 스토리지 또는 플래시 메모리와 같은 반도체 기반 스토리지 또는 그 밖의 비슷한 기능을 수행하는 수단인 대용량 스토리지)를 갖는 것보다, 각 서버는 공유된 대용량 스토리지에 빠른 백프레인(backplane) 또는 네트워크 연결을 통해서 접근한다. 일 실시예에서, 이러한 빠른 연결은 기가바이트 이더넷을 사용하여 실행되는 장치 사이 연결을 갖는 일련의 RAID(Redundant Arrays of Independent Disks; 405)와 연결된 스토리지 영역 네트워크(Storage Area Network; 403)이다. 종래 기술에서 알려진 것처럼, SAN(403)은 현재 게임 콘솔 및 PC에서 사용되는 RAM에서 이용가능한 대역폭에 근접하거나 잠재적으로 초과하는- 극단적으로 높은 대역폭을 초래하는, 많은 RAID 배열(405)과 함께 결합되어 사용될 것이다. 그리고 자기 미디어와 같은, 회전 미디어에 기초한 RAID 배열은, 종종 현저한 탐색 시간 접근 레이턴시를 갖는 반면에, 반도체 스토리지에 기초한 RAID 배열은 보다 낮은 접근 레이턴시로 실행될 수 있다. 다른 구성에서, 서버(402)의 일부 또는 전부는 로컬로 그들 자신의 대용량 스토리지의 일부 또는 전부를 제공한다. 예컨대, 서버(402)는 그것의 동작 시스템 및 낮은-레이턴시 로컬 플래시 기반의 스토리지에서 비디오 게임 또는 어플리케이션의 복사와 그것의 동작 시스템과 같은 자주 접근하는 정보를 저장할 것이지만, 적은 빈도수에 기초하여 기하학적 구조 또는 게임 상태 정보에 기초한 RAID 배열(405)에 접근하기 위해 SAN을 이용할 것이다. In one embodiment,
더욱이 일 실시예에서, 호스팅 서비스(210)은 아래에서 상세히 설명되는 낮은-레이턴시 비디오 압축 로직(404)을 채택한다. 비디오 압축 로직(404)은 소프트웨어, 하드웨어, 또는 어떤 그들의 조합(아래에서 설명되는 어떤 실시예)에서 실행될 것이다. 비디오 압축 로직(404)은 시각적 재료뿐만 아니라 오디오 압축을 위한 로직을 포함한다.Moreover, in one embodiment, hosting
동작중에, 키보드, 마우스, 게임 컨트롤러 또는 그 밖의 입력장치(421)를 통해서 사용자 구내(211)에서 비디오 게임을 플레이하거나 어플리케이션을 사용하는 동안에, 클라이언트(415)에 있는 제어 신호 로직(413)은 사용자에 의해서 작동된 버튼 누름(그리고 사용자 입력의 그 밖의 형태)을 나타내는 제어 신호(406a, 406b)(전형적으로 UDP 패킷의 형태로)를 호스팅 서비스(210)로 전송한다. 기존 사용자로부터 제어 신호는 적절한 서버(또는 서버들, 만약 다수 서버가 사용자의 입력 장치에 응답하면)로 보내진다. 도 4a에서 도시된 것처럼, 제어 신호(406a)는 SAN을 통해서 서버(402)로 보내질 것이다. 택일적으로 또는 추가적으로, 제어 신호(406b)는 호스팅 서비스 네트워크(예컨대, 이더넷 기반 로컬 영역 네트워크)를 거쳐서 서버(402)로 직접 보내질 것이다. 그들이 어떻게 전송되는지에 상관없이, 서버 또는 서버들은 제어 신호(406a, 406b)에 응답하는 게임 또는 어플리케이션 소프트웨어를 실행한다. 비록 도 4a에 도시하지 않았지만, 방화벽(firewall) 및/또는 게이트웨이와 같은 다양한 네트워킹 요소는 호스팅 서비스(210)의 가장자리 및/또는 인터넷(410) 및 홈 또는 오피스 클라이언트(415) 사이의 사용자 구내(211)의 가장자리에서 들어오거나 나가는 트랙픽 처리를 할 것이다. 실행되는 게임 또는 어플리케이션 소프트웨어의 그래픽 그리고 오디오 출력- 예컨대, 새로운 연속적인 비디오 이미지-은 여기서 설명된 것처럼 낮은-레이턴시 비디오 압축 기술에 따른 비디오 이미지 시퀀스를 압축하는 낮은-레이턴시 비디오 압축 로직(404)으로 제공되고 압축 비디오 스트림을 전송하며, 전형적으로 압축된 또는 비압축된 오디오를, 인터넷(410)을 거쳐(또는, 이하 설명되는 것처럼, 일반 인터넷을 통과하는 최적화된 높은 속도 네트워크 서비스를 거쳐) 클라이언트(415)로 되돌아가게 한다. 그 다음 클라이언트(415)에 낮은-레이턴시 비디오 신장(decompression) 로직(412)은 비디오 및 오디오 스트림을 신장하고 신장된 비디오 스트림을 랜더링하고, 전형적으로 신장된 오디오 시스템을 디스플레이 장치(422)에서 재생한다. 택일적으로, 오디오는 디스플레이 장치(422)와 분리 또는 분리되지 않는 스피커에서 재생될 수 있다, 그것에 주목하면, 입력 장치(421) 및 디스플레이 장치(422)가 도 2a 및 도 2b에서 독립적으로 도시되었음에도, 그들은 휴대용 컴퓨터 또는 모바일 장치와 같은 클라이언트 장치내에 통합될 것이다. In operation, while playing a video game or using an application in the
홈 또는 오피스 클라이언트(415)(도 2a 및 도 2b에서 홈 또는 오피스 클라이언트(205)로서 미리 설명된)는 매우 제한된 컴퓨팅 또는 그래픽 성능을 가진 매우 가격이 저렴하고 낮은 전력 장치일 것이고, 훨씬 제한적이거나 로컬 대용량 스토리지를 갖지 않을 것이다. 대조적으로, SAN(403) 및 다수 RAID(405)와 결합된 각 서버(402)는 예외적으로 높은 성능 컴퓨팅 시스템일 수 있고, 실제로 만약 다수 서버가 병렬 처리 구성에서 협력하여 사용된다면, 견디려고 구입될 수 있는 많은 컴퓨팅 및 그래픽 처리 파워에 거의 제한이 없다. 그리고, 낮은-레이턴시 비디오 압축(404) 및 낮은-레이턴시 비디오 압축(412) 때문에, 사용자에게 지각적으로, 서버(402)의 컴퓨팅 파워는 사용자에게 제공될 것이다. 사용자가 입력 장치(421)에서 버튼을 누르면, 마치 게임 또는 어플리케이션 소프트웨어가 로컬로 동작되듯이, 디스플레이(422)에 이미지는 현저한 지연없이 지각적으로 버튼 누름에 응답하여 업데이트된다. 따라서, 매우 낮은 성능 컴퓨터 또는 오직 값싼 칩을 가진 홈 또는 오피스 클라이언트(415)는 낮은-레이턴시 비디오 신장 및 제어 신호 로직(413)을 실행하고, 사용자는 로컬로 이용가능한 것처럼 원거리 위치에서 효율적인 임의적 컴퓨팅 파워로 제공된다. 이는 사용자에게 가장 진보된, 프로세서-집중적인(전형적으로 새로운) 비디오 게임 및 최고 성능 어플리케이션을 제시한다.The home or office client 415 (previously described as the home or office client 205 in FIGS. 2A and 2B) will be a very inexpensive and low power device with very limited computing or graphics performance and is much more limited or local. Will not have large storage. In contrast, each
도 4c는 매우 기본적이고 비싸지 않은 홈 또는 오피스 클라이언트 장치(465)를 도시한다. 이 장치는 도 4a 및 4b로부터 홈 또는 오피스 클라이언트(415)의 실시예이다. 그것은 대략 2인치 길이이다. PoE(Power over Ethernet)를 갖는 이더넷 케이블과 인터페이스하는 이더넷 잭(462)을 갖고, 그것으로부터 파워 및 인터넷간의 연결을 얻는다. 이는 NAT(Network Address Translation)를 지지하는 네트워크 내에서 NAT를 동작할 수 있다. 오피스 환경에서, 많은 새로운 이더넷 스위치는 PoE를 갖추고 오피스에 이더넷 잭에 직접 PoE를 가져간다. 이러한 상황에서, 요구되는 모든 것은 월 잭(wall jack)에서 클라이언트(465)까지의 이더넷 케이블이다. 만약 이용가능 이더넷 연결이 파워를 전달하지 않으면(예컨대, 가정에서 DSL 또는 케이블 모뎀으로, 그러나 PoE는 아닌), PoE를 갖는 출력 이더넷 및 파워가 없는 이더넷 케이블을 허용하는 비싸지 않은 이용가능한 벽"브릭(bricks)"(예컨대 파워 서플라이)이 있다.4C shows a very basic and inexpensive home or office client device 465. This device is an embodiment of a home or office client 415 from FIGS. 4A and 4B. It is approximately two inches long. It has an
클라이언트(465)는 블루투스 무선 인터페이스와 결합된 제어 신호 로직(413)(도 4a)을 포함하고, 이는 키보드, 마우스, 게임 컨트롤러 및/또는 마이크로폰 및/또는 헤드셋과 같은 블루투스 입력 장치(479)와 인터페이스된다. 또한, 클라이언트(465)의 일 실시예는 택일적으로 하나의 눈을 셔터(shutter)하기 위해 한 쌍의 셔터된 안경(전형적으로 적외선을 통해서)로 120fps 비디오 및 오디오를 지원할 수 있는 디스플레이 장치(468)와 결합되어서 120fps에서 비디오를 출력할 수 있다. 사용자에 의해 감지된 효과는 디스플레이 스크린의 "비약 전환(jumps out)"된 입체적 3D 이미지이다. 그러한 동작을 지원하는 디스플레이 장치(468)는 삼성 HL-T5076S이다. 각 눈을 위한 비디오 스트림이 분리됨으로써, 일 실시예에서 2개의 독립적인 비디오 스트림은 호스팅 서비스(210)에 의해서 압축되고, 프레임들은 제때에 끼워지며, 프레임들은 클라이언트(465) 내에 2개의 독립적인 신장 처리로 신장된다.Client 465 includes control signal logic 413 (FIG. 4A) coupled with a Bluetooth wireless interface, which interfaces with a
또한, 클라이언트(465)는 낮은-레이턴시 비디오 신장 로직(412)을 포함하고, 이는 들어온 비디오 및 오디오 압축을 해제하고 HDMI(High-Definition Multimedia Interface)를 통해서, 비디오 및 오디오를 TV로 제공하는 SDTV(Standard Definition Television) 또는 HDTV(High Definition Television)와 플러그되는 커넥터(463), 또는 HDMI를 지원하는 모니터(468)를 통해서 출력한다. 만약 사용자의 모니터(468)가 HDMI를 지원하지 않는다면, HDMI to DVI (디지털 비주얼 인터페이스)가 사용될 수 있지만, 오디오는 손실될 것이다. HDMI 표준하에서, 디스플레이 성능(464)(예컨대 지원되는 해상도, 프레임 비율)은 디스플레이 장치(468)와 통신하고, 그 다음 이 정보가 인터넷 커넥션(462)를 통해서 호스팅 서비스(210)로 전달되고 디스플레이 장치에 적절한 포맷으로 압축된 비디오를 스트림할 수 있다.The client 465 also includes low-latency video decompression logic 412, which decompresses incoming video and audio and provides video and audio to a TV via a high-definition multimedia interface (HDMI). Output via a
도 4d는 홈 또는 오피스 클라이언트 장치(475)가 도 4c에서 도시된 홈 또는 오피스 클라이언트 장치(465)와 외부 인터페이스를 더 갖는 것을 제외하고는 동일하게 도시하고 있다. 또한, 클라이언트(475)는 전력을 얻기 위해 PoE 뿐만아니라 벽에 플러그되는 외부 전력 공급 어댑터(도시하지 않음)로부터 얻을 수 있다. 클라이언트(457)가 USB 입력을 사용하면, 비디오 카메라(477)은 클라이언트(475)에 압축된 비디오를 제공하고, 이는 이하 설명하는 사용에서 호스팅 서비스(210)을 위해 클라이언트(475)에 의해 업로드된다. 카메라(477)로 구성되는 것은 이하 설명하는 압축 기술을 이용하는 낮은-레이턴시 압축기이다.FIG. 4D shows the same, except that the home or
인터넷 연결을 위해 이더넷 컨넥터를 추가하여, 또한 클라이언트(475)는 인터넷을 위해서 802.11g 무선 인터페이스를 갖는다. 두 인터페이스는 NAT를 지원하는 네트워크내에서 NAT를 사용할 수 있다. By adding an Ethernet connector for the Internet connection, the
또한, 비디오 및 오디오 출력을 위해 HDMI 커넥터를 갖추는 것에 부가하여, 클라이언트(475)는 또한 아날로그 출력(그리고 표준 어댑터 케이블은 VGA 출력을 제공하게 됨)을 포함하는 듀얼 링크 DVI-I 커넥터를 갖는다. 이는 또한 컴퍼지트 비디오 및 S-video를 위한 아날로그 출력을 갖는다.In addition to having HDMI connectors for video and audio outputs, the
오디오에 대해, 클라이언트(475)는 왼쪽/오른쪽 아날로그 스테레오 RCA 잭을 갖고 디지털 오디오 출력을 위해 TOSLINK 출력을 갖는다.For audio, the
입력 장치(479)를 위한 블루투스 무선 인터페이스에 부가하여, 또한 입력 장치와 인터페이스하도록 USB 잭이 필요하다.In addition to the Bluetooth wireless interface for the
도 4e는 클라이언트(465)의 내부 아키텍쳐의 일 실시예를 도시하고 있다. 다이어그램에 도시된 전체 또는 일부 장치는 커스텀 디자인 또는 규격품인, 커스텀 ASIC 또는 몇몇의 개별 장치, 필드 프로그래머블 로직 어레이(Field Programmable Logic Array)에서 실행될 수 있다.4E illustrates one embodiment of an internal architecture of client 465. All or some of the devices shown in the diagram may be implemented in a custom ASIC or some individual device, a Field Programmable Logic Array, which is a custom design or specification.
PoE를 갖는 이더넷(497)은 이더넷 인터페이스(481)에 부착된다. 파워(499)는 PoE를 갖는 이더넷(497)으로부터 파생되고 클라이언트(465)에서 나머지 장치와 연결된다. 버스(480)는 장치 사이에서 통신을 위한 공통 버스이다.
플래시(476; Flash)로부터 작은 클라이언트 제어 어플리케이션을 실행시키는 제어 CPU(483)(임베디드 RAM을 가진 100MHz에서 MIPS R4000 CPU 시리즈와 같은 어떤 작은 CPU가 대체로 적당하다)는 네트워크를 위해 프로토콜 스택을 실행하고 또한 호스팅 서비스(210)와 통신하며, 클라이언트(465)에서 모든 장치를 구성한다. 이는 또한 입력 장치(469)와 인터페이스를 다루고, 만약 필요하면 포워드 에러 보정에 의해서 보호되는 사용자 컨트롤러 데이터를 갖는 호스팅 서비스(210)로 패킷을 되돌려 보낸다. 또한, 제어 CPU(483)는 패킷 트래픽을 감시한다(예컨대, 만약 패킷들이 손실되거나 지연되면 또한 패킷은 그들의 도착을 타임스탬프(timestamp)한다). 이 정보는 호스팅 서비스(210)으로 되돌려 보내져서 일정하게 네트워크 연결을 감시하고 그에 맞춰 보낸 것을 조정한다. 플래시 메모리(476)는 처음에 제어 CPU(483)를 위한 제어 프로그램 및 특정 클라이언트(465) 유닛에게 고유한 시리얼 넘버를 초반에 로드한다. 이 시리얼 넘버는 클라이언트(465) 유닛을 유일하게 식별하기 위해 허용된다. A control CPU 483 (some small CPU, such as the MIPS R4000 CPU series at 100 MHz with embedded RAM, is generally suitable) to run a small client control application from Flash 476 also runs a protocol stack for the network. Communicate with hosting
블루투스 인터페이스(484)는 클라이언트(465) 내부, 안테나를 통해서 무선으로 입력 장치(469)와 통신한다.The
비디오 신장기(486)는 여기서 설명된 비디오 신장을 수행하기 위해서 구성된 낮은-레이턴시 비디오 신장기이다. 많은 비디오 신장 장치는 FPGA 또는 커스텀 ASIC으로 통합될 수 있는 디자인의 지적 재산(Intellectual Property; IP) 또는 규격화(off-the-shelf)되어 존재한다. H.264 디코더를 위한 IP를 제안하는 한 회사는 오스트레일리아 뉴 사우스 웨일즈, Ocean Logic of Manly 이다. IP 사용의 이점은 여기서 사용된 압축 기술이 압축 표준을 따르지 않는다는 것이다. 어떤 표준 신장기는 여기서 압축 기술을 수용하기 위해서 유연하게 구성되기에 충분하지만, 어떤 것은 그렇지 않다. 그러나 IP를 가지고, 요구대로 신장기를 다시 디자인하는데 유연성이 모두 갖춰져 있다.
비디오 신장기의 출력은 비디오 출력 서브시스템(487)과 연결되고, 이는 HDMI 인터페이스(490)의 비디오 출력을 위한 비디오와 연결된다.The output of the video extender is connected to the
오디오 신장 서브시스템(488)은 이용가능한 표준 오디오 신장기를 사용하거나, 그것은 IP로서 실행될 수 있거나, 오디오 신장기는 예컨대, Vorbis 오디오 시장기를 실행할 수 있는 제어 프로세서(483) 내에서 실행될 수 있다. The
오디오 신장을 실행하는 장치는 HDMI 인터페이스(490)의 오디오 출력을 위한 오디오와 결합되는 오디오 출력 서브시스템(489)과 결합된다.The device for performing audio stretching is coupled with an
도 4f는 클라이언트(475)의 내부 아키텍쳐의 일 실시예를 도시하고 있다. 아키텍쳐는 벽에서 플러그되는 파워 서플라이 어댑터로부터 선택적인 외부 DC파워 및 추가된 인터페이스를 제외하고는 클라이언트(465)의 것과 동일하고, 만일 그렇게 사용되면, 이더넷 PoE(497)로부터 들어오는 파워를 대체한다. 클라이언트(465)와 공통된 목적은 이하 반복되지 않을 것이지만, 추가된 목적은 이하에서 설명된다.4F illustrates one embodiment of an internal architecture of
CPU(483)는 부가 장치와 통신함과 더불어 부가 장치를 구성한다.The
WiFi 서브시스템(482)운 안테나를 통하여 이더넷(497)과 택일적으로 접속하는 무선 인터넷을 제공한다. WiFi 서브시스템(485)은 캘리포니아, 산타클라라의 Atheros Communication을 포함하는 광범위한 범위의 제조자로부터 이용될 수 있다.The
USB 서브시스템(485)는 유선 USB 입력장치(479)를 위한 블루투스 통신에 대해 택일성을 제공한다. USB 서브시스템은 꽤 표준적이고 상당히 FPGA 및 ASIC에서 이용가능하고, 뿐만아니라 종종 비디오 신장과 같은 그 밖의 기능을 수행하는 규격화된 장치로 설계된다.
비디오 출력 서브시스템(487)은 클라이언트(465)내에서 보다 더 넓은 범위의 비디오 출력을 생산한다. HDMI(490)가 제공하는 비디오 출력에 부가하여, DVI-I(491), S-video(492), 및 컴포지트 비디오(493)을 제공한다. 또한, DVI-I(491) 인터페이스가 디지털 비디오를 위해 사용될 때, 디스플레이 성능(464)은 디스플레이 장치에서 제어 CPU(483)로 되돌아 전달됨으로써, 디스플레이 장치(478) 성능의 호스팅 서비스(210)를 알릴 수 있다. 비디오 출력 서브시스템(487)에 의해서 제공되는 모든 인터페이스는 상당히 표준적인 인터페이스이고 꽤 많은 형태로 이용가능하다.The
오디오 출력 서브시스템(489)는 디지털 인터페이스(494)를 통해서 디지털인 오디오를 출력하고, 스테레오 아날로그 인터페이스(495)을 통해서 아날로그 형태로 오디오를 출력한다.
왕복 round trip 레이턴시Latency 분석( analysis( RoundRound -- TripTrip LatencyLatency AnalysisAnalysis ))
물론 앞서 언급한 단락의 이점에서 알 수 있듯이, 입력 장치(421)를 사용하고 디스플레이 장치(420)에서 동작의 결과를 보여주는 사용자의 동작 사이의 왕복 레이턴시는 70-80ms 보다 크지 않다. 이러한 레이턴시는 사용자 구내(211)의 입력 장치(421)에서 호스팅 서비스(210)까지의 경로 그리고 디스플레이 장치(422)를 위해 사용자 구내(211)로 다시 되돌아오는 경로에 있는 모든 요소를 고려해야 한다. 도 4b는 신호가 이동해야하는 다양한 구성 및 네트워크를 도시하고, 상기 이러한 요소 및 네트워크는 실제적인 실행에서 기대될 수 있는 모범적인 레이턴시를 리스트하는 타임라인(timeline)이다. 도 4b는 간략하게 되어서 오직 임계 경로 라우팅(critical path routing)만이 도시됨을 주지해야 한다. 시스템의 그 밖의 특징을 위해 사용되는 그 밖의 데이터의 라우팅은 아래에서 설명된다. 양쪽 화살표(예컨대, 화살표(453))는 왕복 레이턴시를 가리키고 한쪽 화살표(예컨대, 화살표(457))는 편도 레이턴시를 가리키고, "~"는 대략적인 측정을 나타낸다. 이는 리스트된 레이턴시가 성취할 수 없는 실제-세상 상황이 있을 것임을 가리키고 있을 것이지만, 미국에서 많은 경우에, DSL 및 케이블 모뎀을 사용자 구내(211)와 연결하기 위해서 사용하면, 이러한 레이턴시는 다음 절에서 설명되는 상황하에서 성취될 수 있다. 또한, 인터넷에 대한 셀룰러 무선 연결은 확실히 도시된 시스템에서 동작할 것인 반면에, 대부분 현재 미국 셀룰러 데이터 시스템(EVDO와 같은)은 매우 높은 레이턴시를 발생시키고 도 4b에서 도시된 레이턴시를 달성할 수 없을 것이다. 그러나, 이러한 근본적인 이론은 이러한 수준의 레이턴시를 실행하는 성능이 있는 향후의 셀룰러 기술에서 실행될 것이다.Of course, as can be seen from the advantages of the foregoing paragraphs, the reciprocal latency between the user's actions using the
사용자 구내(211)에서 입력 장치(421)로부터 시작되면, 일단 사용자는 입력 장치(421)을 작동하고, 사용자 제어 신호는 클라이언트(415)(이는 셋톱 박스와 같은 기본 장치일 것이거나, 그것은 PC 또는 모바일 장치와 같은 다른 장치에서 구동되는 소프트웨어 또는 하드웨어일지 모른다)로 보내지며, 패킷화되고, 그 패킷은 호스팅 서비스(210)로 도달하기 위해서 목적지 주소가 부여된다. 패킷은 또한 제어 신호가 들어올 때 사용자를 가리키는 정보를 포함한다. 그 다음 제어 신호 패킷(들)은 방화벽/라우터/NAT(Network Address Translation) 장치(443)를 통하여 WAN 인터페이스(442)로 보내진다. WAN 인터페이스(442)는 사용자의 ISP(Internet Service Provider)에 의해서 사용자 구내(211)에 제공되는 인터페이스 장치이다. WAN 인터페이스(442)는 케이블 또는 DSL 모뎀, WIMAX 트랜스시버, 파이버 트랜스시버, 셀룰러 데이터 인터페이스, 파워라인(powerline) 상에 인터넷 프로토콜 인터페이스, 또는 인터넷을 위한 그 밖의 많은 인터페이스일 것이다. 더욱이, 방화벽/라우터/NAT 장치(443)(그리고 잠재적인 WAN 인터페이스(442))는 클라이언트(415)와 통합될 것이다. 이러한 예는 어떤 표준(예컨대, 802.11g)을 통해서 무선으로 인터넷과 연결되고 전송되는 수단뿐만 아니라 홈 또는 오피스 클라이언트(415)의 기능을 실행하기 위한 소프트웨어를 포함하는, 모바일폰일 것이다Once started from the
그 다음 WAN 인터페이스(442)는 사용자 구내(211)와 연결된 WAN 트랜스포트와 일반 인터넷 또는 개인 네트워크 사이의 인터페이스를 제공하는 시설인 사용자의 인터넷 서비스 제공자(Internet Service Provider; ISP)를 위해 여기서는 "상호 접속 위치(point of presence)"로 불리는 것으로 제어 신호를 전송한다. 상호 접속 위치의 특징은 제공된 인터넷 서비스의 특성에 의존하여 다양하게 될 것이다. DSL의 경우, 그것은 전형적으로 DSLAM이 위치한 곳인 전화 회사 센트럴 오피스일 것이다. 케이블 모뎀의 경우, 그것은 전형적으로 케이블 멀티 시스템 오퍼레이트(Multi-System Office) 전파중계소(head end)가 될 것이다. 셀룰러 시스템의 경우, 전형적으로 셀룰러 타워와 관련된 제어 룸(control room)이 될 것이다. 그러나 상호 접속 위치의 특성이 무엇이든지 간에, 일반 인터넷(410)으로 제어 신호 패킷(들)이 전송될 것이다. 그 다음 제어 신호 패킷(들)은 가장 쉽게는 파이버 트랜시버 인터페이스를 통해서, 호스팅 서비스(210)를 위해서 WAN 인터페이스(410)로 전송될 것이다. 그 다음 WAN(441)는 제어 신호 패킷을 루팅 로직(409)(이는 이더넷 스위치 및 루팅 서버를 포함하는, 많은 다른 방법으로 실행될 수 있는)로 전송할 것이고, 이는 사용자의 주소를 평가하고 주어진 사용자를 위해 올바른 서버(402)로 제어 신호(들)를 전송한다.
그 다음 서버(402)는 서버(402)에서 동작하는 게임 또는 어플리케이션 소프트웨어를 위한 입력으로써 제어 신호를 가져가고 게임 또는 어플리케이션의 다음 프레임을 처리하기 위해서 제어 신호를 사용한다. 다음 프레임이 생성되면, 비디오 및 오디오는 서버(402)로부터 비디오 압축기(404)로 출력될 것이다. 비디오 및 오디오는 서버(402)에서 압축기(404)로 다양한 수단을 통해서 출력될 것이다. 우선, 압축기(404)는 서버(402)의 일부로 구성될(built into) 것이고, 그래서 압축은 서버(402)내에서 국부적으로 실행될 것이다. 또는, 비디오 및/또는 오디오는 서버(402)와 비디오 압축기(404) 사이의 개인 네트워크 또는 SAN(403)과 같은 공유된 네트워크를 통한 이더넷 연결과 같은 네트워크 연결을 통해서 패킷화된 형태로 출력될 것이다. 또는, 비디오는 서버(402)로부터 DVI 또는 VGA 커넥터와 같은 비디오 출력 커넥터를 통해 출력될 것이고, 그 다음 비디오 압축기(404)에 의해서 캡쳐된다. 또한, 오디오는 디지털 오디오(예컨대, TOSLINK 또는 S/PDIF 커넥터를 통해서) 또는 비디오 압축기(404) 내에 오디오 압축 로직에 의해서 엔코드되고 디지털화되는 아날로그 오디오로써 서버(402)로부터 출력된다.The
비디오 압축기(404)가 비디오 프레임, 그리고 서버(402)로부터 프레임 시간 동안 생성된 오디오를 캡쳐하고, 그 다음 비디오 압축기는 비디오 및 오디오를 아래 설명되는 기술을 사용하여 압축할 것이다. 비디오 및 오디오가 압축되면, 그것은 사용자의 클라이언트(415)로 다시 되돌리기 위한 주소로 패킷화되고, 그것은 WAN 인터페이스(441)로 전송되며, 그 다음 비디오 및 오디오 패킷은 일반 인터넷(410)를 통해 전송되고, 사용자의 ISP 상호 접속 위치(441)로 비디오 및 오디오 패킷을 전송하며, 그 다음 사용자의 구내에서 WAN 인터페이스(442)로 비디오 및 오디오 패킷을 전송하고, 방화벽/라우터/NAT 장치(443)으로 비디오 및 오디오 패킷을 전송하며, 그 다음 클라이언트(415)로 비디오 및 오디오 패킷을 전송한다.
클라이언트(415)는 비디오 및 오디오를 신장하고, 그 다음 디스플레이 장치(422)(또는 클라이언트의 일체형 디스플레이 장치)에서 비디오를 디스플레이하고, 디스플레이 장치(422) 또는 개별 앰프/스피커 또는 클라이언트에 일체형 앰프/스피커로 오디오를 전송한다.Client 415 extends video and audio, then displays video on display device 422 (or client's integrated display device), and integrates amplifier / speaker on
사용자가 지각적인 랙(lag)없이 설명된 전체 처리를 인식하는 것은 왕복 지연이 70 또는 80ms 이하일 필요가 있다. 설명된 왕복 경로에서 어떤 레이턴시 지연은 호스팅 서비스(210)의 제어하에 있고 그리고/또는 사용자 및 그 밖의 사람은 아니다. 그럼에도 불구하고, 많은 수의 실세계의 시나리오의 테스트와 분석에 기초할 때, 다음은 대략적인 측정이다.For the user to recognize the entire process described without a perceptual lag, the round trip delay needs to be less than 70 or 80 ms. Any latency delay in the described round trip path is under the control of hosting
제어 신호(451)를 보내기 위한 편도 전송 시간은 전형적으로 1ms이하이고, 사용자 구내(452)를 통한 왕복 전송은 전형적으로 대략 1ms에서 쉽게 이용가능한 소비자 등급 이더넷 위에 방화벽/라우터/NAT 스위치를 이용하여 성취될 수 있다. 사용자 ISP는 그들의 왕복 지연(453)에서 넓게 변화하지만, DSL 및 케이블 모뎀 공급자를 갖으므로, 우리는 전형적으로 10 에서 25ms 사이로 볼 수 있다. 일반 인터넷에서 왕복 레이턴시는 크게 얼마나 많은 트래픽이 전송되었는지에 따라 변화할 수 있고 전송에서 어떤 실패가 있었는지에 따라 변화할 수 있으나, 전형적으로 일반 인터넷은 공정하게 최적으로 루트를 제공하고(그리고 이러한 이슈는 아래에서 설명된다), 레이턴시는 대체로 광섬유를 통하는 광의 속도, 목적지까지 주어진 거리를 통해서 결정된다. 아래에서 더 설명됨으로써, 우리는 사용자 구내(211)에서 떨어지는 호스팅 서비스(210)로 기대하는 최대한의 거리는 대충 1000마일로 확립된다. 1000 마일에서(왕복 2000 마일), 인터넷을 통하여 신호를 전송하는 실제적 시간은 대략적으로 22ms이다. 호스팅 서비스(210)을 위한 WAN 인터페이스(441)는 전형적으로 무시할 수 있는 레이턴시를 갖는 상업 등급 섬유의 고속 인터페이스이다. 따라서, 일반적인 인터넷 레이턴시(454)는 전형적으로 1 에서 10ms 사이이다. 호스팅 서비스(210)을 통한 편도 루팅(455) 레이턴시는 1ms 이하로 성취될 수 있다. 서버(402)는 전형적으로 한 프레임 시간(이는 60fps에서 16.7ms)보다 적은 시간에 게임 또는 어플리케이션을 위한 새로운 프레임을 연산할 것이고 16ms는 사용하기에 합리적인 최대 편도 레이턴시(456)이다. 여기서 설명된 비디오 압축 및 오디오 압축 알고리즘의 최적화된 하드웨어 실행에서, 압축(457)은 1ms내에 완료될 수 있다. 덜 최적화된 버전에서, 압축은 6ms 만큼 많이 걸릴지도 모른다(물론 최적화된 버전에 비해서 오래 걸리지만, 그러한 실행은 왕복 전체 레이턴시에 영향을 줄 것이고, 70 ~ 80ms가 유지되기 위하여 단축되도록(예컨대, 일반 인터넷을 통해서 허락된 거리가 줄어들 수 있다) 그 밖의 레이턴시가 요구될 것이다). 인터넷(454), 사용자 ISP(453), 및 사용자 구내 루팅(452)의 왕복 레이턴시는 이미 고려되었고, 그래서 남은 것은 비디오 신장(458) 레이턴시로, 비디오 신장(458)이 전용 하드웨어에서 실행되는지, 또는 만약 클라이언트 장치(415)(PC 또는 모바일 장치)의 소프트웨어에서 실행된다면, 그것은 디스플레이의 크기 및 신장하는 CPU의 성능에 매우 의존할 수 있게 된다. 전형적으로, 신장(458)은 1 에서 8ms 사이가 걸린다.One-way transmission time for sending
따라서, 실행에서 보여지는 최악의 경우 레이턴시를 함께 더함으로서, 우리는 도 4a에서 도시하고 있는 시스템의 사용자에 의해 경험한 것으로 기대할 수 있는 최악의 경우 왕복 레이턴시를 결정할 수 있다. 그들은: 1+1+25+22+1+16+6+8 = 80ms이다. 그리고, 실제로 실행에서(아래 설명된 경고로), 이는 원형(prototype) 버전의 도 4a에 도시하고 있는 시스템을 사용하는 것, 미국 내에 클라이언트 장치, 홈 DSL 및 케이블 모뎀 커넥션처럼 규격화된 윈도우 PC를 사용하는 것으로 왕복 레이턴시가 도시된다. 물론, 최악의 경우보다 더 나은 시나리오는 훨씬 짧은 레이턴시를 초래할 수 있으나, 그들은 넓게 사용되는 상업 서비스를 개발하는데 필요로 하진 않는다.Thus, by adding together the worst-case latency seen in the implementation, we can determine the worst-case round-trip latency that can be expected to be experienced by the user of the system shown in FIG. 4A. They are: 1 + 1 + 25 + 22 + 1 + 16 + 6 + 8 = 80ms. And, in practice (with the warnings described below), this uses a prototype version of the system shown in FIG. The round trip latency is shown. Of course, better scenarios than the worst case can result in much shorter latency, but they are not needed to develop widely used commercial services.
일반 인터넷상에 도 4b에 리스트된 레이턴시를 달성하기 위해서는, 매우 특별한 특성의 패킷 스트림을 생성하기 위해 도 4a로부터 클라이언트(415)에 있는 비디오 압축기(404) 및 비디오 신장기(412)가 요구되고, 그로인해 호스팅 서비스(210)에서 디스플레이 장치(422)까지 전체 경로를 통해서 생성된 패킷 시퀀스는 지연 또는 초과된 패킷 손실이 생기지 않고, 특히 WAN 인터페이스(442) 및 방화벽/라우터/NAT(443)을 통한 사용자의 인터넷 연결 상에 사용자가 이용가능한 대역폭의 제한을 일관되게 떨어뜨린다. 더욱이, 비디오 압축기는 충분히 강력한 패킷 스트림을 생성하여서 그것은 보통 인터넷 및 네트워크 전송에서 일어나는 필연적인 패킷 손실 및 패킷 재주문(reordering)을 견딜 수 있다.
In order to achieve the latency listed in FIG. 4B on the general Internet, a
낮은-low- 레이턴시Latency 비디오 압축( Video Compression ( LowLow -- LatencyLatency VideoVideo CompressionCompression ))
앞서 언급한 목표를 성취하기 위해서, 일 실시예는 전송되는 비디오를 위해 피크 대역폭 요구 및 레이턴시를 감소하는 비디오 압축을 위한 새로운 접근에 이르게 한다. 이러한 실시예의 상세한 설명에 앞서, 현재 비디오 압축 기술의 분석은 도 5, 도 6a, 및 도 6b에 대하여 제공될 것이다. 물론, 만약 사용자가 이러한 기술에 의해서 요구되는 전송률을 다루기 위한 충분한 대역폭을 제공받는다면, 이러한 기술은 본질적인 이론과 일치되도록 채택될 것이다. 비디오 압축과 공시상태(synchrony) 및 동시에 실행된다는 것을 언급하는 것 외에 오디오 압축은 여기서 설명되지 않음을 주목하라. 종래 기술 오디오 압축 기술은 이 시스템을 위한 요구사항을 만족하도록 존재한다.To achieve the aforementioned goal, one embodiment leads to a new approach for video compression that reduces peak bandwidth requirements and latency for video to be transmitted. Prior to detailed description of this embodiment, an analysis of current video compression techniques will be provided with respect to FIGS. 5, 6A, and 6B. Of course, if the user is provided with sufficient bandwidth to handle the rate required by this technology, this technology will be adopted in accordance with the essential theory. Note that audio compression is not described herein, except to mention that video compression and synchronization are performed simultaneously. Prior art audio compression techniques exist to meet the requirements for this system.
도 5는 일련의 압축된 프레임(511 - 513)을 생성하기 위해 특정 압축 알고리즘을 사용한 압축기 로직(520)에 의해서 압축되는 각각 개별적인 비디오 프레임(501 - 503)에서 비디오 압축을 위한 특정 종래 기술을 도시하고 있다. 이 기술의 일 실시예는 이산 코사인 변환(discrete cosine transform; DCT)에 기초한 각 프레임이 Joint Picture Expert Group(JPEG) 압축 알고리즘에 따라 압축된 "움직임 JPEG"이다. 다양한 다른 형태의 압축 알고리즘이 채택될 것이지만, 반면 아직 이러한 근본적인 이론에 따른다(예컨대, JPEG-2000과 같은 웨이브렛-기반(wavelet-based) 압축 알고리즘).5 illustrates a particular prior art for video compression in each individual video frame 501-503 compressed by compressor logic 520 using a particular compression algorithm to produce a series of compressed frames 511-513. Doing. One embodiment of this technique is a "motion JPEG" in which each frame based on a discrete cosine transform (DCT) is compressed according to a Joint Picture Expert Group (JPEG) compression algorithm. Various other forms of compression algorithms will be employed, while still conforming to this fundamental theory (eg wavelet-based compression algorithms such as JPEG-2000).
이러한 형태의 압축이 가진 하나의 문제는 각 프레임의 전송률을 줄인다는 것이지만, 그것은 전체 비디오 스트림의 전송률을 줄이기 위해 연속적인 프레임 사이의 유사성을 활용하지 않는다. 예컨대, 도 5에서 도시된 것처럼, 604×480×24비트/픽셀 = 604*480*24/8/1024=900킬로바이트/프레임(KB/프레임)으로 가정하면, 주어진 품질의 이미지의 경우, 움직임 JPEG는 오직 10의 비율로 압축하여, 90KB/프레임의 데이터 스트림을 초래한다. 60프레임/초에서, 이는 채널 대역폭 90KB*8비트*60프레임/초 = 42.2Mbps를 요구할 것이고, 이는 오늘날 미국에서 거의 모든 홈 인터넷 연결보다 훨씬 너무 높은 대역폭일 것이고, 많은 오피스 인터넷 연결에 대해서도 너무 높은 대역폭일 것이다. 실제로, 이러한 높은 대역폭에서 일정한 데이터 스트림을 요구하게 되면, 오피스 LAN환경에서 조차 그것은 오직 한명의 사용자에게 제공하게 될 것이고, 그것은 100Mbps 이더넷 LAN의 대역폭의 대부분의 비율을 소모하게 될 것이고 LAN을 지원하는 이더넷 스위치를 훨씬 부담되게 할 것이다. 따라서, 동영상을 위한 압축은 그 밖의 압축 기술과 비교할 때 비효율적이다(아래 설명되는 것처럼). 더욱이, JPEG 및 JPEG-2000과 같은 단일 프레임 압축 알고리즘은 정지 이미지(예컨대, 눈이 얼마나 빽빽한 나뭇잎을 나타낼 수 있는지 정확하게 모르기 때문에 장면에 있는 빽빽한 나뭇잎에 아티팩트는 아티팩트로 나타내지 않을 것이다)로 인식할 수 없을지 모르는 압축 아티팩트(artifact)를 생산하는 손실있는 압축 알고리즘을 사용한다. 그러나, 일단 장면이 움직이면, 장면의 한 영역에서 아티팩트는 정지 이미지로 인식할 수 없다는 사실에도 불구하고, 눈이 프레임마다 변화되는 아티팩트를 발견하기 때문에 아티팩트는 두드러질 수 있다. 이는 프레임의 시퀀스에서 "배경 노이즈(background noise)" 인식의 결과이고, 미미한 아날로그 TV 수신상태 동안 볼 수 있는 "스노우(snow)" 노이즈에서 나타나는 것과 비슷하다. 물론, 이러한 형태의 압축은 여전히 여기서 설명되는 어떤 실시예에서 사용할 것이지만, 일반적으로 말해서, 장면에서 배경 노이즈를 피하기 위해, 높은 전송률(예컨대, 낮은 압축 비율)는 주어진 지각적인 품질을 위해 요구된다.One problem with this type of compression is that it reduces the transmission rate of each frame, but it does not exploit the similarity between successive frames to reduce the transmission rate of the entire video stream. For example, assuming that 604 × 480 × 24 bits / pixel = 604 * 480 * 24/8/1024 = 900 kilobytes / frame (KB / frame), as shown in FIG. 5, for an image of a given quality, a motion JPEG Compresses only at a rate of 10, resulting in a data stream of 90 KB / frame. At 60 frames / second, this would require channel bandwidth of 90 KB * 8 bits * 60 frames / second = 42.2 Mbps, which would be much higher bandwidth than almost all home internet connections in the United States today, and too high for many office internet connections. It will be bandwidth. Indeed, if a constant data stream is required at such a high bandwidth, even in an office LAN environment it will provide only one user, which will consume most of the bandwidth of a 100 Mbps Ethernet LAN and support an Ethernet switch. Will make it much more burdensome. Thus, compression for video is inefficient compared to other compression techniques (as described below). Moreover, single-frame compression algorithms such as JPEG and JPEG-2000 may not be able to recognize still images (e.g. artifacts on dense leaves in the scene will not be represented as artifacts because they do not know exactly how dense the leaves can be). Use a lossy compression algorithm that produces unknown compression artifacts. However, once the scene moves, the artifacts can be noticeable because the eye finds artifacts that change from frame to frame, despite the fact that artifacts in one area of the scene cannot be recognized as still images. This is the result of "background noise" recognition in the sequence of frames, and is similar to that seen in "snow" noise that can be seen during minor analog TV reception. Of course, this type of compression will still be used in some embodiments described herein, but generally speaking, in order to avoid background noise in the scene, a high transmission rate (eg, a low compression ratio) is required for a given perceptual quality.
H.264 또는 윈도우 미디어 VC9, MPEG2 및 MPEG4와 같은 다른 형태의 압축은 비디오 스트림을 압축하는데 모두 효율적인데, 이는 연속적인 프레임 사이의 유사성을 활용하기 때문이다. 이러한 기술은 모두 비디오를 압축하기 위해 동일한 일반적 기술에 따른다. 따라서, 비록 H.264 표준은 설명될지라도, 그러나 동일한 일반적인 이론은 그 밖의 압축 알고리즘에 적용된다. 많은 수의 H.264 압축기 및 신장기가 이용가능하고, H.264를 압축하기 위한 x264 오픈 소스 소프트웨어 라이브러리 및 H.264를 신장하기 위한 FFmpeg 오픈 소스 소프트웨어 라이브러리를 포함한다.Other forms of compression, such as H.264 or Windows Media VC9, MPEG2 and MPEG4, are all efficient for compressing video streams because they take advantage of similarity between successive frames. All of these techniques follow the same general technique for compressing video. Thus, although the H.264 standard is described, the same general theory applies to other compression algorithms. A large number of H.264 compressors and expanders are available and include the x264 open source software library for compressing H.264 and the FFmpeg open source software library for extending H.264.
도 6a 및 6b는 일련의 비압축된(uncompressed) 비디오 프레임(501 - 503, 559 - 561)이 압축 로직(620)에 의해서 일련의 "I 프레임"(611,671); "P 프레임"(612,613); 및 "B 프레임"(670)으로 압축되는 모범적인 종래 압축 기술을 도시하고 있다. 도 6a에서 수직축은 일반적으로 엔코드된 각 프레임(비록 프레임은 스케일로 도시되지 않았지만)의 결과 크기를 나타낸다. 설명된 것처럼, I 프레임, B 프레임, 및 P 프레임을 사용하는 비디오 코딩은 해당 기술 분야에 사람들에게 분명하게 이해될 것이고, I 프레임(611)은 완전히 비압축된 프레임(501)(앞서 설명된 것처럼 압축된 JPEG 이미지와 유사한)의 DCT 기반 압축이다. P 프레임(612,613)은 일반적으로 I 프레임(611)보다 현저하게 작다. 왜냐하면 그들은 선행 I 프레임 또는 P 프레임에서 데이터를 이용하기 때문이다; 즉, 그들은 선행 I 프레임 또는 P 프레임 사이의 변화를 가리키는 데이터를 포함한다. B 프레임(670)은 B 프레임이 선행 기준 프레임에 있는 잠재적인 프레임뿐만 아니라 다음 기준 프레임에 프레임을 사용하는 것을 제외하고는 P 프레임의 것과 비슷하다.6A and 6B show that a series of uncompressed video frames 501-503, 559-561 are converted into a series of "I frames" 611, 671 by compression logic 620; "P frames" 612, 613; And exemplary conventional compression techniques that are compressed into "B frames " In FIG. 6A the vertical axis generally represents the resulting size of each encoded frame (although the frame is not shown in scale). As described, video coding using I frames, B frames, and P frames will be apparent to those skilled in the art, and I frame 611 is a completely uncompressed frame 501 (as described above). DCT based compression (similar to compressed JPEG images). P frames 612 and 613 are typically significantly smaller than I frames 611. Because they use data in the preceding I frame or P frame; That is, they contain data indicating changes between preceding I or P frames. The B frame 670 is similar to that of the P frame except that the B frame uses the frame for the next reference frame as well as the potential frame in the preceding reference frame.
다음 논의에서, 요청된 프레임 속도는 60프레임/초이고, 각 I 프레임은 대략 160Kb이고, 평균 P 프레임 및 B 프레임은 16Kb 이고 새로운 I 프레임은 매 초마다 생성된다. 이러한 세트의 파라미터로, 평균 전송률은 : 160Kb + 16Kb * 59 = 1.1Mbps 일 것이다. 이 전송률은 홈 및 오피스를 위한 현재 많은 광대역 인터넷 연결의 최대 전송률 이내로 떨어진다. 이 기술은 또한 오직 인트라프레임(intraframe) 엔코딩으로부터 배경 노이즈 문제를 피하려는 경향이 있고 왜냐하면 P 프레임 및 B 프레임은 프레임들 사이의 차이를 추적하고, 그래서 압축 아티팩트가 상기 설명한 배경 노이즈 문제를 줄이거나 프레임 투 프레임에서 사라지고 나타나지 않는 경향이다. In the following discussion, the requested frame rate is 60 frames / second, each I frame is approximately 160 Kb, the average P frame and B frame is 16 Kb and a new I frame is generated every second. With this set of parameters, the average bit rate would be: 160Kb + 16Kb * 59 = 1.1 Mbps. This rate falls within the maximum rate of many current broadband Internet connections for home and office. This technique also tends to avoid background noise problems only from intraframe encoding because P frames and B frames track differences between frames, so that compression artifacts reduce or reduce the background noise problem described above. It tends to disappear and not appear in two frames.
앞서 말한 형태의 압축이 갖는 하나의 문제는 비록 평균 전송률이 대체적으로 낮더라도(예컨대, 1.1Mbps), 단일 I 프레임은 전송을 위해 몇 프레임 시간이 걸릴 것이다. 예컨대, 종래 기술을 사용하는 2.2Mbps 네트워크 연결(예컨대, 도 3a로 부터 최대 이용가능한 전송률(302)의 2.2Mbps 피크를 갖는 DSL 또는 케이블 모뎀)은 전형적으로 각 60 프레임인 160Kbps I 프레임으로 1.1Mbps에서 비디오를 스트림하는 것이 적당할 것이다. 이는 비디오를 신장하기 전에 비디오의 1초 큐 업(queue up)하는 신장기를 가짐으로써 달성될 수 있다. 1초에, 데이터의 1.1Mb는 전송될 것이고, 이는 쉽게 최대 이용가능한 전송률인 2.2Mbps까지 수용될 것이고, 이용가능한 전송률이 50%이상까지 주기적으로 내려갈 것이다. 불행히도, 이러한 종래 기술 접근은 리시버에서 1초 비디오 버퍼 때문에 비디오를 위한 1초 레이턴시를 초래할 것이다. 그러한 지연은 많은 선행 어플리케이션(예컨대, 선형 비디오의 재생)에 적합하지만, 그것은 70 ~ 80ms의 레이턴시 이상을 견딜 수 없는 빠른 동작 비디오 게임을 위해서는 너무 오래 걸리는 레이턴시이다.One problem with the aforementioned type of compression is that even if the average rate is generally low (eg 1.1 Mbps), a single I frame will take several frame times to transmit. For example, a 2.2 Mbps network connection using a prior art (e.g., a DSL or cable modem with a 2.2 Mbps peak at the maximum
만약 1초 비디오 버퍼를 줄이기 위한 시도가 있다면, 그것은 여전히 빠른 동작 비디오 게임을 위한 레이턴시에서 적당한 생략을 초래하지 않을 것이다. 어떤 경우에, 앞서 설명했던 것처럼, B 프레임의 사용은, I 프레임뿐만 아니라 I 프레임에 선행하는 모든 B 프레임의 수신상태를 필요로 할 것이다. 만약 우리가 P 프레임과 B 프레임 사이 대략적으로 나눠진 59개 비-I 프레임을 추측하면, 거기에는 최소 29개 B 프레임과 어떤 B 프레임이 디스플레이되기 전에 수신된 하나의 I 프레임이 있을 것이다. 따라서, 이용가능한 채널의 대역폭에도 불구하고, 각 1/60 초 기간의 29+1=30 프레임의 지연 또는 500ms의 레이턴시를 필요로 할 것이다. 분명하게도 그것은 너무 길다.If there is an attempt to reduce the one second video buffer, it will still not result in proper omissions in latency for fast motion video games. In some cases, as described above, the use of B frames will require the reception of not only I frames, but also all B frames that precede the I frames. If we assume 59 non-I frames divided roughly between P and B frames, there will be at least 29 B frames and one I frame received before any B frames are displayed. Thus, despite the available channel bandwidth, it will require a delay of 29 + 1 = 30 frames or a latency of 500 ms in each 1/60 second period. Obviously it is too long.
따라서, 다른 접근은 B 프레임을 제거할 것이고 오직 I 프레임 및 P 프레임을 사용한다.(이것의 하나의 결과는 주어진 품질 수준을 위해 전송률이 증가될 것이지만, 이러한 예에서 일관성을 위하여 각 I 프레임은 160Kb이고, 평균 P 프레임은 16Kb 크기이며, 따라서 전송률은 여전히 1.1Mbps를 계속해서 추측하다) 이러한 접근은 오직 먼저 수신된 프레임에 의존하는 각 P 프레임의 디코딩 때문에, B 프레임에 의해서 소개된 피할 수 없는 레이턴시를 제거한다. 이러한 접근에 남아 있는 한 문제는 대부분 홈 및 많은 오피스에서 정형적인 것처럼, 낮은 대역폭 채널에 I 프레임은 평균 P 프레임에 비해 너무 크고, I 프레임의 전송은 실질적으로 레이턴시가 추가된다는 것이다. 이는 도 6b에 도시하고 있다. 비디오 스트림 전송률(624)은 I 프레임의 경우를 제외하고는 이용가능한 최대 전송률(621)보다 아래이고, 여기서 I 프레임(623)을 위해 요구된 피크 전송률은 이용가능한 최대 전송률(622)(그리고 정격된 최대 전송률(621)조차)을 초과한다. P 프레임에 의해서 요구되는 전송률은 이용가능한 최대 전송률보다 작다. 2.2Mbps에서 이용가능한 최대 전송률 피크가 그것의 2.2Mbps 피크 속도에서 꾸준히 남아있음에도, 그것은 I 프레임을 전송하기 위해서 160Kb/2.2Mb = 71ms가 걸릴 것이고, 만약 이용가능한 최대 전송률(622)이 50%까지(1.1Mbps) 떨어지면, 그것은 I 프레임을 전송하기 위해서 142ms가 걸릴 것이다. 그래서, I 프레임을 전송하는 레이턴시는 71 ~ 142ms 사이에서 다소 떨어질 것이다. 이 레이턴시는 도 6b에서 확인된 레이턴시에 첨가된 이 레이턴시, 최악의 경우에 70ms까지 추가되서, 이것은 사용자가 입력 장치(421)를 작동하는 시점에서 디스플레이 장치(422)에 이미지가 나타날 때까지 141 ~ 222ms의 종합 왕복 레이턴시를 초래할 것이고, 이는 너무 높다. 그리고 만약 이용가능한 최대 전송률이 2.2 Mbps 아래로 떨어지면, 레이턴시는 더 증가될 것이다.Thus, the other approach will eliminate B frames and use only I frames and P frames. (One result of this will be increased bit rate for a given quality level, but in this example each I frame is 160Kb for consistency. And the average P frame is 16Kb in size, so the rate still continues to assume 1.1 Mbps). Remove it. One problem with this approach is that, as is typical in most homes and many offices, I-frames on low-bandwidth channels are too large for average P frames, and the transmission of I-frames substantially adds latency. This is illustrated in Figure 6b. The video stream rate 624 is below the
또한 거기에는 일반적으로 이용가능한 전송률(622)을 훨씬 초과한 피크 전송률(623)을 가진 ISP에게 심각한 결과인 "전파방해(jamming)"가 있다. 다른 ISP에서 기구는 다르게 동작할 것이지만, 이용가능한 전송률(622)보다 매우 높은 전송률로 패킷을 수신할 때는 DSL 및 케이블 모뎀 ISP 사이에 다음의 행동이 상당히 공통된다 : (a) 그것들을 큐잉함으로써 패킷을 지연하고(레이턴시를 유도함), (b) 일부 또는 모든 패킷을 떨어트리고, (c) 어떤 기간 동안 연결을 비활성화한다(대부분 그것과 관련된 ISP는 "denial of service"와 같은 악의있는 공격 때문에). 따라서, 도 6b에서 도시한 것과 같은 특징을 갖는 최대의 전송률에서 패킷 스트림을 전송하는 것은 실행가능한 선택이 아니다. 피크(623)는 호스팅 서비스(210)에서 큐 업될 것이고, 앞선 단락에서 설명된 받아들일 수 없는 레이턴시를 유도하는 이용가능한 최대 전송률보다 아래 전송률로 전송한다.There is also "jamming" which is a serious consequence for ISPs with peak rates 623 that are generally well above the
더욱이, 도 6b에 도시하고 있는 비디오 스트림 전송률 시퀀스(624)는 잘 "제어된(tame)" 비디오 스트림 전송률 시퀀스이고, 매우 작은 동작을 갖고 매우 많은 변화를 하지 않는 비디오 시퀀스로 비디오를 압축한 결과 기대되는 분류의 전송률 시퀀스일 것이다(예컨대, 카메라는 고정된 위치에 있고 거의 움직임이 없으며, 비디오 전화 회의에서 공통될 것이다). Moreover, the video stream rate sequence 624 shown in FIG. 6B is a well "tame" video stream rate sequence and is expected to result from compressing the video into a video sequence that has very little motion and does not change very much. It will be a rate sequence of classifications (e.g., the camera is in a fixed position, little motion, and will be common in video conferencing).
도 6c에 도시된 비디오 스트림 전송률 시퀀스(634)는 움직임 그림 또는 비디오 게임 또는 어떤 어플리케이션 소프트웨어에서 만들어지는 훨씬 많은 움직임을 갖는 비디오에서 볼 수 있는 전형적인 시퀀스이다. I 프레임 피크(633)에 추가된 것을 주목하라, 또한 거기에는 많은 경우에 이용가능한 최대 전송률을 초과하고 꽤 큰 P 프레임 피크(635 및 636과 같은)가 있다. 비록 이러한 P 프레임 피크는 I 프레임 피크만큼 꽤 크지 않지만, 그들은 여전히 최대 전송률에 채널에 의해서 운반되기에 너무 크고, I 프레임 피크와 마찬가지로, P 프레임 피크는 느리게 전송되어야 한다(그것 때문에 증가하는 레이턴시). The video
높은 대역폭 채널에서(예컨대, 100Mbps LAN, 또는 높은 대역 폭 100Mbps 개인 연결) 네트워크는 I 프레임 피크(633) 또는 P 프레임 피크(636)처럼 큰 피크를 견딜 수 있을 것이고, 이론상으로 낮은-레이턴시는 유지될 수 있겠다. 그러나, 그러한 네트워크는 빈번하게 많은 사용자들 사이에서 공유되고(예컨대, 오피스 환경에서),특히 만약 네트워크 트래픽이 개인 공유 커넥션에 전송된다면(예컨대, 데이터 센터에서 오피스까지) 그러한 "피키(peaky)" 데이터는 LAN의 성능에 영향을 줄 것이다. 우선, 이러한 예는 대체적으로 60fps에서 낮은 해상도 비디오 스트림 640×480 픽셀이라는 것을 명심해야 한다. 60fps에서 HDTV 스트림의 1920×1080는 쉽게 현대 컴퓨터 및 디스플레이에 의해서 다뤄지고, 60fps에서 2560×1440 해상도 디스플레이는 점차적으로 이용가능하다(예컨대, Apple, Inc의 30인치 디스플레이). 60fps에서 1920×1080인 높은 동작 비디오 시퀀스는 합리적인 품질 수준을 위해 H.264 압축을 사용하는 4.5Mbps를 요구할 것이다. 만약 우리가 10×명목상 전송률에서 I 프레임 피크를 추측하면, 45Mbps 피크를 초래할 것이나, 작을 뿐만아니라 여전히 상당한 P프레임 피크이다. 만약 몇몇 사용자가 동일한 100Mbps 네트워크로 비디오 스트림을 수신한다면(예컨대, 오피스와 데이터 센터 간의 개인 네트워크 연결), 몇몇 사용자의 비디오 스트림으로부터 피크를 어떻게 조정할 수 있는지, 네트워크의 대역폭을 압도하는지, 네트워크에 사용자를 지지하는 스위치의 백플레이트의 대역폭을 잠재적으로 압도하는지를 아는 것은 쉽다. 기가비트 이더넷 네트워크에서 조차, 만약 충분한 사용자가 한번에 충분히 조정된다면, 그것은 네트워크 또는 네트워크 스위치를 극복할 수 있다. 그리고, 일단 2560×1440 해상도 비디오가 보다 흔해지면, 평균 비디오 스트림 전송률은 9.5Mbps일 것이고, 아마도 95Mbps 피크 전송률을 초래한다. 말할 필요없이, 데이터 센터 및 오피스 사이의 100Mbps연결(이는 오늘날 예외적으로 빠른 연결)은 완전히 단일 사용자로부터 피크 트래픽에 의해서 쇄도될 것이다. 따라서, 비록 LAN 및 개인 네트워크 연결이 피키 스트리밍 비디오를 보다 잘 견딜 수 있더라도, 높은 피크를 갖는 스트리밍 비디오는 바람직하지 않고 특별한 계획 및 오피스의 IT 부서에 의한 시설이 요구될 것이다.In a high bandwidth channel (eg, 100 Mbps LAN, or
물론, 표준 선형 비디오 어플리케이션을 위해 이러한 이슈는 문제가 아니다. 왜냐하면 전송률은 최대 이용가능한 전송률(622) 아래 각 프레임을 위한 데이터 및 전송의 포인트에서 "부드럽게(smoothed)" 되고, 클라이언트에 버퍼는 신장되기 전에 I,P,B 프레임의 시퀀스를 저장한다. 따라서, 네트워크 상에 전송률은 비디오 스트림의 평균 전송률에 가깝게 남게된다. 불행히도, 이는 B 프레임이 사용되지 않았음에도 레이턴시를 유도하고, 이는 빠른 응답 시간을 요구하는 비디오 게임 및 어플리케이션과 같은 낮은-레이턴시 어플리케이션을 위해서는 받아들여지지 않는다. 높은 피크를 갖는 비디오 스트림을 완화하는 종래 기술 해결책은 "Constant Bit Rate(CBR)"로 불리는 엔코딩 기술을 사용하는 것이다. 비록 CBR이란 용어는 모든 프레임이 동일한 비트율(bit rate)(예컨대, 크기)을 갖도록 압축됨을 의미하는 것처럼 생각될지라도, 일반적으로보통 그것이 언급하는 것은 소정 수의 프레임(우리의 경우에, 1 프레임)을 가로지르는 최대 비트율이 허용되는 압축 패러다임. 예컨대 도 6c의 경우에, 만약 CBR 제약이 제한된 비트율을 엔코딩하는 데 적용된다면, 예컨대 70% 의 정격된 최대 전송률(621), 다음으로 압축 알고리즘은 각각의 프레임의 압축을 제한할 것이고 그래서 정격된 최대 전송률(621)은 적은 비트로 압축될 것이다. 이것의 결과는 주어진 품질 수준을 유지하기 위해 일반적으로 보다 많은 비트를 요구하는 프레임은 비트의 "부족(starved)" 그리고 프레임들의 이미지 품질은 최대 전송률(621)의 70% 비율보다 더 많은 비트를 요구하지 않는 그 밖의 프레임보다 더 나빠질 것이다. 이러한 접근은 (a) 작은 움직임 또는 장면 변화가 예상되고 (b) 사용자가 주기적으로 품질 감소를 받아들일 수 있는 어떤 형태의 압축된 비디오를 위한 받아들일 수 있는 결과를 생산할 수 있다. CBR와 어울리는 어플리케이션의 좋은 예는 비디오 원격 회의인데 이는 거의 피크가 없기 때문이고, 만약 품질이 분명하게 감소한다면(예컨대 만약 카메라에 찍히면, 높은 품질 이미지 압축을 위해 충분하게 비트 되지 않으면서 찍히는 동안에, 이는 감소된 이미지 품질을 초래할 수 있다), 그것은 대부분 사용자에게 받아들여질 수 있다. 불행하게도, CBR은 높은 복잡성의 장면을 갖거나 많은 움직임 및/또는 거기에 합리적인 일정한 수준의 품질이 요구되는 그 밖의 많은 어플리케이션에는 잘 어울리지 않는다. Of course, for standard linear video applications this issue is not a problem. Because the rate is " smoothed " at the point of data and transmission for each frame below the maximum
일 실시예에서 채택된 낮은-레이턴시 압축 로직(404)은 낮은-레이턴시 압축된 비디오를 스트리밍하여 문제의 범위로 전달하기 위한 몇 개의 다른 기술을 사용한다. 먼저, 낮은-레이턴시 압축 로직(404)은 오직 I 프레임 및 P 프레임을 생성하고, 그것 때문에 각 B 프레임을 디코드하기 위한 몇 개의 프레임 시간을 기다리기 위한 필요를 완화한다. 더욱이, 도 7a에 도시된 것처럼 일 실시예에서, 낮은-레이턴시 압축 로직(404)은 각각의 압축되지 않은 프레임(701 - 760)을 일련의 "타일(tile)" 및 개별적으로 I 프레임 또는 P 프레임과 같은 각각의 타일로 엔코드한다. 압축된 I 프레임 및 P 프레임의 그룹은 "R 프레임"(711 - 770)으로 여기서 언급한다. 도 7a에 도시된 특정한 예에서, 각 압축되지 않은 프레임은 16 타일의 4×4 매트릭스로 세분된다. 그러나, 이러한 근본적인 원리는 어떤 특정한 세분 계획에 제한되지 않는다. The low-
일 실시예에서, 낮은-레이턴시 압축 로직(404)은 다수의 타일로 비디오 프레임이 나눠지고, I 프레임(예컨대, 그 타일은 마치 그것이 전체 이미지의 크기에 1/16th 의 개별 비디오 프레임이고, 이러한 "미니(mini)" 프레임을 위해 사용되는 압축은 I 프레임 압축)으로써 각 프레임으로부터 하나의 타일을 엔코드하며(예컨대, 압축한다), P 프레임(예컨대, 각각의 "미니" 1/16th 프레임을 위해 사용되는 압축은 P 프레임 압축이다)으로써 나머지 타일을 엔코드한다. I 프레임 및 P 프레임으로써 압축된 타일은 대체적으로 "I 타일" 그리고 "P 타일"로 언급될 것이다. 각각의 연속적인 비디오 프레임으로, I 타일로써 엔코드된 타일은 변화한다. 따라서, 주어진 프레임 시간에, 비디오 프레임에 있는 타일 중에 오직 하나의 타일은 I 타일이고, 타일들 중 나머지는 P 타일이다. 예컨대, 도 7a에서, 압축되지 않은 프레임(701)의 타일 0은 I 타일 I0로 엔코드되고 나머지 1 - 15 타일은 R 프레임(711)을 생성하기 위해서 P 타일 P1 에서 P15로써 엔코드된다. 다음 압축되지 않은 비디오 프레임(702)에서, 압축되지 않은 프레임(701)의 타일 1은 I 타일 I1 로 엔코드되고 나머지 타일 0 및 타일 2에서 15는 R 프레임(712)을 생성하기 위해서 P 파일 P0 , P2 에서 P15로써 엔코드된다. 따라서, 타일을 위해 I 타일 및 P 타일은 연속적인 프레임에 걸쳐 계속해서 제때에 인터리브된다(interleaved). 그 과정은 R 타일(770)이 I 타일(예컨대, I15)로써 엔코드된 매트릭스에 마지막 타일이 생성될 때까지 계속된다. 다음으로 그 과정은 프레임(711)처럼 다른 R 프레임을 생성하는 것을 다시 시작한다(예컨대, 타일 0을 위해 I 타일을 엔코딩). 비록 도 7a에 도시되지 않았지만, 일 실시예에서, R 프레임의 비디오 시퀀스의 제 1 R 프레임은 오직 I 타일(예컨대, 차후의 P 프레임은 동작을 연상하기 위해 그것으로부터 기준 프레임 데이터를 갖는다)을 포함한다. 택일적으로, 일 실시예에서, 스타트업 시퀀스는 일반적으로 동일한 I 타일 패턴을 사용하지만, I 타일로 아직 엔코드되지 않은 타일을 위해 P 타일을 포함하지 않는다. 다른 말로, 어떤 타일은 제 1 I 타일이 도착할 때까지 어떤 데이터로 엔코드되지 않고, 그 때문에 도 9a에 비디오 스트림 전송률(934)에서 스타트업 피크를 피하고, 이는 아래에서 상세히 설명한다. 더욱이, 아래에 설명된 것처럼, 이러한 기본적인 이론을 준수하면서 다른 크기 및 형태는 타일을 위해 사용될 수 있다.In one embodiment, low-
클라이언트(415)에서 동작하는 비디오 신장 로직(412)은 마치 그것은 I 및 P 프레임의 별개 비디오 시퀀스처럼 각 타일을 신장하고, 그 다음에 디스플레이 장치(422)를 구동하는 프레임 버퍼을 위해 각 타일을 랜더링한다. 예컨대, R 프레임(711)에서 프레임(770)까지 I0 및 P0은 타일 1 등을 재구성하기 위해서 사용된다. 위에서 언급한 것처럼, I 프레임 및 P 프레임의 신장은 분야에서 잘 알려져 있고, I 타일 및 P 타일의 신장은 클라이언트(415)에서 동작하는 비디오 신장의 다수의 인스턴스(instance)를 가짐으로써 달성될 수 있다. 비록 멀티동작 프로세스가 클라이언트(415)에서 컴퓨터적인 부담이 증가하는 것처럼 보이지만, 그것은 실제적으로 그렇지 않은데 왜냐하면 타일 자체는 많은 추가적인 처리에 관하여 비율적으로 더 작고, 따라서 디스플레이된 픽셀의 수는 하나의 처리가 있었다면 통상적인 전체 크기 I 및 P 프레임을 사용하는 것과 동일하다.Video stretching logic 412 operating at client 415 stretches each tile as if it were a separate video sequence of I and P frames, and then renders each tile for the frame buffer driving
이러한 R 프레임 기술은 도 6b 및 도 6c 에 도시된 I 프레임과 관련된 전형적인 대역폭 피크를 현저히 완화한다, 왜냐하면 어떤 주어진 프레임은 전형적으로 I 프레임보다 작은 P 프레임으로 대부분 구성되기 때문이다. 예컨대, 전형적인 I 프레임은 160Kb라고 가정하면, 도 7a에 도시된 프레임 각각의 I 타일은 대략 이 크기의 1/16 또는 10Kb일 것이다. 비슷하게, 전형적인 P 프레임은 16Kb라고 가정하면, 도 7a에서 도시된 타일의 각각을 위한 P 프레임은 대략 1Kb일 것이다. R프레임의 최종 결과는 대략 10Kb + 15*1Kb = 25Kb이다. 그래서, 각 60-프레임 시퀀스는 25Kb*60 = 1.5Mbps이다. 그래서 60프레임/초에서, 이는 1.5Mbps의 대역폭을 유지할 수 있는 채널 성능을 요구할 것이나, 60-프레임 간격 내내 분배되는 I 타일에 기인하여 훨씬 더 낮은 피크를 갖는 것을 요구할 것이다.This R frame technique significantly mitigates the typical bandwidth peak associated with the I frames shown in FIGS. 6B and 6C because some given frames typically consist of P frames that are typically smaller than I frames. For example, assuming a typical I frame is 160 Kb, the I tiles of each of the frames shown in FIG. 7A will be approximately 1/16 or 10 Kb of this size. Similarly, assuming a typical P frame is 16 Kb, the P frame for each of the tiles shown in FIG. 7A will be approximately 1 Kb. The final result of the R frame is approximately 10Kb + 15 * 1Kb = 25Kb. Thus, each 60-frame sequence is 25 Kb * 60 = 1.5 Mbps. So at 60 frames / second, this would require channel performance capable of maintaining a bandwidth of 1.5 Mbps, but would require much lower peaks due to the I tiles distributed throughout the 60-frame interval.
I 프레임 및 P 프레임을 위해 동일하게 가정된 전송률을 갖는 이전 예를 주목하면, 평균 전송률은 1.1Mbps이다. 이는 이전 예에서는, 새로운 I 프레임은 오직 매 60 프레임시간당 한번만 소개되었고, 반면에 본 예에서는, I 프레임 사이클을 구성하는 16 타일은 16 프레임 시간(times)에서 완료되기 때문이고, I 프레임의 이러한 등가가 매 16 프레임 시간(times)에 유도됨에 따라, 근소하게 더 높은 평균 전송률을 초래한다. 보다 빈번한 I 프레임이 유도되는 것은 선형적으로 전송률을 증가시키지 않는다. 이는 P 프레임(또는 P 타일)은 주로 선행 프레임에서 다음 프레임 사이 차이를 엔코드한다는 사실에 기인한다. 그래서, 만약 선행 프레임이 다음 프레임과 상당히 다르다면, P 프레임은 매우 커질 것이다. 그러나 P 프레임이 실제 프레임 보다는 대체로 선행 프레임으로부터 유도되기 때문에, 엔코드된 프레임 결과는 적당한 수의 비트를 갖는 I 프레임보다 많은 에러(예컨대, 시각적 아티팩트)를 포함할 것이다. 그리고, 하나의 P 프레임이 다른 P 프레임을 따를 때, 발생할 수 있는 것은 긴 시퀀스 P 프레임이 있는 경우 더 악화되는 에러의 축적이다. 지금, 정교한 비디오 압축기는 시퀀스의 P 프레임 후에 이미지의 품질이 떨어진다는 사실을 발견할 것이고, 만약 필요하다면, 그것은 품질을 개선하기 위해서 이후 P 프레임에 보다 많은 비트를 할당할 것이나, 만약, 그것은 가장 효율적인 코스의 동작이고, I 프레임으로 P 프레임을 대체한다. 그래서, 긴 시퀀스의 P 프레임이 사용될 때,(예컨대, 59프레임, 앞의 예에서처럼) 특히 장면이 많은 복잡성 및/또는 움직임을 가지고 있을 때, 전형적으로 보다 많은 비트는 I 프레임에서 더 많이 제거됨에 따라 P 프레임을 위해 필요해진다.Note the previous example with the same assumed rate for I frames and P frames, the average rate is 1.1 Mbps. This is because in the previous example, a new I frame was introduced only once every 60 frame times, whereas in this example, the 16 tiles that make up the I frame cycle are completed in 16 frame times, so this equivalent of I frames. Is derived every 16 frame times, resulting in a slightly higher average rate. Derivation of more frequent I frames does not linearly increase the rate. This is due to the fact that a P frame (or P tile) encodes the difference between the next frame in the preceding frame. So, if the preceding frame is significantly different from the next frame, the P frame will be very large. However, since the P frame is usually derived from the preceding frame rather than the actual frame, the encoded frame result will contain more errors (eg, visual artifacts) than I frames with the appropriate number of bits. And, when one P frame follows another P frame, what can happen is an accumulation of errors that gets worse when there is a long sequence P frame. Now, a sophisticated video compressor will find that the quality of the image is degraded after P frames of the sequence, and if necessary, it will allocate more bits to subsequent P frames to improve the quality, but if it is the most efficient This is the course of the course and replaces P frames with I frames. So, when long sequences of P frames are used (e.g. 59 frames, as in the previous example), especially when the scene has a lot of complexity and / or motion, typically as more bits are removed from the I frame, Needed for P frames.
또는, 반대 시점에서 P프레임을 보기 위해서, I 프레임을 바짝 따르는 P 프레임은 I 프레임으로부터 추가 제거된 P 프레임보다 적은 비트를 요구하는 경향이 있다. 그래서, 도 7a에서 도시된 예에서, P 프레임은 I 프레임에서 제거된 15 프레임보다 더 추가되지 않고, 앞의 예에서처럼, P 프레임은 그것을 앞서는 I 프레임으로부터 제거된 59 프레임일 수 있다. 따라서, I 프레임이 보다 빈번함으로, P 프레임은 더 작다. 물론, 정확한 관련된 크기는 비디오 스트림의 특성에 기초되어 변화할 것이나, 도 7a의 예에서 만약 I 타일이 10Kb, 대체로 0.75Kb 크기 P 타일은, 10Kb + 15*0.75Kb = 21.25Kb를 초래하고, 또는 초당 60 프레임에서, 전송률은 21.25Kb*60 = 1.3 Mbps 일 것이나, 또는 1.1Mbps에서 59 P 프레임에 의해 뒤따르는 I 프레임을 갖는 스트림보다 약 16% 높은 전송률이다. 다시 한번, 비디오 압축에 대한 이러한 2가지 접근 사이에 관련 결과는 비디오 시퀀스에 의존하여 변화할 것이지만, 그러나 전형적으로, 우리는 R-프레임 사용은 I/P 프레임 시퀀스를 사용하는 것보다 주어진 수준의 품질을 위해 약 20% 이상 비트를 요구한다는 것을 경험적으로 발견한다. 그러나, 물론 R 프레임은 I/P 프레임 시퀀스보다 훨씬 적은 레이턴시를 갖고 사용할 수 있는 비디오 시퀀스를 만드는 피크를 극단적으로 줄인다.Or, to see a P frame at an opposite point in time, P frames that closely follow the I frame tend to require fewer bits than P frames that are further removed from the I frame. Thus, in the example shown in FIG. 7A, the P frame is not added more than 15 frames removed from the I frame, and as in the previous example, the P frame may be 59 frames removed from the I frame preceding it. Therefore, as I frames are more frequent, P frames are smaller. Of course, the exact related size will vary based on the characteristics of the video stream, but in the example of FIG. 7A if an I tile is 10Kb, usually a 0.75Kb size P tile, 10Kb + 15 * 0.75Kb = 21.25Kb, or At 60 frames per second, the rate would be 21.25 Kb * 60 = 1.3 Mbps, or about 16% higher than the stream with I frames followed by 59 P frames at 1.1 Mbps. Once again, the relevant outcomes between these two approaches to video compression will vary depending on the video sequence, but typically we use R-frames at a given level of quality than using I / P frame sequences. Empirically we find that it requires about 20% more bits for However, of course R frames dramatically reduce the peaks that make video sequences usable with much less latency than I / P frame sequences.
R 프레임은 비디오 시퀀스, 채널의 신뢰성, 이용가능한 전송률의 특성에 의존하는 다양한 다른 방법으로 구성될 수 있다. 택일적 실시예에서, 다른 많은 수의 타일은 4×4 구성에서 16 이상 사용된다. 예컨대, 2 타일은 2×1 또는 1×2에서 사용될 것이고, 4 타일은 2×2, 4×1, 또는 1×4 구성에서 사용되거나, 6 타일은 3×2, 2×3, 6×1, 또는 1×6 구성에서 사용되거나, 또는 8 타일은 4×2(도 7b에서 도시된 것처럼),2×4, 8×1, 또는 1×8 구성에서 사용될 것이다. 타일은 스퀘어(square)일 필요없고, 비디오 프레임이 스퀘어일 필요없거나 직사각형일 필요조차 없다. 타일은 비디오 스트림 및 어플리케이션에 사용되는 적합한 형태이면 무엇이든지 분할될 수 있다.The R frame can be configured in a variety of different ways depending on the nature of the video sequence, channel reliability, and available bit rate. In an alternative embodiment, a large number of other tiles are used over 16 in a 4x4 configuration. For example, 2 tiles would be used in 2 × 1 or 1 × 2, 4 tiles would be used in a 2 × 2, 4 × 1, or 1 × 4 configuration, or 6 tiles would be 3 × 2, 2 × 3, 6 × 1 , Or in an 1 × 6 configuration, or 8 tiles may be used in a 4 × 2 (as shown in FIG. 7B), 2 × 4, 8 × 1, or 1 × 8 configuration. The tiles need not be square, and the video frame need not be square or even rectangular. Tiles can be split into whatever form is appropriate for use in video streams and applications.
다른 실시예에서, I 및 P 타일의 사이클링은 다수의 타일로 고정되지 않는다. 예컨대 4×2 구성 8 타일에서, 16 사이클 시퀀스는 도 7b에서 도시된 것처럼 사용될 수 있다. 순차적으로 일어나는 압축되지 않은 프레임(721,722,723)은 각각 0-7인 8 타일로 분할되고, 각 타일은 개별적으로 압축된다. R 프레임(731)에서, 오직 0 타일은 I 타일로써 압축되고, 나머지 타일은 P 타일로 압축된다. 다음의 R 프레임(732) 동안 모든 8 타일은 P 타일로써 압축되고, 그러고나서 다음의 R 프레임(733) 동안 1 타일은 I 타일로써 압축되고 그 밖의 타일은 모두 P 타일로써 압축된다. 그리고, 16 프레임 동안에 시퀀스가 연속되고, 오직 모든 그 밖의 프레임으로 생성된 I 프레임으로, 그래서 마지막 I 타일은 15th 프레임 시간(도 7b에 도시안됨)동안에 7 타일을 위해서 생성되고 16th 프레임 시간 동안에 R 프레임(780)이 모든 P 타일을 사용하여 압축된다. 그러고나서, 시퀀스는 다시 I 타일로써 압축된 0 타일로 시작하고 그 밖의 타일은 P 타일로써 압축된다. 이전 실시예에서처럼, 제일 첫번째 프레임의 전체 비디오 시퀀스는 그런 시점에서 P 타일을 위한 기준을 제공하기 위해서 전형적으로 모두 I 타일일 것이다. I 타일 및 P 타일의 사이클링은 복수 개의 타일이 필요하지 않다. 예컨대, 8 타일로, I 타일을 갖는 각 프레임은 또다른 I 타일이 사용되기 전까지 모두 P 타일로 2 프레임까지 뒤따를 수 있다. 이미 또다른 실시예에서, 어떤 타일은 그 밖의 타일보다 자주 I 타일로 시퀀스될 것이다 예컨대, 스크린의 어떤 영역은 빈번한 I 타일로부터 요구되는 것보다 더 많은 동작을 가진 것으로 알려졌다, 반면 그 밖의 영역은 빈번한 I 타일로부터 보다 적게 요구되는 보다 정적이다(예컨대, 게임을 위한 스코어를 보이는 것). 더욱이, 비록 각 프레임은 도7a, 7b에서 단일 I 타일로 도시되었지만, 복수의 I 타일은 단일 프레임에 엔코드될 것이다(전송 채널의 대역폭에 의존하는). 반대로, 어떤 프레임 또는 프레임 시퀀스는 I 타일을 갖지 않고 전송될 수 있을 것이다(예컨대, 오직 P 타일).In another embodiment, the cycling of the I and P tiles is not fixed to multiple tiles. For example, in a 4 × 2
앞 단락 연구 접근의 좋은 이유는 모든 단일 프레임에 걸쳐 분포된 I 타일을 갖고 있지 않으면서 더 큰 피크를 초래하는 것으로 보이고, 시스템의 동작은 단순하지 않다는 것이다. 각 타일이 다른 타일과 분리되어 압축되고, 타일은 각 타일의 엔코딩이 작을수록 덜 효율적이 될 수 있는데, 왜냐하면 주어진 타일의 압축기는 다른 타일로부터 비슷한 이미지 특징 및 비슷한 동작을 이용할 수 없기 때문이다. 따라서, 일반적으로 16 타일로 화면을 분할하는 것은 8 타일로 화면을 분할하는 것보다 덜 효율적인 엔코딩이 될 것이다. 그러나, 만약 스크린이 8 타일되면 그것은 매 16 프레임 대신에 매 8 프레임으로 전체 I 프레임의 데이터가 유도되도록 하고, 그것은 총체적으로 매우 높은 전송률을 초래한다. 그래서, 전체 I 프레임을 매 8 프레임 대신에 매 16 프레임으로 유도함으로써, 전체 전송률은 감소된다. 또한, 16개 작은 타일을 사용하는 대신에 8개 더 큰 타일을 사용함으로써, 전체 전송률은 감소하게 되고, 이는 또한 큰 타일에 의해서 초래된 데이터 피크를 어느 정도까지 완화할 것이다.A good reason for the preceding paragraph study approach is that it does not seem to have I tiles distributed over every single frame, resulting in larger peaks, and the operation of the system is not simple. Each tile is compressed separately from other tiles, and tiles can be less efficient as the encoding of each tile is smaller because the compressor of a given tile cannot use similar image features and similar behavior from other tiles. Thus, dividing the screen into 16 tiles will generally be less efficient than dividing the screen into 8 tiles. However, if the screen is 8 tiles it causes the data of the entire I frame to be derived every 8 frames instead of every 16 frames, which results in a very high bit rate overall. Thus, by deriving the entire I frame every 16 frames instead of every 8 frames, the overall rate is reduced. In addition, by using eight larger tiles instead of 16 smaller tiles, the overall data rate will be reduced, which will also mitigate to some extent the data peaks caused by the large tiles.
다른 실시예에서, 도 7a 및 7b에서 낮은-레이턴시 비디오 압축 로직(404)은 압축되기 위해서 비디오 시퀀스의 이미 알려진 특징에 기초한 셋팅에 의하여 선행 구성되거나, 자동적으로 진행중인 각 타일에서 이미지 품질의 분석에 기초하여 R 프레임에 다양한 타일을 위해 비트의 할당을 제어한다. 예컨대, 어떤 레이싱 비디오 게임에서 플레이어의 자동차 전면부(이는 대체로 장면에서 동작이 없음)는 스크린의 아래쪽 절반의 큰 영역을 차지하고, 반면에 스크린의 윗쪽 절반은 전체적으로 접근하는 도로, 빌딩, 풍경으로 채워지고, 이는 거의 항상 움직이고 있다. 만약 압축 로직(404)이 각 타일로 동일한 수의 비트를 할당하면, 그 다음 도 7b에 압축되지 않은 프레임(721)에서 스크린의 바닥 절반에 타일(타일 4 - 7)은, 일반적으로 도 7b에 압축되지 않은 프레임(721)에서 스크린 상부 절반에 타일(타일 0 - 3)보다 높은 품질로 압축될 것이다. 만약 이러한 특정 게임, 또는 게임의 특정 장면은 그러한 특징을 갖는다고 알려지면, 호스팅 서비스(210)의 오퍼레이터는 스크린의 하부에 타일보다 스크린의 상부에 타일을 위해 보다 많은 비트를 할당하기 위해서 압축 로직(404)을 구성한다. 또는, 압축 로직(404)은 프레임이 압축된 후에 타일의 압축의 품질을 측정할 수 있고(Peak-To-Noise Ratio(PSNR)과 같은 하나 또는 그 이상의 많은 압축 품질 성과지표를 사용함), 만약 그것은 어떤 특정 윈도우의 시간을 넘겨 결정된다면, 어떤 타일들은 일관되게 더 나은 품질 결과를 생성할 것이고, 다양한 타일이 비슷한 수준의 품질에 도달할 때까지 그것은 점차적으로 보다 많은 비트를 낮은 품질 결과를 생성하는 타일에 할당한다. 택일적 실시예에서, 압축기 로직(404)은 특정 타일 또는 타일 그룹에 높은 품질을 달성하기 위해서 비트를 할당한다. 예컨대, 가장자리 보다 스크린의 중심에서 높은 품질을 갖도록 전체적으로 더 나은 지각있는 외관을 제공할 것이다.In another embodiment, the low-latency
일 실시예에서, 비디오 스트림의 어떤 영역의 해상도를 향상하기 위해서, 비디오 압축 로직(404)은 대체적으로 보다 적은 복잡한 장면 및/또는 움직임을 갖는 비디오 스트림의 영역보다 보다 복잡한 장면 및/또는 움직임을 갖는 비디오 스트림의 영역을 엔코드하기 위해서 더 작은 타일을 사용한다. 예컨대, 도 8에 도시된 것처럼, 더 작은 타일은 R 프레임(811)의 한 영역에서 움직이는 캐릭터(805) 주변에 채택된다(잠재적으로 동일한 타일 사이즈를 갖고 일련의 R 프레임에 뒤따르게 된다(도시되지 않음)). 그 다음 캐릭터(805)가 이미지의 새로운 영역으로 움직일 때, 도시된 것처럼 더 작은 타일은 또 다른 R 프레임(812) 내에 이 새로운 영역 주변에서 사용된다. 위에서 언급한 것처럼, 이러한 근본적인 이론에 여전히 따르는 동안에는 다양한 다른 크기 및 형태는 "타일"로써 채택될 것이다.In one embodiment, to improve the resolution of certain areas of the video stream,
위에서 설명된 주기적인 I/P 타일이 본질적으로 비디오 스트림의 전송률에 피크를 줄여주는 동안에, 그들은 동영상(motion picture), 비디오 게임, 및 어떤 어플리케이션 소프트웨어로 발생되는 것처럼, 특히 빠르게 변화하거나 매우 복잡한 비디오 이미지의 경우에, 전체적으로 피크를 제거하지 않는다. 예컨대, 갑자기 장면 전환하는 동안에, 복잡한 프레임은 완전히 상이한 다른 복잡한 프레임이 뒤따를 것이다. 몇몇의 I 타일이 오직 몇 프레임 시간까지 장면 전환 전에 있을 수 있을지라도, 그들은 이러한 상황에 도움을 줄 수 없는데 왜냐하면 새로운 프레임의 재료가 사전 I 타일과 관련이 없기 때문이다. 그러한 상황에서(그리고 모든 것이 변화하는 것은 아닐지라도 많은 이미지 변화하는 그 밖의 상황에서), 비디오 압축기(404)는 I 타일처럼 보다 효율적으로 코드된 P 타일의 전부가 아니라면 얼마 정도인지, 그리고 어떤 결과가 그 프레임에 대한 전송률에서 매우 큰 피크인지를 결정할 것이다.While the periodic I / P tiles described above essentially reduce the peaks in the bitrate of the video stream, they are particularly fast changing or very complex video images, such as those generated by motion pictures, video games, and any application software. In the case of, the peak is not removed entirely. For example, during a sudden scene change, a complex frame will be followed by another completely complex frame. Although some I tiles may be before scene transitions up to only a few frame times, they cannot help in this situation because the material of the new frame is not related to the pre-I tile. In such situations (and in many other situations where many images change, although not all),
앞에서 논의한 바와 같이, 대부분 소비자 등급 인터넷 연결(그리고 많은 오피스 연결)의 경우는 단순하고, 그것은 단순히 정격된 최대 전송률(621)에 따라, 도 6c에서 622로서 도시된 이용가능한 최대 전송률을 초과하는 "잼(jam)" 데이터로는 가능하지 않다. 정격된 최대 전송률(621)(예컨대, "6Mbps DSL")은 본질적으로 인터넷 연결의 구입을 고려하는 사용자에게 마켓팅 숫자(marketing number)이지만, 일반적으로 그것은 어떤 수준의 성능을 보장하지 않는다. 이러한 어플리케이션의 목적을 위해서, 그것은 무의미하고, 우리의 오직 관심은 비디오가 연결을 통해서 스트림되는 시간에 이용가능한 최대 전송률(622)이다. 결과적으로, 도 9a 및 9c에서, 우리가 피킹 문제(peaking problem)를 위한 해결책을 설명할 때, 정격된 최대 전송률은 그래프에서 생략되어 있고, 오직 이용가능한 최대 전송률(922)가 도시되어 있다. 비디오 스트림 전송률은 이용가능한 최대 전송률(922)을 초과하지 않아야 한다.As discussed earlier, most consumer-grade Internet connections (and many office connections) are simple, and they simply exceed the maximum available data rate shown as 622 in FIG. 6C, according to the maximum rated
이를 처리하기 위해서, 비디오 압축기(404)가 해야 하는 첫번째는 피크 전송률(941)을 결정하는 것이고, 이는 채널이 지속적으로 다룰 수 있는 전송률이다. 이 속도는 많은 기술에 의해서 결정된다. 그런 기술 중 하나는 호스팅 서비스(210)에서 도 4a 및 4b에서 클라이언트(415)로 증가하는 높은 전송률 테스트 스트림을 점차적으로 보낼 것이고, 클라이언트가 호스팅 서비스로 어떤 수준의 패킷 손실 및 레이턴시에 관하여 피드백을 제공할 것이다. 패킷 손실 및/또는 레이턴시는 날카로운 증가를 보이기 시작할 때, 그것은 이용가능한 최대 전송률(922)에 도달하고 있다는 표시이다. 그 후에, 호스팅 서비스(210)은 점차적으로 클라이언트(415)가 합리적인 주기의 시간 동안 테스트 스트림이 허용가능한 수준의 패킷 손실과 레이턴시가 거의 최소로 수신되는 때까지 테스트 스트림의 전송률을 줄일 수 있다. 시간이 지나면, 피크 전송률(941)이 변동하게 되고(예컨대, 만약 가정 내에 다른 사용자가 과도하게 인터넷 연결을 사용한다면), 클라이언트(415)는 패킷 손실 또는 레이턴시 증가의 여부, 이용가능한 최대 전송률(922)이 미리 확립된 피크 전송률(941) 이하로 떨어지는지의 여부, 그리고 그렇다면 피크 전송률(941)인가의 여부를 알도록 그를 끊임없이 모니터하는 것이 필요로 된다. 유사하게, 만약 시간이 지나고 클라이언트(415)가 패킷 손실 및 레이턴시가 최적의 수준에 남아있다는 것을 발견하면, 그것은 비디오 압축기가 천천히 이용가능한 최대 전송률이 증가되었는지를 보기 위해서 전송률을 증가하도록 요청할 수 있고(예컨대, 만약 가정 내에 다른 사용자가 과도한 인터넷 연결의 사용을 멈춘다면), 다시 패킷 손실 및/또는 높은 레이턴시가 이용가능한 전송률(922)이 초과되었다고 지시할 때까지 기다리며, 다시 낮은 수준은 피크 전송률(941)을 위해 찾게 되지만, 하나는 아마도 증가된 전송률을 테스트하기 전에 그 수준보다 더 높아진다. 그래서, 이러한 기술을 사용함으로써(그리고 이와같은 다른 기술) 피크 전송률(941)은 찾을 수 있고, 필요했던 것처럼 주기적으로 조정된다. 피크 전송률(941)은 사용자에게 비디오를 스트림하기 위해 비디오 압축기(404)에 의해서 사용될 수 있는 최대 전송률로 설정될 것이다. 피크 전송률을 결정하기 위한 로직은 사용자 구내(211) 및/또는 호스팅 서비스(210)에서 실행될 것이다. 사용자 구내(211)에서 클라이언트(415)는 피크 전송률을 결정하기 위한 연산을 수행하고 이 정보를 호스팅 서비스(210)로 되돌려 전송하고; 호스팅 서비스(210)에서, 호스팅 서비스에 서버(402)는 클라이언트(415)로부터 수신한 통계치(예컨대, 패킷 손실, 레이턴시, 최대 전송률 등)를 기초하여 피크 전송률을 결정하기 위한 연산을 수행한다.To handle this, the first thing that
도 9a는 도 7a, 7b, 및 도 8에서 도시되고 사전에 설명된 순환적인 I/P 타일 압축 기술을 사용하여 생성된 실질적으로 복잡한 장면 및/또는 동작을 가지는 비디오 스트림 전송률(934)의 예를 도시하고 있다. 비디오 압축기(404)는 피크 전송률(941) 아래의 평균 전송률에서 압축된 비디오를 출력하기 위해서 구성되고, 대부분의 시간에, 비디오 스트림 데이터는 피크 전송률(941) 아래에 머무른다. 전송률(934)과 I/P/B 또는 I/P 프레임을 사용하여 만들어진 도 6c에 도시된 비디오 스트림 속도(634)의 비교는 순환적인 I/P 타일 압축이 보다 부드러운 전송률을 생산한다는 것을 보인다. 여전히, 프레임 2X 피크(952)(이는 2X 피크 전송률(942)에 근접한다) 그리고 프레임 4X 피크(954)(이는 4X 피크 전송률(944)에 근접한다), 그 전송률은 피크 전송률(941)을 초과하고, 이는 허용될 수 없다. 실제로는 빠르게 변하는 비디오 게임으로부터 높은 동영상으로, 피크 전송률(941)을 초과하는 피크는 2%의 프레임보다 적게 일어나고, 2X 피크 전송률(942)을 초과하는 피크는 거의 드물게 일어나며, 3X 피크 전송률(943)을 초과하는 피크는 거의 일어나지 않는다. 그러나, 그들이 일어날 때(예컨대, 장면 전환 동안), 그것들에 의해서 요구되는 전송률은 좋은 품질 비디오 이미지를 생산하기 위해서 필요하다.9A illustrates an example of a
이러한 문제를 해결하기 위한 하나의 방법은 비디오 압축기(404)를 설치함으로서 그것의 최대 전송률 출력은 피크 전송률(941)이 된다. 불행하게도, 피크 프레임 동안에 결과 비디오 출력 품질은 형편없는데 왜냐하면 압축 알고리즘이 비트를 위해 "부족"하기 때문이다. 갑작스런 전환 또는 빠른 움직임이 있을 때 압축 아티팩트의 출현의 결과, 그때에, 사용자가 갑작스런 변화 또는 빠른 동작이 있는 때 항상 갑자기 생기는 아티팩트를 알아차리고, 그것들은 꽤 성가시게 될 수 있다.One way to solve this problem is to install a
비록 인간 시각 시스템이 갑자기 변화하거나 빠른 움직임 동안에 나타나는 시각적 아티팩트에 꽤 민감하고, 그것은 그러한 상황에서 프레임의 속도에 감소를 검측하는데 매우 민감하지는 않다. 사실, 그러한 갑작스러운 변화가 일어날 때, 그것은 인간 시각 시스템이 변화를 추적하면서 미리 일어나고, 그것은 만약 프레임 속도가 분명하게 60fps에서 30fps로 떨어지고, 그 다음 즉시로 60fps 되돌아온다면 알아차리지 못한다. 그리고, 갑작스런 장면 변화와 같은 매우 극적인 변환의 경우에, 인간 시각 시스템은 프레임 속도가 20fps 또는 15fps까지 떨어지고, 그 다음 즉시로 60fps로 되돌아온다면, 이를 알아차리지 못한다. 프레임 속도 변화가 오직 빈번하지 않게 일어나는 동안에, 인간 관찰자에게, 그것은 비디오가 60fps에서 연속적으로 작동하고 있는 것으로 나타낸다.Although the human visual system is quite sensitive to visual artifacts that appear during sudden changes or rapid movements, it is not very sensitive to detecting a decrease in the speed of the frame in such a situation. In fact, when such a sudden change occurs, it happens ahead of time as the human visual system tracks the change, which is not noticed if the frame rate obviously drops from 60fps to 30fps and then immediately returns to 60fps. And, in the case of very dramatic transformations such as sudden scene changes, the human visual system does not notice if the frame rate drops to 20 or 15 fps, and then immediately returns to 60 fps. While frame rate changes only occur infrequently, to human observers, it indicates that the video is running continuously at 60fps.
이러한 인간 시각 시스템의 특징은 도 9b에서 도시된 기술에 의해서 이용된다. 서버(402)(도 4a 및 4b에서)는 압축되지 않은 비디오 출력 스트림을 꾸준한 프레임 속도(일 실시예에서 60fps)로 출력한다. 타임라인은 각 프레임(961 - 970)의 1/60th 초당 출력을 보인다. 프레임(961)으로 시작하고, 각각의 압축되지 않은 비디오 프레임은, 제 1 프레임을 위해 압축된 프레임 1(981)을 생성하기 위해서, 한 프레임 시간보다 적은 시간에 프레임을 압축하는 낮은-레이턴시 비디오 압축기(404)로 출력된다. 압축된 프레임 1(981)을 위해 생산된 데이터는 앞서 설명된 것처럼, 많은 요소에 의존하여 더 크거나 더 작을 수 있을 것이다. 만약 데이터가 충분히 작다면 한 프레임 시간(1/60th초) 또는 피크 전송률(941)보다 적은 시간에 클라이언트(415)로 전송될 수 있고, 그 다음에 전송 시간(Xmit 시간)(991)(화살표의 길이는 전송 시간의 지속시간을 나타낸다). 다음 프레임 시간에, 서버(402)는 압축되지 않은 프레임 2(962)를 생산하고, 그것은 압축된 프레임 2(982)로 압축되며, 그것은 전송 시간(992) 동안에 클라이언트(415)로 전송되고, 이는 피크 전송률(941)의 프레임 시간 보다 작다.This feature of the human visual system is utilized by the technique shown in FIG. 9B. Server 402 (in FIGS. 4A and 4B) outputs an uncompressed video output stream at a steady frame rate (60 fps in one embodiment). The timeline for each frame (961 - 970) show the 1/60 th of a second output. Starting with
그 다음으로, 다음 프레임 시간에서, 서버(402)는 압축되지 않은 프레임 3(963)을 생성한다. 그것은 비디오 압축기(404)에 의해서 압축된 때, 결과 압축된 프레임 3(983)은 하나의 프레임 시간에 피크 전송률(941)로 전송될 수 있는 것보다 보다 큰 데이터이다. 그래서, 그것은 전송 시간(2X 피크)(993) 동안에 전송되고, 이는 모든 프레임 시간 및 다음 프레임 시간의 일부를 차지한다. 지금, 다음 프레임 시간 동안에, 서버(402)는 다른 압축되지 않은 프레임 4(964)를 생성하고 그것을 비디오 압축기(404)로 출력하지만 그 데이터는 무시되고, 974로 예시된다. 이는 왜냐하면 비디오 압축기(404)가 아직 이전 압축된 프레임을 전송하는 동안에 도착된 추가된 압축되지 않은 비디오 프레임을 무시하도록 구성된다. 물론 클라이언트(415)의 비디오 신장기는 프레임 4를 수신하는 것에 실패하지만, 그것은 단순히 디스플레이 장치(422)에 2 프레임 시간 동안에 프레임 3을 디스플레이하는 것을 계속한다(예컨대, 간략하게 60fps에서 30fps로 프레임 속도가 감소된다).Next, at the next frame time,
다음 프레임 5에 대해, 서버(402)는 압축된 프레임 5(985)로 압축되는 압축되지 않은 프레임 5(965)을 출력하고 전송 시간(995) 동안에 1 프레임 내에 전송된다. 클라이언트(415)의 비디오 신장기는 프레임 5를 신장하고 디스플레이 장치(422)에 그것을 디스플레이한다. 다음으로, 서버(402)는 비디오 압축기(404)에 의해서 압축된 프레임 6(986)으로 압축되는 압축되지 않은 프레임 6(966)을 출력하지만, 이 시간에 결과 데이터는 매우 크다. 압축된 프레임은 피크 전송률(941)에서 전송 시간(4X 피크)(996) 동안에 전송될 것이지만, 그것은 프레임을 전송하기 위해서는 거의 4 프레임 시간이 걸린다. 다음 3 프레임 시간 동안에, 비디오 압축기(404)는 서버(402)로부터 3개 프레임을 무시하고, 클라이언트(415)의 신장기는 4개 프레임의 시간 동안 디스플레이 장치(422)에 프레임 6을 유지한다(예컨대, 분명하게는 프레임 속도를 60fps에서 15fps로 줄인다). 그 다음 최종적으로, 서버(402)는 프레임 10(970)을 출력하고, 비디오 압축기(404)는 그것을 압축된 프레임 10(987)으로 압축하며, 그것은 전송 시간(997) 동안에 전송되고, 클라이언트(415)의 신장기가 프레임 10을 신장하고 그것을 디스플레이 장치(422)로 디스플레이하고 다시 한번 그 비디오는 60fps에서 다시 시작한다.For the
비록 비디오 압축기(404)가 서버(402)에 의해서 생성된 비디오 스트림에서 비디오 프레임으로 떨어지더라도, 들어오는 오디오 형태가 무엇인지 상관없이, 그것은 오디오 데이터가 떨어지지 않고, 비디오 프레임이 떨어지고 그것을 클라이언트(415)로 전송된 때, 오디오 데이터를 압축하는 것을 계속하며, 이는 오디오 데이터를 신장하는 것을 계속하고 오디오를 재생하기 위해 사용자에 의해서 사용되는 어떤 장치로 오디오를 제공한다. 따라서, 오디오는 프레임이 떨어지는 주기 동안에도 줄지않고 계속된다. 압축된 비디오와 비교했을 때, 압축된 오디오는 대체로 작은 비율의 대역폭을 소모하고, 결과적으로 전체 전송률에 주된 영향을 갖지 않는다. 비록 그것은 어떤 전송률 다이어그램에 도시되지 않았지만, 피크 전송률(941)내에 압축된 오디오 스트림을 위해 제한된 전송률 성능 항상이 있다.Although the
도 9b에 도시된 예는 전송률 피크 동안에 프레임 속도가 얼마나 떨어지는 지를 도시하도록 선택되지만, 전에 설명된 것처럼 순환적인 I/P 타일 기술이 사용되는 때, 전송률 피크와 같은, 비디오 게임, 동영상, 및 어떤 어플리케이션 소프트웨어에서 일어나는 것과 같은 높은 복잡한 장면/높은 움직임 시퀀스에서 조차 연속적으로 떨어지는 프레임은 드물다. 결과적으로, 줄어든 프레임 속도는 빈번하지 않고 분명하게 인간 시각 시스템은 그것들을 감지하지 못한다.The example shown in FIG. 9B is selected to show how much the frame rate falls during the rate peak, but video games, movies, and certain applications, such as the rate peak, when cyclic I / P tile techniques are used as described before Frames that drop continuously are rare, even in high complex scenes / high motion sequences such as those that occur in software. As a result, reduced frame rates are not frequent and obviously the human visual system does not detect them.
만약 프레임 속도 감소 메커니즘은 도 9a에서 설명된 비디오 스트림 전송률에 적용되도록 설명된다면, 결과 비디오 스트림 전송률은 도 9c에 도시된다. 이러한 예에서, 2x 피크(952)는 플랫된 2x 피크(953)로 줄어들게 되고, 4x 피크(955)는 플랫된 4x 피크(955)로 줄어들게 되어, 전체 비디오 스트림 데이터(934)는 피크 전송률(941)로 남거나 그 아래로 남는다.If the frame rate reduction mechanism is described to apply to the video stream rate described in FIG. 9A, the resulting video stream rate is shown in FIG. 9C. In this example, the
따라서, 앞서 설명된 기술을 사용하면, 높은 동작 비디오 스트림은 낮은-레이턴시로 일반적인 인터넷 및 소비자 등급 인터넷 연결을 통해서 전송할 수 있다. 더욱이, 오피스 환경, LAN(예컨대, 100Mbs 이더넷 또는 802.11g 무선) 또는 개인 네트워크(예컨대, 데이터 센터와 오피스 사이의 100Mbps 연결)에서, 높은 동작 비디오 스트림은 피크 없이 전송될 수 있으므로 다수의 사용자(예컨대, 4.5Mbps에서 60fps로 1920×1080을 전송하는 것)는 압도하는 네트워크 또는 네트워크 스위치 백플레이트, 겹치는 피크를 갖지 않고 공유된 개인 데이터 연결을 사용할 수 있다
Thus, using the techniques described above, high-motion video streams can be transmitted over common Internet and consumer-grade Internet connections with low latency. Moreover, in office environments, LANs (eg, 100 Mbs Ethernet or 802.11g wireless) or personal networks (eg, 100 Mbps connections between data centers and offices), high-motion video streams can be transmitted without peaks, allowing multiple users (eg, Sending 1920 × 1080 at 4.5 Mbps to 60 fps) can use an overwhelming network or network switch backplate, shared personal data connection without overlapping peaks
전송률 조정(Rate adjustment ( DataData RateRate AdjustmentAdjustment ))
일 실시예에서, 호스팅 서비스(210)는 처음 비디오 스트림을 위해 적절한 전송률을 결정하기 위해서 이용가능한 최대 전송률(622) 및 채널의 레이턴시를 평가하고 그에 응답하여 전송률을 동적으로 조정한다. 전송률을 조정하기 위해서, 호스팅 서비스(210)는 예컨대 이미지 해상도 그리고/또는 클라이언트(415)로 보내지는 비디오 스트림의 다수의 프레임/초를 수정할 것이다. 또한, 호스팅 서비스는 압축된 비디오의 품질 수준을 조정할 수 있다. 비디오 스트림의 해상도를 바꾸는 것은, 예컨대 1280×720 해상도에서 640×360으로, 클라이언트(415)에 있는 비디오 신장 로직(412)은 디스플레이 스크린에 동일한 이미지 크기를 유지하기 위해 이미지를 일정비율로 확대할 수 있다.In one embodiment, hosting
일 실시예에서, 채널이 완전히 빠지는 어떤 상황에서, 호스팅 서비스(210)는 게임을 중단한다. 멀티플레이어 게임의 경우에, 호스팅 서비스는 그 밖의 사용자에게 사용자가 게임을 떠났는지 및/또는 그 밖의 사용자를 위해 게임을 중단하였는지를 보고한다.
In one embodiment, in some situations where the channel is completely out of service, hosting
떨어진 또는 지연된 패킷(Dropped or delayed packets ( DroppedDropped oror DelayedDelayed PacketsPackets ))
일 실시예에서, 만약 도 4a 또는 4b에서 비디오 압축기(404) 및 클라이언트(415) 사이에서 패킷 손실에 기인하거나 압축되지 않은 프레임의 레이턴시 요구와 만나서 신장을 위해서 너무 늦게 도착한 명령의 순서로 수신된 패킷에 기인하여 데이터가 손실되면, 비디오 신장 로직(412)은 시각적 아티팩트를 완화할 수 있다. I/P 프레임 실행 스트리밍에서, 만약 손실/지연된 패킷이 있는 경우, 전체 스크린이 영향을 받고, 잠재적으로 한 주기의 시간 동안 완전히 화면이 멈추는 것을 초래하거나 그 밖의 스크린-와이드 시각적 아티팩트를 보인다. 예컨대, 만약 손실/지연된 패킷은 I 프레임의 손실에 원인이 되고, 그 다음에 신장기는 새로운 I 프레임이 수신될 때까지 따르는 모든 P 프레임을 위한 기준이 부족할 것이다. 만약 P 프레임이 손실되면, 그 다음에 그것을 뒤따르는 전체 스크린을 위해 P 프레임에 영향을 줄 것이다. I 프레임이 나타나기 전 얼마나 오랫동안 그것이 걸릴 것인지에 따라, 이는 더 길거나 혹은 더 짧은 시각적 영향을 가질 것이다. 도 7a 및 7b에 도시된 것처럼 인터리브된 I/P 타일을 사용하면, 그것은 오직 영향을 받은 패킷에 포함된 타일에만 영향을 줄 것이기 때문에 손실/지연된 패킷은 전체 스크린에 훨씬 적은 영향을 준다. 만약 각각의 타일의 데이터가 개별적인 패킷으로 보내진다면, 그 다음에 패킷이 손실되면, 그것은 오직 하나의 타일에 영향을 줄 것이다. 물론, 시각적 아티팩트의 지속기간은 I 타일 패킷이 손실되었는지에 의존할 것이고, 만약 P 타일이 손실되면, 얼마나 많은 프레임이 I 타일이 나타날 때까지 걸릴지에 의존한다. 그러나, 화면에서 다른 타일로 주어진 것은 매우 빈번하게 I 프레임으로 업데이트되고(잠재적으로는 매 프레임당), 화면에 하나의 타일이 영향을 받았을 때조차, 그 밖의 타일은 아닐지 모른다. 더욱이, 만약 어떤 이벤트가 즉시 몇개의 패킷의 손실을 초래한다면(예컨대, 데이터 흐름을 명백히 방해하는 DSL 라인 옆에 전력 급등(spike on power)), 그 다음 어떤 타일은 그 밖의 것보다 더 영향을 미칠 것이고, 그러나 왜냐하면 어떤 타일이 빠르게 새로운 I 타일로 갱신될 것이고, 그들은 오직 간단한 영향을 받을 것이다. 또한, 스트리밍 I/P 프레임 실행으로, I 프레임은 가장 결정적인 프레임이지만, I 프레임은 매우 크므로, 그래서 만약 거기에 떨어진/지연된 패킷을 초래하는 이벤트가 있다면, 아마도 보다 작은 I 타일보다는 I 프레임이 영향을 받게 될 것이다(예컨대, 만약 I 프레임 중 어떤 부분이 손실되면, 그것은 I 프레임이 전혀 신장될 수 없다). 모든 이러한 이유때문에, I/P 타일을 사용하는 것이 I/P 프레임으로 패킷이 떨어진/지연된 때보다, 훨씬 적은 시각적 아티팩트를 초래한다.In one embodiment, packets received in the order of instructions that arrive too late for stretching due to packet loss or latency requirements of uncompressed frames between
일 실시예는 TCP(transmission control protocol) 패킷 또는 UDP(user datagram protocol) 패킷에서 압축된 타일을 지능적으로 패키징함으로써 손실 패킷의 효과를 줄이려는 시도를 한다. 예컨대, 일 실시예에서, 타일은 가능하면 언제든지 패킷 경계와 정렬된다. 도 10a은 어떻게 타일이 이러한 특징을 실행하지 않고 일련의 패킷들(1001 - 1005)내에서 포장될 것인지를 도시하고 있다. 특히, 도 10a에서, 타일은 패킷 경계를 가로지르고 비효율적으로 패킹되어서 단일 패킷의 손실은 다수 프레임의 손실을 초래한다. 예컨대, 만약 패킷(1003 또는 1004)이 손실되면, 3개 타일이 손실되고, 이는 시각적 아티팩트를 초래한다.One embodiment attempts to reduce the effects of lost packets by intelligently packaging compressed tiles in a transmission control protocol (TCP) packet or a user datagram protocol (UDP) packet. For example, in one embodiment, tiles are aligned with packet boundaries whenever possible. 10A illustrates how a tile will be packed in a series of packets 1001-1005 without implementing this feature. In particular, in FIG. 10A, the tiles cross the packet boundary and are inefficiently packed so that the loss of a single packet results in the loss of multiple frames. For example, if
대조적으로, 도 10b는 패킷 손실의 효과를 줄이기 위해서 패킷 내에 지능적으로 타일을 포함하기 위한 타일 패킹 로직(1010)을 도시하고 있다. 첫번째, 타일 패킹 로직(1010)은 패킷 경계로 타일을 정렬한다. 따라서, 타일 T1,T3,T4,T7 및 T2는 대체적으로 패킷들(1001 - 1005)의 경계에서 정렬된다. 또한 타일 패킹 로직은 패킷 경계를 가로지르는 것이 없고, 가장 효율적인 가능한 방식으로 패킷 내에 타일을 고정하도록 시도한다. 각각의 타일의 크기에 기초하여, 타일 T1 및 T6는 하나의 패킷(1001)에 결합되고; 타일 T3 및 T5는 하나의 패킷(1002)에 결합되며; 타일 T4 및 T8은 하나의 패킷(1003)에 결합되고; 타일 T8는 패킷(1004)에 추가되며; 그리고 타일 T2는 패킷(1005)에 더해진다. 따라서, 이러한 구조 하에서, 단일 패킷 손실은 2 타일 이상의 손실을 초래하지 않을 것이다(도 10a에서 도시된 것처럼 3 타일 보다는).In contrast, FIG. 10B illustrates
도 10b에 도시된 실시예에 추가적인 이점은 타일은 이미지 내에 그것들이 디스플레이되는 것과는 다른 차수(order)로 전송된다. 이 방식은, 만약 인접한 패킷이 전송되어서 간섭하는 동일한 이벤트로 손실되면, 그것은 화면에 서로 가까이 있지 않은 영역에 영향을 미칠 것이고, 디스플레이에서 거의 알 수 없는 아티팩팅을 생성한다.An additional advantage to the embodiment shown in FIG. 10B is that the tiles are sent in a different order than they are displayed in the image. This way, if adjacent packets are lost due to the same event interfering with it being transmitted, it will affect areas that are not close to each other on the screen, creating almost unknown artifacts on the display.
일 실시예는 채널 에러로부터 비디오 스트림의 어떤 부분을 보호하기 위해서 순방향 에러 보정(FEC) 기술을 채택한다. 종래에 알려진 것처럼, Reed-Solomon 및 Viterbi와 같은 FEC 기술은 통신 채널을 거쳐 전송된 데이터를 위해 에러 보정 데이터 정보를 생성하고 첨부한다. 만약 근본적인 데이터에서 에러가 발생하면(예컨대, I 프레임), 그 다음 FEC는 그 에러를 보정하게 될 것이다.One embodiment employs forward error correction (FEC) technology to protect certain portions of the video stream from channel errors. As is known in the art, FEC techniques such as Reed-Solomon and Viterbi generate and append error correction data information for data transmitted over a communication channel. If an error occurs in the underlying data (eg I frame), then the FEC will then correct the error.
FEC 코드는 전송의 전송률을 증가하게 하고; 그래서 이상적으로, 그들은 오직 가장 필요한 곳에서 사용된다. 만약 데이터가 매우 인식가능한 시각적 아티팩트를 초래하지 않도록 보내진다면, 데이터를 보호하기 위해서 FEC 코드를 사용하지 않는 것이 바람직할 것이다. 예컨대 P 타일은 그것이 손실되는 경우에 스크린에서 1/60th의 초 동안에 오직 시각의 아티팩트(예컨대, 스크린의 타일에서 업데이트 되지 않을 것이다)를 생성하는 I 타일을 즉시 앞서게 된다. 그러한 시각의 아티팩트는 거의 인간의 눈으로 감지되지 않는다. P 타일이 I 타일보다 더 뒤에 있음으로서, P 타일을 잃는 것은 점진적으로 보다 현저하게 된다. 예컨대, 만약 타일 사이클 패턴이 I 타일이 다시 이용가능해지기 전에 15 P 타일까지 I 타일이 뒤따르게 된다면, 그 다음 즉시 I 타일을 뒤따르는 P 타일이 손실되면, 그것은 15 프레임 시간동안(60fps에서 그것은 250ms 일 것이다) 잘못된 이미지를 보이는 타일을 초래하게 될 것이다. 인간의 눈은 250ms 동안 스트림의 혼란을 쉽게 감지할 수 있을 것이다. 그래서, P 타일이 새로운 I 타일로부터 더 뒤쪽에 있을수록(예컨대, 더 가까이 P 타일이 I 타일을 뒤따른다), 아티팩트를 보다 잘 인식할 수 있다. 앞서 논의한 것처럼, 일반적으로, P 타일이 I 타일을 더 가까이 뒤따를수록, P 타일을 위한 데이터는 보다 작아진다. 따라서, I 타일을 뒤따르는 P 타일은 손실되는 것을 보호하기 위해 보다 임계적(critical)이지 않고, 그들은 크기가 더 작아진다. 그리고 일반적으로, 보호가 필요한 데이터가 더 작을수록, 더 작은 FEC 코드가 그것을 보호하기 위해서 요구된다.The FEC code causes the transmission rate of the transmission to increase; So ideally, they are used only where they are needed most. If data is sent so that it does not result in highly recognizable visual artifacts, it would be desirable not to use FEC codes to protect the data. For example P tile is immediately ahead of an I tile generated only the artifacts (e. G., Will not be updated in the tiles of the screen) of the time during the 1/60 th second from the screen in the case where it is lost. Artifacts of such vision are hardly perceived by the human eye. As the P tile is later than the I tile, losing the P tile becomes progressively more pronounced. For example, if the tile cycle pattern is followed by an I tile up to 15 P tiles before the I tile is available again, then immediately if the P tile following the I tile is lost, it will be for 15 frame times (at 60 fps it is 250 ms). Will result in tiles showing the wrong image. The human eye will be able to easily detect confusion in the stream for 250 ms. Thus, the closer the P tile is from the new I tile (eg, the closer the P tile follows the I tile), the better the artifacts can be recognized. As discussed above, in general, the closer the P tile follows the I tile, the smaller the data for the P tile. Thus, the P tiles following the I tiles are not more critical to protect them from being lost, and they are smaller in size. And in general, the smaller the data that needs to be protected, the smaller the FEC code is required to protect it.
그래서, 도 11a에 도시된 것처럼, 일 실시예의 비디오 스트림에서 I 타일의 중요성 때문에, 오직 I 타일은 FEC 코드로 제공된다. 따라서, FEC(1101)는 I 타일(1100)을 위해 에러 보정 코드를 포함하고, FEC(1104)는 I 타일(1103)을 위한 에러 보정 코드를 포함한다. 이러한 실시예에서, P 타일을 위해 생성되는 FEC는 없다.Thus, as shown in FIG. 11A, because of the importance of I tiles in the video stream of one embodiment, only I tiles are provided with FEC codes. Accordingly,
도 11b에서 도시된 일 실시예에서, 또한 만약 손실되면 FEC 코드가 시각의 아티팩트를 초래하기가 쉬운 P 타일을 위해 생성된다. 이러한 실시예에서, FEC(1105)는 첫번째 3 타일을 위해 에러 보정 코드를 제공하지만, 뒤따르는 P 타일을 위해서 제공하는 것은 아니다. 다른 실시예에서, FEC 코드는 데이터 크기가 가장 작은 P 타일을 위해 생성된다(이는 I 타일 후에 가장 곧바로 발생하는 P 타일을 자체 선택(self-select)하는 경향이 있고, 보호를 위해 가장 임계적이다).In one embodiment shown in FIG. 11B, the FEC code is also generated for P tiles that are prone to artifacts of time if lost. In this embodiment, the
다른 실시예에서, 어떤 타일과 FEC 코드를 보내는 것보다는 다른 패킷에 개별 시간에서 타일을 두 번 전송한다. 만약 하나의 패킷이 손실/지연되면, 다른 패킷을 사용한다. In another embodiment, tiles are sent twice in separate times in different packets than in sending some tiles and FEC codes. If one packet is lost / delayed, another packet is used.
도 11c에 도시된 일 실시예에서, FEC 코드(1111 및 1113)는 대체적으로 비디오와 동시에 호스팅 서비스로부터 전송되는 오디오 패킷(1110 및 1112)을 생성한다. 그것은 비디오 스트림에서 오디오의 완결성(integrity)을 유지하기 위해서 특히 중요한데 왜냐하면 왜곡된 오디오(예컨대, 클리킹(clicking) 또는 히싱(hissing))는 특히 즐겁지않은 사용자의 경험을 초래할 것이다. FEC 코드는 오디오 컨텐츠가 왜곡 없이 클라이언트 컴퓨터(415)에서 랜더링되는 것을 보장하는 것을 돕는다. In one embodiment shown in FIG. 11C, the
다른 실시예에서, 오디오 데이터와 FEC 코드를 보내기보다는, 오디오 데이터를 다른 패킷의 각각 시간에 2번 전송한다. 만약 하나의 패킷이 손실/지연되면, 다른 패킷이 이용된다.In another embodiment, rather than sending audio data and FEC codes, audio data is sent twice each time in a different packet. If one packet is lost / delayed, another packet is used.
부가적으로, 도 11d에 도시된 일 실시예에서, FEC 코드(1121 및 1123)는 대체적으로(예컨대, 버튼 누름) 클라이언트(415)에서 호스팅 서비스(210)로 업스트림 전송되는 사용자 입력 명령어(1120 및 1122)을 위해서 사용된다. 비디오 게임 또는 어플리케이션에서 버튼 누름 또는 마우스 움직임을 놓치는 것은 사용자에게 즐겁지 않은 경험을 초래할 수 있기 때문에 이것은 중요하다.Additionally, in one embodiment shown in FIG. 11D, the
다른 실시예에서, 사용자 입력 명령어 데이터와 FEC 코드를 전송하는 것보다는, 사용자 입력 명령 데이터는 다른 패킷에서 각각의 시간에서, 2번 전송된다. 만약 하나의 패킷이 손실/지연되면, 다른 패킷을 사용한다.In another embodiment, rather than transmitting the user input command data and the FEC code, the user input command data is sent twice, each time in a different packet. If one packet is lost / delayed, another packet is used.
일 실시예에서, 호스팅 서비스(210)는 FEC 코드를 사용할지를 결정하기 위해서 클라이언트(415)와 통신 채널의 품질을 평가하고, 만약 FEC 코드를 사용한다면, FEC가 적용될 곳이 비디오, 오디오, 및 사용자 명령어의 어느 부분인지를 평가한다. 채널의 "품질" 평가는 위에서 설명된 것처럼 패킷 손실, 레이턴시 등을 측정하는 것과 같은 기능을 포함할 것이다. 만약 채널이 특히 신뢰할 수 없다면, 그 다음 호스팅 서비스(210)는 모든 I 타일, P 타일, 오디오 및 사용자 명령어에 FEC를 적용할 것이다. 대조적으로, 만약 채널이 신뢰할만하다면, 그 다음 호스팅 서비스(210)는 오직 오디오 및 사용자 명령어에 FEC를 적용하거나, 오디오 또는 비디오에 FEC를 적용하지 않거나, 전혀 FEC를 사용하지 않을 것이다. 그 밖의 다양한 FEC의 응용의 변경은 여전히 이러한 근본적인 이론을 따르면서 채택될 수 있을 것이다. 일 실시예에서, 호스팅 서비스(210)는 연속적으로 채널의 상태과 그에 맞는 FEC 정책의 변화를 모니터링한다.In one embodiment, the hosting
다른 실시예에서, 도 4a 및 4b를 참고하면, 어떤 패킷이 손실/지연된 때, 타일 데이터의 손실을 초래하거나 만약 아마도 특정 나쁜 패킷 손실때문에, FEC는 타일 데이터 손실을 보정할 수 없고, 클라이언트(415)는 새로운 I 타일이 수신되기 전에 얼마나 많은 프레임이 떠나게 되었는지를 평가하고 클라이언트(415)에서 호스팅 서비스(210)까지 왕복 레이턴시를 비교한다. 만약, 왕복 레이턴시가 새로운 I 타일이 도착 예정 전에 다수의 프레임보다 적다면, 그 다음 클라이언트(415)는 새로운 I 타일을 요청하도록 호스팅 서비스(210)로 메세지를 보낸다. 이러한 메세지는 비디오 압축기(404)로 라우트되고, 타일의 데이터가 손실되는 동안 P 타일을 생성하기 보다, I 타일을 생성한다. 도 4a 및 4b에서 도시된 시스템은 전형적으로 80ms보다 작은 왕복 레이턴시를 제공하기 위해서 설계되고, 이는 80ms(60fps에서 프레임은 16.67ms의 지속기간이고, 따라서 전체 프레임 시간에서 80ms 레이턴시는 83.33ms내에 보정된 타일을 초래할 것이며, 이는 5 프레임 시간 - 인식할 수 있을 만한 혼란, 그러나 예컨대 15 프레임 동안에 250ms 혼란보다는 훨씬 덜 인식할 수 있다). 압축기(404)가 그것의 보통 순환적인 차수를 벗어난 I 타일을 생성하고, 만약 I 타일이 이용가능한 대역폭을 초과하도록 프레임의 대역폭을 초래하면, 압축기(404)는 그 밖의 타일의 사이클을 지연시킬 것이므로 그 밖의 타일은 프레임 시간 동안(비록 하나의 타일이 정상적으로 그 프레임 동안에 I 타일을 수신할지라도) P 타일을 수신하고, 다음 프레임으로 시작하면 보통 사이클링이 계속될 것이며, 정상적으로 앞선 프레임에서 I 타일을 수신하게 될 타일은 I 타일을 수신할 것이다. 비록 이러한 동작이 간단히 R 프레임 사이클링의 상태를 지연할지라도, 그것은 정상적인 시각으로 인식할 수는 없을 것이다.
In another embodiment, referring to FIGS. 4A and 4B, when a packet is lost / delayed, the FEC may not be able to compensate for the tile data loss, possibly resulting in loss of tile data, or perhaps because of certain bad packet loss, and the client 415. ) Evaluates how many frames were left before the new I tile was received and compares round trip latency from client 415 to hosting
비디오 및 오디오 압축기/Video and audio compressors / 신장기Elongation 실행( Execution( VideoVideo andand AudioAudio Compressor/Decompressor Compressor / Decompressor ImplementationImplementation ))
도 12는 멀티 코어 및/또는 멀티-프로세서(1200)가 병렬로 8 타일을 압축하기 위해서 사용되는 특정 실시예를 도시하고 있다. 일 실시예에서, 독립 프로세서로써 오픈 소스 x264 H.264 압축기를 실행하는 각각의 코어를 가지고, 2.66GHz 또는 더 높은 속도에서 동작하는 듀얼 프로세서, 쿼드 코어 Xeon CPU 컴퓨터 시스템이 사용된다. 그러나, 다양한 그 밖의 하드웨어/소프트웨어 구성은 이러한 근본적인 이론에 따르는 동안에 사용될 것이다. 예컨대, 각각의 CPU 코어는 FPGA에서 실행되는 H.264 압축기로 대체될 수 있다. 도 12에 도시된 예에서, 코어(1201 ~ 1208)는 8개 독립적인 쓰레드로서 I 타일 및 P 타일을 동시에 처리하기 위해서 사용된다. 종래에 잘 알려진 것처럼, 현재 멀티 코어 및 멀티 프로세서 컴퓨터 시스템은 마이크로소프트 윈도우 XP 프로페셔널 에디션(64비트 또는 32비트 에디션) 및 리눅스와 같은 멀티-쓰레딩 동작 시스템으로 통합된 때 멀티-쓰레딩이 본래적으로 가능할 수 있다.FIG. 12 illustrates a particular embodiment in which multi-core and / or
도 12에 도시된 실시예에서, 각각의 8개 코어는 오직 하나의 타일을 책임지고, 그것은 대체로 그 밖의 코어, 각각 동작하는 x264의 개별 인스턴스(instantiation)와 독립적으로 동작한다. Sendero Video Imaging IP Development Board from Microtronix of Oosterhout와 같은 DVI 캡쳐 카드에 기반한 PCI Express x1, 네덜란드는 640×480, 800×600, 또는 1280×720 해상도에서 압축되지 않은 비디오를 캡쳐하기 위해 사용되고, 카드의 FPGA는 시스템 RAM으로 DVI 버스를 통하여 캡쳐된 비디오를 전송하기 위해서 직접 메모리 접근(Direct Memory Access; DMA)을 사용한다. 타일은 4×2 배열(1205)에 정렬된다(비록, 정사각형 타일로써 그들이 도시되었어도, 이러한 실시예에서 그들은 160×240 해상도이다). x264의 각 인스턴스가 8개 160×240 타일 중의 하나를 압축하기 위해서 구성되고, 도 12에 도시된 7개 P 타일에 의해서 뒤따르는 I 타일을 압축하기 위해서, 그들은 초기 I 타일 압축 후에, 각각의 코어가 한 사이클로 들어가고, 각각의 프레임은 그 밖의 것과 상태를 벗어난 후에 동기화된다.In the embodiment shown in FIG. 12, each eight cores are responsible for only one tile, which generally operates independently of the other cores, each instance of x264 running on each other. PCI Express x1, based on a DVI capture card such as Sendero Video Imaging IP Development Board from Microtronix of Oosterhout, the Netherlands is used to capture uncompressed video at 640 × 480, 800 × 600, or 1280 × 720 resolution, Uses Direct Memory Access (DMA) to transfer captured video over the DVI bus to the system RAM. The tiles are arranged in a 4 × 2 arrangement 1205 (although in these embodiments they are 160 × 240 resolution, although they are shown as square tiles). Each instance of x264 is configured to compress one of eight 160 × 240 tiles, and in order to compress the I tiles followed by the seven P tiles shown in FIG. 12, they are each core after initial I tile compression. Enters one cycle, and each frame is synchronized after leaving the state with the others.
각 프레임 시간에서, 앞서 설명된 기술을 사용하여, 결과 압축된 타일은 패킷 스트림으로 결합되고 나서 압축된 타일은 목적 클라이언트(415)로 전송된다.At each frame time, using the techniques described above, the resulting compressed tiles are combined into a packet stream and then the compressed tiles are sent to the destination client 415.
비록 도 12에 도시되지 않았지만, 만약 결합된 8 타일의 전송률이 특정 피크 전송률(941)을 초과한다면, 그 다음 모든 8개 x264 프로세스는 결합된 8 타일을 위한 데이터가 전송될 때까지 필요한 만큼의 프레임 시간 동안에 일시 중지된다.Although not shown in FIG. 12, if the combined 8 tile bit rate exceeds a
일 실시예에서, 클라이언트(415)는 FFmpeg의 8 인스턴스를 동작하는 PC에 소프트웨어처럼 실행된다. 수신 프로세스는 8 타일을 수신하고, 각각의 타일은 FFmpeg 인스턴스로 전송되고, 이는 타일을 신장하고 디스플레이 장치(422)에 적당한 타일 위치를 위해 그것을 랜더링한다.In one embodiment, client 415 runs like software on a PC running 8 instances of FFmpeg. The receiving process receives 8 tiles, each tile being sent to the FFmpeg instance, which stretches the tile and renders it for the appropriate tile position in the
클라이언트(415)는 PC의 입력 장치 드라이버로부터 키보드, 마우스, 게임 컨트롤러의 입력을 수신하고 그것을 서버(402)로 전송한다. 그 다음 서버(402)는 수신된 입력 장치 데이터를 적용하고 인텔 2.16GHz Core Duo CPU를 사용하는 윈도우가 동작하는 PC, 서버(402)에서 동작하는 게임 또는 어플리케이션에 그것을 적용한다. 그 다음에 서버(402)는 새로운 프레임을 생성하고 그것을 DVI 출력을 통해서 출력하고, 마더보드 기반 그래픽 시스템, 또는 NVIDIA 8800GTX PCI 카드의 DVI 출력을 통해서 출력한다.The client 415 receives input from the keyboard, mouse, and game controller from the input device driver of the PC and sends it to the
동시에, 서버(402)는 디지털 오디오 출력(예컨대, S/PDIF)을 통해서 게임 또는 어플리케이션에 의해서 생산된 오디오를 출력하고, 이는 비디오 압축을 실행하는 듀얼 쿼드 코어 Xeon-기반 PC의 디지털 오디오 입력과 결합된다. Vorbis 오픈 소스 오디오 압축기는 프로세스 쓰레드를 이용할 수 있는 어떤 코어를 사용하는 비디오와 동시에 압축된다. 일 실시예에서, 코어는 오디오 압축을 먼저 실행하여 그것의 타일을 압축하는 것을 완료한다. 그 다음 압축된 오디오는 압축된 비디오와 함께 전송되고, Vorbis 오디오 신장기를 사용하는 클라이언트(415)에서 신장된다.
At the same time, the
호스팅 서비스 서버 센터 배치(Hosting Services Server Center Placement ( HostingHosting ServiceService ServerServer CenterCenter DistributionDistribution ))
광섬유와 같은, 유리를 통하는 광은, 진공에서 광속도에 가깝게 이동하고 그래서 광섬유에서 광을 위한 정확한 전파속도가 결정될 수 있다. 그러나, 실제적으로, 라우팅 지연, 전송 비효율, 그 밖의 것에 시간을 허용하면, 우리는 인터넷에서 최적의 레이턴시는 광속도의 50%에 가까운 전송 속도를 반사하는 것을 관찰한다. 따라서, 최적의 1000마일 왕복 레이턴시는 대략 22ms이고, 최적의 3000 마일 왕복 레이턴시는 약 64ms 이다, 따라서, 미국 해안에 있는 단일 서버는 너무 멀리 떨어진 그 밖의 해안에(이는 3000마일 보다 훨씬 떨어질 수 있다) 클라이언트에게 요구되는 레이턴시로 제공하지 못할 것이다. 그러나, 도 13a에 도시된 것처럼, 만약 호스팅 서비스(210) 서버 센터(1300)가 미국의 중심에 위치하면(예컨대, 캔사스, 네브라스카 등), 미국 대륙의 어떤 위치까지의 거리가 1500 마일이거나 그 이하일 수 있고, 왕복 인터넷 레이턴시는 32ms보다 더 작다. 도 4b을 참조하면, 비록 ISP(453) 사용자에게 허용되는 최악의 레이턴시가 25ms일지라도 전형적으로 우리는 DSL 및 케이블 모뎀 시스템으로 10 ~ 15 ms에 가까운 레이턴시를 관찰한다. 또한, 도 4b는 사용자 구내(211)에서 호스팅 센터(210)까지 최대 거리로 1000마일로 가정한다. 따라서, 전형적인 ISP 사용자는 15ms의 왕복 레이턴시를 갖고 1500마일의 최대 인터넷 거리는 32ms의 왕복 레이턴시로, 사용자가 입력 장치(421)를 작동하고 디스플레이 장치(422)에서 응답을 보는 한 지점에서 전체 왕복 레이턴시는 1+1+15+32+1+16+6+8 =80ms이다. 그래서 80ms 응답 시간은 전형적으로 1500 마일의 인터넷 거리를 거쳐 달성될 수 있다. 이는 미국 대륙에서 어떤 사용자 구내가 중심부에 위치한 단일 서버 센터로 충분히 짧은 사용자 ISP 레이턴시를 갖고 접근하는 것을 허용한다.Light through the glass, such as an optical fiber, travels close to the speed of light in a vacuum so that the exact propagation speed for light in the optical fiber can be determined. In practice, however, allowing time for routing delays, transmission inefficiencies, and others, we observe that the optimal latency on the Internet reflects transmission rates close to 50% of the speed of light. Thus, the optimal 1000 mile round-trip latency is approximately 22 ms, and the optimal 3000 mile round-trip latency is approximately 64 ms, so a single server on the US coast can be too far away from the other shore (which can be much less than 3000 miles). The client will not be able to provide the required latency. However, as shown in FIG. 13A, if the hosting
도 13b에 도시된 다른 실시예에서, 호스팅 서비스(210) 서버 센터들(HS1 - HS6)은, 매우 인기있는 센터와 근접하게 위치한 어떤 큰 호스팅 서비스 서버 센터로, 미국 전역에 전략적으로 위치한다(또는 그 밖의 지정학적인 지역). 일 실시예에서, 서버 센터들(HS1- HS6)은 인터넷 또는 개인 네트워크 또는 이들의 결합된 네트워크(1301)을 통해서 정보를 교환한다. 복수의 서버 센터로, 서비스는 높은 사용자 ISP 레이턴시(453)을 가지는 사용자에게 낮은-레이턴시를 제공한다.In another embodiment shown in FIG. 13B, the hosting
비록 인터넷상에서 거리가 확실히 인터넷을 통하는 왕복 레이턴시에 기여하는 요소일지라도, 때로는 그 밖의 요소는 대체적으로 레이턴시와 관련없는 활동을 시작한다. 때로는 패킷 스트림은 멀리 떨어진 위치로 인터넷을 통해서 라우트되고 다시 되돌아 오는데, 이는 긴 루프의 레이턴시를 초래한다. 때로는 적당히 동작하지 않는 경로에 라우팅 장비가 있는데, 이는 전송의 지연을 초래한다. 때로는 오버로드된 트래픽 경로가 있어서 이는 지연을 유도한다. 또한, 때로는 사용자의 ISP가 주어진 목적지로 전송하는 것을 막음으로써 실패가 생긴다. 따라서, 일반적인 인터넷은 보통 하나의 지점에서 다른 지점으로 공정하게 신뢰할 수 있고 최적의 경로 및 대체로 거리(특히, 사용자의 로컬 영역의 바깥쪽으로 라우팅을 초래하는 긴 거리 연결로)에 의해서 결정되는 레이턴시를 갖는 연결을 제공하는데, 이로 인해서는 신뢰성 및 레이턴시가 결코 보장되지 않으며 종종 사용자의 구내에서 주어진 목적지까지 일반적인 인터넷에서 달성될 수 없게 된다.Although distance on the Internet is certainly a contributing factor to round-trip latency over the Internet, sometimes other factors usually start activities that are not related to latency. Sometimes the packet stream is routed over the Internet to a distant location and back again, resulting in a long loop latency. Sometimes there is routing equipment on the path that is not working properly, which causes delays in transmission. Sometimes there is an overloaded traffic path, which leads to delays. Also, sometimes a failure occurs by preventing your ISP from sending to a given destination. Thus, a typical Internet is usually fairly fair from one point to another and has a latency determined by the best route and generally distance (especially with long distance links that result in routing out of the user's local area). It provides a connection, which ensures that reliability and latency are never guaranteed and often cannot be achieved on the general Internet from the user's premises to a given destination.
일 실시예에서, 사용자 클라이언트(415)는 비디오 게임을 플레이하고 어플리케이션을 사용하기 위해서 처음에 호스팅 서비스(210)와 연결되고, 클라이언트는 시작시에 이용가능한 호스팅 서비스 서버 센터(HS1 - HS6)의 각각과 통신한다(예컨대, 앞서 살펴본 기술을 사용하여). 만약 레이턴시가 특정 연결을 위해서 충분히 낮으면, 그 연결은 사용된다. 일 실시예에서, 클라이언트는 모든 또는 하위 조직(subset)과 통신하고, 호스팅 서비스 서버 센터 중 가장 레이턴시가 낮은 연결이 선택된다. 클라이언트는 가장 낮은-레이턴시 연결을 갖는 서비스 센터를 선택할 것이고 서비스 센터는 가장 낮은-레이턴시 연결을 갖는 것 중 하나로 식별될 것이며 이러한 정보(예컨대, 인터넷 주소의 형태)를 클라이언트에 제공한다.In one embodiment, user client 415 is initially connected with hosting
만약 특정 호스팅 서비스 서버 센터가 오버로드되고 그리고/또는 사용자의 게임 또는 어플리케이션이 적게 로드된 호스팅 서비스 서버 센터에 대한 레이턴시를 견딜수 있다면, 클라이언트(415)는 다른 호스팅 서비스 서버 센터로 향하게 된다. 그러한 상황에서, 사용자가 동작하고 있는 게임 또는 어플리케이션은 사용자의 오버로드된 서버 센터에 있는 서버(402)에서 중지될 것이고, 게임 또는 어플리케이션 상태 정보는 다른 호스팅 서비스 서버 센터에 있는 서버(402)로 전송될 것이다. 게임 또는 어플리케이션은 재개될 것이다. 일 실시예에서, 호스팅 서비스(210)는 게임 또는 어플리케이션이 전송을 하기 위해서 당연히 중지 포인트(예컨대, 게임에서 레벨 사이에, 또는 사용자가 어플리케이션에서 "저장(save)" 명령을 시작한 후에)에 도달될 때까지 기다리게 될 것이다. 이미 다른 실시예에서, 호스팅 서비스(210)는 지정된 기간의 시간(예컨대, 1분) 동안에 사용자 활동이 중지할 때까지 기다릴 것이고 그 다음 그 시간에 전송을 시작할 것이다.If a particular hosting service server center is overloaded and / or can withstand the latency for the hosting service server center where the user's game or application is lightly loaded, the client 415 is directed to another hosting service server center. In such a situation, the game or application in which the user is running will be stopped at
앞서 살펴본 것처럼 일 실시예에서, 호스팅 서비스(201)는 그것의 클라이언트에게 보장된 레이턴시를 제공하도록 하기 위해서 도 14의 인터넷 바이패스 서비스(440)에 가입한다. 여기서 사용되는 것처럼, 인터넷 바이패스 서비스는, 보장되는 특징(예컨대, 레이턴시, 전송률 등)을 갖는 인터넷의 한 지점에서 다른 지점으로 개인 네트워크 경로를 제공하는 서비스이다. 예컨대, 만약 호스팅 서비스(210)가 샌프란시스코에서 제공하는 AT&T의 DSL 서비스를 사용하는 사용자로부터 많은 양의 트래픽을 수신한다면, AT&T의 샌프란시스코 기반의 센트럴 오피스로 라우팅하는 것보다는, 호스팅 서비스(210)는 호스팅 서비스(210)를 위해 샌프란시스코 기반의 센트럴 오피스 및 하나 이상의 서버 센터 사이의 서비스 공급자(아마도 AT&T 자체 또는 다른 공급자)로부터 높은-성능 개인 데이터 연결을 임대할 수 있다. 그 다음에, 만약 모든 호스팅 서비스 서버 센터(HS1 - HS6)로부터 AT&T DSL을 사용하는 샌프란시스코의 사용자에게 일반적인 인터넷을 통하여 라우트되면 너무 높은 레이턴시를 초래하므로, 그 대신에 개인 데이터 연결이 사용될 수 있다. 비록 개인 데이터 연결이 일반적인 인터넷을 통한 라우트보다 일반적으로 더 비싸지만, 사용자와 호스팅 서비스(210)간의 연결이 너무 작은 비율로 오랫동안 남아 있으므로 전체 비용의 영향은 낮을 것이고, 사용자는 보다 일관된 서비스를 경험할 것이다.As discussed above, in one embodiment, the hosting service 201 subscribes to the Internet bypass service 440 of FIG. 14 to provide its clients with guaranteed latency. As used herein, an Internet bypass service is a service that provides a private network path from one point of the Internet with a guaranteed feature (eg, latency, transmission rate, etc.) to another point. For example, if hosting
서버 센터는 자주 정전 이벤트시에 2개 층의 백업 파워를 갖는다. 전형적으로 첫번째 층은 배터리로부터 파워를 백업하고(또는 택일적으로 즉시 이용가능한 에너지 소스, 발전기에 연결되고 동작이 계속되는 플라이휠과 같은), 이는 메인 파워가 끊어진 때 즉시로 전원을 공급하고 서버 센터 동작을 유지한다. 만약 정전이 단순하다면, 메인 파워는 빠르게 되돌아온다(예컨대, 1분 이내), 그 다음 배터리는 서버 센터 동작을 유지하기 위해 요청되는 것이다. 그러나 만약 정전이 오랜 시간동안 발생하면, 전형적으로 발전기(예컨대, 디젤-파워)가 보유한 연료만큼 오랫동안 작동될 수 있고 배터리를 위해 전달된다. 그러한 발전기는 서버 센터가 정상적으로 메인 파워로부터 얻을 수 있는 많은 전원만큼 생산하는 성능이 있기 때문에 굉장히 비싸다.Server centers often have two levels of backup power in the event of a power outage. Typically, the first tier backs up power from the battery (or alternatively readily available energy source, such as a flywheel connected to a generator and continues to operate), which immediately powers up and stops server center operation when the main power is lost. Keep it. If the power outage is simple, the main power returns quickly (eg within 1 minute), then the battery is required to maintain server center operation. However, if a power outage occurs for a long time, it can typically be operated for as long as the fuel possessed by the generator (eg diesel-power) and delivered for the battery. Such generators are very expensive because the server center is capable of producing as much power as can normally be obtained from the main power.
일 실시예에서, 호스팅 서비스(HS1 - HS5)의 각각은 다른 것과 사용자 데이터를 공유하므로 한 서버 센터가 정전되면, 그것은 동작중인 게임 및 어플리케이션이 중지될 수 있고, 각 서버(402)에서 다른 서버 센터의 서버들(402)로 게임 또는 어플리케이션 상태 데이터를 전송하며, 새로운 서버(402)와 통신하도록 각 사용자의 클라이언트(415)에게 알릴 것이다. 이러한 사용이 가끔 일어나면, 사용자가 최적의 레이턴시를 제공할 수 없는 호스팅 서비스 서버 센터로 사용자를 전달하는 것이 허용될 것이고(예컨대, 사용자는 단순히 정전의 지속 기간 동안에 높은 레이턴시를 견뎌야 한다), 이는 전송하는 사용자를 위해 많은 넓은 범위 선택을 허용할 것이다. 예컨대, 미국 전역의 표준시간대(time zone)의 차이는, 동부해안에 사용자는 오후 11:30에 잠자리에 들어갈 것이고 반면에 서부해안에 사용자는 오후 8:30에 비디오 게임의 사용의 피크가 시작될 것이다. 만약 동시에 서부 해안의 호스팅 서비스 서버 센터가 정전에 있으면, 모든 사용자를 다루기 위한 그 밖의 호스팅 서비스 서버 센터에 충분한 서부 해안 서버(402)가 있지 않을 것이다. 그러한 상황에서, 어떤 사용자들은 이용가능한 서버(402)를 갖고 있는 동부 해안의 호스팅 서비스 서버 센터로 전송될 수 있고, 사용자에게 뒤따르는 결과는 오직 높은 레이턴시일 것이다. 사용자가 전원을 잃은 서버 센터로부터 전송된다면, 서버 센터는 그것의 서버 및 기구의 중단된 차례로 개시될 수 있고, 모든 기구는 배터리(또는 그 밖의 즉각적인 전원 백업)가 소진되기 전에 중단되게 된다. 이러한 방식으로, 서버 센터를 위한 발전기 비용은 피할 수 있다.In one embodiment, each of the hosting services HS1-HS5 shares user data with the other, so if one server center goes down, it may stop running games and applications, and each
일 실시예에서, 호스팅 서비스(210)의 무거운 로딩 시간 동안(사용자 로딩 피크에 기인하거나 하나 이상의 서버 센터가 작동하지 않게 된다)에 사용자는 그들이 사용하는 게임 또는 어플리케이션의 레이턴시 요구에 기초하여 그 밖의 서버 센터로 전송된다. 그래서 낮은-레이턴시를 요구하는 게임 또는 어플리케이션을 사용하는 사용자는 제한된 공급이 있을 때, 이용가능한 낮은-레이턴시 서버 연결로 특혜를 받게 될 것이다.
In one embodiment, during heavy loading times of hosting service 210 (due to user loading peaks or one or more server centers become inoperable), users may choose to use other servers based on latency requirements of the games or applications they use. Is sent to the center. So a user using a game or application that requires low latency will benefit from the low latency server connections available when there is a limited supply.
호스팅 서비스 특징(Hosting Service Features ( HostingHosting ServiceService FeaturesFeatures ))
도 15는 다음의 특징을 설명하는데 이용되는 호스팅 서비스(210)를 위한 서버 센터의 구성요소의 실시예를 도시하고 있다. 도 2a에 도시된 호스팅 서비스(210)처럼, 이 서버 센터의 구성요소는 그 밖의 제한이 없다면, 호스팅 서비스(201) 제어 시스템(401)에 의해서 제어되고 조정된다.FIG. 15 illustrates an embodiment of components of a server center for hosting
사용자 클라이언트(415)로부터 인바운드 인터넷 트래픽(1501)은 인바운드 라우팅(1502)으로 이동된다. 전형적으로, 인바운드 인터넷 트래픽(1501)은 인터넷을 위해 고속 파이버 광연결을 통해서 서버 센터로 들어갈 것이지만, 적당한 대역폭, 신뢰성 및 낮은-레이턴시의 네트워크 연결 수단이 충분할 것이다. 인바운드 라우팅(1502)은 네트워크(네트워크는 이더넷 네트워크, 섬유 채널 네트워크 또는 어떤 그 밖의 전송 수단을 통해서 실행될 수 있다)의 시스템 스위치 및 적당한 어플리케이션/게임("어플(app)/게임(game)") 서버(1521 - 1525)로 각 패킷을 라우트하고 도착한 패킷을 취하는 스위치를 지지하는 라우팅 서버이다. 일 실시예에서, 특정 어플리케이션/게임 서버로 전달되는 어떤 패킷은 클라이언트로부터 수신된 데이터의 서브셋을 나타내고 그리고/또는 그 밖의 구성요소(예컨대, 게이트웨이 및 라우터와 같은 네트워킹 구성요소)에 의해서 데이터 센터 내에서 변환/변경될 것이다. 어떤 경우에, 예컨대, 만약 게임 또는 어플리케이션이 병렬로 한번에 다수의 서버에서 구동되고 있다면, 패킷은 서버(1521 -1525) 중 하나 이상으로 한번에 라우트될 것이다. RAID 배열(1511 - 1512)은 인바운드 라우팅 네트워크(1502)와 연결되고, 어플리케이션/게임 서버(1521 - 1525)는 RAID 배열(1511 - 1512)을 읽거나 쓸 수 있다. 더욱이, RAID 배열(1515)(이는 멀티 RAID 배열로써 실행될 것이다)은 또한 인바운드 라우팅(1502)과 연결되고 RADI 배열(1515)로부터 데이터는 어플리케이션/게임 서버(1521 - 1525)로부터 읽을 수 있다. 인바운드 라우팅(1502)은 루트(root)에 인바운드 인터넷 트랙픽(1501)을 갖는 트리 구조의 스위치를 포함하고; 모든 다양한 장치를 상호결합하는 메쉬 구조로; 또는 그 밖의 장치들 사이에 집중되는 트래픽으로부터 분리되고 교환하는 장치들 중에서 집중되는 트랙픽을 가진, 일련의 서브넷과 상호결합되는 것처럼; 종래 기술의 네트워크 아키텍처의 넓은 범위에서 실행될 수 있을 것이다. 네트워크 구성의 한 형태는 SAN이고, 비록 전형적으로 스토리지 장치를 위해 사용될지라도, 그것은 또한 장치들 사이에 일반적인 고속 데이터 변환을 위해 사용될 수 있다. 또한, 어플리케이션/게임 서버(1521 - 1525)는 각각이 인바운드 라우팅(1502)과 멀티 네트워크 연결을 갖게 될 것이다. 예컨대, 서버(1521-1525)는 RAID 배열(1511-1512)에 부착되는 서브넷과 네트워크 연결 및 그 밖의 장치에 부착되는 서브넷과 또 다른 네트워크 연결을 갖게 될 것이다.Inbound Internet traffic 1501 from user client 415 is directed to inbound routing 1502. Typically, inbound Internet traffic 1501 will enter the server center via a high speed fiber optical connection for the Internet, but adequate bandwidth, reliability and low latency network connectivity will be sufficient. Inbound routing 1502 is a system switch of a network (the network may be implemented via an Ethernet network, a fiber channel network or any other means of transport) and a suitable application / game (“app / game”) server. (1521-1525) is a routing server that routes each packet and supports a switch that takes the arriving packet. In one embodiment, certain packets delivered to a particular application / game server represent a subset of the data received from the client and / or within the data center by other components (eg, networking components such as gateways and routers). Will be converted / changed. In some cases, for example, if a game or application is running on multiple servers in parallel, packets will be routed to one or more of the servers 1521-1525 at once. RAID arrays 1511-1512 are connected to inbound routing network 1502, and application / game servers 1521-1525 can read or write RAID arrays 1511-1512. Moreover, RAID array 1515 (which will be implemented as a multi-RAID array) is also associated with inbound routing 1502 and data from RADI array 1515 can be read from application / game servers 1521-1525. Inbound routing 1502 includes a tree-structured switch having inbound Internet traffic 1501 at the root; A mesh structure that interconnects all the various devices; Or as interconnected with a series of subnets with concentrated traffic among the devices that separate and exchange from the traffic concentrated between other devices; It can be implemented in a wide range of prior art network architectures. One form of network configuration is a SAN, and although typically used for storage devices, it can also be used for general high speed data conversion between devices. In addition, application / game servers 1521-1525 will each have multiple network connections with inbound routing 1502. For example, the server 1521-1525 will have a subnet and network connection attached to the RAID array 1511-1512 and another network connection with a subnet attached to other devices.
도 4a에 도시된 실시예에서 서버(402)와 관련하여 이미 설명된 것처럼, 어플리케이션/게임 서버(1521-1525)는 모두 동일하게, 일부 다르게, 모두 다르게 구성될 것이다. 일 실시예에서, 호스팅 서비스를 사용할 때, 각각의 사용자는, 전형적으로 적어도 하나의 어플리케이션/게임 서버(1521 - 1525)를 사용한다. 설명의 단순화를 위해서, 주어진 사용자는 어플리케이션/게임 서버(1521)을 사용하는 것으로 가정하지만, 멀티 서버가 한 사용자에 의해서 사용될 수 있고, 멀티 사용자가 단일 어플리케이션/게임 서버(1521 - 1525)를 공유할 수 있다. 앞서 설명된 것처럼 클라이언트(415)로부터 보내진 사용자의 제어 입력은, 인바운드 인터넷 트래픽(1501)으로 수신되고, 인바운드 라우팅(1502)을 통해서 어플리케이션/게임 서버(1521)로 라우트된다. 어플리케이션/게임 서버(1521)는 사용자의 제어 입력을 서버에서 동작하는 게임 또는 어플리케이션의 제어 입력으로써 사용되고, 그것과 관련된 다음 프레임의 비디오 및 오디오를 연산한다. 그 다음 어플리케이션/게임 서버(1521)는 압축되지 않은 비디오/오디오(1529)를 공유된 비디오 압축(1530)으로 출력한다. 어플리케이션/게임 서버는 하나 이상의 기가비트 이더넷 커넥션을 포함하는, 어떤 수단을 통해서 압축되지 않은 비디오를 출력할 것이나, 어떤 실시예에서는 비디오가 DVI 커넥션을 통해서 출력되고 오디오 및 그 밖의 압축 및 통신 채널 상태 정보는 범용 직렬 버스(USB) 커넥션을 통해서 출력된다. As already described with respect to the
공유된 비디오 압축(1530)은 어플리케이션/게임 서버(1521 - 1525)로부터 압축되지 않은 비디오 및 오디오를 압축한다. 압축은 아마도 전체적으로 하드웨어로서 또는 소프트웨어가 동작하는 하드웨어로 실행될 것이다. 각 어플리케이션/게임 서버(1521 - 1525)를 위한 전용 압축기가 있을 것이나, 만약 압축기가 충분히 빠르다면, 주어진 압축기는 하나 이상의 어플리케이션/게임 서버(1521-1525)로부터 비디오/오디오를 압축하기 위해 사용될 수 있다. 예컨대, 60fps에서 비디오 프레임 시간은 16.67ms이다. 만약, 압축기가 1ms 이내에 하나의 프레임을 압축할 수 있다면, 압축기는 16 어플리케이션/게임 서버(1521-1525)만큼 많은 것으로부터의 하나의 서버에서 그 후에 다른 것으로부터 입력을 얻음으로써, 각각의 비디오/오디오 압축 처리의 상태를 저장하고 서버로부터 비디오/오디오 스트림 사이에 사이클되는 것처럼 콘텍스트(context)를 스위칭하는 압축기를 가지고, 비디오/오디오를 압축하기 위해서 사용될 수 있다. 이는 실질적으로 압축 하드웨어에서 비용 절약을 가져온다. 일 실시예에서, 다른 서버가 다른 시간에 프레임을 완료하기 때문에, 압축기 리소스는 각각의 압축기 처리의 상태를 저장하기 위해 공유된 저장 수단(예컨대, RAM, 플래시)을 갖는 공유된 풀(pool;1530)에 있고, 서버(1521 - 1525) 프레임이 완료되고 압축되기 위해 준비된 때, 제어 수단은 그 시간에 압축 리소스를 이용할 수 있을지 결정하고, 압축하기 위해서 압축되지 않은 비디오/오디오의 프레임 및 서버의 압축 처리의 상태를 갖는 압축 리소스를 제공한다.Shared
각 서버의 압축 처리의 상태의 일부는, P 타일을 위한 기준으로써 사용될 수 있고, 사전 프레임의 신장된 프레임 버퍼 데이터, 비디오 출력의 해상도; 압축의 품질; 타일링 구조; 타일 당 비트의 할당; 압축 품질, 오디오 포맷(예컨대, 스테레오, 서라운드 사운드, Dolby® , AC-3)와 같이 압축 자체에 대한 정보를 포함한다는 것을 주목하라. 그러나 압축 처리의 상태는 또한 피크 전송률(941)에 관한 통신 채널 상태 정보를 포함하고, 사전 프레임(도 9b에서 도시된 것처럼)이 현재 출력되고 있는지(그리고 결과로써 현재 프레임이 무시될 수 있을 것이다), 그리고 잠재적으로 과도한 패킷 손실과 같은 압축을 고려해야 채널 특징이 존재하는지 여부는 압축을 위한 결정에 영향을 미친다(예컨대, I 타일의 주파수에 관하여 등). 피크 전송률(941) 또는 그 밖의 채널 특성은 시간에 따라 변하기 때문에, 클라이언트(415)로부터 보내진 각각의 사용자 모니터링 데이터를 지지하는 어플리케이션/게임 서버(1521-1525)에 의해서 결정됨으로써, 어플리케이션/게임 서버(1521-1525)는 공유된 하드웨어 압축(1530)으로 관련된 정보를 보낸다.Part of the state of the compression process of each server may be used as a reference for the P tile, and may include: advance frame extended frame buffer data, resolution of video output; Quality of compression; Tiling structures; Allocation of bits per tile; Note that it contains information about the compression itself, such as compression quality, audio format (eg, stereo, surround sound, Dolby ® , AC-3). However, the state of the compression process also includes communication channel state information about
또한, 공유된 하드웨어 압축(1530)은 앞서 설명했던 것과 같은 수단을 이용하고, 적당하다면 FEC 코드를 적용하며, 소정의 데이터를 복사하거나, 실현가능한 안정성 및 높은 품질로 신장된 그리고 클라이언트(415)에 의해서 수신된 비디오/오디오 데이터 스트림의 성능을 적당히 보장하기 위해 그 밖의 단계를 거쳐서 압축된 비디오/오디오를 패킷화한다.In addition, shared
아래 설명되는 것과 같은, 어떤 어플리케이션은, 동시에 멀티 해상도(또는 다른 멀티 포맷)에서 이용될 수 있는 주어진 어플리케이션/게임 서버(1521 - 1525)의 비디오/오디오 출력을 요구한다. 만약 어플리케이션/게임 서버(1521 - 1525)는 동시에 다른 포맷, 다른 해상도, 및/또는 다른 패킷/에러 보정 구조로 압축될 수 있을 것이다. 어떤 경우에, 어떤 압축 리소스는 동일한 비디오/오디오를 압축하는 복수의 압축 처리 중에서 공유될 수 있다(예컨대, 많은 압축 알고리즘에서, 무언가에 의해서 이미지가 압축 적용되기 전에 복수의 크기로 스케일되는 단계가 있다. 만약 다른 크기의 이미지가 출력되도록 요구되면, 이 단계는 한 번에 몇 개의 압축 처리를 제공하는데 사용될 수 있다). 다른 경우로, 개별 압축 리소스는 각각의 포맷을 위해서 요구될 것이다. 어떤 경우에는, 주어진 어플리케이션/게임 서버(1521 - 1525)를 위해서 요청된 압축된 비디오/오디오(1539)의 모든 다양한 해상도 및 포맷은 한번에 아웃바운드 라우팅(1540)로 출력될 것이다. 일 실시예에서 압축된 비디오/오디오(1539)의 출력은 UDP 포맷이고, 그래서 패킷의 단방향 스트림이다.Some applications, such as described below, require the video / audio output of a given application / game server 1521-1525 that can be used simultaneously in multiple resolutions (or other multi-formats). If application / game servers 1521-1525 may be compressed in different formats, different resolutions, and / or different packet / error correction structures at the same time. In some cases, some compression resources may be shared among multiple compression processes that compress the same video / audio (eg, in many compression algorithms, there is a step of scaling to multiple sizes before the image is compressed by something). If different size images are required to be output, this step can be used to provide several compression processes at one time). In other cases, separate compression resources will be required for each format. In some cases, all the various resolutions and formats of the compressed video / audio 1539 requested for a given application / game server 1521-1525 will be output to outbound routing 1540 at a time. In one embodiment the output of compressed video / audio 1539 is in UDP format, and so is a unidirectional stream of packets.
아웃바운드 라우팅 네트워크(1540)는 각각의 압축된 비디오/오디오 스트림을 아웃바운드 인터넷 트래픽(1599) 인터페이스(이는 전형적으로 인터넷과 섬유 인터페이서로 연결될 것이다)를 통해서 의도된 사용자 또는 그 밖의 목적지로 향하게 하고 그리고/또는 지연 버퍼(1515)로 되돌아가게 하며, 그리고/또는 인바운드 라우팅(1502)로 되돌아가게 하고, 그리고/또는 개인 네트워크(도시되지 않음)를 통해서 비디오 분배를 위해 출력하는 일련의 라우팅 서버 및 스위치를 포함한다.(아래 설명되는 것처럼) 아웃바운드 라우팅(1540)은 주어진 비디오/오디오 스트림을 한 번에 복수의 목적지로 출력할 것이다. 일 실시예에서 이는 인터넷 프로토콜(IP) 멀티태스크를 사용하여 실행되고 한 번에 복수의 목적지로 스트림되도록 의도된 주어진 UDP스트림은 브로드캐스트되고, 브로드캐스트는 아웃바운드 라우팅(1540)에 있는 라우팅 서버 및 스위치에 의해서 반복된다. 브로드캐스트의 복수의 목적지는 인터넷을 통해서 복수의 사용자의 클라이언트(415)로 될 것이고, 인바운드 라우팅(1502) 및/또는 하나 이상의 지연 버퍼(1515)를 통해서 복수의 어플리케이션/게임 서버(1521 - 1525)로 될 것이다. 따라서, 주어진 서버(1521 - 1522)의 출력은 단일 또는 복수 포맷으로 압축되고, 그리고 각각의 압축된 스트림은 단일 또는 복수의 목적지로 향하게 된다.Outbound routing network 1540 directs each compressed video / audio stream to an intended user or other destination through an
더욱이, 다른 실시예에서, 만약 복수 어플리케이션/게임 서버(1521 - 1525)는 동시에 한 명의 사용자(예컨대, 복잡한 장면의 3D 출력을 생성하기 위한 병렬 처리 구성에서)에 의해서 동시에 사용되고, 각각의 서버는 결과 이미지의 일부를 생성할 것이며, 복수 서버(1521 - 1525)의 비디오 출력은 결합된 프레임으로 공유된 하드웨어 압축(1530)에 의해서 결합될 수 있고, 마치 단일 어플리케이션/게임 서버(1521 - 1525)으로부터 온 것처럼, 그것은 순방향 포인트에서 앞서 설명된 것처럼 다루어진다.Furthermore, in another embodiment, if multiple application / game servers 1521-1525 are used simultaneously by one user (eg, in a parallel processing configuration for generating 3D output of a complex scene), each server may have a result. Will generate a portion of the image, and the video output of multiple servers 1521-1525 can be combined by
일 실시에서, 어플리케이션/게임 서버(1521 - 1525)에 의해서 생성된 모든 비디오의 복사는 최소 몇 분(일 실시예에서는 15 분)동안에 지연 버퍼(1515)에 기록된다. 이는 각 사용자에게 사전 동작 또는 이용을 검토하기 위하여 각각의 세션으로부터 비디오 "되감기(rewind)"를 허용한다(게임의 경우에). 따라서, 일 실시예에서, 사용자 클라이언트(415)로 라우트된 각각의 압축된 비디오/오디오 출력(1539) 스트림은 또한 지연 버퍼(1515)로 멀티캐스트된다. 비디오/오디오가 지연 버퍼(1515)에 저장된 때, 지연 버퍼(1515)의 디렉토리는 지연된 비디오/오디오가 발견될 수 있는 지연 버퍼(1515)의 위치 및 지연된 비디오/오디오의 소스를 어플리케이션/게임 서버(1521 - 1525)의 네트워크 어드레스 사이에서 상호 참조로 제공한다.
In one implementation, copies of all video generated by application / game servers 1521-1525 are written to delay buffer 1515 for at least a few minutes (15 minutes in one embodiment). This allows video "rewind" from each session to review each user's prior actions or usage (in the case of a game). Thus, in one embodiment, each compressed video / audio output 1539 stream routed to user client 415 is also multicast to delay buffer 1515. When video / audio is stored in delay buffer 1515, the directory of delay buffer 1515 locates the delay buffer 1515 where the delayed video / audio can be found and the source of the delayed video / audio (the application / game server). 1521-1525 for cross-reference.
라이브, 즉시-볼 수 있는, 즉시-Live, instant-visible, instant- 플레이할To play 수 있는 게임( Games that can LiveLive , , InstantlyInstantly -Viewable,Instantly-playable -Viewable, Instantly-playable GamesGames ))
어플리케이션/게임 서버(1521 - 1525)는 사용자를 위해 주어진 어플리케이션 또는 비디오 게임을 동작하기 위해서 사용되는 것일 뿐만아니라, 그들은 호스팅 서비스(210) 및 그 밖의 특징을 통해서 네비게이션을 지원하는 호스팅 서비스(210)를 위한 사용자 인터페이스 어플리케이션을 만들기 위해서 사용되는 것이다. 이러한 사용자 인터페이스 어플리케이션, "게임 파인더(game finder)" 의 스크린 샷이 도 16에서 도시된다. 이러한 특정 사용자 인터페이스 스크린은 사용자에게 그 밖의 사용자에 의해서 라이브로 플레이되는(또는 지연되는) 15 게임을 지켜보도록 허용한다. 1600과 같은 "섬네일(thumbnail)" 비디오 윈도우 각각은, 한 사용자의 게임으로부터 비디오를 보여주는 움직임 내의 라이브 비디오 윈도우이다. 섬네일에서 보여지는 시야는 사용자가 보고 있는 시야와 동일한 것이나, 그것은 지연된 시야일 것이다(예컨대, 만약 사용자가 전투 게임을 플레이하고 있다면, 사용자는 어디에 숨었는지 일정 시간까지 다른 사용자에게 알려지길 원하지 않고, 10분가량 게임플레이의 어떤 시야가 지연되도록 선택할 것이다). 또한 시야는 어떤 사용자의 시야와 다르게 카메라의 시야일 것이다. 메뉴 선택을 통해서(이러한 일러스트는 도시안됨), 사용자는 동시에 다양한 기준에 기초한 보기를 위해서 게임을 선택할 것이다. 전형적인 선택(choice)의 작은 샘플링으로써, 사용자는 모든 게임 중 한 가지 종류를(모두 다른 플레이어에 의해서 플레이), 오직 최상위 등급 플레이어, 게임에서 주어진 수준에 있는 플레이어, 또는 하위 등급 플레이어(예컨대, 만약 플레이어가 기본을 배운다면), 동료("buddies")(또는 경쟁자) 플레이어, 대다수의 뷰어(viewer)를 가지고 있는 게임 등을 무작위로 선택할 것이다(도 16에서 도시된 것처럼).The application / game servers 1521-1525 are not only used to run a given application or video game for a user, but they also provide a hosting
일반적으로, 각 사용자는 그의 또는 그녀의 게임 또는 어플리케이션을 그 밖의 사람들이 지켜볼 수 있을지를 결정할 것이고, 만약 그 밖의 사람들이 지켜볼 수 있게 된다면, 오직 지연된 것을 지켜보도록 할 것인지를 결정할 것이다.In general, each user will decide whether others will be able to watch his or her game or application, and if others will be able to watch, he will decide whether to watch only the delay.
도 16에 도시된 사용자 인터페이스 스크린을 생성하는 어플리케이션/게임 서버(1521 - 1525)는 각각의 사용자가 누구의 게임인지를 요청하는 동안에 어플리케이션/게임 서버(1521 - 1525)로 메세지를 보냄으로써 15 비디오/오디오 공급(feeds)을 요구한다. 메세지가 인바운드 라우팅(1502) 또는 다른 네트워크를 통해서 보내진다. 메세지는 요청된 비디오/오디오의 크기와 포맷을 포함할 것이고, 사용자 인터페이스 화면을 지켜보는 사용자를 식별할 것이다. 주어진 사용자는 "프라이버시(privacy)" 모드를 고르도록 선택할 것이고 어떤 그 밖의 사용자가 그의 게임의 비디오/오디오를 지켜보는 것이 허용되지 않고(그의 시야 또는 다른 시야 모두), 또는 앞 단락에서 설명된 것처럼, 사용자는 그녀의 게임으로부터 비디오/오디오를 감상(viewing)하는 것을 허락하도록 선택할 것이지만, 감상하는 비디오/오디오는 지연된다. 사용자 어플리케이션/게임 서버(1521 - 1525)가 감상하고자 하는 비디오/오디오를 허락하기 위한 요청을 수신하고 받아들이면 요청 서버(requesting server)를 승인할 것이고, 그것은 또한 요청된 포맷 또는 스크린 크기(포맷 및 스크린 크기는 이미 생성된 것과는 다르다고 가정)에 추가적으로 압축된 비디오 스트림을 생성하기 위한 필요를 공유된 하드웨어 압축(1530)에 알릴 것이며, 그리고 또한 압축된 비디오를 위한 목적지(예컨대, 요청하는 서버)를 지시한다. 만약, 요청된 비디오/오디오가 오직 지연되면, 요청하는 어플리케이션/게임 서버(1521 - 1525)는 통지받게 될 것이고, 그것은 지연 버퍼(1515)에 있는 디렉토리에서 비디오/오디오의 위치, 지연된 비디오/오디오의 소스인 어플리케이션/게임 서버(1521 - 1525)의 네트워크 주소를 찾음으로써 지연 버퍼(1515)에서 지연된 비디오/오디오를 요구할 것이다. 일단 모든 이러한 요청이 생성되고 다뤄지면, 15개 섬네일-크기의 비디오 스트림까지는 아웃바운드 라우팅(1540)에서 인바운드 라우팅(1502)까지 사용자 인터페이스 스트림을 생성하는 어플리케이션/게임 서버(1521 - 1525)를 위해서 라우트될 것이고, 서버에 의해서 신장되고 디스플레이될 것이다. 지연된 비디오/오디오 스트림이 너무 큰 스크린 크기에 있다면, 어플리케이션/게임 서버(1521 - 1525)는 스트림을 신장할 것이고 섬네일 크기로 비디오 스트림을 크기를 줄일 것이다. 일 실시예에서, 오디오/비디오를 위한 요청은 요청을 적당한 어플리케이션/게임 서버(1521 - 1525)로 다시 향하게 하는 도 4a(도 15에는 도시되지 않음)의 호스팅 서비스 컨트롤 시스템과 비슷한 센트럴 "관리(management)" 서비스로 보내진다(그리고 관리된다). 더욱이, 일 실시예에서, 어떤 요청이 요구되지 않는데 이는 섬네일들이 그것을 허용하는 사용자들의 클라이언트로 "넣어진(pushed)" 때문이다.The application / game servers 1521-1525 that produce the user interface screen shown in FIG. 16 send messages to the application / game servers 1521-1525 while requesting whose game each user is. Requires audio feeds. The message is sent over inbound routing 1502 or other network. The message will include the size and format of the requested video / audio and will identify the user watching the user interface screen. A given user will choose to choose a "privacy" mode and no other user is allowed to watch the video / audio of his game (both his view or other), or as described in the previous paragraph, The user will choose to allow viewing the video / audio from her game, but the watching video / audio is delayed. If the user application / game server 1521-1525 receives and accepts a request to allow the video / audio to watch, it will approve the requesting server, which also requests the requested format or screen size (format and screen). The size will inform the shared
동시에 15 게임으로부터 모두 섞인 오디오는 불협화음의 소리를 만들 것이다. 사용자는 이 방식으로 모든 소리를 함께 선택할 것이나(아마도 보여지는 모든 행동에 의해서 생성되는 "소음(din)"의 감각을 얻는다), 또는 사용자는 한 번에 하나의 게임에서 오디오를 듣기 위해 선택할 것이다. 단일 게임의 선택은 주어진 게임에 옐로우 선택 상자(1601)를 움직여서 성취될 수 있다(옐로우 상자 움직임은 키보드에 화살표키를 사용함으로써, 마우스를 움직임으로써, 조이스틱을 움직임으로써, 또는 모바일 폰같은 다른 장치에 방향 버튼을 누름으로써 성취될 수 있다). 일단 단일 게임이 선택되면, 그 게임 플레이로부터 오직 오디오를 얻는다. 또한, 게임 정보(1602)가 도시된다. 예컨대, 이 게임의 경우에, 발행인 로고("EA"), 게임 로고, "Need for Speed Carbon" 및 오렌지색 수직의 바는 특정 순간에 게임을 관람하거나 플레이하는 사람의 수와 관련된 항목을 지시한다. 더욱이 Need for Speed Game의 활동적으로 80개 다른 인스턴스 플레이하는 145 플레이어가 있고(예컨대, 그것은 개인 플레이어 게임 또는 멀티 플레이어 게임에 의해서 플레이될 수 있다), 거기에는 680명의 관찰자(사용자 중의 한 명)가 있다는 것을 나타내는 "stats"가 제공된다. 이러한 통계(그리고 그 밖의 통계)는 호스팅 서비스 210개 동작, 적당히 지불한 사용자 및 컨텐츠를 제공하는 출판인에게 지불되는 것의 로그를 유지하기 위해서 호스팅 서비스 컨트롤 시스템(401)에 의해서 수집되고 RAID 배열(1511 - 1512)에 저장된다. 어떤 통계는 서비스 컨트롤 시스템(401)에 의한 동작에 기인하여 기록되고, 어떤 것은 개인 어플리케이션/게임 서버(1521 - 1525)에 의해서 서비스 컨트롤 시스템(401)에 보고된다. 예컨대, 이 게임 파인더 어플리케이션을 구동하는 어플리케이션/게임 서버(1521 - 1525)는 게임이 관람되고 있을 때(그리고 그들이 관람을 시작할 때) 호스팅 서비스 컨트롤 시스템(401)에 메세지를 전달하여 얼마나 많은 게임이 관람 중인지를 업데이트할 것이다. 어떤 통계는 이러한 게임 파인더 어플리케이션과 같은 사용자 인터페이스 어플리케이션에 이용될 수 있다.At the same time all mixed audio from the 15 games will produce a dissonant sound. The user will select all sounds together in this way (probably getting a sense of "din" produced by all the actions shown), or the user will choose to listen to audio in one game at a time. Selection of a single game can be accomplished by moving the
만약, 사용자가 그들의 입력장치에 활성화 버튼을 클릭하면, 그들은 전체 화면 크기로 남아있는 동안에 옐로우 상자에 확대(zoom up)되는 섬네일 비디오를 볼 것이다. 이러한 효과는 도 17에서 프로세스가 도시된다. 비디오 윈도우(1700)가 크기가 커진다는 것을 주목하라. 이러한 효과를 실행하기 위해서, 어플리케이션/게임 서버(1521 - 1525)는 전체 화면 크기(사용자의 디스플레이 장치(422)의 해상도에서)를 위해 비디오 스트림의 카피를 갖도록 선택된 게임을 동작하는 어플리케이션/게임 서버(1521 - 1525)로부터 그것을 위해 라우트된 게임을 요청한다. 게임이 동작하는 어플리케이션/게임 서버(1521 - 1525)는 게임의 섬네일-크기의 카피가 더 이상 필요하지 않는다는 것을(만약 다른 어플리케이션/게임 서버(1521 - 1525)가 그러한 섬네일을 요구하지 않는다면) 공유된 하드웨어 압축기(1530)에 알리고, 그 다음 그것은 비디오를 확대하는 어플리케이션/게임 서버(1521 - 1525)로 비디오의 전체 화면 크기 카피를 보내도록 한다. 게임을 플레이하는 사용자는 사용자가 게임을 확대하는 것처럼 동일한 해상도 디스플레이 장치(422)를 갖거나 갖지 않을 수도 있다. 더욱이, 게임의 그 밖의 관찰자들은 사용자가 게임을 확대하는 것처럼 동일한 해상도로 디스플레이 장치를 가질 수도 있고 아닐 수도 있다(그리고 다른 오디오 재생 수단을 가질 것이고, 예컨대, 스테레오 또는 서라운드 사운드). 그래서, 공유된 하드웨어 압축(1530)은 적당하게 압축된 비디오/오디오 스트림이 이미 비디오/오디오 스트림을 요청하는 사용자의 요구에 맞도록 생성되었는지 여부, 만약 존재하다면 그것은 비디오를 확대하는 어플리케이션/게임 서버(1521 - 1525)로 스트림의 카피를 라우트하기 위해서 아웃바운드 라우팅(1540)에 알리고, 만약 그렇지 않다면 사용자를 위해 적당한 다른 비디오 카피를 압축하고 비디오를 확대하는 어플리케이션/게임 서버(1521 - 1525) 및 인바운드 라우팅(1502)로 스트림을 되돌려 보내기 위해 아웃바운드 라우팅에게 알린다. 지금 선택된 비디오의 전체 화면 버전을 수신한 서버는, 그것을 신장할 것이고 점차로 전체 크기로 스케일을 확대할 것이다. If the user clicks the Activate button on their input device, they will see a thumbnail video zoomed up in the yellow box while remaining full screen. This effect is shown in the process in FIG. 17. Note that
도 18은 게임이 전체 스크린으로 확대된 후에 스크린이 어떤지를 도시하고 있고 화살표(1800)에 의해서 지시되는 이미지에 의해 지시되는 것처럼 게임은 사용자의 디스플레이 장치(422)의 전체 해상도에서 보여진다. 게임 파인더 어플리케이션이 동작하는 어플리케이션/게임 서버(1521 - 1525)는 더 이상 필요없는 섬네일을 제공하고 있는 다른 어플리케이션/게임 서버(1521 - 1525)에게 메세지를 보내고 그 밖의 게임이 더 이상 관람되고 있지 않은 호스팅 서비스 컨트롤 서버(401)에게도 메세지를 보낸다. 그 시점에서, 디스플레이는 오직 정보 및 사용자에 메뉴 컨트롤을 제공하는 스크린의 상부에 오버레이(overlay; 1801)를 생성할 것이다. 게임이 진행됨에 따라, 관중은 2,503 관람자까지 늘어난다. 그렇게 많은 관람자와 함께, 동일 또는 거의 같은 해상도(각각의 어플리케이션/게임 서버(1521 - 1525)가 조정을 맞추기 위한 비디오를 스케일할 수 있다)를 갖는 디스플레이 장치(422)를 갖는 많은 관람자가 있다.18 shows what the screen looks like after the game has been enlarged to the full screen and the game is shown at the full resolution of the user's
도시된 게임은 멀티 플레이어 게임이기 때문에, 사용자는 어떤 시점에 게임에 참여할지 결정할 것이다. 호스팅 서비스(210)는 다양한 이유로 게임에 참여하는 사용자를 허용하거나 허용하지 않을 것이다. 예컨대, 사용자가 게임을 플레이하기 위해 지불해야 할 것이고 선택이 아니며, 사용자는 특정 게임을 참여하기 위해 충분한 랭킹을 갖고 있지 않을 것이나, 또는 사용자의 인터넷 연결은 사용자가 플레이하기에 충분히 낮은-레이턴시를 갖지 못할 것이다(예컨대, 시청하는 게임을 위해서는 레이턴시 제약은 없고, 멀리 떨어져(실제로, 다른 대륙에서) 플레이하는 게임은 레이턴시 걱정 없이 볼 수 있지만, 게임을 플레이하기 위해서, 레이턴시는 (a) 게임을 즐기기 위해서 사용자에게 충분히 낮아야 하고, (b) 낮은-레이턴시 연결을 갖는 그 밖의 플레이어와 동일한 입장에 있고). 만약 사용자가 플레이하는 것이 허용되면, 사용자를 위해 게임 파인더 사용자 인터페이스를 제공해주는 어플리케이션/게임 서버(1521 - 1525)는 호스팅 서비스 컨트롤 서버(401)가 RAID 배열(1511 - 1512)에서 게임을 로드하여 특정 게임을 플레이하기 위해 적절히 구성된 어플리케이션/게임 서버(1521 -1525)를 시작하도록(예컨대, 탐색하고 시작하다) 요청할 것이다. 그리고 호스팅 서비스 컨트롤 서버(401)가 게임 파인더 어플리케이션을 호스팅하고 있는 어플리케이션/게임 서버로부터 비디오/오디오를 압축하는 것에서 현재 게임을 호스팅하는 어플리케이션/게임 서버로부터 비디오/오디오를 압축하는 것으로 스위치하기 위해 공유된 하드웨어 압축(1530)에게 명령할 것이다. 게임 파인더 어플리케이션/게임 서비스와 새로운 어플리케이션/게임 서버 호스팅 게임의 수직 동시성(sync)은 동조되지 않고, 결과적으로 2개 싱크 사이에는 시간 차이가 생기기 쉽다. 왜냐하면, 공유된 비디오 압축 하드웨어(1530)는 비디오 프레임을 완료하는 어플리케이션/게임 서버(1521 - 1525)에서 비디오를 압축하기 시작할 것이고, 새로운 서버로부터 첫번째 프레임은 원래의 서버의 전체 프레임 시간보다 더 곧바로 완료될 것이며, 이는 먼저 압축된 프레임의 전송이 완료되기 전일 것이다(예컨대, 도 9b의 전송 시간(992)를 생각해보라 : 만약 압축되지 않은 프레임 3(963)이 프레임 시간의 절반 일찍 완료되었다면, 그것은 전송 시간(992)에 영향을 미칠 것이다. 그러한 상황에서 공유된 비디오 압축 하드웨어(1530)는 새로운 서버로부터 첫번째 프레임을 무시할 것이고(예컨대, 프레임 4(964)가 무시된 것처럼(974)), 그리고 클라이언트(415)는 나머지 프레임 시간에 종래 서버로부터 마지막 프레임을 유지할 것이며, 공유된 비디오 압축 하드웨어(1530)은 게임을 호스팅하는 새로운 어플리케이션/게임 서버로부터 다음 프레임 시간 비디오를 압축하기 시작할 것이다. 외관상으로 사용자에게, 하나의 어플리케이션/게임 서버에서 그 밖의 것으로 전송은 한결같아 보일 것이다. 호스팅 서비스 컨트롤 서버(401)은 그 다음에 그것이 다시 필요할 때까지, 한가한 상태로 전환하도록 게임 파인더를 호스팅하는 어플리케이션/게임 게임 서버(1521 - 1525)에게 알릴 것이다.Since the depicted game is a multiplayer game, the user will decide when to join the game. The hosting
그 다음 사용자는 게임을 플레이할 수 있다. 그리고, 예외적인 것은 게임이 즉시로 지각적으로 플레이될 것이고(그것은 초당 기가비트율에서 RAID 배열(1511 - 1512)에서 어플리케이션/게임 게임 서버(1521 - 1525)로 로드될 것이기 때문에), 게임은 이상적인 드라이버, 레지스트리 구성(Window의 경우에)을 갖고, 게임의 동작과 경쟁하는 서버에서 동작하는 그 밖의 어플리케이션을 갖지 않는 게임을 위해 정확히 구성된 오퍼레이팅 시스템과 함께 게임을 위해 정확하게 적합한 서버로 로드될 것이다.The user can then play the game. And, the exception is that the game will be immediately perceptually played (since it will be loaded from the RAID array 1511-1512 to the application / game game server 1521-1525 at gigabit per second), so the game is an ideal driver. It will be loaded into a server that is exactly the right for the game, with an operating system that has a registry configuration (in the case of Window) and that is configured correctly for the game without other applications running on the server that compete with the game's behavior.
또한, 사용자가 게임을 진행함에 따라, 게임의 각각의 세그먼트는 초당 기가비트의 속도(예컨대 8초에 1기가바이트가 로드)로 RAID 배열(1511 - 1512)에서 서버로 로드될 것이고, RAID 배열(1511 - 1512)의 광대한 저장 성능으로(그것은 많은 사용자들 사이에 공유된 리소스이고, 그것은 매우 큰 크기이며, 여전히 가격이 효율적임) 기하학적 셋업 또는 그 밖의 게임 세그먼트 셋업은 미리 연산되고 RAID 배열(1511 - 1512)에 저장되고 매우 빠르게 로드된다. 더욱이, 각각의 어플리케이션/게임 서버(1521 - 1525)의 하드웨어 구성 및 컴퓨터적인 성능이 알려졌기 때문에, 픽셀 및 버텍스 쉐이더(vertex shader)는 미리 연산될 수 있다.Also, as the user progresses the game, each segment of the game will be loaded from the RAID arrays 1511-1512 to the server at a gigabit per second speed (e.g., 1 gigabyte loaded in 8 seconds), and the RAID array 1511. With the vast storage performance of 1512 (that's a shared resource among many users, it's very large and still cost effective), geometric setups or other game segment setups can be pre-computed and RAID arrays. 1512) and load very quickly. Moreover, because the hardware configuration and computer performance of each application / game server 1521-1525 are known, the pixel and vertex shaders can be precomputed.
따라서, 게임은 거의 즉시 시작될 것이고, 그것은 이상적인 환경에서 작동할 것이며, 그리고 다음의 세그먼트는 거의 즉시로 로드될 것이다.Thus, the game will start almost immediately, it will work in the ideal environment, and the next segment will load almost immediately.
그러나, 이러한 이점 너머에는, 사용자가 그 밖의 사람이 게임을 플레이하는 것을 볼 수 있을 것이고(앞서 설명된 게임 파인더를 통해서나, 그 밖의 수단), 게임이 흥미로운지, 그렇다면 그 밖의 것을 지켜보는 것으로부터 팁을 배운다. 그리고, 사용자가 용량이 큰 다운로드 및/또는 인스톨을 기다리는 것 없이도 즉시 게임을 데모할 수 있을 것이고, 사용자는 즉시 게임을 플레이할 수 있을 것이며, 아마도 평가기준에서 더 작은 요금, 또는 더 장기적으로 플레이할 수 있을 것이다. 그리고, 사용자는 홈에서 Window PC, 매킨토시, 텔레비전 세트에서 게임을 플레이할 수 있을 것이고, 여행중일 때나, 충분히 낮은-레이턴시 무선 연결로 모바일 폰으로 조차 게임을 플레이할 수 있다. 그리고, 이는 물리적으로 게임의 카피의 소유없이도 모두 달성될 수 있다.However, beyond this advantage, the user will be able to see others playing the game (via the game finder described above, or by any other means), and tips from watching if the game is interesting and if so Learns. And the user will be able to demo the game immediately without waiting for large downloads and / or installs, and the user will be able to play the game immediately, perhaps at a lower rate, or in the longer term Could be. And, the user will be able to play the game at home on a Windows PC, Macintosh, or television set, and can play the game while traveling or even on a mobile phone with a sufficiently low-latency wireless connection. And this can all be achieved without physically owning a copy of the game.
앞서 언급했던 것처럼, 사용자는 그 밖의 사람이 그의 게임 플레이를 볼 수 있도록 허락하지 않을 수 있고, 지연된 후에 그의 게임을 볼 수 있도록 할 수 있으며, 선택된 사용자에 의해서 그의 게임을 볼 수 있도록 할 수 있거나, 모든 사용자에 의해서 그의 게임을 볼 수 있도록 할 수 있다. 그럼에도 불구하고, 일 실시예에서 지연 버퍼(1515)에서 15분 동안, 비디오/오디오는 저장될 것이고, 사용자는 "다시 재생"할 수 있을 것이고 그의 예전 게임 플레이를 볼 수 있을 것이며, 일시정지, 천천히 그것을 되돌려 재생하기, 빠르게 순방향 재생하는 등, 그가 디지털 비디오 리코더(DVR)로 TV를 시청하면서 할 수 있는 것처럼 할 수 있을 것이다. 비록, 이러한 예에서, 사용자는 게임을 플레이하고, 만약 사용자가 어플리케이션을 이용한다면, 동일한 "DVR" 성능이 이용가능하다. 이는 사전 작업을 검토하는데 도움을 줄 수 있고 아래 설명되는 것처럼 그 밖의 어플리케이션에 도움이 될 수 있다. 더욱이, 만약 게임이 이용가능한 게임 상태 정보에 기초하여 다시 재생되는 성능을 갖도록 디자인되면, 카메라 시야가 변화될 수 있고, 그 다음 이러한 "3D DVR" 성능은 또한 지원될 것이지만, 그것은 그것을 지원하는 게임이 디자인될 것이 요구될 것이다. 지연 버퍼(1515)를 사용하는 "DVR" 성능은 게임 또는 어플리케이션이 사용된 때 생성되는 비디오를 위해서, 물론 제한적으로 어떤 게임 또는 어플리케이션과 함께 동작할 것이지만, 그것은 3D DVR 성능을 갖는 게임의 경우에 사용자는 "미리 플레이된 세그먼트의 3D에서 "플라이 쓰루(fly through)"를 제어할 수 있고, 결과 비디오를 지연 버퍼(1515)가 저장하고, 게임 세그먼트 기록의 게임 상태를 가진다. 따라서, 특정 "플라이 쓰루"는 압축된 비디오로서 기록될 것이지만, 게임 상태가 또한 기록될 것이기 때문에, 다른 플라이 쓰루는 게임의 동일한 세그먼트의 이후 날짜에서 가능하게 될 것이다.As mentioned earlier, the user may not allow anyone else to see his gameplay, may be able to see his game after a delay, or may be able to view his game by a selected user, You can make his game visible to all users. Nevertheless, in one embodiment for 15 minutes in delay buffer 1515, the video / audio will be stored, and the user will be able to "play back" and see his previous gameplay, pause, slow Play it back, play it fast forward, and so on, as he can while watching TV with a digital video recorder (DVR). Although in this example, the user plays the game, if the user uses the application, the same "DVR" performance is available. This can be helpful in reviewing preliminary work and in other applications as described below. Moreover, if a game is designed to have the ability to play back based on available game state information, the camera field of view may change, and then this "3D DVR" performance will also be supported, but it will not be possible for the game to support it. Will be required to be designed. The "DVR" performance using the delay buffer 1515 will work with any game or application of course, but for a limited amount of video generated when the game or application is used, but it is a user in the case of a game with 3D DVR performance. Can control "fly through" in the 3D of the "Preplayed Segment", and the resultant video is stored by the Delay Buffer 1515, and has the game state of the game segment record. Will be recorded as compressed video, but since the game status will also be recorded, other fly-throughs will be possible on later dates of the same segment of the game.
아래 설명되는 것처럼, 호스팅 서비스(210)에 사용자는 각각의 유저 페이지를 가질 것이고, 그들은 스스로에 대한 정보 및 그 밖의 데이터를 알려줄 수 있다. 사용자가 알려줄 수 있는 것들 중에서는 그들이 저장되는 게임 플레이로부터 비디오 세그먼트이다. 예컨대, 만약 사용자가 게임에서 특정 어려운 도전을 극복한다면, 사용자는 게임에서 그들의 위대한 성취를 이룬 지점 바로 전으로 "되돌려 감도록" 할 수 있고, 그 다음 그 밖의 사용자가 사용자의 유저 페이지에서 볼 수 있도록 어떤 지속 기간(예컨대, 30초)의 비디오 세그먼트를 저장하도록 호스팅 서비스(210)에 명령한다. 이를 실행하기 위해서, 어플리케이션/게임 서버(1521 - 1525)의 문제는 사용자가 지연 버퍼(1515)에 저장된 비디오를 재생하기 위해 RAID 배열(1511 - 1512)를 사용할 것이고 그 다음 사용자의 유저 페이지에 비디오 세그먼트를 색인에 올린다.As described below, in hosting service 210 a user will have a respective user page, and they may inform themselves about themselves and other data. Among the things the user can tell is the video segment from the gameplay they are stored in. For example, if a user overcomes certain difficult challenges in the game, the user can "rewind" to just before the point of their great achievement in the game, and then make it visible to other users on the user's user page. Instructs hosting
만약 게임이 3D DVR의 성능을 갖는다면, 앞서 설명한 것처럼, 그 다음 3D DVR을 위해 요청되는 게임 상태 정보는 사용자에 의해서 기록될 수 있고 사용자의 유저 페이지에 이용할 수 있도록 만들어질 수 있다.If a game has the capabilities of a 3D DVR, as described above, then game state information requested for the 3D DVR can be recorded by the user and made available to the user's user page.
게임이 "관객(spectator)"(예컨대, 사용자가 3D 월드를 통해서 여행을 할 수 있고 그것에 참여없이 동작을 관찰한다)을 갖도록 디자인된 이벤트에서, 활동적인 플레이어를 추가하고, 게임 파인더 어플리케이션은 사용자가 플레이어 뿐만아니라 관객으로써 게임에 참여할 수 있도록 할 것이다. 실행 관점에서, 사용자가 활동적인 플레이어 대신에 관객이라도 호스팅 시스템(210)에는 차이가 없다. 게임은 어플리케이션/게임 서버(1521 - 1525)으로 로드될 것이고 사용자는 게임을 조정할 것이다(예컨대, 그 세상을 보도록 가상 카메라를 제어하는). 사용자의 게임 경험이 유일한 차이일 것이다.
In an event where the game is designed to have a "spectator" (eg, the user can travel through the 3D world and observe motion without participating in it), add an active player, and the game finder application allows the user to It will allow players to participate in the game as well as the audience. In terms of implementation, there is no difference in the hosting
복수의 사용자 협력(Multi-user collaboration ( MultipleMultiple UserUser CollaborationCollaboration ))
호스팅 서비스(210)의 다른 특징은 감상하기 위해서 매우 다른 장치를 사용함에도, 복수의 사용자가 라이브 비디오를 감상하는 동안에 협력할 수 있다는 것이다. 이는 게임을 플레이할 때 및 어플리케이션을 사용할 때 유용한다.Another feature of the hosting
많은 PC 및 모바일 폰은 비디오 카메라가 장착되어 있고 특히 이미지가 작을 때, 실시간 비디오 압축을 할 수 있는 성능이 있다. 또한, 작은 카메라는 텔레비젼에 부착되도록 이용될 수 있고, 그것은 비디오를 압축하기 위해서 소프트웨어 또는 많은 하드웨어 압축 장치를 사용하여 실시간 압축하는 것이 어렵지 않다. 또한, 많은 PC 및 모든 모바일 폰은 마이크로폰을 갖고 있고, 헤드셋은 마이크로폰으로 이용할 수 있다.Many PCs and mobile phones are equipped with video cameras and are capable of real-time video compression, especially when the image is small. Also, a small camera can be used to attach to a television, which is not difficult to compress in real time using software or many hardware compression devices to compress the video. In addition, many PCs and all mobile phones have microphones, and headsets are available as microphones.
로컬 비디오/오디오 압축 성능과 결합된(특히 여기서 설명된 낮은-레이턴시 비디오 압축 기술을 채용하는) 이러한 카메라 및/또는 마이크로폰은, 사용자 구내(211)에서 호스팅 서비스(210)까지 사용자가 비디오 및/또는 오디오를 입력 장치 제어 데이터와 함께 전송할 수 있을 것이다. 그러한 기술이 채택된 때, 다음 도 19에 도시된 성능치가 달성될 수 있고 : 사용자는 다른 사용자의 게임 또는 어플리케이션내에 스크린에 나타나는 그의 비디오 및 오디오(1900)를 가질 수 있다. 이러한 예는 자동차 경주에서 팀별 경쟁을 하는 멀티플레이어 게임이다. 한 사용자의 비디오/오디오는 오직 그들의 팀에게만 선택적으로 볼 수 있고/들을 수 있다. 그리고, 거기에는 효과적으로 레이턴시가 없기 때문에, 상기 설명된 기술을 사용하는 것은 사용자가 인식할 수 있는 지연없이 실시간으로 서로 간에 대화 또는 동작을 만들 수 있을 것이다.These cameras and / or microphones, combined with local video / audio compression performance (especially employing the low-latency video compression techniques described herein), allow users to view video and / or from
비디오/오디오 통합은 사용자의 카메라/마이크로폰에서 인바운드 인터넷 트래픽(1501)에 도착한 압축된 비디오 및/또는 오디오를 가짐으로써 달성될 수 있다. 인바운드 라우팅(1502)은 비디오 및/또는 오디오를 비디오 및/또는 오디오를 보고/듣는 것이 허용되는 어플리케이션/게임 게임 서버(1521 - 1525)로 전송한다. 비디오 및/또는 오디오를 사용하도록 선택된 각각의 어플리케이션/게임 게임 서버(1521 - 1525)의 사용자는 그것을 압축하고 1900에 의해서 도시된 것처럼, 게임 또는 어플리케이션 내에 나타내기 원하는 것처럼 통합한다.Video / audio integration may be accomplished by having compressed video and / or audio arriving at inbound internet traffic 1501 at the user's camera / microphone. Inbound routing 1502 sends video and / or audio to application / game game servers 1521-1525 that are allowed to view / listen to video and / or audio. The user of each application / game game server 1521-1525 selected to use video and / or audio compresses it and integrates it as desired by the game or application, as shown by 1900.
도 19의 예는 그러한 협력이 얼마나 게임에서 사용되는지를 도시하지만, 그러한 협력은 어플리케이션을 위해서 막대한 파워있는 도구일 수 있다. 큰 건물이 뉴욕에 있는 부동산 개발업자를 위해 시카고의 건축가에 의해 뉴욕시를 위해 설계되는 상황을 고려하면, 결정은 여행중이어서 공교롭게도 마이애미 공항에 있는 재정투자자를 포함하고, 투자자 및 부동산 개발자를 만족시키기 위해서, 결정은 가까이에 있는 빌딩과 어떻게 조화되는지에 대하여 빌딩의 디자인 요소에 대해 만들어지는 것이 필요하다. 건설 회사는 시카고에서 PC에 부착된 카메라가 있는 높은 해상도 모니터를 보유하고, 부동산 개발자는 뉴욕에 카메라가 있는 랩탑을 보유하며, 투자자는 마이애미에서 카메라가 있는 모바일 폰을 보유한다. 건설 회사는 매우 현실적인 3D 랜더링 성능이 있는 강력한 건축 디자인 어플리케이션을 호스트하기 위한 호스팅 서비스(210)를 사용할 수 있고, 디자인 하에 빌딩의 데이터베이스 뿐만아니라 뉴욕 시에 있는 빌딩의 많은 데이터베이스를 사용할 수 있다. 건축 디자인 어플리케이션은 하나 실행될 것이나, 어플리케이션/게임 서버(1521 - 1525)의 여러 개에서는 많은 컴퓨터 파워가 요구된다. 개별적인 위치에 3 사용자 각각은 호스팅 서비스(210)에 연결될 것이고, 각각은 건축 디자인 어플리케이션의 비디오 출력을 동시에 볼 수 있을 것이지만, 그것은 각각의 사용자가 가지고 있는 주어진 장치 및 네트워크 연결 특성(예컨대 건축 회사는 상업 인터넷 연결 20Mbps를 통해서 2560×1440 60fps 디스플레이, 뉴욕에 부동산 개발자는 그의 랩탑에서 6 Mbps DSL 연결을 통해서 1280×720 60fps 이미지를 볼 수 있고, 투자자는 그녀의 모바일 폰에 250Kbps 셀룰러 데이터 연결을 거쳐 320×180 60fps 이미지를 볼 수 있을 것이다)때문에 공유된 하드웨어 압축(1520)에 의해서 적당한 치수로 만들어질 것이다. 각각의 단체는 그 밖의 단체의 소리를 들을 것이고(회의 전화는 어플리케이션/게임 서버(들) (1521 - 1525)에 어떤 많은 이용가능한 회의 전화 소프트웨어 패키지에 의해서 다뤄질 것이다), 사용자 입력 장치의 버튼 동작에 따라, 사용자는 그들의 로컬 카메라를 사용하여 스스로를 나타내는 비디오를 만들 수 있을 것이다. 모임이 진행됨에 따라, 건축가는 각각의 단체의 디스플레이 장치의 해상도에 맞게 모든 단체가 볼 수 있는 동일한 비디오 및 매우 포토리얼리즘 3D 랜더링으로 빌딩을 회전하는 것처럼 보이게 하고, 다른 빌딩이 있는 영역의 옆으로 그것을 날라온 것처럼 보이게 할 수 있을 것이다. 어떤 단체에 의해서 사용되는 로컬 장치 중 아무것도 그러한 리얼리즘을 갖는 3D 애니메이션을 다룰 수 있는 성능이 없다는 것은 문제되지 않고, 뉴욕시의 주변 빌딩을 랜더링하기 위해서 요구되는 광대한 데이터베이스를 저장하거나 다운로드하는 것은 물론이고 문제되지 않는다.Although the example of FIG. 19 illustrates how such a collaboration is used in a game, such collaboration can be a tremendous power tool for an application. Given the situation in which large buildings are designed for New York City by architects of Chicago for real estate developers in New York, the decision is unfortunately to include financial investors in Miami Airport, satisfying investors and real estate developers. To do this, decisions need to be made about the building's design elements about how they match up with nearby buildings. Construction firms have high-resolution monitors with cameras attached to PCs in Chicago, real estate developers have laptops with cameras in New York, and investors have mobile phones with cameras in Miami. Construction firms can use hosting
각 사용자의 시점에서, 거리가 떨어졌음에도 불구하고, 개별 로컬 장치임에도 불구하고, 그들은 단순히 믿을 수 없는 리얼리즘의 정도로 원활할 경험을 갖게 될 것이다. 그리고, 하나의 단체가 그들의 감정 상태를 더 잘 전달하기 위해서 그들의 얼굴을 원할 때, 그들은 그것을 전달할 수 있다. 더욱이 만약, 부동산 개발자 또는 투자자가 건축 프로그램을 제어하고 싶거나 그들 자신의 입력 장치(이는 키보드, 마우스, 키패드, 또는 터치 스크린)를 사용하고 싶을 때, 그들은 그것을 제어할 수 있고 지각할 수 있는 레이턴시없이 응답할 것이다(그들의 네트워크 연결은 비합리적인 레이턴시를 갖지 않는다고 가정하면). 예컨대, 모바일 폰의 경우에, 만약 모바일 폰이 공항에서 WiFi 네트워크와 연결되면, 그것은 매우 낮은-레이턴시를 가질 것이다. 그러나 만약 미국에서 오늘날 이용가능한 셀룰러 데이터 네트워크를 사용한다면 그것은 아마도 눈에 띄는 랙을 겪을 것이다. 여전히 대부분의 모임의 목적은, 투자자는 셀룰러 레이턴시가 받아들여질 수 있음에도, 건축가가 빌딩 플라이 바이(fly-by)를 제어하는 것을 지켜보거나 비디오 화상 회의로 이야기하기 위함이다. At each user's point of view, despite their distance, even though they are separate local devices, they will simply have a smooth experience of incredible realism. And when an organization wants their face to communicate their emotional state better, they can convey it. Furthermore, if a real estate developer or investor wants to control a building program or use their own input device (which is a keyboard, mouse, keypad, or touch screen), they can control it and without perceived latency. Will respond (assuming their network connection does not have irrational latency). For example, in the case of a mobile phone, if the mobile phone is connected to a WiFi network at the airport, it will have very low latency. But if you use the cellular data network available today in the United States, it will probably have a noticeable rack. Still, the purpose of most gatherings is for investors to watch architects control building fly-bys or talk in videoconferences, although cellular latency can be acceptable.
마지막으로, 콜레보레이티브(collaborative) 전화 회의의 끝에는, 부동산 개발자 및 투자가가 그들의 의견(comment)을 만들 것이고 호스팅 서비스를 종료할 것이며, 건축 회사는 지연 버퍼(1515)에 저장된 회의 비디오를 "되감기(rewind)" 및 모임 동안 만들어진 빌딩의 3D 모델에 적용되는 표면상의 표현 및/또는 동작, 의견을 검토할 것이다. 만약 그들이 저장하고 싶은 특별한 세그먼트가 있다면, 비디오/오디오의 세그먼트는 아카이브 스토리지(archival storage) 및 후에 재생을 위해서 지연 버퍼(1515)에서 RAID 배열(1511 - 1512)로 이동될 수 있다.Finally, at the end of the collaborative conference call, the real estate developer and investor will make their comment and terminate the hosting service, and the building company will “rewind” the conference video stored in the delay buffer 1515. rewind) and superficial representations and / or motions and opinions applied to the 3D model of the building created during the meeting. If there are special segments they want to store, the segments of video / audio can be moved from the delay buffer 1515 to the RAID arrays 1511-1512 for archive storage and later playback.
또한, 비용 관점에서, 만약 건축가가 15분 전화 회의를 위해서 컴퓨터 사용 성능 및 뉴욕시의 거대한 데이터베이스를 사용할 필요가 있다면, 그들은 큰 데이터베이스의 비싼 카피를 구비하는 것 및 매우 성능있는 워크스테이션을 소유하는 것보다는 오직 리소스를 사용하는 시간에 대해서만 지불할 필요가 있다.
Also, from a cost point of view, if architects need to use computer-powered performance and a huge database in New York City for a 15-minute conference call, they have an expensive copy of a large database and own a very capable workstation. Rather, you only need to pay for the time you use the resource.
비디오-리치 커뮤니티 서비스(Video-Rich Community Services ( VideoVideo -- richrich CommunityCommunity ServiceService ))
호스팅 서비스(210)는 인터넷의 비디오-리치 커뮤니티 서비스를 설치하기 위해 전례가 없는 기회를 가능하게 한다. 도 20은 호스팅 서비스(210)에서 게임 플레이어를 위한 모범적인 유저 페이지를 도시하고 있다. 게임 파인더 어플리케이션과 마찬가지로, 유저 페이지는 어플리케이션/게임 서버(1521 - 1525) 중 하나에서 실행되는 어플리케이션이다. 이 페이지에 있는 모든 섬네일 및 비디오 윈도우는 지속적으로 움직이는 비디오를 도시하고 있다(만약 세그먼트가 짧고, 그들은 반복된다면).
비디오 카메라를 사용하거나 동영상을 업로드함으로써, 사용자(어느 사용자의 이름은 "KILLHAZARD")는 다른 사용자가 볼 수 있는 스스로의 비디오(2000)를 게시할 수 있다. 비디오가 RAID 배열(1511 - 1512)에 저장된다. 또한, 다른 사용자가 KILLHAZARD의 유저 페이지에 왔을 때, 만약 그때에 KILLHAZARD가 호스팅 서비스(210)를 사용한다면, 그가 하고 있는 무엇이든지 라이브 비디오(2001)(그를 지켜보기 위해 그의 유저 페이지를 관람하는 사용자를 그가 허용한다고 가정하면)로 보여질 것이다. 이는 KILLHAZARD가 활성화되는지, 만약 활성화된다면, 그가 사용하는 어플리케이션/게임 서버(1521 - 1525)인지 여부에 따라, 서비스 컨트롤 시스템(401)로부터 요청되는 유저 페이지 어플리케이션을 호스팅하는 어플리케이션/게임 서버(1521 - 1525)에 의해서 달성될 것이다. 그 다음, 같은 방법이 게임 파인더 어플리케이션에 의해서 사용되고, 적당한 해상도로 압축된 비디오 스트림과 포맷은 유저 페이저 어플리케이션이 동작하는 어플리케이션/게임 서버(1521 - 1525)로 전송되고 그것은 디스플레이될 것이다. 만약 사용자가 KILLHAZARD의 라이브 게임 플레이의 윈도우를 선택하면, 그 다음 그들의 입력 장치로 적당히 클릭하고, 윈도우는 확대될 것이다(다시 게임 파인더 어플리케이션과 같은 방법을 사용하여, 관람하는 사용자의 인터넷 연결의 특성에 적절하고, 관람하는 사용자의 디스플레이 장치(422)의 해상도에서, 라이브 비디오가 스크린을 채울 것이다).By using a video camera or uploading a video, a user (whose name is "KILLHAZARD") can post his
선행 기술 접근의 이상의 주요 장점은 사용자가 유저 페이지를 보는 것으로 사용자가 소유하지 않는 라이브 게임하는 것을 볼 수 있도록 하고, 게임이 플레이되는 로컬 컴퓨터 또는 게임 콘솔을 가지고 있지 않아도 매우 잘할 수 있다. 그것은 사용자가 유저 페이지에 도시된 "동작중인(in action)" 플레이되는 게임을 볼 수 있는 좋은 기회를 제공하고, 그것은 관람하는 사용자가 시도해 보거나 더 잘하고자 하는 게임에 대해서 배울 수 있는 기회를 제공한다.The major advantage of the prior art approach is that by viewing the user page, the user can watch live games not owned by the user, and can do very well without having a local computer or game console where the game is played. It provides a good opportunity for the user to see the game being played "in action" shown on the user page, which gives the viewer a chance to try or learn about the game they wish to do better. .
KILLHAZARD의 친구(buddies ; 2002)로부터 카메라 녹화하거나 업로드된 비디오 클립은 또한 유저 페이지에 표시되며, 각 비디오 클립 아래에 있는 텍스트는 친구가 온라인 게임을 플레이하는지 여부를 나타낸다(예컨대, six_shot은 "Eragon" 게임을 플레이하고 있고 MrSnuggles99은 오프라인, 등). 메뉴 항목(도시되지 않음)을 클릭하여 친구의 비디오 클립이 기록되고 업로드된 비디오를 보는 것에서 그들의 게임 순간에 동작하는 호스팅 서비스(210)에서 게임을 플레이하는 친구의 라이브 비디오로 스위치된다. 따라서, 이는 친구들을 그룹화하는 게임 파인더가 될 것이다. 만약 친구의 게임이 선택되고 그것이 클릭되면, 그것은 전체 화면으로 확대될 것이고, 사용자가 전체 화면으로 플레이되는 게임을 라이브로 볼 수 있을 것이다. Video clips recorded or uploaded by cameras from friends of KILLHAZARD (2002) are also displayed on the user page, and the text under each video clip indicates whether the friend plays an online game (eg, six_shot is "Eragon" Game and MrSnuggles99 is offline, etc.). Clicking on a menu item (not shown) will switch the video clip of the friend from being recorded and uploaded to the live video of the friend playing the game in the hosting
반복해서, 친구의 게임을 관람하는 사용자는 게임의 카피 또는, 게임을 플레이하기 위해서 로컬 컴퓨팅/게임 콘솔 리소스를 소유하지 않아도 된다. 게임을 관람하는 것은 효과적으로 즉시적인 것이다. Repeatedly, a user watching a friend's game does not have to own a local computing / game console resource to play a game or a copy of the game. Watching the game is effectively immediate.
앞서 설명된 것처럼, 사용자가 호스팅 서비스(210)에서 게임을 플레이할 때, 사용자가 게임을 "되감기(rewind)"할 수 있고 그가 저장하고자 하는 비디오 세그먼트를 찾을 수 있으며, 그의 유저 페이지에 비디오 세그먼트를 저장할 수 있다. 이는 "브래그 크립(Brag Clips)"이라고 불린다. 비디오 세그먼트(2003)는 그가 플레이한 사전 게임으로부터 KILLHAZARD에 의해 저장되는 모든 브래그 클립(2003)이다. 번호(2004)는 브래그 클립이 얼마나 많은 시간 관람되었는지를 도시하고, 브래그 클립이 보여질 때, 사용자가 그들을 평가하기 위한 기회를 갖게 되고, 다수의 오렌지색 키홀 형태의 아이콘(2005)은 얼마나 높은 등급을 나타내는지 보여준다. 브래그 클립(2003)은 사용자가 유저 페이지를 볼 때, 페이지에 남은 비디오에 따라 지속적으로 루프한다. 사용자가 브래그 클립(2003) 중 하나를 선택하고 클릭하면, 그것은 재생하기(play), 일시정지(pause), 되감기(rewind), 고속 감기(fast-forward), 스텝 쓰루(stepped through) 등이 되도록 클립을 허용하는 DVR 컨트롤에 따라 브래그 클립(2003)을 나타내도록 확대한다. As described above, when a user plays a game in the hosting
브래그 클립(2003) 재생은 사용자가 브래그 클립을 기록하고, 그것을 신장하며 다시 그것을 플레이할 때 RAID 배열(1511 - 1512)에 저장된 압축된 비디오 세그먼트를 로딩하는 어플리케이션/게임 서버(1521 - 1525)에 의해서 구현된다.
또한, 브래그 클립(2003)은 그러한 기능을 지원하는 게임에서 "3D DVR" 비디오 세그먼트(예컨대, 카메라 시점을 사용자가 바꿀 수 있도록 허락하고 리플레이될 수 있는 게임에서 게임 상태 시퀀스)일 수 있다. 이 경우의 게임 상태 정보가 게임 세그먼트가 기록된 때 사용자가 만드는 특정한 "플라이 쓰루"의 압축된 비디오 기록을 추가하여 저장된다. 유저 페이지가 보여지고 있을 때, 모든 섬네일 및 비디오 윈도우는 지속적으로 루프될 것이고, 3D DVR 브래그 클립(2003)은 사용자가 게임 세그먼트의 "플라이 쓰루"를 기록했을 때, 압축된 비디오처럼 기록된 브래그 클립(2003)을 지속적으로 루프할 것이다. 그러나 사용자가 3D DVR 브래그 클립(2003)을 선택하고 그것을 클릭할 때, 압축된 비디오 브래그 클립이 플레이되도록 허용하는 DVR 컨트롤을 추가하고, 사용자는 게임 세그먼트를 위한 3D DVR 기능을 그들에게 주는 버튼을 클릭할 수 있을 것이다. 그들은 자신의 게임 세그먼트 동안에 카메라 "플라이 쓰루"를 제어할 수 있게 될 것이고, 만약 그들이 원한다면(그리고 유저 페이지를 가진 사용자가 그것을 허용하면), 그들은 압축된 비디오 형태로 택일적인 브래그 클립 "플라이 쓰루"를 기록할 수 있을 것이고 그 다음 유저 페이지의 다른 관찰자에게 이용가능하도록 할 것이다(즉시, 또는 유저 페이지의 소유자가 브래그 클립을 검토하기 위한 기회를 갖은 후에).In addition,
이러한 3D DVR 브래그 클립(2003) 성능은 다른 어플리케이션/게임 서버(1521 - 1525)에서 기록된 게임 상태 정보를 리플레이하는 게임을 활성화하도록 할 수 있다. 게임이 거의 즉시 활성화될 수 있기 때문에(앞서 설명된 것처럼), 브래그 클립 세그먼트에 의해서 기록된 게임 상태로 제한된 그 게임을 활성화하는 것은 어렵지 않고, 그 다음 압축된 비디오를 지연 버퍼(1515)로 기록하는 동안에 카메라로 "플라이 쓰루"하도록 사용자를 허용한다. 일단 사용자가 실행을 완료하면, 그 "플라이 쓰루" 게임은 비활성화된다.This 3D
사용자의 시점에서, 3D DVR 브래그 클립(2003)을 가진 활성화된 "플라이 쓰루"는 선형 브래그 클립(2003)의 DVR 컨트롤을 제어하는 노력이 필요 없게 된다. 그들은 어떻게 게임을 플레이하는지 또는 그 게임에 대해서 아무것도 모를 것이다. 그들은 단지 다른 사람에 의해서 기록된 게임 세그먼트 동안에 3D 세상을 살펴보는 가상 카메라 오퍼레이터이다.At the user's point of view, an active "fly through" with the 3D
또한 사용자는 마이크로폰으로부터 기록되거나 업로드된 것을 브래그 클립으로 그들 자신의 오디오로 다중으로 녹음할 수 있을 것이다. 이러한 방법에서, 브래그 클립은 게임으로부터 캐릭터 및 동작을 사용하는 커스텀 애니메이션(custom animation)을 만드는데 사용할 수 있다. 이러한 애니메이션 기술은 흔히 "머시니마(machinima)"로써 알려진다.Users will also be able to multiplex their own audio with Bragg clips that have been recorded or uploaded from the microphone. In this way, Bragg clips can be used to create custom animations using characters and actions from the game. This animation technique is commonly known as "machinima".
사용자가 게임을 진행함에 따라, 그들은 기술 수준이 서로 다르게 달성할 것이다. 플레이되는 게임은 서비스 제어 시스템(401)에 업적을 보고하고, 이러한 기술 수준은 유저 페이지에 게재된다.
As the user progresses through the game, they will achieve different levels of skill. The game being played reports the achievement to the
인터랙티브Interactive 애니메이션 광고( Animated ads ( InteractiveInteractive AnimatedAnimated AdvertisementsAdvertisements ))
온라인 광고가 텍스트에서 변화되어 왔고, 여전히 이미지로, 비디오로, 지금은 인터랙티브 세그먼트로, 전형적으로 Adobe Flash 같은 씬 클라이언트(thin client)는 애니메이션을 사용하여 실행해 왔다. 씬 클라이언트가 애니메이션을 사용하는 이유는 사용자가 일반적으로 그들에게 판매된 서비스 또는 상품이 가지는 특권에 대해 지연되는 조금의 인내심을 갖는다는 것이다. 또한, 씬 클라이언트는 계속 매우 낮은 성능 PC으로 동작하고, 광고주는 인터랙티브 광고가 적당히 작용할 수 있다는 높은 정도의 확신을 가질 수 있다. 불행하게도, Adobe Flash와 같은 애니메이션 씬 클라이언트는 인터랙티비티(interactivity) 및 경험의 지속 기간(다운로드 시간을 완화하기 위해서)의 정도로 제한이 있다.Online advertising has changed from text to text, still to images, video, now interactive segments, and thin clients, typically Adobe Flash, have been running using animation. The reason that thin clients use animation is that users generally have some patience to be delayed with respect to the privileges of services or products sold to them. In addition, thin clients continue to operate with very low performance PCs, and advertisers have a high degree of confidence that interactive advertising can work properly. Unfortunately, animated thin clients such as Adobe Flash are limited in the amount of interactivity and duration of the experience (to ease download time).
도 21은 사용자가 전시장에서 자동차 주위를 회전하는 동안에, 자동차의 외부 및 내부 색을 선택할 수 있고, 실시간 레이 트레이싱(ray tracing)이 자동차가 어떻게 보이는지를 보여주는 인터랙티브 광고를 도시하고 있다. 그 다음 사용자가 그 자동차를 운전하기 위한 아바타(avatar)를 선택한 후에, 사용자는 레이스 트랙에 또는 모나코와 같은 이국적인 현지로 드라이브를 위해서 자동차를 가져갈 수 있다. 사용자는 더 큰 엔진, 또는 더 나은 타이어를 선택할 수 있고, 변경된 구성으로 자동차가 가속하고 노면에 착 붙어서 달리는 성능에 어떠한 영향을 주는지를 볼 수 있다.FIG. 21 illustrates an interactive advertisement that allows the user to select the exterior and interior colors of the car while rotating around the car at the showroom, and real-time ray tracing shows how the car looks. After the user has selected an avatar to drive the car, the user can then take the car for a drive on a race track or to an exotic local like Monaco. The user can choose a larger engine, or a better tire, and can see how the modified configuration affects the performance of the car accelerating and sticking to the road surface.
물론, 그 광고는 효과적인 정교한 3D 비디오 게임이다. 그러나 이러한 광고가 PC 또는 비디오 게임 콘솔에서 플레이될 수 있으려면 그것은 아마도 100MB의 다운로드가 필요할 것이고, PC의 경우에 그것은 특별한 드라이버의 설치가 필요할 수 있으며, 적절한 CPU나 GPU의 컴퓨팅 성능이 부족하다면 동작하지 않을 수도 있다. 따라서, 이러한 광고는 종래 기술 구성에서는 비현실적이다.Of course, the commercial is an effective sophisticated 3D video game. However, in order for these ads to be played on a PC or video game console, it will probably require 100MB of download, and in the case of a PC, it may require the installation of special drivers, and will not work if there is a lack of adequate CPU or GPU computing power. It may not. Thus, such advertisements are impractical in prior art configurations.
호스팅 서비스(210)에서, 이러한 광고는 거의 즉시로 시작하고, 완벽하게 실행되며, 사용자의 클라이언트(415) 성능이 무엇인지는 문제되지 않는다. 그래서 그들은 씬 클라이언트 인터랙티브 광고보다 더 빠르고, 그 경험이 보다 풍부하며, 매우 신뢰할 수 있다.
In the hosting
실시간 애니메이션 동안 스트리밍 지오메트리(Streaming geometry during the live animation ( StreamingStreaming GeometryGeometry DuringDuring Real-time Real-time AnimationAnimation ))
RAID 배열(1511 - 1512) 및 인바운드 라우팅(1502)은 실시간 애니메이션(예컨대, 복잡한 데이터 베이스로 플라이-쓰루) 동안에 어플리케이션에서 또는 게임 플레이의 도중에 즉시 지오메트리를 확실하게 전달하기 위해서 RAID 배열(1511 - 1512) 및 인바운드 라우팅(1502)에 의존하는 비디오 게임 및 어플리케이션을 디자인하도록 너무 낮은 레이턴시를 갖고 너무 빠른 전송률을 제공할 수 있다.RAID arrays 1511-1512 and inbound routing 1502 provide RAID arrays 1511-1512 for reliable delivery of geometry immediately during application play or during gameplay during real-time animations (eg, fly-through to complex databases). And too low latency and too fast to design video games and applications that rely on inbound routing 1502.
도 1에 도시된 비디오 게임 시스템과 같은 종래 기술의 시스템으로, 거대한 스토리지 장치가 이용가능하고, 특히 실제 가정에서 장치는, 요구되는 지오메트리가 다소 예상 가능한 상황을 제외하고는 너무 느려서 게임 플레이하는 동안에 지오메트리를 스트림할 수 없다. 예컨대, 특별한 도로에서 드라이빙하는 게임은, 시야로 들어오는 빌딩을 위한 지오메트리가 합리적으로 잘 예상될 수 있고 거대한 스토리지 장치는 곧 다가올 지오메트리가 위치한 위치를 미리 찾을 수 있다.With prior art systems, such as the video game system shown in FIG. 1, huge storage devices are available, especially in real home devices, which are too slow except in situations where the required geometry is somewhat foreseeable. Cannot be streamed. For example, a game driving on a special road can reasonably expect the geometry for a building to enter the field of view, and a huge storage device can find out where the upcoming geometry is located.
그러나 예상할 수 없는 변화를 가진 복잡한 장면에서(예컨대, 주변에 복잡한 캐릭터를 갖는 전투 장면에서) 만약 PC 또는 비디오 게임 시스템에 RAM이 현 시야의 물체를 위한 지오메트리로 완전히 채워진다면, 사용자는 갑자기 그들의 캐릭터뒤쪽의 것을 보기 위해 그들의 캐릭터를 돌리고, 만약 지오메트리가 RAM에 미리 로드되지 않는다면, 그것을 디스플레이되는데 지연이 있을 것이다. But in complex scenes with unpredictable changes (eg in battle scenes with complex characters around), if the PC or video game system has RAM completely filled with geometry for objects in the current field of view, the user suddenly has their characters Run their characters to see what's behind, and if geometry isn't preloaded into RAM, there will be a delay in displaying it.
호스팅 서비스(210)에서 RAID 배열(1511 - 1512)은 기바비트 이더넷 속도를 초과하여 데이터를 스트림할 수 있고, SNA 네트워크를 가지며, 그것은 10 기가비트 이더넷 또는 그 밖의 네트워크 기술보다 초당 10기가비트율을 달성하는 것이 가능하다. 초당 10기가비트는 초당 적어도 1기가바이트의 데이터를 로드할 것이다. 60fps 프레임 시간에서(16.67ms), 대략 170 메가비트(21MB)의 데이터가 로드될 수 있다. 물론 RAID 구성에서조차 회전 미디어는 여전히 한 프레임 시간보다 더 큰 레이턴시가 일어날 것이나, 플래시 기반의 RAID 스토리지는 결국 회전 미디어 RAID 배열만큼 클 것이고 이러한 높은 레이턴시가 일어나지는 않을 것이다. 일 실시예에서, 대규모 RAM 라이트-쓰루 캐싱(write-through caching)은 매우 낮은-레이턴시 접근을 제공할 것이다.In the hosting
따라서, 충분히 높은 네트워크 속도로, 그리고 충분히 낮은 충분한 레이턴시를 갖는 대량 스토리지, 지오메트리는 CPU 및/또는 GPU가 3D 데이터를 처리할 수 있는 만큼 빠르게 어플리케이션/게임 게임 서버(1521 - 1525)로 스트림될 수 있다. 그래서, 앞서 주어진 예에서, 사용자가 갑작스럽게 그들이 캐릭터를 회전하고 뒤쪽을 보기위해서, 캐릭터의 회전이 완료되기 전에 뒤에 있는 모든 캐릭터를 위한 지오메트리가 로드될 수 있고, 따라서, 사용자에게 그것은 라이브 액션처럼 생생하게 포로리얼리즘 세상에 그 또는 그녀가 있는 것처럼 보일 것이다.Thus, mass storage, geometry with sufficiently high network speeds and sufficiently low latency can be streamed to application / game game servers 1521-1525 as fast as the CPU and / or GPU can process 3D data. . So, in the example given earlier, in order for the user to suddenly rotate their character and look backwards, the geometry for all the characters behind them may be loaded before the character's rotation is complete, so that for the user it may be as vivid as a live action. It would look like he or she is in the world of for realism.
앞서 논의한 것처럼, 포토리얼리즘 컴퓨터 애니메이션에 마지막 한계 중의 하나는 인간의 얼굴이고, 인간의 눈의 민감도가 완벽하지 않기 때문에, 포토리얼 페이스로부터 근소한 에러는 관찰자로부터 부정적인 반응을 초래할 수 있다. 도 22는 ContourTM Reality Capture Technology(코-펜딩(co-pending) 어플리케이션의 주제 : "실행자의 동작을 캡처하는 방법 및 장치" 10/942,609, 2004년 9월15일 출원; " 실행자의 표현을 캡처하기 위한 방법 및 장치", 10/942,413, 2004년9월15일 출원; "동작 캡쳐 시스템 내에 마커 식별을 향상하기 위한 방법 및 장치" 11/066,954, 2005년 2월 25일 출원; "셔터 동기화를 사용하여 동작 캡처를 수행하는 방법 및 장치", 1/077,628, 2005년 3월 10일 출원; "캡처 표면에 임의의 패턴을 사용하여 동작을 캡처하는 방법 및 장치" 11/255,854, 2005년 10월 20일 출원; "형광체 응용 기술을 사용하여 동작 캡처를 수행하는 방법 및 시스템", 11/449,131, 2006년 6월 7일 출원; "형광 램프 섬광효과를 이용하여 동작 캡처를 수행하는 시스템 및 방법", 11/449,043, 2006년 6월 7일 출원; "정지 동작 애니메이션 캐릭터의 3차원 캡처를 위한 방법 및 시스템", 11/449,127, 2006년 6월 7일 출원, 이러한 각각의 것은 현재 CIP 출원의 양수인으로 양수되었다)를 사용하여 어떻게 라이브 성능을 매우 부드러운 캡쳐 표면에 초래하고, 그 후에 표면에 트랙된 높은 폴리건-카운트에 관하여 도시하고 있다(예컨대, 폴리건 동작은 얼굴의 동작을 정확하게 따른다). 마침내, 라이브 퍼포먼스의 비디오가 텍스쳐 표면(textured surface)을 생성하기 위해서 트랙된 표면(tracked surface)에 맵핑되고 포토리얼 결과가 생성된다.As discussed earlier, one of the last limitations of photorealism computer animation is the human face, and since the sensitivity of the human eye is not perfect, a slight error from the photoreal face can cause a negative response from the observer. Fig. 22 Contour TM Reality Capture Technology (co-pending (co-pending) the subject of the application: "How to capture the behavior of the performers and the equipment" 10 / 942,609, September 2004, filed May 15; "capture the representation of the executors And a method and apparatus for improving marker identification in a motion capture system "11 / 066,954, filed February 25, 2005;" Shutter synchronization Method and apparatus for performing motion capture using ", 1 / 077,628, March 10, 2005;" Method and device for capturing motion using a random pattern on the capture surface "11 / 255,854, October 2005 Filed 20: "Method and System for Performing Motion Capture Using Phosphor Application Technology", 11 / 449,131, June 7, 2006; "System and Method for Performing Motion Capture Using Fluorescent Lamp Flash Effect" , 11 / 449,043, filed June 7, 2006; "Three Dimensions of Stop Motion Animation Characters Method and system for the application of ", 11 / 449,127, filed June 7, 2006, each of which is now assigned as the assignee of the current CIP application) how to bring the live performance to a very smooth capture surface and then It is illustrated with respect to the high polygon-count tracked on the surface (eg, the polygon motion follows exactly the motion of the face). Finally, the video of the live performance is mapped to the tracked surface to produce a textured surface and a photoreal result is generated.
비록 현재 GPU 기술이 다수의 트랙된 표면에서 폴리건 및 표면 텍스쳐 및 라이트를 실시간으로 랜더링할 수 있고, 만약 폴리건 및 텍스쳐가 매 프레임 시간에 변한다면(이는 가장 포토리얼한 결과를 생성할 것이다), 그것은 빠르게 현대 PC 및 비디오 게임 콘솔의 이용가능한 RAM을 소모할 것이다.Although current GPU technology can render polygons and surface textures and lights on multiple tracked surfaces in real time, and if the polygons and textures change every frame time (which will produce the most photoreal result), it is fast. It will consume the available RAM of modern PCs and video game consoles.
상기 설명된 스트리밍 지오메트리 기술을 사용하면, 그것은 실제적으로 어플리케이션/게임 게임 서버(1521 - 1525)로 연속적으로 지오메트리를 공급하게 되므로 그들은 연속적으로 포토리얼 얼굴을 생기있게 할 수 있고, 얼굴로 비디오 게임을 창조하게되면 거의 살아서 동작하는 얼굴과 구별할 수 없다.
Using the streaming geometry technology described above, it will actually feed the geometry to the application / game game servers 1521-1525 continuously so that they can continuously animate the photoreal face and create a video game with the face. This makes it almost indistinguishable from a living face.
인터랙티브Interactive 기능을 가진 선형 컨텐츠의 통합( Integration of linear content with IntegrationIntegration ofof LinearLinear Content Content withwith InteractiveInteractive FeaturesFeatures ))
영화, TV 프로그램 및 오디오 자료 ("선형 컨텐츠"는 많은 형태로 홈 및 오피스 사용자에게 널리 이용될 수 있다) 선형 컨텐츠는 CD, DVD, HD-DVD 및 Blue-ray 미디어와 같은 물리적 미디어에서 획득될 수 있다. 그것은 또한 위성 및 케이블 TV 방송에서 DVRs로 기록될 수 있다. 그리고, 그것은 위성 및 케이블 TV와 케이블 TV에 주문형 비디오 (VOD)를 통해 유료보기(pay-per-view; PPV) 컨텐츠로써 이용할 수 있다.Movies, TV shows, and audio material ("linear content" can be widely used by home and office users in many forms). Linear content can be obtained from physical media such as CD, DVD, HD-DVD, and Blue-ray media. have. It can also be recorded as DVRs in satellite and cable TV broadcasts. And, it is available as pay-per-view (PPV) content through video on demand (VOD) on satellite and cable TV and cable TV.
점점 선형 컨텐츠가 다운로드 및 스트리밍 컨텐츠로써 인터넷을 통해서 이용할 수 있다 오늘날에는 선형 미디어와 관련된 모든 특징을 경험하기 위한 하나의 장소가 있지 않다. 예컨대, DVD 및 기타 비디오 광학 미디어는 일반적으로 특작 단편영화(featurettes)를 "구성하는(making of)" 감독의 논평처럼, 그 밖의 곳에서는 이용할 수 없는 인터랙티브 특징을 갖는다. 온라인 음악 사이트는 일반적으로 CD에서 이용하지 않는 표지 미술 및 노래 정보를 가지고 있지만, 모든 CD가 온라인으로 이용할 수 있는 것은 아니다. 텔레비전 프로그래밍과 관련된 웹 사이트는 종종 그 밖을 특징, 블로그, 때로는 배우 또는 스태프로부터 논평을 보유한다.Increasingly linear content is available over the Internet as download and streaming content Today there is no single place to experience all the features associated with linear media. For example, DVD and other video optical media generally have interactive features that are not available elsewhere, such as the commentary of a director who "makes" featurettes. Online music sites have cover art and song information that is not normally available on CDs, but not all CDs are available online. Websites related to television programming often hold comments from other features, blogs, and sometimes actors or staff.
더욱이, 많은 동영상 또는 스포츠 이벤트는, 자주 출시되는 비디오 게임이 있고(동영상의 경우에), 자주 선형 미디어와 함께 하거나(스포츠의 경우에) 실세계 이벤트와 면밀하게 연결될 것이다(예컨대, 선수의 거래 등).Moreover, many video or sporting events have video games that are frequently released (in the case of videos), often with linear media (in the case of sports), or closely linked to real-world events (e.g. player trades, etc.) .
호스팅 서비스(210)는 관련된 컨텐츠의 개별 형태와 함께 연결되는 선형 컨텐츠의 전달을 위해 매우 적합하다. 물론, 제공하는 동영상이 더 이상 그 전달하는 고도의 인터랙티브 비디오 게임을 요구하지는 않을 것이고, 호스팅 서비스(210)는 홈 또는 오피스의 광범위한 장치 또는 모바일 장치로 선형 컨텐츠를 전달할 수 있다. 도 23은 선형 컨텐츠의 선택을 보여주는 호스팅 서비스(210)를 위한 모범적인 사용자 인터페이스 페이지를 도시하고 있다.
하지만, 대부분의 선형 컨텐츠 전달 시스템과는 달리, 호스팅 서비스(210)는 또한 관련된 인터랙티브 구성요소(예컨대, 웹 사이트 상에 Adobe Flash 애니메이션(아래 설명하는 것처럼), HD-DVD에서 인터랙티브 오버레이, 및 DVD에서 메뉴 및 기능)를 전달할 수 있다. 따라서, 클라이언트 장치(415)는 그것의 기능을 이용할 수 있는 것에 관하여 더 이상 제한을 소개하지 않는다.However, unlike most linear content delivery systems, the hosting
또한, 호스팅 시스템(210)은 실시간으로 동적인 비디오 게임 컨텐츠와 선형 컨텐츠를 함께 연결할 수 있다. 예컨대, 사용자가 해리 포터 영화에 나오는 퀴디치(Quidditch) 경기를 보고 있다면, 그녀는 버튼을 클릭할 수 있고 영화는 정지될 것이며 즉시 그녀는 해리 포터 비디오 게임의 퀴디치 세그먼트로 이동되어질 것이다. 퀴디치 경기를 플레이한 후에, 다른 버튼을 클릭하고, 영화는 즉시 다시 시작할 것이다.In addition, the hosting
포토리얼 그래픽 및 생산 기술로 포토그래픽하게 캡처한 비디오는 라이브 액션 캐릭터와 구별할 수 없고, 여기서 설명된 것처럼 사용자가 라이브 액션 영화에 퀴디치 게임에서 호스팅 서비스에 있는 비디오 게임에 퀴디치 게임으로 이동을 만들 때, 사실상 두 장면은 구별할 수 없다. 이는 선형 컨텐츠와 인터랙티브 컨텐츠(예컨대, 비디오 게임)의 감독들이 두 세계의 차이를 구별할 수 없게 되는 새로운 창조적인 옵션을 제공한다. Photographically captured video with photoreal graphics and production technology is indistinguishable from live action characters, and as described here, when a user makes a move from a Quidditch game to a live action movie to a Quidditch game to a video game on a hosting service, In fact, the two scenes are indistinguishable. This provides new creative options that make it impossible for directors of linear content and interactive content (eg, video games) to distinguish between the two worlds.
도 14에 도시된 호스팅 서비스 아키텍쳐를 활용하면, 3D 영화에서 버추얼 카메라의 제어는 관찰자에게 제공될 수 있다. 예컨대, 열차 내에서 이루어지는 장면에서, 그것은 이야기 진행 동안에 열차 주변을 둘러보고, 사용자가 버추얼 카메라를 제어하는 것을 허용하는 것이 가능할 것이다. 이는 원래 영화만큼이나 실시간으로 장면을 랜더링할 수 있는 컴퓨터 파워의 적당한 수준만큼 그 열차에 있는 모든 3차원 객체의 ("자산(assets)")으로 이용할 수 있다. Using the hosting service architecture shown in FIG. 14, control of the virtual camera in a 3D movie can be provided to the viewer. For example, in a scene that takes place within a train, it would be possible to look around the train during the story progression and allow the user to control the virtual camera. It can be used as ("assets") of all three-dimensional objects on the train by a reasonable level of computer power that can render scenes in real time as well as the original movie.
심지어 비-컴퓨터에 의해 생성된 엔터테인먼트에서, 제공될 수 있는 매우 흥미로운 인터랙티브 기능이 있다. 예컨대, 2005년 영화 "오만과 편견"은 화려한 고대 영국 저택에 대한 많은 장면이 있다. 특정 맨션 장면에서, 사용자가 비디오를 일시 중지할 수 있고 그 다음 저택 또는 그 주변 지역의 투어를 위해 카메라를 제어할 수 있다. 이를 실행하기 위해서, Apple사의 종래 기술인, 그것의 위치를 추적하는 물고기 눈 렌즈를 갖는 카메라가 저택을 통과하여 운반될 수 있겠다. QuickTime VR이 실행된다. 다양한 프레임이 변환되고 이미지가 왜곡되지 않으며, 영화와 함께 RAID 배열(1511 -1512)에 저장되며, 가상 투어를 위해 사용자가 선택을 할 때, 다시 재생된다.Even in non-computer generated entertainment, there is a very interesting interactive function that can be provided. For example, the 2005 film "Pride and Prejudice" has many scenes of gorgeous ancient English mansions. In certain mansion scenes, the user can pause the video and then control the camera for a tour of the mansion or surrounding area. To do this, a camera with a fish eye lens that tracks its location, Apple's prior art, could be transported through the mansion. QuickTime VR launches. The various frames are converted and the image is not distorted, stored in a RAID array 1511-1512 with the movie, and played back when the user makes a selection for a virtual tour.
농구 경기와 같은 스포츠 이벤트, 라이브 스포츠 이벤트는 그들이 일반 TV에서처럼, 사용자가 시청하기 위해 호스팅 서비스(201)을 통해서 스트림될 것이다. 사용자가 특정 경기를 시청한 후에, 그 게임의 비디오 게임(결국 실제 플레이어만큼 포토리얼하게 보이는 농구 플레이어)은 동일한 위치에서 시작하는 플레이어로 시작하고, 사용자(아마도 각각은 하나의 플레이어의 제어)는 그 플레이어보다 더 잘할 수 있는지를 확인하기 위해서 이를 다시 실행할 수 있다.Sports events, such as basketball games, and live sports events will be streamed through the hosting service 201 for users to watch, as they do on regular TV. After the user has watched a particular game, the video game of that game (the basketball player that eventually looks as photoreal as the actual player) starts with the player starting from the same location, and the user (perhaps each is controlled by one player) You can run it again to see if you can do better than the player.
여기서 설명된 호스팅 서비스(210)는 미래 세계를 지원하기 위해 매우 적합하다 왜냐하면 그것이 홈 또는 대부분의 오피스 세팅에서 설치되는 것이 비현실적인 컴퓨팅 파워 및 대용량 스토리지 리소스를 견딜 수 있도록 해주기 때문이고, 또한 홈 세팅에서, 항상 구세대의 PC와 비디오 게임이 있는 것에 비하여 그것은 컴퓨팅 자원을 항상 최신의 것으로 하며, 최신의 컴퓨팅 하드웨어가 이용될 수 있고, 호스팅 서비스(210)에서 이 모든 컴퓨팅의 복잡성은 사용자로부터 숨겨지며, 비록 그들이 볼 때 사용자의 입장에서 매우 정교한 시스템을 사용 중일지라도, 사용자의 관점에서 그것은 텔레비전에 채널 변경만큼 단순하다. 더욱이, 사용자가 모든 컴퓨팅 파워에 접근할 수 있고, 컴퓨팅 파워에 대한 경험은 어떤 클라이언트(415)로부터 가져올 수 있을 것이다.
The hosting
멀티플레이어 게임(Multiplayer game ( MultiplayerMultiplayer GamesGames ))
게임이 멀티플레이어 게임인 경우, 인바운드 라우팅(1502) 네트워크를 통해 어플리케이션/게임 게임 서버(1521 - 1525)와 인터넷과 연결된 네트워크, 호스팅 서비스(210)에서 동작하지 않는 게임 머신을 연결할 수 있다. 일반적인 인터넷상에서 컴퓨터로 멀티플레이어 게임을 할 경우, 어플리케이션/게임 게임 서버(1521 - 1525)는 인터넷에 매우 빠르게 접근할 수 있다는 장점을 가지나(가정에서 서버로 게임을 진행하는 경우와 비교해서), 더 느린 연결로 플레이하는 다른 컴퓨터의 성능에 의해 제한될 수 있고, 또한 잠재적으로 최소한 공통 분모를 할당하도록 설계된 인터넷의 게임 서버, 이는 대체로 느린 소비자 인터넷 연결의 홈 컴퓨터일 것이라는 사실에 의해서 제한될 수 있다.When the game is a multiplayer game, an application / game game server 1521-1525 and a network connected to the Internet and a game machine that does not operate in the hosting
그러나 멀티플레이어 게임이 전적으로 호스팅 서비스(210) 서버 센터에서 진행될 경우, 다른 세상이 달성될 수 있다. 사용자를 위해 게임을 호스팅하는 각각의 어플리케이션/게임 게임 서버(1521 - 1525)는 매우 높은 스피드, 매우 낮은-레이턴시와 광대하고 매우 빠른 스토리지 배열을 가진 멀티플레이어 게임을 위해 센트럴 컨트롤을 호스팅하는 어떤 서버뿐만 아니라 다른 어플리케이션/게임 게임 서버(1521 - 1525)와 연결될 수 있을 것이다. 예컨대, 만약 기가비트 이더넷이 인바운드 라우팅(1502) 네트워크로 사용된다면, 어플리케이션/게임 게임 서버(1521 - 1525)는 각각의 서버와 통신하고 잠재적으로 1ms레이턴시 또는 그보다 적은 레이턴시로 초당 기가바이트에서 멀티플레이어 게임을 위한 센트럴 컨트롤을 호스팅하는 어떤 서버와 통신할 것이다. 더욱이, RAID 배열(1511 - 1512)은 매우 빠르게 대응할 수 있고 초당 기가비트율로 데이터를 전송한다. 예컨대, 만약 사용자가 외양 및 군장(accoutrements)으로 캐릭터를 커스터마이즈(customize)하면 그 캐릭터는 독특한 행동 및 많은 지오메트리를 가지게 되고, 홈 PC 또는 게임 콘솔을 동작하는 게임 클라이언트로 제한된 종래 기술 시스템으로는, 만약 그 캐릭터가 다른 사용자의 시야로 들어오면, 그 사용자는 길고 느린 다운로드 완료까지를 기다려서 모든 지오메트리 및 행동(behaviors) 데이터를 그들의 컴퓨터로 로드한다. 호스팅 서비스(210)내에서, 동일한 다운로드는 초당 기가비트의 속도로 RAID 배열(1511 - 1512)에서 제공되는 기가비트 이더넷을 거칠 수 있다. 홈 사용자는 8Mbps 인터넷 연결을 가진다면(이는 오늘날의 표준에서 매우 빠르다), 기가비트 이더넷은 100배 더 빠르다. 그래서 빠른 인터넷 연결을 통해 1분 더 걸리는 것은 기가비트 이더넷을 통해서는 1초 이하가 걸릴 것이다.
However, if a multiplayer game is played entirely at the hosting
탑 플레이어 그룹화 및 토너먼트(Top player groupings and tournaments ( TopTop PlayerPlayer GroupingsGroupings andand TournamentsTournaments ))
호스팅 서비스(210)는 토너먼트에 매우 적합하다. 왜냐하면 어떤 게임이 로컬 클라이언트에서 동작하지 않으면, 거기에는 사용자들에게 부정행위를 할 기회가 있지 않다. 또한, UDP 스트림을 멀티캐스트하기 위한 출력 라우팅(1540)의 성능때문에, 호스팅 서비스(210)는 한번에 청중인 수천 명의 사람에게 메이저 토너먼트를 중계할 수 있다.
사실 어떤 비디오 스트림은 너무 인기가 있어서 수많은 사용자가 동일한 스트림을 수신하려고 할 때(예컨대, 메이저 토너먼트의 시청), 그것은 많은 클라이언트 장치(415)에게 대용량 배포를 위한 Akamai 또는 Limelight와 같은 컨텐츠 전달 네트워크(CDN)로 비디오 스트림을 보다 효율적으로 보낼 것이다.In fact, some video streams are so popular that when a large number of users try to receive the same stream (e.g., watching a major tournament), it is a content delivery network (CDN) such as Akamai or Limelight for mass distribution to many client devices 415. Will stream the video stream more efficiently.
비슷한 수준의 효율성은 CDN이 탑 플레이어를 그룹화하는 게임 파인더 페이지를 보여주는데 이용할 때 확보될 수 있다.A similar level of efficiency can be achieved when the CDN is used to display game finder pages that group top players.
메이저 토너먼트에서, 생방송 유명 아나운서가 어떤 경기에서 실황 방송을 제공하는데 사용될 수 있다. 비록 많은 수의 사용자가 메이저 토너먼트를 시청하더라도 상대적으로 적은 수가 토너먼트를 플레이할 것이다. 유명 아나운서의 오디오는 토너먼트에서 플레이하는 사용자에게 호스팅하고 토너먼트에서 어떤 게임의 관찰자 모드 카피를 호스팅하는 어플리케이션/게임 서버(1521 - 1525)로 라우트될 수 있고, 오디오는 게임 오디오 외에 다중으로 녹음될 수 있다. 유명 아나운서의 비디오는 게임에 오버레이될 수 있고, 게다가 아마도 관찰자 시점에서 오버레이될 수 있다.
In major tournaments, live celebrity announcers can be used to provide live broadcasts in any competition. Although a large number of users watch a major tournament, a relatively small number will play the tournament. Celebrity announcers' audio can be routed to application / game servers 1521-1525 that host users playing in the tournament and host observer mode copies of any game in the tournament, and audio can be recorded in multiples in addition to game audio. . The video of the famous announcer can be overlaid on the game, and possibly overlaid at the observer's point of view.
웹페이지 로딩의 가속(Accelerate web page loading ( AccelerationAcceleration ofof WebWeb PagePage LoadingLoading ))
월드 와이드 웹(World Wide Web)의 주요 전송 프로토콜, 하이퍼텍스트 트랜스퍼 프로토콜(HTTP)은, 오직 비지니스가 고속 인터넷 연결을 갖고, 온라인이었던소비자가 다이얼업 모뎀 또는 ISDN을 사용한 시대에서 이해되고 정의되었다. 동시에 빠른 연결의 "금본위제(gold standard)"는 동시에 1.5Mbps 데이터를 전송하는 T1 라인이다(예컨대, 양방향으로 같은 데이터의 양을 갖는).The major transport protocol of the World Wide Web, Hypertext Transfer Protocol (HTTP), was understood and defined in the era when only businesses had high-speed Internet connections and consumers who were online used dial-up modems or ISDN. At the same time, the "gold standard" of fast connection is a T1 line that transmits 1.5 Mbps data at the same time (eg with the same amount of data in both directions).
오늘날, 상황은 완전히 달라졌다. 많은 발전이 있는 세계에서 DSL 또는 케이블 모뎀을 통하는 평균 가정 연결 속도는 T1라인보다 다운스트림 전송률이 상당히 높다. 사실상 세상의 일부분에서는, 파이버 투 더 커브(fiber to the curb)는 가정으로 50에서 100Mbps만큼 빠른 전송률을 가져다 준다.Today, the situation is completely different. In many advanced worlds, the average home connection speed via DSL or cable modem is considerably higher than the T1 line. In fact, in some parts of the world, fiber to the curb assumes data rates as fast as 50 to 100Mbps.
불행하게도, HTTP는 이러한 극적인 속도 개선을 효과적인 장점으로써 설계되지 않았다(그것은 실현되지도 않았다). 웹사이트는 원격 서버에 파일의 집합체이다. 간단하게, HTTP가 첫번째 파일을 요청하고, 첫번째 파일이 다운로드되는 것을 기다린 후, 두번째 파일을 요청해서 그 파일이 다운로드 되는 것을 기다리는 것이다. 사실, HTTP는 하나의 이상의 "개방 연결(open connection)"을 허락하는데, 예컨대 한번에 요청되는 하나의 파일보다 많은 것을 허용하지만, 표준 합의(agreed-upon standard) 때문에(그리고 과부하로부터 웹서버를 보호하는) 오직 소수의 개방 연결만이 허용된다. 게다가, 웹 페이지의 경로가 구성되어져 있기 때문에, 브라우저는 즉시 다운로드되도록 이용할 수 있는 복수의 동시적인 페이지를 종종 인식하지 못한다(예컨대, 페이지의 어구를 파싱(parsing)한 후에, 다운로드할 필요가 있는 이미지와 같은 새로운 파일들이 나타나게 된다). 따라서, 웹사이트 상의 파일들은 HTTP에서 이용되는 요청-응답 프로토콜 때문에 본질적으로 한번에 하나씩 로드되고, 각 파일이 로드되는 것과 관련하여 100ms레이턴시가 있다(미국에 있는 전형적인 웹 서버의 접근).Unfortunately, HTTP has not been designed to make this dramatic speedup an effective advantage (it has never been realized). A website is a collection of files on a remote server. Simply, HTTP requests the first file, waits for the first file to download, then requests the second file and waits for the file to download. In fact, HTTP allows more than one "open connection", for example, allowing more than one file to be requested at a time, but because of the agreed-upon standard (and protecting the web server from overload) Only a few open connections are allowed. In addition, since the path of the web page is constructed, the browser often does not recognize a number of simultaneous pages that are available for download immediately (eg, after parsing the page's phrase, the image that needs to be downloaded). New files will appear. Thus, files on a website are loaded one at a time essentially because of the request-response protocol used in HTTP, with 100 ms latency associated with each file being loaded (access to a typical web server in the United States).
상대적으로 낮은 속도의 연결 상태로는 파일 자체의 다운로드 시간이 웹페이지를 기다리는 시간보다 우위를 정하기 때문에 많은 문제를 야기하지는 않는다. 그러나, 복잡한 웹페이지로 연결 속도가 증가함에 따라, 특히 문제가 일어나기 시작한다.With a relatively low speed connection, it doesn't cause much trouble because the download time of the file itself takes precedence over waiting for the web page. However, as connection speeds increase with complex web pages, problems begin to arise.
도 24에서 도시된 예에서는, 전형적인 상업 웹사이트를 도시하고 있다(이 특정 웹사이트는 메이저 운동화 브랜드의 것이다). 이 웹사이트는 54개의 파일이 있다. 그 파일들은 HTML, CSS, JPEG, PHP, JavaScript 및 플래시 파일, 및 비디오 컨텐츠를 포함한다. 전체 1.5Mbytes는 페이지가 활성화 전에 로드되어야 한다(즉, 사용자가 그것을 클릭할 수 있고, 사용할 수 있는 상태). 많은 양의 파일이 있어야 하는 이유는 많다. 첫째로, 그것은 복잡하고 세련된 웹페이지이고, 다른 이유는 그 페이지에 접근하는 사용자의 정보에 기초하여 동적으로 정보를 수집한다(즉, 사용자가 어떤 나라인지, 어떤 언어인지, 사용자가 전에 물품을 구매한 적이 있는지 등등) 그리고 이러한 요소들에 의존하여, 다른 파일들이 다운로드된다. 여전히, 이것은 전형적인 상업 웹페이지이다.In the example shown in FIG. 24, a typical commercial website is shown (this particular website is of a major sneaker brand). This website has 54 files. The files include HTML, CSS, JPEG, PHP, JavaScript and Flash files, and video content. The total 1.5 Mbytes must be loaded before the page is activated (ie the user can click on it and be available). There are many reasons for having a large amount of files. Firstly, it is a complex and sophisticated web page, and another reason is to dynamically gather information based on the information of the user accessing the page (i.e. in which country the user is, in what language, and the user has purchased the item before) And so on, depending on these factors, other files are downloaded. Still, this is a typical commercial web page.
도 24는 연결 속도가 증가함에 따라 웹페이지가 열리기 전에 경과되는 시간의 전체량을 도시하고 있다. 1.5Mbps 연결 속도(2401)로, 전통적인 웹 브라우저를 갖는 전통적인 서버를 사용하면, 웹페이지가 열리기까지 13.5초가 걸린다. 12Mbps 연결 속도(2402)로, 로드 시간은 6.5초까지 줄어들거나 약 2배 정도 빨라진다. 그러나 96Mbps 연결 속도(2403)로, 로드 시간은 단지 5.5초까지 줄어든다. 그 이유는 그러한 높은 다운로드 속도에서는, 파일 자체를 다운로드 하는 시간은 미미하지만, 파일당 레이턴시는 대략 각각 100ms로 여전히 남아있고, 이는 54파일*100ms = 5.4초의 레이턴시가 된다. 따라서, 가정에 얼마나 빠른 연결이 있는지는 상관없이, 이 웹사이트는 활성화되기까지는 항상 최소 5.4초는 걸릴 것이다. 다른 요소는 서버-사이드 큐잉이다; 모든 HTTP 요청은 큐잉의 뒤에 더해지고, 따라서 바쁜 서버에서 이것은 웹 서버에서 얻을 수 있는 모든 작은 아이템 때문에 현저한 영향을 가질 것이며, HTTP는 그것의 순서를 기다리기 위해 필요를 요청한다.Fig. 24 shows the total amount of time that elapses before the web page is opened as the connection speed increases. With a 1.5
이러한 이슈를 해결하기 위한 한 방법은 HTTP를 버리거나 재정의하는 것이다. 또는, 웹사이트 소유자가 여러 개의 파일을 단일 파일로 통합시키도록 하는 것이다(예컨대, Adobe Flash 포맷으로). 그러나 실질적인 문제로는 회사뿐만 아니라, 많은 그 밖의 것들이 웹사이트 구축에 상당한 투자를 하는 것이다. 더욱이, 몇몇 가정은 12 - 100Mbps 속도로 연결되어 있다면, 대다수의 가정은 낮은 속도로 연결되어 있고, HTTP는 낮은 속도에서도 잘 운영된다.One way to solve this issue is to discard or redefine HTTP. Alternatively, a website owner may want to consolidate multiple files into a single file (eg, in Adobe Flash format). But the real problem is that not only the company but also many others invest a lot in building the website. Moreover, if some homes are connected at 12 to 100 Mbps, the majority of homes are connected at low speeds, and HTTP works well at low speeds.
한 가지 대안은 어플리케이션/게임 서버(1521 - 1525) 상의 웹브라우저를 호스트하는 것이고, RAID 배열(1511 - 1512) 상의 웹 서버의 파일들을 호스트하는 것이고(또는 잠재적으로 RAM에서 또는 웹브라우저를 호스팅하는 어플리케이션/게임 서버(1521 - 1525)에 로컬 스토리지에서, 인바운드 라우팅(1502)(또는 로컬 스토리지)을 통해서 매우 빠른 상호 연결로), HTTP를 사용하여 파일당 100ms의 레이턴시를 보이는 것보다, HTTP를 사용하여 파일당 최소한의 레이턴시가 있게 될 것이다. 그 다음에, HTTP를 통해서 웹페이지에 접근하는 그녀의 가정에 사용자를 갖는 대신에, 사용자는 클라이언트(415)를 통해 웹페이지에 접근할 수 있다. 그 다음에, 1.5Mbps 연결로(왜냐하면 이 웹사이트는 그것의 비디오를 위해 많은 대역폭을 요구하지 않기 때문에), 그 웹페이지는 라인당 1초 이하(2400)로 활성화될 수 있을 것이다. 본질적으로 어플리케이션/게임 서버(1521 - 1525)상에서 동작하는 웹 브라우저가 페이지를 디스플레이하기 전에는 레이턴시가 없을 것이며, 클라이언트(415)가 웹브라우저로부터 비디오 출력을 디스플레이하기 전에는 눈에 띄는 레이턴시가 없을 것이다. 사용자의 마우스가 웹페이지 상에 이동하고 그리고/또는 타이핑할 때, 사용자의 입력 정보는 어플리케이션/게임 서버(1521 - 1525)에서 동작하는 웹브라우저로 보내질 것이고, 웹 브라우저는 그에 따라 응답할 것이다.One alternative is to host a web browser on the application / game servers 1521-1525, host the files of the web server on the RAID array 1511-1512 (or potentially an application that hosts the web browser in RAM or On local storage on game servers (1521-1525), with very fast interconnects via inbound routing (1502) (or local storage), using HTTP rather than showing 100 ms latency per file using HTTP. There will be a minimum latency per file. Then, instead of having the user in her home accessing the web page via HTTP, the user can access the web page through the client 415. Then, with a 1.5 Mbps connection (because this website does not require much bandwidth for its video), the web page may be active at less than 1 second per line (2400). In essence, there will be no latency until the web browser operating on the application / game servers 1521-1525 displays the page, and there will be no noticeable latency until the client 415 displays the video output from the web browser. As the user's mouse moves and / or types on the webpage, the user's input information will be sent to a web browser running on the application / game servers 1521-1525, and the web browser will respond accordingly.
이러한 접근의 단점은 만약 압축기가 지속적으로 비디오 데이터를 전송하고 있으면, 웹페이지가 고정되어 있더라도, 대역폭이 사용된다는 것이다. 이는 웹페이지가 변할 때만 오직 데이터를 전송하도록 하고, 만약 데이터를 전송한다면 변화하는 페이지의 일부에 데이터를 전송하도록 압축기를 구성함으로써 해결될 수 있다. 반면, 계속적으로 변화하는 몇몇의 플래시 배너가 있는 웹사이트가 있는데, 그러한 웹사이트들은 화나게 하는 경향이 있고, 보통 웹페이지는 움직이는(비디오 클립) 무언가의 원인이 없다면 고정적이다. 그러한 웹사이트의 경우, 전통적인 웹서버보다 호스팅 서비스(210)를 이용하여 더 적은 데이터가 전송될 것이고 그 이유는 실제 나타난 이미지들만이 전송되기 때문이고, 씬 클라이언트가 실행할 수 있는 코드가 없고, 롤오버 이미지 같은, 결코 보이지 않는 거대한 물체도 없다.The disadvantage of this approach is that if the compressor is constantly transmitting video data, bandwidth is used even if the webpage is fixed. This can be solved by configuring the compressor to send data only when the web page changes, and to send data to some of the changing pages if the data is sent. On the other hand, there are websites with several constantly changing flash banners, such websites tend to be upset, and usually web pages are stationary unless they cause something to move (video clips). For such a website, less data will be sent using the hosting
따라서, 레거시(legacy) 웹페이지를 호스트하기 위해 호스팅 서비스(210)을 사용하면, 웹페이지 소모 시간은 텔레비전에서 채널을 변경하는 것처럼 웹페이지를 여는 곳을 줄여줄 수 있다 : 웹페이지는 효과적으로 즉시 활성화된다.
Thus, using the hosting
게임 및 Game and 어플리케이션의Of application 가능한 디버깅( Possible debugging ( FacilitatingFacilitating DebuggingDebugging ofof GamesGames and and ApplicationsApplications ))
앞서 언급한 것처럼, 실시간 그래픽을 가진 비디오 게임 및 어플리케이션은 매우 복잡한 응용 프로그램(application)이고 전형적으로 그것들이 버그를 포함하여 시장으로 출시된다. 비록 소프트웨어 개발자가 버그에 대하여 사용자로부터 피드백을 받는다 할지라도, 고장 후에 머신을 되돌려주는 것을 의미하고, 그것은 게임 또는 실시간 어플리케이션이 고장 또는 부적절하게 동작되는 원인이 무엇인지 명확하게 감정하기 어렵다.As mentioned above, video games and applications with real-time graphics are very complex applications and typically they are brought to market with bugs. Even if the software developer gets feedback from the user about the bug, it means returning the machine after the crash, which makes it difficult to clearly determine what caused the game or real-time application to crash or behave improperly.
게임 또는 어플리케이션은 호스팅 서비스(210)에서 동작할 때, 게임 또는 어플리케이션의 비디오/오디오 출력은 계속적으로 지연 버퍼(1515)에 기록된다. 더욱이, 감시 프로세스는 어플리케이션/게임 서버(1521 - 1525)가 안정적으로 동작하는지를 호스팅 서비스 컨트롤 시스템(401)으로 정기적으로 보고하도록 각각의 어플리케이션/게임 서버(1521 - 1525)를 운영한다. 만약 감시 프로세스가 보고하는 것을 실패하면, 그 다음 서버 컨트롤 시스템(401)은 어플리케이션/게임 서버(1521 - 1525)와 통신을 시도할 것이고, 만약 성공한다면 머신 상태가 이용가능하지 수집한다. 지연 버퍼(1515)에 의해서 기록된 비디오/오디오와 함께 이용가능한 어떤 정보는 소프트웨어 개발자에게 보내질 것이다.When a game or application runs on hosting
따라서, 게임 또는 어플리케이션 소프트웨어 개발자는 호스팅 서비스(210)로부터 고장의 통지를 얻고, 고장을 일으킨 프레임마다 기록을 얻는다. 이 정보는 버그를 밝혀내고 고치는데 있어서 굉장히 가치가 있다.Thus, the game or application software developer gets a notification of the failure from the hosting
뿐만 아니라, 어플리케이션/게임 서버(1521 - 1525)가 고장 났을 때, 서버는 가장 최근의 재시작 시점에서 재시작하게 되고, 기술적인 어려움에 대한 사과(apologiaing)의 메세지를 사용자에게 제공한다.
In addition, when the application / game servers 1521-1525 fail, the server restarts at the most recent restart point and provides the user with an apologiaing message about technical difficulties.
리소스resource 공유 및 비용 절감( Share and reduce costs ResourceResource SharingSharing andand CostCost SavingsSavings ))
도 4a 및 4b에서 도시된 시스템은 사용자와 게임 및 어플리케이션 개발자에게 다양한 이점을 제공한다. 예컨대, 전형적으로 홈과 오피스 클라이언트 시스템(예컨대, PC 또는 게임 콘솔)은 오직 일주일에 적은 비율의 시간만큼만 사용한다. Nielsen Entertainment에 의해서 2006년 10월 5일에 배포된 "활동적인 게이머 벤치마크 연구(Active Gamer Benchmark Study)"(http://prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/10-05-2006/0004446115&EDATE=)에 따르면, 활동적인 게이머는 일주일에 평균 14시간을 비디오 게임 콘솔을 하는데 보내고, 핸드헬드 컴퓨터를 일주일에 약 17시간 사용하는 것으로 드러났다. 그 자료는 또한 모든 게임활동(콘솔, 핸드헬드(hand-held), PC 게임을 포함)의 경우 활동적 게이머들은 일주일에 평균 13시간을 소비하는 것을 언급했다. 콘솔 비디오 게임을 하는 시간이 높은 비율을 차지하는 것을 참작해 볼 때, 일주일은(24시간*7일) 168시간이고. 이는 활동적인 게이머의 집에서 비디오 게임 콘솔이 오직 일주일의 시간 중 17/168 = 10%만 사용되는 것이다. 또는 90%의 시간은 비디오 게임 콘솔이 쓰이지 않는 것이다. 비디오 게임 콘솔의 높은 비용을 가정하면 제조사들이 그러한 장치에 보조금을 주는 사실은 비싼 자원을 비효율적으로 사용하고 있는 것이다. 비지니스 내에 PC는 또한 일주일에 적은 시간동안만 사용되고, 특히 휴대불가능한 데스크톱 PC는 종종 Autodesk Maya와 같이 최상의 어플리케이션을 요구한다. 비록 몇몇의 비지니스가 모든 시간과 휴일에도 이루어진다 하더라도 몇몇의 PC는(예컨대, 저녁에 일을 하기 위해 집으로 가져온 휴대용 PC)모든 시간과 휴일에도 사용되고, 대부분의 비지니스 활동은 월요일부터 금요일, 근무 시간대인 오전 9시부터 오후 5시에 집중되는 경향이 있고, 휴일과 쉬는 시간(점심시간 같은)에는 사용을 덜하고, 대부분 PC 사용이 일어나기 때문에 데스크톱 PC 활용은 이러한 작동 시간에 따르는 경향이 있다. 만약, 우리가 PC는 일주일에 5일 9시 ~ 5시까지 계속적으로 활용된다고 가정하면 PC는 일주일의 시간 중 40/168 = 24%에 해당하는 시간만큼 사용된다. 고성능 데스크톱 PC는 사무를 위한 매우 값비싼 투자이고, 이는 매우 낮은 수준의 활용을 초래한다. 데스크톱을 이용해 가르치는 학교는 일주일에 더 적은 시간동안 컴퓨터를 사용하고, 비록 가르치는 시간이 다양하다고 하더라도 대부분의 교육은 월 ~ 금요일까지 낮시간 동안 이루어진다. 따라서, 일반적으로 PC와 비디오 게임 콘솔은 일주일에 적은 시간 동안만 활용되는 것이다.The system shown in FIGS. 4A and 4B provides various benefits to users and game and application developers. For example, home and office client systems (eg, PCs or game consoles) typically use only a small percentage of time per week. "Active Gamer Benchmark Study" released on October 5, 2006 by Nielsen Entertainment (http://prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www According to / story / 10-05-2006 / 0004446115 & EDATE =), active gamers spend an average of 14 hours a week playing video game consoles and using handheld computers about 17 hours a week. The data also noted that for all game activities (including consoles, hand-helds, and PC games), active gamers spend an average of 13 hours a week. Taking a high percentage of the time playing console video games, 168 hours a week (24 hours * 7 days). This means that at the home of an active gamer, video game consoles use only 17/168 = 10% of the time of the week. Or 90% of the time, no video game console is used. Given the high cost of video game consoles, the fact that manufacturers subsidize such devices is inefficient use of expensive resources. In business, PCs are also used for only a small amount of time per week, and non-portable desktop PCs often require the best applications, such as Autodesk Maya. Although some businesses are available at all times and on holidays, some PCs (eg, portable PCs brought home for work in the evening) are used at all times and on holidays, and most business activities are on Monday to Friday. Desktop PC utilization tends to follow this uptime because it tends to be concentrated at 9:00 am to 5:00 pm, less use during holidays and breaks (such as lunch), and most PC usage occurs. If we assume that the PC is used continuously from 9 to 5 o'clock, five days a week, the PC is used for 40/168 = 24% of the time of the week. High-performance desktop PCs are a very expensive investment for office, resulting in very low levels of utilization. Schools that teach using the desktop use less time a week, and most teaching is done during the day, from Monday to Friday, even if the teaching time varies. Thus, PCs and video game consoles are typically used for only a small amount of time per week.
주목할 것은, 휴일이 아닌 월 ~ 금요일의 낮시간 동안 오피스에서 또는 학교에서 많은 사람들이 컴퓨터를 활용하며, 이 사람들은 일반적으로 이 시간에는 비디오 게임을 하지 않는다. 그리고 비디오 게임을 할 때는 일반적으로 이와 다른 시간대인 저녁, 주말, 공휴일일 것이다. Note that many people use computers in the office or at school during the day of the week, Monday through Friday, not on holidays, and they usually do not play video games during this time. And when playing video games, it will usually be at different times: evenings, weekends, and holidays.
도 4a가 도시하는 호스팅 서비스의 형태를 보면, 활용 패턴이 자원을 매우 효율적으로 활용하는 결과로서, 위에 2개 단락에서 설명되었다. 특히 만약 사용자가 정교한 3D 비디오 게임과 같은 복잡한 어플리케이션의 실시간 응답을 요구한다면, 주어진 시간에 호스팅 서비스(210)에 의해 제공될 수 있는 사용자의 수는 제한이 있을 것이다. 그러나, 대부분의 시간 동안 사용되지 않는 비지니스를 위해 사용되는 PC 또는 가정에서 비디오 콘솔과는 다르게, 서버(402)는 다른 시간에 다른 사용자에 의해서 재사용될 수 있다. 예컨대, 고성능 듀얼 CPU와 듀얼 GPU와 큰 용량의 RAM을 가진 고성능 서버(402)는 평일 오전 9시에서 오후 5시 사이에 오피스와 학교에서 활용될 수 있으나, 저녁, 주말 휴일에 정교한 비디오 게임을 하는 게이머에 의해서 활용된다. 비슷하게, 저성능 어플리케이션이 셀러론 CPU, GPU가 없거나 저성능 GPU, 제한된 RAM을 가진 저성능 서버(402)에 의해 근무 시간에 활용될 수 있으며, 저성능 게임은 비근무시간 동안 저성능 서버(402)를 활용할 수 있다.Looking at the type of hosting service shown in FIG. 4A, the utilization pattern is the result of the very efficient use of resources, as described in the two paragraphs above. In particular, if a user requires a real time response of a complex application such as a sophisticated 3D video game, the number of users that can be provided by the hosting
게다가 여기서 설명된 호스팅 서비스의 배치와 함께 리소스는 수백만은 아니더라도 수천의 사용자 사이에서 효율적으로 공유된다. 일반적으로 온라인 서비스는 주어진 시간에 서비스를 이용하는 전체 사용자의 오직 적은 비율만을 가지고 있다. 만약 앞서 실은 Nielsen 비디오 게임 사용 통계치를 고려해본다면, 원인을 쉽게 알 수 있다. 만약 활동적인 게이머가 일주일에 17시간 동안 콘솔게임을 할 경우, 우리는 게임의 피크 사용 시간대가 비근무시간대인 저녁(오전 5시 ~ 12시, 7시간*5일 = 35 시간/주) 그리고 주말(오전 8시 ~ 오전 12시, 16시간*2=32시간/주)이라고 가정하면, 게임시간인 17시간에 65(35+32)시간의 피크 타임이 있는 것이다. 시스템의 로드하는 정확한 피크 사용자는 많은 이유로 어림잡기 어렵다 : 몇몇 사용자들은 비피크 시간동안 게임을 하고 사용자들이 집단을 형성할 때가 분명 낮 시간일 것이며, 피크 시간대는 게임의 유형에 영향을 끼친다(예컨대, 어린이들은 초저녁에 게임을 하는 경향이 있다). 그러나 게이머들이 게임을 하는 평균 시간은 게이머가 게임을 하는 낮시간보다 훨씬 적고, 주어진 시간에 호스팅 서비스(210)는 오직 적은 수의 사용자만이 사용한다. 이 분석의 목적을 위해, 우리는 피크 로드가 12.5%라고 가정할 것이다. 따라서, 컴퓨팅, 압축, 대역폭 리소스의 12.5%만이 주어진 시간에 사용되고, 하드웨어 비용의 12.5%만이 리소스의 재사용에 기인한 퍼포먼스 게임의 주어진 수준을 플레이하기 위해 주어진 사용자에게 지원하는 결과를 초래한다.Moreover, with the deployment of hosting services described here, resources are efficiently shared among thousands, if not millions, of users. In general, online services have only a small percentage of the total users using the service at any given time. If you consider the Nielsen video game usage statistics earlier, it's easy to see why. If an active gamer plays console games for 17 hours a week, we have evenings (5am to 12am, 7 hours * 5 days = 35 hours / week) and weekends when the peak hours of the game are off hours. Assuming (8 am-12 am, 16 hours * 2 = 32 hours / week), there is a peak time of 65 (35 + 32) hours at 17 hours of game time. The exact peak user loading of the system is difficult to approximate for many reasons: some users will play during non-peak hours, and when the users form groups, it will most likely be day time, and the peak time zone will affect the type of game (e.g., Children tend to play games early in the evening). However, the average time gamers play the game is much less than the daytime gamers play the game, and at a given time the hosting
게다가 몇몇의 게임과 어플리케이션이 다른 것들보다 좀더 많은 컴퓨팅 파워를 요구한다면, 리소스는 사용자가 하고 있는 게임, 실행하고 있는 어플리케이션에 기초하여 동적으로 배치될 것이다. 그래서 저성능 게임 또는 어플리케이션을 선택한 사용자는 저성능(덜 비싼)서버(402)로 할당할 것이며, 고성능 게임 또는 어플리케이션을 선택한 사용자는 고성능 서버(402)(더 비싼)로 할당할 것이다. 실제로, 주어진 게임 또는 어플리케이션은 게임 또는 어플리케이션의 저성능과 고성능 부분이 있고, 사용자는 게임 또는 어플리케이션의 필요에 따라 최저 가격의 서버(402)에서 운영하는 사용자를 유지하기 위해 게임 또는 어플리케이션의 부분 사이에서 하나의 서버(402)와 다른 서버(402)를 교환할 수 있다. 단일 디스크보다 훨씬 빠른 RAID 배열(405)은 저성능 서버(402)에서도 이용가능하며 이는 디스크 전송 속도를 빠르게 하는 장점을 가지고 있다. 따라서, 플레이하고 있는 게임 또는 사용하고 있는 어플리케이션 모두에 따라 서버(402)마다의 평균 비용은 고성능의 게임 또는 어플리케이션의 가장 비싼 서버(402)의 가격보다는 훨씬 낮지만, 저성능 서버(402)조차도 RAID 배열(405)로부터 디스크 성능 이점을 획득할 것이다.In addition, if some games and applications require more computing power than others, resources will be dynamically deployed based on the game you are playing and the application you are running. Thus, a user who selects a low performance game or application will be assigned to a low performance (less expensive)
더욱이, 호스팅 서비스(210)의 서버(402)는 디스크가 없는 PC 마더보드 또는 네트워크 인터페이스외의 주변 인터페이스에 지나지 않고, 오직 SAN(403)과 빠른 네트워크 인터페이스를 갖는 단일 칩을 위해서 다운 통합될 것이다. 또한, RAID 배열(405)은 디스크보다 더 많은 사용자들이 공유하게 될 것이고 활동적인 사용자당 디스크 비용은 단일 디스크 드라이브보다 가격이 저렴할 것이다. 모든 이러한 장치는 환경적인 제어 서버 룸 환경에서 랙이 있을 것이다. 만약 서버(402)가 실패하면, 그것은 호스팅 서비스(210)에서 쉽게 수리되거나 대체될 수 있다. 대조적으로 홈이나 오피스에서 PC 또는 게임 콘솔이 견고하고 치거나 떨어뜨리는 것으로부터의 합리적인 기계적 손실을 견뎌내야 하는 독립적 장치는 하우징(덮개)이 있어야 하고, 최소한 하나의 디스크 드라이브를 가지고 있어야 하며, 불리한 환경조건을 견뎌내야 하고(예컨대 다른 장치와 함께 과열된 AV 캐비넷에 넣어져야 하는 경우) 서비스 보증이 요구되며, 포장이 되어 배송되어야 하므로 유통마진을 받는 소매업자에 의해서 판매된다. 게다가 비록 저성능 게임 또는 장치가 대부분의 시간동안 운용되더라도(또는 게임 또는 어플리케이션의 섹션) PC 또는 게임 콘솔은 장래에 어떤 시점에 사용될 컴퓨터적으로 강렬히 기대했던 게임 또는 어플리케이션의 최적의 성능을 보일 수 있도록 환경 설정이 이뤄져야 한다. 그리고, 만약 PC 또는 콘솔이 실패하면, 그것을 수리하는 것은 값비싸고 시간을 소모하는 과정이다(제조업자, 사용자 그리고 소프트웨어 개발자에게 악영향을 끼친다).Furthermore, the
따라서, 도 4a가 도시하는 시스템은 주어진 컴퓨터 성능 수준을 경험하기 위해 가정, 사무실 또는 학교에서 사용자가 로컬 컴퓨터의 자원과 비교할 수 있는 기회를 제공하며 도 4a가 도시하는 아키텍쳐를 통해 컴퓨팅 성능을 제공하는 것은 훨씬 저렴할 것이다.
Thus, the system shown in FIG. 4A provides an opportunity for a user to compare with the resources of the local computer at home, office, or school to experience a given level of computer performance, and provides computing performance through the architecture shown in FIG. 4A. Would be much cheaper.
업그레이드 필요성 제거(Eliminate the need for upgrades ( EliminatingEliminating TheThe NeedNeed toto UpgradeUpgrade ))
더욱이, 사용자들은 더 이상 새로운 게임 또는 고성능의 새로운 어플리케이션을 다루기 위해 PC나 콘솔을 업그레이드를 해야하는 걱정을 할 필요가 없다. 서버(402)가 게임 또는 어플리케이션의 어떤 타입을 요구하는 지와 상관없이, 호스팅 서비스(210)에서 사용자는 어떤 게임이나 어플리케이션을 거의 즉시 사용할 수 있으며(즉, RAID 배열(405) 또는 서버(402)의 로컬 스토리지를 빠르게 로딩한다), 적절히 최신의 업데이트가 되고 버그를 수정한다(즉 소프트웨어 개발자는 주어진 게임 또는 어플리케이션에 맞도록 서버(402)를 이상적인 환경으로 설정하도록 선택할 수 있고, 최적의 드라이버와 함께 서버(402)의 환경설정을 하며 시간이 지나면 개발자는 즉시 호스팅 서비스(210)의 게임 또는 어플리케이션의 모든 복사에 대한 업데이트를 제공하고 버그를 고친다). 실제로, 사용자가 호스팅 서비스(210)를 사용하기 시작한 후에 사용자는 게임과 어플리케이션에 더 좋은 경험을 제공하고 시작했음을 알게되고(예컨대, 업데이트나 버그 수정을 통해) 그것은 아마도 사용자가 1년 전에는 존재하지도 않았던 컴퓨팅 기술(예컨대, 높은 성능 GPU)을 활용하는 서비스(210)에서 이용할 수 있도록 만들어진 새로운 게임이나 어플리케이션을 사용자가 1년 후 발견하는 경우가 될 것이다. 따라서 사용자가 1년 후에 게임을 하거나 어플리케이션을 작동하기 전에 그 기술을 구입하는 것은 불가능한 것이다. 게임을 하고 기기를 운용하는 컴퓨팅 자원은 사용자에게 보이지 않기 때문에(즉, 사용자의 지각으로, 사용자는 텔레비전 채널을 바꾸는 것만큼이나 사용자는 거의 즉시 작동하는 게임이나 어플리케이션을 간단히 선택한다) 사용자의 하드웨어는 업그레이드를 인식하지 못한 상태에서 "업그레이드"가 될 것이다.
Moreover, users no longer have to worry about upgrading their PCs or consoles to handle new games or new high-performance applications. Regardless of what type of game or application the
백업의 필요성 제거(Eliminate the need for backup EliminatingEliminating thethe NeedNeed forfor BackupsBackups ))
비지니스, 학교 그리고 가정에서 사용자가 겪는 주요한 다른 문제는 백업이다. 로컬 PC 또는 비디오 게임에 저장된 정보(예컨대, 콘솔의 경우 사용자의 게임 성취도 및 순위)는 디스크가 에러가 나거나 의도치 않는 삭제로 잃을 수 있다. 많은 어플리케이션에 사용할 수 있는 PC를 위한 매뉴얼이나 자동 백업이 제공되며 게임 콘솔은 백업을 위한 온라인 서버로 업로드를 할 수 있으나 로컬 백업은 전형적으로 안전하고 조직화된 어딘가에 저장되는 다른 로컬 디스크에 복사되는 것이며(또는 데이터가 없어지지 않는 다른 저장 장치), 온라인 서비스를 통한 백업은 전형적으로 저비용의 인터넷 연결을 통한 늦은 업스트림 속도 때문에 종종 제한을 받는다. 도 4a의 호스팅 서비스(210)과 함께 RAID 배열(405)에 저장된 데이터는 잘 알려진 RAID 환경설정 선행기술을 이용하여 환경 설정을 할 수 있는데 이는 서버 센터에 실패한 경우 어떤 데이터도 잃지 않을 것이며, 서버 센터의 기술자는 실패한 디스크에 대해 공지를 하게 될 것이고 업데이트를 자동적으로 실행한 디스크로 대체될 것이며 RAID 배열은 한번 더 실패를 견디게 될 것이다. 게다가, 디스크 드라이버의 모든 것이 가까이 있고 SAN(403)을 통해 그것들 사이에 빠른 로컬 네트워크와 함께 있으며 서버 센터 또는 떨어진 곳에 다시 위치되어 저장될 수 있는 2차적인 저장장소에 규칙적 기초를 바탕으로 백업된 디스크 시스템의 모든 것을 서버센터에 배치하는 것은 어렵지 않다. 호스팅 서비스(210)를 보는 사용자의 관점에서 데이터는 항상 간단하게 보호되고 결코 백업에 대해 생각할 필요가 없게 된다.
Another major problem users face in business, school and home is backup. Information stored on a local PC or video game (e.g., user's game achievement and ranking in the case of a console) may be lost due to error or unintended deletion of the disk. Manual or automatic backups are provided for PCs that can be used for many applications, and game consoles can be uploaded to an online server for backup, but local backups are typically copied to another local disk that is stored somewhere secure and organized ( Or other storage devices that do not lose data), backups via online services are often limited because of the slow upstream speeds typically through low-cost Internet connections. Data stored in the
데모에 접근(Access demo AccessAccess toto DemosDemos ))
사용자들은 종종 게임이나 기기를 구입하기 전에 시도해보길 원한다. 앞서 설명한 것처럼 게임과 어플리케이션을 시범해볼 수 있는 선행 기술이 있으나(데모(demo)라는 언어의 뜻은 데모(명사는 아님)라고 불리기도 하는 데몬스트레이션(demonstration) 버전을 시도해보는 것이다) 데모 게임과 어플리케이션 그러나 그것들 각각은 제한 및/또는 불편을 겪는다. 호스팅 서비스(210)를 이용할 때 사용자들은 데모를 시도하는 것이 쉽고 편리하다. 실제로, 모든 사용자가 사용자 인터페이스(아래 설명하는 것처럼)를 통해 데모를 선택하고 시도한다. 데모는 적절한 서버(402)에서 거의 즉시 로드될 것이고, 다른 어느 게임이나 어플리케이션과 같이 운용될 것이다. 데모가 고성능 서버(402)를 요구한다든지 저성능 서버(402)를 요구한다든지 사용자의 관점에서 홈 또는 오피스 클라이언트(415)를 사용하는 것과는 상관없이 데모는 작동하게 될 것이다. 게임이나 어플리케이션 데모 소프트웨어 제작사는 어떤 데모가 얼마나 오랫동안 사용이 허용되는지 정확하게 제어할 수 있을 것이며 물론 데모는 게임이나 어플리케이션의 전체 버전의 접근성을 확보할 수 있는 기회를 사용자에게 제공하는 사용자 인터페이스 요소를 포함하고 있어야 한다.Users often want to try before buying a game or device. As mentioned above, there are prior art techniques for demonstrating games and applications (demo language means trying a demo version, also called a demo (not a noun)). Each of them suffers from limitations and / or inconveniences. It is easy and convenient for users to try the demo when using the hosting
데모가 원가 이하 또는 무료로 제공되기 쉽기 때문에 몇몇 사용자들은 데모를 반복적으로 사용할 것이다(특히 반복적으로 플레이하며 즐기는 게임 데모). 호스팅 서비스(210)는 주어진 사용자가 데모를 사용하는 것을 제한하는 다양한 기술을 적용할 수 있다. 가장 간단한 접근은 각 사용자에게 사용자 아이디를 설정하고 주어진 사용자 아이디가 데모를 실행하도록 허용된 횟수를 제한하는 것이다.Because demos are often less than cost or free, some users will use the demos repeatedly (especially game demos that play repeatedly). The hosting
그러나 사용자는 다수의 사용자 아이디를 설정할 것이고 그것이 무료라면 더욱 그렇다. 이러한 문제를 다루는 한가지 기술은 주어진 클라이언트(415)가 데모를 실행하는 데 허용된 횟수를 제한하는 것이다. 만약 클라이언트가 독립형 장치라면 그 장치는 시리얼 넘버를 가지고 있을 것이며 호스팅 서비스(210)는 데모가 그와 같은 시리얼 넘버의 클라이언트에 의해서 다뤄질 수 있도록 횟수를 제한할 수 있다. 만약 클라이언트(415)가 PC 또는 다른 장치의 소프트웨어로서 운용된다면 시리얼 넘버는 호스팅 서비스(210)에 의해서 할당될 수 있고, PC에 저장되어 데모 사용을 제한하는데 이용될 것이다, 그러나 사용자가 PC를 다시 프로그램화했다고 가정한다면 시리얼 넘버는 지워지거나 변경될 수 있으며, 다른 대책은 호스팅 서비스(210)가 PC 네트워크 확장카드, MAC 어드레스(및/또는 하드 드라이브 시리얼 넘버 등과 같은 다른 기계적 특별한 식별자)를 기록하고 데모 사용을 제한하는 것이다. 그러나, 네트워크 확장카드의 MAC 주소가 변경된다고 가정한다면 이는 실패할 염려가 없는 방법이 아니다. 데모의 사용횟수를 제한하는 다른 접근은 주어진 IP 주소로 실행될 수 있게 하는 것이다. 비록 IP 주소가 케이블 모뎀과 DSL 제공자에 의해 주기적으로 재할당되더라도 이는 실제로는 매우 자주 일어나는 것은 아니며 주택지의 DSL 또는 케이블 모뎀 접근을 위한 지역 내의 IP가 결정이 되면 데모 사용의 적은 숫자는 전형적으로 주어진 가정에 설정될 수 있다. 또한 같은 IP 주소를 공유하는 NAT 라우터 하에 가정에는 다수 기계 장치가 있을 수 있지만 전형적인 주거환경에서는 그러한 장치는 제한된 수만큼 있을 것이다. 만약 IP 주소가 한 기업에 있다면 데모의 대다수가 한 기업을 위해 설정될 수 있다. 그러나 마침내 이전에 언급한 모든 접근법의 결합이야말로 PC의 데모 수를 제한하는 최선의 방법이다. 비록 숙달된 사용자가 데모 사용을 반복적으로 하는 것을 제한할 수 있는 확고하고 기술적이며 실패 없는 방법이 없을지라도 많은 장애물을 생성하여 대다수의 PC 사용자가 데모 시스템을 남용하는 것은 노력을 하지 않도록 충분한 제지책을 창조할 수 있으며, 사용자들은 새로운 게임과 어플리케이션을 시도하려는 경향이 있었던 것과 같이 오히려 데모를 사용한다.
But the user will set multiple user IDs, even if it is free. One technique to address this problem is to limit the number of times a given client 415 is allowed to run a demo. If the client is a standalone device the device will have a serial number and the hosting
학교, school, 비지니스business 그리고 다른 단체에서의 이점( And benefits from other organizations ( BenefitsBenefits toto SchoolsSchools , Businesses , Businesses andand OtherOther InstitutionsInstitutions ))
도 4a가 도시되는 시스템을 활용하는 비지니스, 학교 그리고 기타 단체에서 중요한 이점이 축적된다. 오피스와 학교는 PC를 설치, 유지 그리고 업그레이드하는데, 특히 Maya와 같이 고성능 어플리케이션을 운영하는 PC에 관한 한 상당한 비용이 든다. 앞에서 언급한 바와 같이 PC는 일반적으로 일주일에 일부 시간만이 활용되는 것이 일반적이고 주어진 수준의 성능에 맞는 PC의 가격은 서버 센터 환경에서 보다 오피스 또는 학교 환경에서 훨씬 높다.Significant advantages accumulate in businesses, schools, and other organizations that utilize the system in which FIG. 4A is shown. Offices and schools are expensive to install, maintain and upgrade, especially when it comes to PCs running high-performance applications like Maya. As mentioned earlier, PCs are generally only used a few hours per week, and the price of a PC for a given level of performance is much higher in an office or school environment than in a server center environment.
큰 사업체나 학교의 경우(예컨대, 큰 대학교들), 서버 센터를 구축하고 LAN 단계 연결을 통해 원거리 접근하여 컴퓨터를 유지하는 독립체들과 같은 IT 부서에서 실용적일 수 있다. 오피스 사이에 LAN이나 개인 높은 대역폭 연결 원거리 컴퓨터 접근을 위한 다수의 해결책이 존재한다. 예컨대, 마이크로소프트 윈도우 터미널 서버 또는 RealVNC사의 VNC와 같은 가상의 네트워크 컴퓨팅 기기 또는 Sun Microsystems의 씬 클라이언트를 통해서, 사용자들은 그래픽 응답시간이나 사용자 경험의 일정 범위의 품질로 PC 또는 서버와 원거리 접근을 확보할 수 있게 된다. 게다가 그러한 자체-관리 서버센터는 전형적으로 하나의 사업체 또는 학교 등 그러한 곳에서 전용되며 전혀 다른 어플리케이션(예컨대 엔터테인먼트와 사무기기)은 일주일에 다른 시간대에 같은 컴퓨터 자원을 활용하게 될 때 가능한 중복 사용을 활용할 수 없다. 따라서, 많은 사업체와 학교는 스스로 각각의 사용자에게 LAN-속도 네트워크 연결을 가지는 서버센터를 구축할 만한 규모, 자원 또는 기술이 부족하다. 사실, 학교와 사업체의 많은 비율이 가정에서와 같은 인터넷 연결(예컨대, DSL, 케이블 모뎀)을 가지고 있다.For large businesses or schools (eg, large universities), this can be practical in IT departments such as entities that build server centers and maintain computers with remote access over LAN-level connections. There are a number of solutions for accessing LAN or personal high bandwidth connections to remote computers between offices. For example, through a virtual network computing device such as Microsoft Windows Terminal Server or RealVNC's VNC, or Sun Microsystems' thin client, users can gain remote access to a PC or server with a range of qualities of graphical response time or user experience. It becomes possible. In addition, such self-managed server centers are typically dedicated to one such place, such as a business or school, and take advantage of the possible redundancy when completely different applications (such as entertainment and office equipment) use the same computer resources at different times of the week. Can't. Thus, many businesses and schools lack the scale, resources, or skills to build server centers that have LAN-speed network connections for each user. In fact, a large percentage of schools and businesses have the same Internet connections as homes (eg DSL, cable modems).
그러나 이러한 조직은 정기적 근거 또는 주기적 근거로 여전히 매우 높은 고성능 컴퓨팅에 대한 필요성이 있을 수 있다. 예컨대, 소규모 건축 회사는 상대적으로 아주 소수의 건축가를 보유할 것이고, 디자인 작업을 할 때 대체로 현대 컴퓨팅 요구를 갖지만, 주기적으로 매우 높은-성능의 3D 컴퓨팅을 요구할 것이다(예컨대, 고객을 위해 새로운 건축 디자인의 3차원 플라이-쓰루를 창조하는 때). 이 시스템은 도 4a와 같이 그러한 조직을 위해 매우 적합하다. 그 조직은 가정에 제공되는 네트워크 연결(예컨대, DSL, 케이블 모뎀)과 동일한 종류 이상의 어떤 필요도 있지않고, 전형적으로 매우 저렴하다. 그들은 클라이언트(415)처럼 저렴한 PC를 활용할 수 있거나 PC를 한꺼번에 제공하고, 단지 제어 신호 로직(413) 및 낮은-레이턴시 비디오 신장(412)을 실행하는 저렴한 전용 장치를 활용할 수 있다. 이러한 기능은 PC 내에 민감한 구성 요소 손상이나 PC 도난에 문제가 있는 학교를 위해 매력적이다.However, such organizations may still need a very high performance computing on a regular or periodic basis. For example, a small architectural firm will have relatively few architects and will usually have modern computing needs when designing, but will periodically require very high-performance 3D computing (eg new architectural design for customers). When creating a three-dimensional fly-through). This system is well suited for such an organization as in FIG. 4A. The organization does not have any needs beyond the same kind of network connection (eg DSL, cable modem) provided in the home, and is typically very inexpensive. They may utilize an inexpensive PC, such as client 415, or may utilize a dedicated, inexpensive device that provides the PC all at once and executes control signal logic 413 and low-latency video stretching 412. This feature is attractive for schools that have sensitive component damage or PC theft problems within the PC.
이러한 배열은 그러한 조직을 위한 많은 문제를 해결한다(그리고 이러한 많은 장점은 또한 일반 목적 컴퓨팅을 하는 가정 사용자에 의해서 공유될 수 있다). 운영 비용(이는 궁극적으로 실행 가능한 사업을 하기 위해서 사용자에게 몇 가지 형태로 통과해야한다)은 매우 낮을 수 있는데, 이는 (a) 컴퓨팅 리소스가 그 밖의 주중에 다른 피크 사용 시간을 갖는 어플리케이션과 공유된다, (b) 조직은 필요할 때만 높은 성능 컴퓨팅 리소스에 접근을 얻을 수 있다(그리고 비용을 초래하다), (c) 조직은 높은 성능 컴퓨팅 리소스를 유지하기 위해 백업을 위한 리소스를 제공하지 않아도 되기 때문이다.
This arrangement solves many problems for such an organization (and many of these advantages can also be shared by home users with general purpose computing). Operating costs (which ultimately have to go through some form to the user to do a viable business) can be very low, because (a) computing resources are shared with applications that have different peak hours of use during the rest of the week, (b) the organization can gain access (and incur cost) to high-performance computing resources only when needed, and (c) the organization does not have to provide resources for backup to maintain high-performance computing resources.
불법 복제의 제거(Removal of piracy ( EliminationElimination ofof PiracyPiracy ))
게다가, 게임, 어플리케이션, 인터랙티브 영화 등은, 오늘날처럼 더 이상 불법 복제할 수 없게 된다. 왜냐하면 게임이 서비스 센터에서 실행되고 사용자들은 근본적인 프로그램 코드에 접근하는 것이 제공되지 않고, 거기에는 아무런 불법 복제도 있지 않다. 사용자가 소스 코드를 복제했을지라도, 사용자가 표준 게임 콘솔 또는 홈 컴퓨터에서 그 코드를 실행할 수 없을 것이다. 이는 표준 비디오 게이밍이 이용될 수 없는 중국과 같은 세상의 장소에서 시장을 연다. 사용하는 게임의 재판매도 가능하지 않다.In addition, games, applications, interactive movies, and the like can no longer be pirated as they are today. Because the game runs in the service center and users are not provided access to the underlying program code, there is no piracy there. Even if you duplicate the source code, you won't be able to run it on a standard game console or home computer. This opens up markets in places like China where standard video gaming is not available. Resale of your game is not possible.
게임 개발자를 위해, 오늘날의 경우처럼 거기에는 적은 시장 불연속성이 있다. 호스팅 서비스(210)는 완전히 새로운 세대의 기술은 사용자와 개발자가 업그레이드하고 게임 개발자는 하드웨어 플랫폼을 적시에 납품하는데 의존하게 되는 현재 상황과는 대조적으로 점차로 게이밍 요구의 변화에 따라 시간에 걸쳐 업데이트될 수 있을 것이다.
For game developers, there is little market discontinuity as it is today. The hosting
스트리밍 streaming 인터랙티브Interactive 비디오( video( StreamingStreaming InteractiveInteractive VideoVideo ))
상기 설명은 새로운 근본적인 개념의 일반적인 인터넷 기반, 낮은-레이턴시 스트리밍 인터랙티브 비디오(이는 함축적으로 여기서 사용되는 것처럼, 비디오와 함께 오디오를 포함한다)에 의해서 할 수 있는 넓은 범위의 어플리케이션을 제공한다. 인터넷을 통해 스트리밍 비디오를 제공하는 종래 기술 시스템은 오직 높은 레이턴시 상호작용을 갖으면서 실행될 수 있는 어플리케이션으로 활성화될 수 있다. 예컨대, 선형 비디오를 위한 기본적인 재생 컨트롤(예컨대, 정지, 되감기, 빨리 감기)은 적당히 높은 레이턴시로 동작하고, 그것은 선형 비디오 공급 중에서 선택하는 것이 가능하다. 그리고, 앞서 명시된 바와 같이, 일부 비디오 게임의 특성은 그들이 높은 레이턴시로 플레이될 수 있도록 허락한다. 하지만 스트리밍 비디오를 위한 종래 기술 접근의 높은 레이턴시(또는 낮은 압축 비율)는 심각하게 스트리밍 비디오의 잠재적인 어플리케이션을 제한하거나 전문 네트워크 환경을 위해 그들의 배포(deployment)를 좁게하고, 그러한 환경에서조차, 종래 기술은 실질적으로 네트워크에 부담을 유도한다. 여기서 설명된 기술은 인터넷을 통한, 특히 소비자 등급 인터넷 연결을 통해 가능할 수 있는, 낮은-레이턴시 스트리밍 인터랙티브 비디오를 갖을 수 있는 어플리케이션의 넓은 범위를 위한 문을 연다.The above description provides a broad range of applications that can be achieved by a new fundamental concept of general Internet-based, low-latency streaming interactive video, which implicitly includes audio with video, as used herein. Prior art systems that provide streaming video over the Internet can be activated with applications that can only run with high latency interactions. For example, basic playback controls for linear video (eg, stop, rewind, fast forward) operate with moderately high latency, which makes it possible to choose between linear video feeds. And, as noted above, some video game features allow them to be played with high latency. However, the high latency (or low compression ratio) of prior art approaches for streaming video severely limits the potential application of streaming video or narrows their deployment for specialized network environments, and even in such environments, prior art Practically burdening the network. The technology described herein opens the door for a wide range of applications that can have low-latency streaming interactive video, which may be possible over the Internet, in particular over consumer-grade Internet connections.
사실, 강력한 서버들 사이에 매우 빠른 네트워킹 및 임의의 양의 빠른 스토리지, 임의의 양의 컴퓨팅 파워를 갖는 강화된 사용자 경험을 제공하기에 충분하면서 도 4c의 클라이언트(465)만큼 작은 클라이언트 장치는, 새로운 기준의 컴퓨팅을 가능하게 할 수 있다. 더욱이, 대역폭 요구 사항이 시스템 성장의 컴퓨팅 파워만큼 성장하지 않았기 때문에(예컨대, 대역폭 요구는 디스플레이 해상도, 품질 및 프레임 속도에만 얽매여 있기 때문에), 일단 광대역 인터넷 연결성은 유비쿼터스(예컨대, 널리보급된 낮은-레이턴시 무선 커버리지(coverage)를 통해서), 신뢰할 수 있고, 모든 사용자의 디스플레이 장치(422)의 필요와 만날 수 있는 충분히 높은 대역폭이며, 씩 클라이언트(thick client)(윈도우, 리눅스, OSK 등이 구동되는 PC 또는 모바일 폰와 같은)인지 또는 씬 클라이언트(thin client)(Adobe Flash 또는 Java와 같은)인지에 관한 의문은 전형적인 소비자 및 비지니스 어플리케이션을 위해 필요하다. In fact, a client device as small as the client 465 of FIG. 4C is sufficient to provide an enhanced user experience with very fast networking and any amount of fast storage, any amount of computing power between powerful servers. May allow computing of the criteria. Moreover, because bandwidth requirements have not grown as much as the computing power of system growth (e.g., bandwidth requirements are tied only to display resolution, quality, and frame rate), broadband Internet connectivity is ubiquitous (e.g., widespread low-latency). Wireless coverage, reliable, high enough bandwidth to meet the needs of all user's
스트리밍 인터랙티브 비디오의 출현은 컴퓨팅 아키텍처의 구조에 대한 가정을 다시 생각하도록 한다. 이러한 예는 도 15에 도시된 호스팅 서비스(210) 서버 센터 실시예이다. 지연 버퍼 및/또는 그룹 비디오(1550)를 위한 비디오 경로는 어플리케이션/게임 서버(1521 - 1525)의 멀티캐스트된 스트리밍 인터랙티브 비디오가 경로(1552)를 경유하여 실시간 또는 경로(1551)를 경유하는 선택가능 지연 후에 어플리케이션/게임 서버(1521 - 1525)로 되돌아오는 피드백 루프이다. 이는 종래 기술 서버 또는 로컬 컴퓨팅 아키텍처를 통해 불가능하거나 실행할 수 없는 넓은 범위의 실질적인 어플리케이션이 가능할 수 있다(예컨대, 도 16,17 및 20에 도시된 것과 같은). 하지만, 보다 일반적인 아키텍쳐 특징으로서, 피드백 루프(1550)가 제공하는 것은 어플리케이션이 요구하는 것처럼 비디오가 불명확하게 루프백될 수 있기 때문에, 스트리밍 인터랙티브 비디오 수준의 순환이다. 이는 넓은 범위 어플리케이션의 가능성은 전에는 결코 이용가능하지 않도록 할 수 있다.The advent of streaming interactive video is rethinking assumptions about the architecture of computing architectures. This example is the hosting
또 다른 주요 아키텍쳐 기능은 비디오 스트림은 단방향 UDP 스트림이라는 것이다. 이는 효과적으로 임의의 정도의 멀티캐스팅의 스트리밍 인터랙티브 비디오를 가능하게 할 수 있다(반대로, 양방향 스트림, 즉, TCP/IP 스트림과 같은 양방향 스트림은, 다수의 사용자가 증가됨으로서 뒷면-및-앞에서 네트워크에 점점 더 많은 트래픽 로그잼(logjam)을 만들 수 있게 될 것이다). 멀티캐스팅은 서버 센터내에 중요한 성능이다 왜냐하면 그것은 일대다(one-to-many) 또는 다대다(many-to-many)로 통신 하기 위해서 인터넷 사용자(그리고 사실 그 세계의 인구)의 증가하는 필요에 응답하는 시스템을 허용하도록 하기 때문이다. 다시 말해서, 도 16에서처럼, 여기서 논의하는 예로 스트리밍 인터랙티브 비디오 재귀 및 멀티캐스팅은 큰 빙산의 일각이다.Another major architectural feature is that the video stream is a one-way UDP stream. This can effectively enable any degree of multicasting streaming interactive video (in contrast, bidirectional streams, i.e. bidirectional streams such as TCP / IP streams, are increasingly getting back-and-forward to the network as the number of users increases). You will be able to create more traffic logjams). Multicasting is an important performance in server centers because it responds to the growing need of Internet users (and indeed the world's population) to communicate one-to-many or many-to-many. Because it allows the system to In other words, as in FIG. 16, the streaming interactive video recursion and multicasting examples discussed here are the tip of a large iceberg.
일 실시예에서, 여기서 예시하는 다양한 기능의 모듈은 및 관련 단계는 그 단계를 수행하기 위한 주문형 반도체(ASIC) 또는 프로그램된 컴퓨터 구성 요소 및 사용자 정의 하드웨어 구성 요소의 어떤 조합에 의한 하드웨어 로직을 포함하는 특별한 하드웨어 구성요소에 의해서 수행될 수 있다. In one embodiment, the various functional modules illustrated herein and related steps include hardware logic by an on-demand semiconductor (ASIC) or a combination of programmed computer components and user-defined hardware components to perform the steps. It can be done by special hardware components.
일 실시예에서, 모듈은 텍사스인스트루먼트의 'TMS320x 아키텍처(예, TMS320C6000, TMS320C5000, ... 등)와 같은 프로그램 가능한 디지털 신호 프로세서("DSP")로 구현될 수 있을 것이다. 다양한 DSP는 여전히 이러한 근본적인 이론을 따르는 동안에 사용될 수 있을 것이다.In one embodiment, the module may be implemented with a programmable digital signal processor ("DSP"), such as Texas Instruments' TMS320x architecture (eg, TMS320C6000, TMS320C5000, ..., etc.). Various DSPs may still be used while following this fundamental theory.
실시예는 위에 정한 내용으로 여러 단계를 포함할 수 있다. 그 단계는 기계-실행가능한(machine-executable) 명령어에 의해서 범용 또는 특수 용도의 프로세서가 어떤 단계를 수행할 수 있도록 구현될 수 있다. 이러한 기본 원칙에 관련된 컴퓨터 메모리, 하드 드라이브, 입력 장치와 같은 이러한 기본 이론에 관련되지 않는 다양한 구성 요소는 적절한 측면을 불분명하게 하는 것을 피하기 위해서 도면에서 빠지게 된다.The embodiment may include various steps as described above. The steps may be implemented by machine-executable instructions such that a general purpose or special purpose processor may perform any step. Various components not related to this basic theory, such as computer memory, hard drives, and input devices related to these basic principles, are left out of the drawings in order to avoid obscuring the appropriate aspects.
개시된 주제의 문제는 또한 기계-실행가능한 명령어를 저장하기 위해서 기계-판독가능한 매체로서 제공될 수 있다. 기계-판독가능한 매체는 플래시 메모리, 광학 디스크, CD-ROM, DVD-ROM RAM, EPROM, EEPROM, 자기 또는 광학 카드, 전파 매체(propagation media), 전자적 명령어(electronic instructions)를 저장하기에 적합한 그 밖의 형태의 기계-판독가능한 미디어 등을 포함하되 이에 제한되지 않는다. 예컨대, 본 발명은 통신 링크(예컨대, 모뎀, 네트워크 연결)를 경유하는 그 밖의 전파 매체 또는 캐리어 웨이브(carrier wave)에 포함된 데이터 신호의 방식에 의해서 원격 컴퓨터(예컨대, 서버)에서 요청하는 컴퓨터(예컨대, 클라이언트)로 전송될 수 있는 컴퓨터 프로그램처럼 다운로드될 수 있을 것이다.The problem of the disclosed subject matter may also be presented as a machine-readable medium for storing machine-executable instructions. Machine-readable media may be flash memory, optical disks, CD-ROMs, DVD-ROM RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media, and other suitable for storing electronic instructions. Forms of machine-readable media, and the like. For example, the present invention relates to a computer that makes a request from a remote computer (e.g., a server) by way of a data signal contained in another propagation medium or carrier wave via a communication link (e.g., modem, network connection) ( For example, a computer program that can be transferred to a client).
또한, 이는 개시된 주제의 문제의 요소가 시퀀스의 오퍼레이터를 수행하기 위해서 컴퓨터 프로그램하는데 사용될 수 있는 저장된 명령어를 가진 기계적으로 판독가능한 미디어를 포함하는 컴퓨터 프로그램 제품으로써 제공될 수 있을 것이다(예컨대, 프로세서 또는 그 밖의 전자 장치). 택일적으로, 오퍼레이션은 하드웨어 및 소프트웨어의 조합으로 수행될 수 있을 것이다. 기계-판독가능한 매체는 플로피 디스켓, 광학 디스크, 자기-광학 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 전파 매체 또는 그 밖의 형태의 미디어/전기적 명령어를 저장하기에 적합한 기계-판독가능한 미디어를 포함할 수 있으나 이에 국한되지 않는다. 예컨대, 개시된 주제의 문제 요소는 컴퓨터 프로그램 제품처럼 다운로드될 수 있을 것이고, 이러한 프로그램은 통신 링크를 경유하여 그 밖의 전파 매체 또는 캐리어 웨이브에 포함된 데이터 신호의 방식에 따라 처리를 요청하기 위한 원격 컴퓨터 또는 전자 장치로 전송될 수 있을 것이다(예컨대, 모뎀 또는 네트워크 연결).In addition, this may be provided as a computer program product comprising a mechanically readable medium having stored instructions that may be used to perform a computer program to perform an operator of a sequence in which the elements in question of the disclosed subject matter (eg, a processor or its Out electronic devices). Alternatively, the operation may be performed in a combination of hardware and software. Machine-readable media include machine-readable media suitable for storing floppy diskettes, optical disks, magneto-optical disks, ROM, RAM, EPROM, EEPROM, magnetic or optical cards, propagation media or other forms of media / electrical instructions. May include, but is not limited to, media. For example, a problem element of the disclosed subject matter may be downloaded like a computer program product, which program may be a remote computer for requesting processing in accordance with the manner of a data signal contained in other propagation medium or carrier wave via a communication link or May be sent to the electronic device (eg, a modem or network connection).
추가적으로, 비록 개시된 주제의 문제가 특정 실시예와 결합되어 설명되었어도, 다수의 변형 및 치환은 본 개시의 범위 내에 잘 설명되어 있다. 따라서, 명세서 및 도면은 제한적인 센스보다는 예시적인 센스로 간주될 것이다.Additionally, although the problems of the disclosed subject matter have been described in connection with specific embodiments, many variations and substitutions are well within the scope of this disclosure. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense.
205 : 클라이언트 장치, 206 : 인터넷,
210 : 호스팅 서비스, 211 : 사용자 구내,
220 : 소프트웨어 개발자, 401 : 호스팅 서비스 제어 시스템,
402 : 서버, 403 : 스토리지 영역 네트워크,
404 : 비디오 압축 로직, 413 : 제어 신호 로직,
415 : 클라이언트, 422 : 디스플레이 장치,
462 : 이더넷 잭, 479 : 블루투스 입력 장치.205: client device, 206: internet,
210: hosting service, 211: user premises,
220: software developer, 401: hosting service control system,
402: server, 403: storage area network,
404: video compression logic, 413: control signal logic,
415: client, 422: display device,
462: Ethernet jack, 479: Bluetooth input device.
Claims (3)
상기 제1타입의 프로그램 코드 및 데이터를 비교적 낮은 레이턴시 메모리 접근을 제공하는 제1타입의 메모리에 저장하는 단계;
상기 제2타입의 프로그램 코드 및 데이터를 상기 제1타입의 메모리에 비해 비교적 높은 레이턴시 메모리 접근을 제공하는 제2타입의 메모리에 저장하는 단계;
온라인 어플리케이션을 실행하기 위해 클라이언트 요청에 따라 상기 제1 및 제2타입의 메모리로부터 프로그램 코드 및 데이터를 가져오는 단계; 및
상기 어플리케이션에 의해 생성된 이미지를 나타내는 스트리밍 인터랙티브 비디오 스트림을 클라이언트로 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터-실행 방법.Dividing the program code and / or data used to execute the online application into a first type and a second type;
Storing the first type of program code and data in a first type of memory that provides relatively low latency memory access;
Storing the second type of program code and data in a second type of memory that provides relatively high latency memory access compared to the first type of memory;
Retrieving program code and data from the first and second types of memory in response to a client request to execute an online application; And
And sending a streaming interactive video stream representing the image generated by the application to a client.
상기 제1타입의 메모리는 플래시 메모리이고, 상기 제2타입의 메모리는 하드 드라이브인 것을 특징으로 하는 컴퓨터-실행 방법.The method according to claim 1,
And said first type of memory is a flash memory and said second type of memory is a hard drive.
상기 어플리케이션은 비디오 게임인 것을 특징으로 하는 컴퓨터-실행 방법.
The method according to claim 1,
And said application is a video game.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US99965807A | 2007-12-05 | 2007-12-05 | |
US11/999,658 | 2007-12-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100113503A true KR20100113503A (en) | 2010-10-21 |
Family
ID=40718184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107014738A KR20100113503A (en) | 2007-12-05 | 2008-12-04 | System and method for storing program code and data within an application hosting center |
Country Status (10)
Country | Link |
---|---|
EP (1) | EP2232375A4 (en) |
JP (1) | JP2011507347A (en) |
KR (1) | KR20100113503A (en) |
CN (1) | CN101918924A (en) |
AU (1) | AU2008333828B2 (en) |
CA (1) | CA2707704A1 (en) |
NZ (1) | NZ585909A (en) |
RU (1) | RU2497184C2 (en) |
TW (2) | TWI459215B (en) |
WO (1) | WO2009073826A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101319243B1 (en) * | 2011-08-24 | 2013-10-16 | 연세대학교 산학협력단 | A method for providing web-page and a computer-readable recording medium recording program for implementing the method |
KR101511928B1 (en) * | 2011-11-23 | 2015-04-13 | 지오노믹스 글로벌 게임즈 리미티드 | Systems and methods for providing and processing software objects in connection with a map-based game |
KR20160066274A (en) | 2014-12-02 | 2016-06-10 | 엔트릭스 주식회사 | System for cloud streaming service, method of image cloud streaming service using application code and apparatus for the same |
KR20160087129A (en) | 2015-01-13 | 2016-07-21 | 엔트릭스 주식회사 | System for cloud streaming service, method of image cloud streaming service using application code conversion and apparatus for the same |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8888592B1 (en) | 2009-06-01 | 2014-11-18 | Sony Computer Entertainment America Llc | Voice overlay |
US8613673B2 (en) | 2008-12-15 | 2013-12-24 | Sony Computer Entertainment America Llc | Intelligent game loading |
US8968087B1 (en) | 2009-06-01 | 2015-03-03 | Sony Computer Entertainment America Llc | Video game overlay |
US8147339B1 (en) | 2007-12-15 | 2012-04-03 | Gaikai Inc. | Systems and methods of serving game video |
US8926435B2 (en) | 2008-12-15 | 2015-01-06 | Sony Computer Entertainment America Llc | Dual-mode program execution |
US8506402B2 (en) | 2009-06-01 | 2013-08-13 | Sony Computer Entertainment America Llc | Game execution environments |
JP5605673B2 (en) * | 2009-10-01 | 2014-10-15 | 日本電気株式会社 | Digital data sharing service terminal, method, program, and digital data sharing service system |
US8771064B2 (en) | 2010-05-26 | 2014-07-08 | Aristocrat Technologies Australia Pty Limited | Gaming system and a method of gaming |
US8560331B1 (en) | 2010-08-02 | 2013-10-15 | Sony Computer Entertainment America Llc | Audio acceleration |
EP2609520B1 (en) | 2010-09-13 | 2018-05-30 | Sony Computer Entertainment America LLC | Add-on management |
KR20170129296A (en) | 2010-09-13 | 2017-11-24 | 소니 인터랙티브 엔터테인먼트 아메리카 엘엘씨 | A method and system of providing a computer game at a computer game system including a video server and a game server |
CN102841809B (en) * | 2011-06-22 | 2016-06-01 | 联想(北京)有限公司 | Information processing method and device, mode switching method and terminal unit |
US9131245B2 (en) | 2011-09-23 | 2015-09-08 | Qualcomm Incorporated | Reference picture list construction for video coding |
CN105844532A (en) * | 2016-03-23 | 2016-08-10 | 努比亚技术有限公司 | Method and server for processing subscription information |
CN110110865B (en) * | 2018-07-20 | 2023-08-11 | 深圳怡化电脑股份有限公司 | Equipment maintenance method, device, server, equipment and storage medium |
US11269612B2 (en) * | 2019-12-10 | 2022-03-08 | Paypal, Inc. | Low latency dynamic content management |
CN113515255B (en) * | 2021-05-17 | 2023-02-07 | 英华达(上海)科技有限公司 | Audio playing control method, system, electronic equipment and storage medium |
CN116389970B (en) * | 2021-12-22 | 2024-09-10 | 比亚迪股份有限公司 | Independent sound channel output method of multiple types of sound sources, SOC chip and automobile |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6909708B1 (en) * | 1996-11-18 | 2005-06-21 | Mci Communications Corporation | System, method and article of manufacture for a communication system architecture including video conferencing |
JP3522527B2 (en) * | 1998-03-27 | 2004-04-26 | 富士通株式会社 | I / O control device and I / O control method |
EP1135722A4 (en) * | 1998-07-27 | 2005-08-10 | Webtv Networks Inc | Remote computer access |
US6640284B1 (en) * | 2000-05-12 | 2003-10-28 | Nortel Networks Limited | System and method of dynamic online session caching |
JP3345719B2 (en) * | 2000-07-04 | 2002-11-18 | コナミ株式会社 | Game control method, game device, and recording medium |
DE60116364T2 (en) * | 2000-10-27 | 2006-09-28 | Sony Computer Entertainment Inc. | DATA PROCESSING SYSTEM WITH MULTIPLE OPERATING TERMINALS AND A DATA PROCESSING DEVICE |
SE521645C2 (en) * | 2001-04-11 | 2003-11-18 | Ericsson Telefon Ab L M | Method and mobile phone and mobile phone system that allows interruption in multi-user games when telephone calls are received |
US20030093806A1 (en) * | 2001-11-14 | 2003-05-15 | Vincent Dureau | Remote re-creation of data in a television system |
RU2283509C2 (en) * | 2002-07-23 | 2006-09-10 | Самсунг Электроникс Ко., Лтд. | Index structure of meta-data, method for providing indexes of meta-data, and also method for searching for meta-data and device, using indexes of meta-data |
JP2004128779A (en) * | 2002-10-01 | 2004-04-22 | Sony Corp | Broadcast system, recording apparatus, recording method, program, and record medium |
FI116016B (en) * | 2002-12-20 | 2005-08-31 | Oplayo Oy | a buffering |
JP3735358B2 (en) * | 2003-09-12 | 2006-01-18 | コナミ株式会社 | Video game program, video game apparatus, and video game method |
US8370888B2 (en) * | 2004-06-22 | 2013-02-05 | University Of Southern California | Hydra: high-performance data recording architecture for streaming media |
JP4615958B2 (en) * | 2004-10-15 | 2011-01-19 | クラリオン株式会社 | Digital broadcast sending device, receiving device, and digital broadcasting system |
US7751324B2 (en) * | 2004-11-19 | 2010-07-06 | Nokia Corporation | Packet stream arrangement in multimedia transmission |
WO2006100664A2 (en) * | 2005-03-21 | 2006-09-28 | Yosef Mizrahi | Method, system and computer-readable code for providing a computer gaming service |
US20070265094A1 (en) * | 2006-05-10 | 2007-11-15 | Norio Tone | System and Method for Streaming Games and Services to Gaming Devices |
KR100776635B1 (en) * | 2006-09-28 | 2007-11-15 | 주식회사 셀런 | Remote access method between settop box and remote server system using h.264 codec and apparatus therefor |
-
2008
- 2008-12-04 CA CA2707704A patent/CA2707704A1/en not_active Abandoned
- 2008-12-04 CN CN2008801194261A patent/CN101918924A/en active Pending
- 2008-12-04 KR KR1020107014738A patent/KR20100113503A/en not_active Application Discontinuation
- 2008-12-04 EP EP08858175A patent/EP2232375A4/en not_active Withdrawn
- 2008-12-04 TW TW097147248A patent/TWI459215B/en active
- 2008-12-04 WO PCT/US2008/085601 patent/WO2009073826A1/en active Application Filing
- 2008-12-04 AU AU2008333828A patent/AU2008333828B2/en active Active
- 2008-12-04 NZ NZ585909A patent/NZ585909A/en unknown
- 2008-12-04 RU RU2010127316/08A patent/RU2497184C2/en active
- 2008-12-04 JP JP2010537086A patent/JP2011507347A/en active Pending
- 2008-12-04 TW TW98114137A patent/TW200943078A/en unknown
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9299219B2 (en) | 2008-07-25 | 2016-03-29 | Geonomics Global Games Limited | Systems and methods for processing software objects in connection with a map-based gameboard |
KR101319243B1 (en) * | 2011-08-24 | 2013-10-16 | 연세대학교 산학협력단 | A method for providing web-page and a computer-readable recording medium recording program for implementing the method |
KR101511928B1 (en) * | 2011-11-23 | 2015-04-13 | 지오노믹스 글로벌 게임즈 리미티드 | Systems and methods for providing and processing software objects in connection with a map-based game |
KR20160066274A (en) | 2014-12-02 | 2016-06-10 | 엔트릭스 주식회사 | System for cloud streaming service, method of image cloud streaming service using application code and apparatus for the same |
US10659826B2 (en) | 2014-12-02 | 2020-05-19 | Sk Planet Co., Ltd. | Cloud streaming service system, image cloud streaming service method using application code, and device therefor |
KR20160087129A (en) | 2015-01-13 | 2016-07-21 | 엔트릭스 주식회사 | System for cloud streaming service, method of image cloud streaming service using application code conversion and apparatus for the same |
Also Published As
Publication number | Publication date |
---|---|
TW200943078A (en) | 2009-10-16 |
WO2009073826A1 (en) | 2009-06-11 |
EP2232375A4 (en) | 2012-10-10 |
EP2232375A1 (en) | 2010-09-29 |
RU2010127316A (en) | 2012-01-10 |
RU2497184C2 (en) | 2013-10-27 |
CN101918924A (en) | 2010-12-15 |
JP2011507347A (en) | 2011-03-03 |
TW200937220A (en) | 2009-09-01 |
AU2008333828A1 (en) | 2009-06-11 |
NZ585909A (en) | 2013-08-30 |
AU2008333828B2 (en) | 2013-10-03 |
CA2707704A1 (en) | 2009-06-11 |
TWI459215B (en) | 2014-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10695670B2 (en) | System and method for capturing text for an online application | |
KR102050488B1 (en) | System and method for accelerated machine switching | |
KR101549278B1 (en) | System for combining a plurality of views of real-time streaming interactive video | |
KR101510915B1 (en) | Method for multicasting views of real-time streaming interactive video | |
KR101503963B1 (en) | System for acceleration of web page delivery | |
KR101586099B1 (en) | System for reporting recorded video preceding system failures | |
KR101783057B1 (en) | Temporary decoder apparatus and method | |
KR20100114881A (en) | Streaming interactive video client apparatus | |
KR20100101608A (en) | System for recursive recombination of streaming interactive video | |
KR20100106430A (en) | Method of combining linear content and interactive content compressed together as streaming interactive video | |
KR20100108352A (en) | System for collaborative conferencing using streaming interactive video | |
KR20100111668A (en) | Streaming interactive video integrated with recorded video segments | |
KR20100106448A (en) | System for combining recorded application state with application streaming interactive video output | |
KR20100102625A (en) | Hosting and broadcasting virtual events using streaming interactive video | |
KR20100114015A (en) | Method for user session transitioning among streaming interactive video servers | |
KR20100113502A (en) | System and method for intelligently allocating client request to server centers | |
KR20100097722A (en) | System and method for protecting certain types of multimedia data transmitted over a communication channel | |
KR20110132612A (en) | System and method for multi-stream video compression using multiple encoding formats | |
KR20110132610A (en) | System and method for selecting a video encoding format based on feedback data | |
KR20110132609A (en) | System and method for compressing video based on latency measurements and other feedback | |
KR20110132608A (en) | System and method for compressing video frames or portions thereof based on feedback information from a client device | |
KR20120002996A (en) | System and method for encoding video using a selected tile and tile rotation pattern | |
KR20120058450A (en) | System and method for utilizing forward error correction with video compression | |
KR20110132611A (en) | System and method for video compression using feedback including data related to the successful receipt of video content | |
KR20110136875A (en) | System and method for multi-stream video compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
WITN | Withdrawal due to no request for examination | ||
G170 | Publication of correction |