Source: http://www.google.com/patents/US20070168309?dq=6514640
Timestamp: 2014-10-02 09:07:41
Document Index: 174426664

Matched Legal Cases: ['Application No. 60', 'art 1402', 'art 1402', 'art 1402', 'art 1402', 'art 1402', 'art 1302', 'art 900', 'art 900']

Patent US20070168309 - System, method and computer program product for dynamically extracting and ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign in<nobr>Advanced Patent Search</nobr>PatentsA system, method and computer program product for dynamically extracting and sharing information indicative of the progress or performance of a user within a software application in an executing software application, such as a video game, without having to change and recompile the original application...http://www.google.com/patents/US20070168309?utm_source=gb-gplus-sharePatent US20070168309 - System, method and computer program product for dynamically extracting and sharing event information from an executing software applicationAdvanced Patent SearchPublication numberUS20070168309 A1Publication typeApplicationApplication numberUS 11/545,733Publication dateJul 19, 2007Filing dateOct 11, 2006Priority dateDec 1, 2005Also published asEP2084607A2, WO2008104834A2, WO2008104834A3Publication number11545733, 545733, US 2007/0168309 A1, US 2007/168309 A1, US 20070168309 A1, US 20070168309A1, US 2007168309 A1, US 2007168309A1, US-A1-20070168309, US-A1-2007168309, US2007/0168309A1, US2007/168309A1, US20070168309 A1, US20070168309A1, US2007168309 A1, US2007168309A1InventorsYoav Tzruya, Zvi Levgoren, Itay NaveOriginal AssigneeExent Technologies, Ltd.Export CitationBiBTeX, EndNote, RefManReferenced by (14), Classifications (13), Legal Events (1) External Links: USPTO, USPTO Assignment, EspacenetSystem, method and computer program product for dynamically extracting and sharing event information from an executing software applicationUS 20070168309 A1Abstract A system, method and computer program product for dynamically extracting and sharing information indicative of the progress or performance of a user within a software application in an executing software application, such as a video game, without having to change and recompile the original application code or without having to add functionality into the source code. A server side environment is also described for building community features around such event information. A system, method and computer program product is further described for enhancing an executing software application by dynamically adding such event information to the executing application.
CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation-in-part of U.S. patent application Ser. No. 11/472,454, filed Jun. 22, 2006, which claims the benefit of U.S. Provisional Patent Application No. 60/797,669 filed on May 5, 2006. U.S. patent application Ser. No. 11/472,454 is also a continuation-in-part of U.S. patent application Ser. No. 11/290,830 filed on Dec. 1, 2005. Each of the foregoing applications is incorporated by reference herein in its entirety.
Software applications, and video games in particular, may include features that allow for communication with other remotely-executing instances of the software application and/or server side components to facilitate the creation of community-oriented features such as multi-player games, massively multi-player games, leader-boards and the like. One way to achieve this is to program these features into the original application logic, or �source code�. However, in order to do this, developers must pre-determine which events within the software application they wish to track and what information pertaining to those events they wish to share (e.g., how fast a user drove a car around a racing track in a racing simulation, or how many �bad guys� a user killed in a action game). If the monitoring and reporting of an event is not pre-programmed into the game, the information pertaining to that event will be lost and thus cannot be leveraged.
The above-mentioned parties may further wish to implement such functionality in a manner that permits the extraction and sharing of event information to be based on a dynamic set of �business rules�. Each business rule could provide event criteria which, if met, result in the extraction and sharing of information pertaining to the event. For example, the event criteria might be whether the application has rendered a �You won!� sign, and the event information might be information pertaining to a user winning a certain game session. Ideally, the dynamic nature of the business rules would allow them to be periodically changed. For example, it would be advantageous if one could define new types of events, event criteria, and event information to be extracted, thereby providing support for new and different types of information sharing. This can help keep users of the software application interested in participating in community events relating to the application.
It would be desirable if the extraction of event information included permitting a user of the software application to provide objects or other content for dynamic insertion into a remotely-executing instance of the software application. For example, the desired functionality might permit a user to add a landmark or a �sticky� note providing hints or puzzle solutions at a specified location within a video game such that other users can see this object if they wish to. It would further be desirable if, for each level of a video game, statistics could be extracted such as the time required to finish the level, the number of times the user died before completing the level, the state of the user's health meter when she finished the level, or the like. This information could then be sent to a server and can be published through various means, including via a web-site, or be made available to other users while they play the video game. In a further extension of event information extraction and sharing, it would be desirable if all users executing a video game at a certain time could �see� all other users that are currently executing the same game or are currently playing the same level in a game and allow the users to communicate using various messaging means within the context of the game.
BRIEF SUMMARY OF THE INVENTION The present invention provides a system, method and computer program product for dynamically extracting and sharing information indicative of the progress or performance of a user within a software application (i.e., �event information�) from an executing software application, such as a video game, without having to change and recompile the original application code or without having to add functionality into the source code. The present invention also provides a server side environment for building community features around such event information. The present invention further provides a system, method and computer program product for dynamically enhancing an executing software application by adding such event information to the executing application.
The method may further include allowing the user to update the event outside of the game and may further allow users to �subscribe� to the �published� event information. Upon subscribing to such event information, the user indicating such subscription will be displayed with the events information related to the published content subscribed to.
FIG. 5 illustrates a conventional software architecture for a Microsoft� Windows� based PC that utilizes graphics libraries.
DETAILED DESCRIPTION OF THE INVENTION I. System Overview FIG. 1 illustrates an exemplary system 100 for dynamically extracting and sharing information indicative of the progress or performance of a user within a software application in accordance with an embodiment of the present invention. As shown in FIG. 1, system 100 includes a local device 102. Local device 102 may comprise a personal computer (either desktop or laptop), a server, a video game console, a personal digital assistance (PDA), a cellular phone, or any other type of device that is capable of executing software applications. As is further shown in FIG. 1, local device 102 is communicatively connected to one or more server side components 106 via a data communication network 104 a. Data communication network 104 a may comprise, for example, the Internet. However, the invention is not so limited, and data communication network 104 a may comprise any type of data communication network, including local and/or wide area networks, as well as wired and/or wireless networks.
As further shown in FIG. 1, server side components 106 include a central database 110, a community features engine 112 and a web interface 114. Each of server side components 106 may be jointly or individually implemented on one or more servers, or on devices communicatively connected to one or more servers, in accordance with this embodiment of the present invention. Server side components are further communicatively connected to a plurality of remote devices 108 a, 108 b and 108 c via a data communication network 104 b. Like data communication network 104 a, data communication network 104 b may comprise any type of data communication network, including local and/or wide area networks, as well as wired and/or wireless networks. In one implementation, data communication network 104 b is the same network or part of the same network as data communication network 104 a. Like local device 102, remote devices 108 a, 108 b and 108 c may each comprise a personal computer, a server, a console, a personal digital assistance (PDA), a cellular phone, or any other type of device that is capable of executing software applications. In one implementation, one or more of remote devices 108 a, 108 b and 108 c is the same type of device as local device 102, although the invention is not so limited. For example, in one implementation, local device 102 and each of remote devices 108 a, 108 b and 108 c comprises a personal computer.
The method begins at step 202 in which local device 102 monitors a software application, such as a video game, during execution to determine if an event has occurred, wherein the event is indicative of the progress or performance of the user within the software application. For example, the event may be indicative of a particular user achievement within the software application, such as finishing a particular race within a racing simulation game, or completing a level within a �first-person shooter� type combat game. As another example, the event may be the rendering of a �You won!� sign in the game, denoting that the user has won a certain game session. In accordance with embodiments described herein, what constitutes an event within the software application may be dynamically defined by a system administrator, other entity, or by the user herself.
As shown at decision step 204, if the event has not yet occurred, control returns to step 202 and local device 102 continues to monitor the executing application. However, if the event has occurred, then local device 102 extracts information associated with the event as shown at step 206 and transmits the extracted information for use and/or viewing by another user as shown at step 208. For example, information concerning how fast a race was finished within a racing simulation game or how many �bad guys� were killed by a user when completing a level in a first-person-shooter may be extracted and transmitted. In accordance with another example, for each level of a game that is completed, statistics may be extracted that include parameters such as the time required to finish the level, the number of times the user died before completing the level, the state of the user's health meter at the time the level was finished, or the like.
In one implementation of the present invention, the event information extracted by local device 102 is transmitted to server side components 106 where it is stored in central database 110 and is accessible to community features engine 112 and web interface 114. As such, the event information can be used alone or along with other types of information, such as manually- or automatically-generated data, to support community features, such as leader-boards, leagues, tournaments and such. In particular, community features applications may be provided �on top of� the event information that allow users, such as the users of remote devices 108 a, 108 b and 108 c, to be part of a community of interest around a software application, and allow users to access and view information concerning the activities and achievements of other users in various software applications. Users of remote devices 108 a, 108 b and 108 c may access the community features via web interface 114.
II. Event Detection and Information Extraction in Accordance with an Embodiment of the Present Invention As described above, local device 102 of FIG. 1 is configured to monitor a software application during execution to determine if an event has occurred, wherein the event is indicative of the progress or performance of a user within the software application. Such monitoring may include tracking one or more logical and/or physical states within an operating environment of local device 102 and inferentially determining that the event has occurred based on one or more state changes. Regardless of the approach, the software application itself does not determine that the event has occurred. Rather, one or more additional components are installed on local device 102 to monitor execution of the application and to make such a determination.
After staging environment information database 304 has been populated, the system administrator or other entity then populates a business rules database 308 by manual or automated means with a set of �business rules�, wherein at least some of the business rules stored in database 308 are associated with event criteria stored in staging environment information database 304.
Run-time environment 306 represents the environment in which an end-user actually runs the application software. The application is the �same� as the application executed in staging environment 302 in that it is another copy or instance of essentially the same computer program, although it need not be completely identical. As will be described in more detail herein, run-time environment 306 monitors the execution of the application on a device and also identifies, tracks and/or measures application-generated graphics and audio objects. If run-time environment 306 determines that an identified object or objects generated by the application meets event criteria associated with a business rule in business rules database 308, then it applies the associated business rule. The business rule may be used, for example, to extract information associated with the event and to transmit the extracted information to a remote device for use and/or viewing by another user.
FIG. 4 illustrates the software components of system 300. As shown in FIG. 4, staging environment 302 includes an application 402, an interception component 404, an indexing component 406, and low-level graphics/audio functions 408. Application 402 is a software application, such as a video game, that is executed within staging environment 302. Low-level graphics/audio functions 408 are software functions resident in memory of the computer system that are accessible to application 402 and that assist application 402 in the rendering of application-generated graphics information and the playing of application-generated audio information. In an embodiment, low-level graphics/audio functions 408 comprise one or more functions within a low-level application program interface (API) such as DirectX� or OpenGL�.
FIG. 5 illustrates a conventional software architecture 500 for a Microsoft� Windows� based PC. As shown in FIG. 5, software architecture 500 includes a 32-bit Microsoft� Windows� application 502 executing on the PC. During execution, application 502 makes function calls to a Direct3D� API 504 in a well-known manner. As will be appreciated by persons skilled in the relevant art(s), Direct3D� API 504 comprises a series of libraries that are resident in PC memory and accessible to application 502 and that include functions that may be called by application 502 for rendering and displaying graphics information. In response to receiving the function calls from application 502, Direct3D� API 504 determines if such functions can be executed by graphics hardware 508 within the PC. If so, Direct3D� API 504 issues commands to a device driver interface (DDI) 506 for graphics hardware 508. DDI 506 then processes the commands for handling by graphics hardware 508.
In contrast to the conventional software architecture illustrated in FIG. 5, FIG. 6 illustrates a software architecture including emulated graphics and audio libraries in accordance with an embodiment of the present invention. As shown in FIG. 6, interception component 404 has been inserted between application 502 and Direct3D� API 504. This may be achieved by emulating one or more graphics or audio libraries within Direct3D� API 504. As a result, certain function calls generated by application 502 are received by interception component 404 rather than Direct3D� API 504. Interception component 404 provides the intercepted function calls, and/or graphics and audio objects associated with the intercepted function calls, to an indexing component 406. Interception component 404 also passes the function calls to Direct3D� API 504 by placing calls to that API, where they are handled in a conventional manner. It is noted, however, that the function calls need not necessarily be passed to Direct3D� API 504 in order to practice the invention.
Another method that may be used is to intercept or �hook� function calls to the API using the Detours hooking library published by Microsoft� of Redmond, Wash. Hooking may also be implemented at the kernel level. Kernel hooking may include the use of an operating system (OS) ready hook to enable a notification routine for an API being called. Another technique is to replace the OS routines by changing the pointer in the OS API table to a hook routine pointer, thereby chaining the call to the original OS routine before and/or after the hook logic execution. Another possible method is an API-based hooking technique that performs the injection of a DLL to any process that is being loaded, by setting a system global hook or by setting a registry key to load such a DLL. This injection is done only to have the hook function running in the process address space. While the OS loads such a DLL, a DLL initialization code changes the desired DLL dispatch table. Changing the table causes the pointer to the original API implementation to point to the DLL implementation (only to the desired API) and thus hooking the API. Hooking techniques are described, for example, at the web page http://www.codeguru.com/system/apihook.html. Note that the above described hooking techniques are presented only by way of example, and are not meant to limit the invention to any of these techniques. Other tools and methods for intercepting function calls to graphics or audio APIs are known to persons skilled in the relevant art(s).
At step 706, interception component 404 identifies a graphics or audio object associated with the intercepted function call. A graphics object may comprise a model, texture, image, parameter, or any other discrete set of information or data associated with the intercepted function call and used in rendering graphics information on behalf of application 402. An audio object may comprise an audio file, a digital sound wave, or any other discrete set of information or data associated with the intercepted function call and used in playing back audio information on behalf of application 402. The graphics or audio object may be part of the function call itself or may be addressed by or pointed to by the function call. For example, if the intercepted function call is a SetTexture function call to the Direct3D� API, the associated graphics object may consist of a texture pointed to by the SetTexture function call.
As noted above, after the graphics and/or audio objects have been stored in staging environment information database 304, the system administrator or other entity defines event criteria associated with one or more of the identified objects, wherein satisfaction of the event criteria means that an event has occurred. An indication of the association between the event criteria and the one or more objects is also stored in staging environment information database 304. After staging environment information database 304 has been populated, the system administrator or other entity then populates a business rules database 308 by manual or automated means with a set of �business rules�, wherein at least some of the business rules stored in database 308 are associated with event criteria stored in staging environment information database 304.
In one implementation, staging environment information database 304 is created or populated in local memory of the computer system of staging environment 302. The system administrator or other entity then populates business rules database 308 by manual or automated means with one or more business rules, wherein each business rule is associated with one or more of the event criteria stored in the first database. The association between the business rule and event criteria may be created by forming a relationship between the business rule and the unique ID of the object or objects associated with the event criteria in database 308. In one implementation, a �wild card� scheme is used to permit a single business rule to be associated with a group of logically-related objects.
As shown in FIG. 4, the software components of run-time environment 306 include an application 410, an interception component 412, business logic 414, and low-level graphics/audio functions 416. Application 410 is the �same� as application 402 of staging environment 302 in that it is another copy or instance of essentially the same computer program, although it need not be completely identical. Low-level graphics/audio functions 416 are software functions resident in memory of the computer system that are accessible to application 410 and that assist application 410 in the rendering of application-generated graphics information and the playing of application-generated audio information. Low-level graphics/audio functions 408 and 416 are similar in the sense that they provide the same functionality and services to application 402 and application 410, respectively, through similar APIs.
FIG. 8 illustrates an example software architecture for run-time environment 306 in which interception component 412 is implemented by way of emulation. As shown in FIG. 8, interception component 412 has been inserted between a Windows application 502 and a Direct3D� API 504. Like the software architecture described above with reference to FIG. 6, this is achieved by emulating one or more graphics or audio libraries within Direct3D� API 504. As a result, certain function calls generated by application 502 are received by interception component 412 rather than Direct3D� API 504. As also shown in FIG. 7, in an implementation, both interception component 412 and business logic 414 can place function calls to Direct3D� API 504 and business logic 414 can send commands directly to DDI 506. Whether or not business logic 414 requires this capability will depend upon the nature of the business rules being applied.
At step 906, interception component 412 identifies a graphics or audio object associated with the intercepted function call. As noted above, a graphics object may comprise a model, texture, image, parameter, or any other discrete set of graphics information associated with the intercepted function call and an audio object may comprise an audio file, a digital sound wave, or any other discrete set of audio information associated with the intercepted function call. The graphics or audio object may be part of the function call itself or may be addressed by or pointed to by the function call. For example, if the intercepted function call is a SetTexture function call to the Direct3D� API, the associated graphics object may consist of a texture pointed to by the SetTexture function call.
In accordance with this embodiment, the user-generated objects or content may be �published� by a first user via a user-accessible interface, such as web interface 114, as shown at step 2102. The manner of publication is such that a second user can �subscribe� to selected published objects or content via the web interface as shown at step 2104. The second user may subscribe to individual objects or content or to a group of objects or content. Objects or content may be grouped according to events with which they are associated, the user that provided them, or some other grouping criteria.
Once objects or content have been subscribed to, the second user's run-time environment monitors the executing software application for the same event criteria that provoked the generation of the objects or content in the first user's run-time environment, as shown at step 2106, or alternatively for some other event criteria as specified by a user or system administrator. If the event criteria is met during execution of the application, the second user's run-time environment dynamically inserts the objects or content associated with that event into the executing software application as shown at step 2108, thereby enhancing the second user's experience within the software application. As described elsewhere herein, such dynamically added content may include a landmark or a �sticky� note providing hints or puzzle solutions at a specified location within a video game. However, this example is not intended to limit the present invention, and any type of user-generated objects or content may be published, subscribed to and dynamically inserted into an executing software application in accordance with embodiments of the present invention.
As described above, responsive to detection of an event, an embodiment of the present invention extracts information concerning the event and transmits the extracted information to a remote device for use and/or viewing by another user. In some cases, the determination of whether an event has occurred may involve measuring properties relating to a particular object or objects. In addition, once an event has occurred, the extraction of information associated with the event may involve tracking certain granular and complex data associated with the event. For example, where the software application is a video game of the �first-person shooter� type and the event is a final showdown with a monster or �boss�, one may wish to measure the amount of time a user spent fighting the monster. As another example, where the software application is a racing simulation and the event is racing on a particular racing track within the game, one may wish to measure the number of times that the user collided with a railing of the racing track. This event information can then be extracted and transmitted to a remote location for use and/or viewing by another user.
In step 1304, object tagging component 1202 identifies objects of interest. In an embodiment, such objects of interest are a subset of the objects stored in staging environment information database 304. In other embodiments, there may be objects of interest that are not stored in staging environment information database 304. In still other embodiments, the staging environment information database 304 includes rules providing criteria that objects must satisfy in order to be considered objects of interest, without identifying individual objects. An �object of interest� may be, for example, a graphical, audio or video object used in defining an event criteria or to provide information associated with an event, or any other object that one wishes to track and monitor, for whatever reason.
1. Operation of Object Tagging Component Flowchart 1402 in FIG. 14 represents the operation of object tagging component 1202 as it identifies objects of interest, and as it tags such objects of interest. In other words, flowchart 1402 shows in greater detail the operation of object tagging component 1202 as it performs steps 1304 and 1305 of FIG. 13.
If the object satisfies the tagging criteria, then in step 1408 the object tagging component 1202 tags the object. By �tagging the object,� it is meant that the object is somehow marked or otherwise distinguished so that, in the future, the object can be identified as being an object of interest (i.e., as being an object that one wishes to track and measure). There are many ways of tagging the object. For example, object tagging component 1202 may set a flag or insert other tagging indicia into the object's entry in the staging environment information database 304 (see step 1410), or may create a new table, such as a new hash table, and insert information identifying the object (such as a CRC of the object) into the hash table (only tagged objects would be represented in this new table). Additionally, in embodiments, an opportunity may be provided to augment information on the object, such as providing a name or description of the object (see step 1412). This can be done manually by an administrator, for example, and can be part of the process of FIG. 14, or can be performed off-line.
a. Navigate between all objects or a subset of the objects on the screen (e.g., objects that meet certain criteria). Objects that the user is currently �selecting� can be highlighted by intercepting calls for their rendering by interception component 404 and altering such rendering with additional information. For example, this is shown in the example of FIG. 19, by the white boundary boxes around the camel). b. Choose/Tag a certain object. c. (Optionally) Pop-up an interactive form for the user to allow entering additional data about the tagged object. In certain embodiments, step 1414 is not performed, in which case flowchart 1402 is performed entirely automatically by object tagging component 1202. In other embodiments, tagging of objects is performed entirely manually. In still other embodiments, flowchart 1402 is performed automatically with some user interaction, in the manner described above. In still other embodiments, flowchart 1402 is not performed at all and rules are defined to provide criteria for objects to be measured, without identifying individual objects.
2. Operation of Object Measurement Component Referring again to flowchart 1302 in FIG. 13, it was described above that steps 1306, 1308, 1309 and 1310 are performed by an object measurement component 1204 in run-time environment 306. In an embodiment, such operation of object measurement component 1204 occurs during step 914 of flowchart 900 in FIG. 9. (The steps of flowchart 900 were described above, and that description is not repeated here).
As described above, during step 914, business logic 214 applies a business rule that is applicable to the object being processed (referred to above as the �identified object�). In particular, business logic 214 applies a business rule that causes information concerning an event occurring in the software application to be extracted and transmitted to a remote location. In an embodiment, the extraction of such information includes �measurement business rules� that, when applied, cause the object measurement component 1204 to determine, measure and/or collect attribute information on the identified object. (As noted above, object measurement component 1204 may be a separate component in run-time environment 306, or may be part of business logic 314.).
3. Determining the Impact of a Tagged Object In this section, steps 1508 and 1606 are described in more detail.
4. Measurement Examples As described above, object measurement component 1204 in step 1708 determines, measures and/or collects attribute information pertaining to the tagged object. Embodiments for determining, measuring and/or collecting such attribute information are described in this section. These embodiments are provided for purposes of illustration, and not limitation. Other techniques for determining, measuring and/or collecting object attribute information will be apparent to persons skilled in the relevant art(s).
a. Collisions Between Objects Interaction and collision between objects can be measured in many ways. There are more accurate and less accurate methods, with associated computation performance issues.
b. In-View Check �In-view� check determines if an object is located within the viewport. In-view check is interesting because some applications render objects that are not visible from the viewport.
c. Distance Distance can be calculated from cameras or between objects. Distance units are relative to the game, but can be normalized to enable comparisons between games.
d. Size All elements that are displayed in the viewport have size. In an embodiment, an object's size is measured by projecting the 3D representation of the object into 2D space. Then, the 2D projected size within the viewport is calculated.
e. Occlusion In the 3D world, objects have a z axis value that can be covered or partially hidden by other objects.
f. Angle (Orientation) In an embodiment, the angle between objects, or the angle between an object and the camera, is treated as the angle between the objects' normal vectors.
5. Example Embodiment of Calculating Measurements in Real Time Using DirectX This section describes an example embodiment for measuring exposure of an object using DirectX (also see, for example, the process in FIG. 20). This example is provided for purposes of illustration, and not limitation. The DirectX functions mentioned herein are well known and are described in numerous places, such as but not limited to http://msdn.microsoft.com.
III. Example Computer System Implementation FIG. 11 depicts an example computer system 1100 that may be utilized to implement local device 102, remote devices 108 a, 108 b and 108 c (with reference to FIG. 1) as well as staging environment 302 or run-time environment 306 (with reference to FIG. 3). However, the following description of computer system 1100 is provided by way of example only and is not intended to be limiting. Rather, as noted elsewhere herein, each of the foregoing devices may comprise a server, a console, a personal digital assistant (PDA), a cellular phone, or any other computing device that is capable of executing software applications and displaying associated application-generated graphics and audio information to an end-user.
Referenced byCiting PatentFiling datePublication dateApplicantTitleUS7596536Jun 22, 2006Sep 29, 2009Exent Technologies, Ltd.System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing deviceUS7596540Dec 1, 2005Sep 29, 2009Exent Technologies, Ltd.System, method and computer program product for dynamically enhancing an application executing on a computing deviceUS7934196 *Aug 29, 2006Apr 26, 2011Kabushiki Kaisha ToshibaSoftware component and software component management systemUS8060460Aug 18, 2009Nov 15, 2011Exent Technologies, Ltd.System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing deviceUS8069136Aug 18, 2009Nov 29, 2011Exent Technologies, Ltd.System, method and computer program product for dynamically enhancing an application executing on a computing deviceUS8203566May 29, 2009Jun 19, 2012Microsoft CorporationFixed function pipeline application remoting through a shader pipeline conversion layerUS8356059Nov 14, 2008Jan 15, 2013Microsoft CorporationMethod and system for rapid and cost-effective development of user generated contentUS8498722May 31, 2011Jul 30, 2013United Video Properties, Inc.Systems and methods for generating media based on player action in an interactive video gaming environmentUS8628423Jun 28, 2011Jan 14, 2014United Video Properties, Inc.Systems and methods for generating video hints for segments within an interactive video gaming environmentUS8629885Oct 27, 2006Jan 14, 2014Exent Technologies, Ltd.System, method and computer program product for dynamically identifying, selecting and extracting graphical and media objects in frames or scenes rendered by a software applicationUS8657680May 31, 2011Feb 25, 2014United Video Properties, Inc.Systems and methods for transmitting media associated with a measure of quality based on level of game play in an interactive video gaming environmentEP2569063A1 *Feb 4, 2011Mar 20, 2013Sony Computer Entertainment America LLCPlacement of user information in a game spaceWO2012166456A1 *May 23, 2012Dec 6, 2012United Video Properties, Inc.Systems and methods for generating media based on player action in an interactive video gaming environmentWO2013002975A1 *Jun 6, 2012Jan 3, 2013United Video Properties, Inc.Systems and methods for generating video hints for segments within an interactive video gaming invironment* Cited by examinerClassifications U.S. Classification706/45International ClassificationG06F17/00Cooperative ClassificationG06F9/542, A63F2300/5546, A63F2300/209, A63F13/10, A63F2300/6018, A63F2300/577, A63F2300/5506, A63F2300/552, A63F2300/5513European ClassificationG06F9/54B, A63F13/10Legal EventsDateCodeEventDescriptionJan 17, 2007ASAssignmentOwner name: EXENT TECHNOLOGIES, INC., ISRAELFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TZRUYA, YOAV;LEVGOREN, ZVI;NAVE, ITAY;REEL/FRAME:018766/0621Effective date: 20061108RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google