System, method and computer program product for dynamically extracting and sharing event information from an executing software application

Abstract
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.
Description

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art(s) to make and use the invention.



FIG. 1 illustrates an exemplary system 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.



FIG. 2 depicts a flowchart of a method 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.



FIG. 3 depicts the hardware components of a system that monitors objects referenced or rendered by an application to facilitate the dynamic extraction and sharing of event information in accordance with an embodiment of the present invention.



FIG. 4 illustrates the software components of a system that monitors objects referenced or rendered by an application to facilitate the dynamic extraction and sharing of event information in accordance with an embodiment of the present invention.



FIG. 5 illustrates a conventional software architecture for a Microsoft® Windows® based PC that utilizes graphics libraries.



FIG. 6 illustrates a software architecture of a staging environment that includes emulated graphics and audio libraries, comprising components for indexing graphics and audio objects, in accordance with an embodiment of the present invention.



FIG. 7 illustrates a flowchart of a method used in a staging environment for facilitating the dynamic reporting and sharing of user achievement information in accordance with an embodiment of the present invention.



FIG. 8 illustrates a software architecture of a run-time environment that includes emulated graphics and audio libraries, comprising components that identify graphics and audio objects and apply business rules associated with the identified objects, in accordance with an embodiment of the present invention.



FIG. 9 illustrates a flowchart of a method used in a run-time environment for dynamically extracting and sharing of event information in accordance with an embodiment of the present invention.



FIG. 10 illustrates a network system for distributing and/or accessing software components in accordance with an embodiment of the present invention.



FIG. 11 depicts an example computer system in which an embodiment of the present invention may be implemented.



FIGS. 12A and 12B illustrate an object tagging component and an object measurement component useful for dynamically tracking and determining the impact of objects rendered and/or referenced by an application, without having to change and recompile the original application code, according to an embodiment of the invention.



FIG. 13 illustrates a flowchart of a method for dynamically tracking and determining the impact of objects rendered and/or referenced by an application, without having to change and recompile the original application code, according to an embodiment of the invention.



FIG. 14 illustrates a flowchart of a method used in a staging environment for tagging objects of interest, according to an embodiment of the invention.



FIG. 15 illustrates a flowchart of a method used in a run-time environment for tracking and determining the impact of an object of interest, according to an embodiment of the invention.



FIG. 16 illustrates a flowchart of a method used in a run-time environment for tracking and determining the impact of an object of interest, according to an alternative embodiment of the invention.



FIG. 17 is a flowchart illustrating a process for determining, measuring and/or collecting attribute information of an object of interest, according to an embodiment of the invention.



FIG. 18 illustrates an example of a flowchart of a method used in a run-time environment illustrating measurement criteria used to determine, measure and/or collect attribute information of an object of interest, according to an embodiment of the invention.



FIG. 19 is an example scene illustrating the manner in which an object (a camel) can be manually selected for subsequent tracking and measuring, according to an embodiment of the invention.



FIG. 20 is a flowchart illustrating an example embodiment for measuring exposure of an object using DirectX.



FIG. 21 is a flowchart of a method for publishing and subscribing to user-generated content associated with an event in accordance with an embodiment of the present invention.


Claims
  • 1. A method for dynamically sharing information indicative of the progress or performance of a user within a software application executing on a local device, comprising: monitoring the software application 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; andresponsive to a determination that the event has occurred, extracting information associated with the event and transmitting the extracted information from the local device for further processing.
  • 2. The method of claim 1, wherein monitoring a behavior of the software application during execution comprises monitoring objects referenced or rendered by the application.
  • 3. The method of claim 2, wherein monitoring objects referenced or rendered by the application comprises intercepting function calls generated by the application.
  • 4. The method of claim 1, wherein determining if an event has occurred comprises determining if one or more event criteria have been met.
  • 5. The method of claim 4, further comprising receiving the event criteria from a source external to the local device.
  • 6. The method of claim 1, wherein extracting information associated with the event comprises: permitting the user to generate content associated with the event.
  • 7. The method of claim 1, wherein transmitting the extracted information from the local device for use or viewing by another user comprises: transmitting the extracted information to at least one server for use in providing community features to one or more remote users.
  • 8. The method of claim 7, further comprising: permitting the user to generate content associated with the extracted information after the extracted information has been transmitted to the at least one server.
  • 9. The method of claim 1, further comprising: permitting the user to define an event; andextracting information associated with the user-defined event and transmitting the extracted information from the local device for use or viewing by another user.
  • 10. A system comprising: a processor; anda memory in communication with the processor, the memory storing a plurality of instructions for directing the processor to: execute a software application;monitor a behavior of the software application 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; andextract information associated with the event and transmit the extracted information from the system responsive to a determination that the event has occurred.
  • 11. The system of claim 10, wherein the plurality of instructions for directing the processor to monitor a behavior of the software application during execution includes: a plurality of instructions for directing the processor to monitor objects referenced or rendered by the application.
  • 12. The system of claim 11, wherein the plurality of instructions for directing the processor to monitor objects referenced or rendered by the application includes: a plurality of instructions for directing the processor to intercept function calls generated by the application.
  • 13. The system of claim 10, wherein the plurality of instructions for directing the processor to determine if an event has occurred includes: a plurality of instructions for directing the processor to determine if one or more event criteria have been met.
  • 14. The system of claim 13, further comprising: a plurality of instructions stored in the memory for directing the processor to receive the event criteria from a source external to the system.
  • 15. The system of claim 10, wherein the plurality of instructions for directing the processor to extract information associated with the event includes: a plurality of instructions for directing the processor to permit the user to generate content associated with the event.
  • 16. The system of claim 10, wherein the plurality of instructions for directing the processor to transmit the extracted information from the system includes: a plurality of instructions for directing the processor to transmit the extracted information to at least one server for use in providing community features to one or more remote users.
  • 17. The system of claim 10, further comprising: a plurality of instructions stored in the memory for directing the processor to: permit the user to define an event; andextract information associated with the user-defined event and transmit the extracted information from the local device for use or viewing by another user.
  • 18. A method for providing community features associated with a software application, comprising: storing event information received from a plurality of remotely-executing instances of the software application in a database, wherein the event information is inferentially derived through monitoring the execution of the remotely-executing instances of the software application; andexecuting an application that facilitates access to the event information by a plurality of remote users.
  • 19. The method of claim 18, wherein executing an application comprises executing a Web interface.
  • 20. The method of claim 18, wherein executing an application comprises executing a community features engine.
  • 21. The method of claim 18, wherein executing an application comprises providing leader boards or a high score table based on the event information.
  • 22. The method of claim 18, wherein executing an application comprises permitting two or more of the plurality of remote users to compete in a tournament.
  • 23. The method of claim 18, wherein executing an application comprises permitting league play between two or more of the plurality of remote users.
  • 24. The method of claim 18, wherein executing an application comprises permitting a remote user to access event information for use in augmenting a web-page.
  • 25. The method of claim 18, wherein storing the event information comprises storing user-generated content and wherein executing an application comprises permitting a remote user to access the user-generated content for dynamically enhancing a remotely-executing instance of the software application.
  • 26. The method of claim 18, wherein executing an application comprises permitting a first remote user to generate content associated with the event information.
  • 27. The method of claim 26, wherein executing an application further comprises permitting the first remote user to publish the generated content and a second remote user to subscribe to the content.
  • 28. A system for providing community features associated with a software application, comprising: a database configured to store event information received from a plurality of remotely-executing instances of the software application, wherein the event information is inferentially derived through monitoring the execution of the remotely-executing instances of the software application; andat least one server configured to execute an application that facilitates access to the event information by a plurality of remote users.
  • 29. The system of claim 28, wherein the application comprises a Web interface.
  • 30. The system of claim 28, wherein the application comprises a community features engine.
  • 31. The system of claim 28, wherein the application is configured to provide leader boards or a high score table based on the event information.
  • 32. The system of claim 28, wherein the application is configured to permit two or more of the plurality of remote users to compete in a tournament.
  • 33. The system of claim 28, wherein the application is configured to permit league play between two or more of the plurality of remote users.
  • 34. The system of claim 28, wherein the application is configured to permit a remote user to access event information for use in augmenting a web-page.
  • 35. The system of claim 28, wherein the event information includes user-generated content and wherein the application is configured to permit a remote user to access the user-generated content for dynamically enhancing a remotely-executing instance of the software application.
  • 36. A method for dynamically-enhancing an instance of a software application executing on a local device, comprising: receiving information associated with the progress or performance of a remote user in a remotely-executing instance of the software application; anddynamically augmenting graphics or audio content generated by the locally-executing instance of the software application based on the received information.
  • 37. The method of claim 36, wherein receiving information comprises receiving content created by the remote user and wherein dynamically augmenting graphics or audio content generated by the locally-executing instance of the software application comprises inserting the received content into a graphics or audio object rendered or referenced by the locally-executing instance of the software application.
  • 38. A system comprising: a processor; anda memory in communication with the processor, the memory storing a plurality of instructions for directing the processor to: execute an instance of a software application;receive information indicative of the progress or performance of a remote user in a remotely-executing instance of the software application; anddynamically augment graphics or audio content generated by the locally-executing instance of the software application based on the received information.
  • 39. The system of claim 38, wherein the plurality of instructions for directing the processor to receive information includes a plurality of instructions for directing the processor to receive content created by the remote user and wherein the plurality of instructions for directing the processor to dynamically augment graphics or audio content generated by the locally-executing instance of the software application includes a plurality of instructions for directing the processor to insert the received content into a graphics or audio object rendered or referenced by the locally-executing instance of the software application.
Provisional Applications (1)
Number Date Country
60797669 May 2006 US
Continuation in Parts (2)
Number Date Country
Parent 11472454 Jun 2006 US
Child 11545733 US
Parent 11290830 Dec 2005 US
Child 11472454 US