WO2003009135A2 - Multi-platform interactive applications - Google Patents
Multi-platform interactive applications Download PDFInfo
- Publication number
- WO2003009135A2 WO2003009135A2 PCT/GB2002/003246 GB0203246W WO03009135A2 WO 2003009135 A2 WO2003009135 A2 WO 2003009135A2 GB 0203246 W GB0203246 W GB 0203246W WO 03009135 A2 WO03009135 A2 WO 03009135A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- engine
- hardware module
- previous
- software application
- game
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Definitions
- This invention relates to technology for implementing real-time interactive software applications.
- the implementation of such applications on multiple incompatible platforms which use different hardware.
- 3-D ⁇ mens ⁇ onal (3-D) computer games There are a large number of different platforms that each comprise different hardware modules implementing different methods to generate the graphics, audio and input, etc. needed by a 3-D game application.
- a PC Personal Computer
- Playstation 2 ⁇ a Playstation 2 ⁇
- GameCube ⁇ a GameCube ⁇ and XboxTM
- a hardware method may be implemented by a hardware module comprising both software programs and physical circuitry.
- One approach with a software application such as a game has been to split off part of the game application's functionality into an engine, giving an architecture of: game module/engine/hardware module.
- the game module manages the game specific functions, including the position and behaviour of objects in a scene within the game.
- the engine then manages generic functionality that is independent from specific games, for example rendering, audio and input.
- this architecture it necessary for the game module to request the functionality of the hardware module by making procedure calls to the engine which map directly onto specific methods used by the hardware module.
- the game module communicates the nodes in the scene graph to the engine using a protocol which defines further assumptions that the game developer makes about the functionality and methods of the hardware module. These assumptions may relate to how the graphical elements that make up graphical objects are drawn, for example using elements which are triangles, or the order in which such graphical elements are drawn. If the engine is implemented in the C++ programming language, then the protocol may be defined by the game module source code compilation directly including all of the header files (filenames suffixed with .h) of the engine source code, which define the procedure calls and methods available in requests to the engine.
- the engine then communicates with the hardware module and makes sure that the requests from the game, e.g. by procedure calls, are executed correctly and in the right order.
- the engine source code compilation may itself include header files of the hardware module, if supported, but at least some protocol of allowed requests to the hardware module have to be defined.
- the engine ensures synchronous communication between the game module and the hardware module.
- the scene graph is constructed by the game module and the order processing of nodes in the scene graph is preserved through to execution of the methods by the hardware module.
- a first problem with this game module/engine/hardware module architecture is caused by the assumptions defined in the construction of the scene graph by the game module.
- the construction of the scene graph will assume a certain order of drawing of graphical objects by the hardware module of a particular platform. But a hardware module of an incompatible platform may draw objects in a different order.
- such fundamental differences as the order of drawing graphical objects will, by necessity, require modification of the game module (including the scene graph structure and ordering of nodes) and then recompiling, in order to correct corruption of the drawn images visible to the game player.
- a second problem with this game module/engine/hardware module approach is that the assumptions defined in the protocol used by the engine may well be appropriate and closely matched to the methods used by the hardware modules of a particular platform, but may be inappropriate to those methods of hardware modules of incompatible pre-existing or newly developed platforms. For example, if the protocol assumes that the hardware will use a method of drawing graphical objects using triangle graphical elements and the game module is programmed to use 1,000 triangles to draw a graphical object, such as a wheel, there is a problem when a new enhanced platform becomes available whose hardware module draws using more complex graphical elements such as NURBs (Non-Uniform Rational B-Splines) that represent 3-D curved surfaces rather than 2-D triangles.
- NURBs Non-Uniform Rational B-Splines
- NURBs may ideally facilitate the drawing of objects, such as a wheel, with many fewer NURB elements than triangle elements.
- a game module to engine protocol that did not recognise NURBs would force the game to draw the wheel using 1,000 NURBs that would each be constrained to be triangular in shape, thus losing the benefit of the enhancements developed in the new platform.
- the drawn wheel would look satisfactory to a game player, the same effect might have been achieved using many fewer NURBs, so releasing the game module for other processing such as adding more detail to the gameplay.
- the hardware module may be able to display the scene at a faster rate of lOOfps, but is limited by the need to wait for the synchronous delivery of requests from the game module via the engine. Simply reducing the scene complexity in order to increase the game module's performance to lOOfps would unacceptably detract from the appearance of the scene. Therefore in practice a user with a PC upgrading his or her computer graphics card that comprises the hardware module may not get the full benefit of its performance, because the frame rate is limited by the game module running on a general purpose central processing unit in the PC.
- HAL hardware abstraction layer
- HAL architecture adds another layer of procedure calls which have their own performance penalty. This is because computer instructions and processing cycles are needed purely to handle the transfer of program control and passing of parameters during a procedure call.
- HAL Hyper Text Mark-up Language
- a system for executing an interactive software application comprising: • a software application adapted to define model objects; • an engine adapted to store model objects responsive to said software application; and • a hardware module adapted to retrieve information about said model objects and to execute at least one method responsive to said retrieved information.
- the interactive software application is a computer game .
- the engine does not make a sequence of procedure calls to the hardware module.
- a system for executing an interactive software application comprising: • a software application; • a hardware module; and • an engine that does not make a sequence of procedure calls to the hardware module.
- an abstraction layer adapted to provide synchronous communication between said hardware module and said software application.
- said abstraction layer is further adapted to provide synchronous communication between said engine and said hardware module.
- Preferably source code compilation of said engine does not include any procedure and method definitions common to the hardware module source code.
- system further comprises a plurality of stored model objects that define the requirements of processing by the hardware module.
- software application communicates with said engine in order to define said model objects which are stored by said engine.
- said hardware module communicates with the engine in order to retrieve information about said model objects.
- Preferably said communication between the hardware module and the engine is initiated by the hardware module.
- said communication between said hardware module and said engine is asynchronous with respect to said communication between said software application and said engine.
- said hardware module executes at least one method responsive to said information that it has retrieved from said engine independently of the sequence that said model objects are stored by said engine.
- the platform that comprises said hardware module is a platform selected from the list of platforms: PC; Apple Macintosh; Playstation 2®; GameCube ⁇ ; Playstation ⁇ ; and XboxTM.
- the software application is a game software application.
- the engine comprises software executed on a general purpose computer.
- a method for executing an interactive software application comprising the steps:
- a software application communicates with an engine and defines model objects which are stored by said engine
- a hardware module communicates with said engine and retrieves information about said model objects that the hardware module requires to execute its methods
- the hardware module executes at least one method responsive to said retrieved information.
- said interactive software applications are computer games.
- said engine does not make a sequence of procedure calls to said hardware module.
- the method further comprises the step of synchronous communication between said hardware module and said software application via an abstraction layer. More preferably the method further comprises the step of synchronous communication between said engine and said hardware module via said abstraction layer.
- the system is implemented by computer software comprising program instructions which, when loaded onto a computer, cause said computer to perform as the system.
- the method is implemented by computer software comprising program instructions which, when loaded onto a computer, cause said computer to carry out the method.
- FIG. 1 is a schematic diagram of the components in the system in accordance with the current invention.
- FIG. 2 illustrates two flowcharts of the steps performed in accordance with the current invention.
- the invention is an improved system and method for developing and executing interactive software applications.
- the embodiments of the invention described with reference to the drawings comprise computer apparatus and processes performed in computer apparatus, the invention also extends to computer programs, particularly computer programs on or in a carrier, adapted for putting the invention into practice.
- the program may be in the form of source code, object code, a code of intermediate source and object code such as in partially compiled form suitable for use in the implementation of the processes according to the invention.
- the carrier may be any entity or device capable of carrying the program.
- the carrier may comprise a storage medium, such as ROM, for example a CD ROM or a semiconductor ROM, or a magnetic recording medium, for example, floppy disc or hard disc.
- the carrier may be a transmissible carrier such as an electrical or optical signal which may be conveyed via electrical or optical cable or by radio or other means.
- the carrier may be constituted by such cable or other device or means.
- the carrier may be an integrated circuit in which the program is embedded, the integrated circuit being adapted for performing, or for use in the performance of, the relevant processes.
- a game 11 communicates 12 to an engine 13 about what the game wants hardware to do.
- the engine which is implemented purely in software, then executes as much of this as possible in a hardware independent manner and stores the results as model objects 14.
- the hardware 15 then reads 16 this information directly from the engine asynchronously with respect to the game to engine communication 12 and executes its hardware methods, e.g., rendering, audio or input, in order to do what is required by the game.
- This architecture may be described as two overlapping components: game/engine; and engine/hardware module
- the main program loop of the game can therefore be slowed down to, say, 30fps, with the knowledge that the hardware will not be constrained by this bottleneck and will be able to execute its methods as its own (faster) rate. Having slowed down the main loop to 30fps, the game is able to process more detail in the main loop itself, e.g., more cars in a racing game or other gameplay related improvements.
- the hardware 15 knows about the engine, i.e., instead of the hardware having its low level (HAL) interface called by some unknown entity (the engine) , the hardware can directly query the engine and retrieve exactly the information it needs in order to execute its methods.
- the engine contains information about what needs to be done and the hardware decides how, when and if it needs to do anything. In doing this, the hardware is free to execute as fast as it can, unconstrained by the frame rate of the game.
- the source code compilation of the hardware can directly include all of the header (.h) files of the engine, but the engine and the game cannot include any header files of the hardware. It is also the case that the hardware cannot include any header files from the game. This again enforces the decoupling between the hardware and both the game module and engine.
- the hardware may use a model library to enable it to execute its methods.
- the model library may describe a design for a wheel, described either as a collection of NURBs or triangles, as appropriate to the hardware itself.
- the hardware module may use any maths library or any order of drawing graphical objects in order to execute its methods, e.g., rendering.
- a useful analogy in describing this system and its differences from the prior art is that here the game defines objectives in the way that a manager may define objectives, and then it is up to the hardware to achieve the objectives to the best of its ability, in the way that an employee may achieve objectives in an individual way, according to his or her ability.
- a prior art game acts as a manager who uses a directive approach that dictates at a detailed resolution the particular tasks and order of execution of the tasks that are required to achieve the objectives.
- a limited abstraction layer 17 implemented in software makes it possible for the hardware to talk synchronously to the game 18, 19, and the engine to talk to the hardware 120, 18 using a protocol that shields the hardware from the game in the first case, and the engine from the hardware in the second case.
- the abstraction layer is only used for a limited set of communications that are common to all games and hardware, but will not depend on the specific methods used either by hardware in the execution of its methods or by games in the differentiating aspects of their game play.
- the hardware is completely decoupled from the game and engine for nearly all of the system functionality and any coupling is limited to game generic functions. This makes it possible for the hardware to implement all of its tasks in a potentially 100% optimum manner. Using this architecture, it makes it possible to produce a game once on one platform and then port the same game without software modification or recompilation to other target platforms without any performance penalty on the target platforms.
- FIG 2 illustrates two flowcharts that describe the steps related to the communication between the game and the engine 20, and the steps related to the communication between the engine and the hardware 21.
- the game defines model objects that describe, for example, the form, co-ordinates and vector of motion in a 3D space 22.
- the engine stores the model objects 23. These may be stored in a database or a table, and the model objects thus stored may be constructed directly by the game and passed to the engine or the model objects may be constructed by the engine in response to requests or procedure calls from the game.
- steps are performed 21 in relation to communication between the hardware and the engine.
- the hardware retrieves 24 the model object or information about the model object from the engine using a request, for example a database query.
- the order in which model objects or information about such objects is retrieved from the engine is independent of the order in which the model objects have been stored in the engine. Therefore, for example, the use of a first-in first-out stack for storage of the model objects would be unsuitable in this architecture.
- the hardware executes its methods 25 using the information or model objects it has retrieved.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02751314A EP1410183A2 (en) | 2001-07-16 | 2002-07-16 | Multi-platform interactive applications |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0117201.4 | 2001-07-16 | ||
GB0117201A GB0117201D0 (en) | 2001-07-16 | 2001-07-16 | Multi-platform technology |
GB0124385A GB0124385D0 (en) | 2001-10-11 | 2001-10-11 | Mulit-platform interactive applications |
GB0124385.6 | 2001-10-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2003009135A2 true WO2003009135A2 (en) | 2003-01-30 |
WO2003009135A3 WO2003009135A3 (en) | 2004-02-12 |
Family
ID=26246312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/GB2002/003246 WO2003009135A2 (en) | 2001-07-16 | 2002-07-16 | Multi-platform interactive applications |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP1410183A2 (en) |
WO (1) | WO2003009135A2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2193828A1 (en) * | 2008-12-04 | 2010-06-09 | Disney Enterprises, Inc. | Communication hub for video game development systems |
US7765539B1 (en) * | 2004-05-19 | 2010-07-27 | Nintendo Co., Ltd. | System and method for trans-compiling video games |
US8176124B2 (en) | 2008-12-04 | 2012-05-08 | Disney Enterprises, Inc. | Communication hub for video game development systems having a video game development tool and video game platforms with communication libraries |
US8317606B2 (en) | 2008-12-04 | 2012-11-27 | Disney Enterprises, Inc. | Live authoring method for real time development of video games |
US8788243B2 (en) | 2011-02-14 | 2014-07-22 | Disney Enterprises, Inc. | Performance metrics gathering from multiple video game platforms |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0860773A1 (en) * | 1997-02-21 | 1998-08-26 | Alcatel | Method of generating a software application |
EP1033648A2 (en) * | 1999-02-11 | 2000-09-06 | Sun Microsystems, Inc. | Mechanism by which platform independent software may bind to and access platform dependent software |
US6128011A (en) * | 1998-08-31 | 2000-10-03 | Sony Corporation Of Japan | Cross-platform digital signal processing designs using Java and C |
WO2000072583A1 (en) * | 1999-05-21 | 2000-11-30 | General Instrument Corporation | Software architecture for a television set-top terminal providing compatibility with multiple operating environments |
-
2002
- 2002-07-16 EP EP02751314A patent/EP1410183A2/en not_active Withdrawn
- 2002-07-16 WO PCT/GB2002/003246 patent/WO2003009135A2/en not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0860773A1 (en) * | 1997-02-21 | 1998-08-26 | Alcatel | Method of generating a software application |
US6128011A (en) * | 1998-08-31 | 2000-10-03 | Sony Corporation Of Japan | Cross-platform digital signal processing designs using Java and C |
EP1033648A2 (en) * | 1999-02-11 | 2000-09-06 | Sun Microsystems, Inc. | Mechanism by which platform independent software may bind to and access platform dependent software |
WO2000072583A1 (en) * | 1999-05-21 | 2000-11-30 | General Instrument Corporation | Software architecture for a television set-top terminal providing compatibility with multiple operating environments |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765539B1 (en) * | 2004-05-19 | 2010-07-27 | Nintendo Co., Ltd. | System and method for trans-compiling video games |
EP2193828A1 (en) * | 2008-12-04 | 2010-06-09 | Disney Enterprises, Inc. | Communication hub for video game development systems |
US8176124B2 (en) | 2008-12-04 | 2012-05-08 | Disney Enterprises, Inc. | Communication hub for video game development systems having a video game development tool and video game platforms with communication libraries |
US8317606B2 (en) | 2008-12-04 | 2012-11-27 | Disney Enterprises, Inc. | Live authoring method for real time development of video games |
US9149721B2 (en) | 2008-12-04 | 2015-10-06 | Disney Enterprises, Inc. | Communication hub for video game development systems |
US8788243B2 (en) | 2011-02-14 | 2014-07-22 | Disney Enterprises, Inc. | Performance metrics gathering from multiple video game platforms |
Also Published As
Publication number | Publication date |
---|---|
WO2003009135A3 (en) | 2004-02-12 |
EP1410183A2 (en) | 2004-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230033306A1 (en) | Image rendering method and apparatus, computer device, and storage medium | |
US10599405B2 (en) | Application system having an LLVM compiler | |
US5907704A (en) | Hierarchical encapsulation of instantiated objects in a multimedia authoring system including internet accessible objects | |
US5764241A (en) | Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior | |
AU2008203192B2 (en) | Data processing system and method | |
US7565279B2 (en) | Callbacks in asynchronous or parallel execution of a physics simulation | |
US10846816B2 (en) | Multi-user application system environment engine | |
US20020038451A1 (en) | System and method for leveraging independent innovation in entertainment content and graphics hardware | |
KR20040086481A (en) | Systems and methods for implementing shader-driven compilation of rendering assets | |
Behr et al. | Utilizing x3d for immersive environments | |
US7877749B2 (en) | Utilizing and maintaining data definitions during process thread traversals | |
Bierbaum et al. | Software tools for virtual reality application development | |
US20130127849A1 (en) | Common Rendering Framework and Common Event Model for Video, 2D, and 3D Content | |
WO2003009135A2 (en) | Multi-platform interactive applications | |
Borycki | Programming for Mixed Reality with Windows 10, Unity, Vuforia, and UrhoSharp | |
EP3752914B1 (en) | Techniques for native runtime of hypertext markup language graphics content | |
CN117032895A (en) | Simulation operation control method and system based on illusion engine | |
Dietrich et al. | VRML scene graphs on an interactive ray tracing engine | |
Gwennap | Intel’s MMX speeds multimedia | |
CA2393604A1 (en) | Processing data | |
KR100692210B1 (en) | Method for rendering objects in game engine and recordable media recording programs for enabling the method | |
CN111111197B (en) | Game engine data processing system and method based on DirectX platform | |
Revie | Designing a Data-Driven Renderer | |
Tang | Application of engine technology and in 3D animation production | |
Sutherland | Beginning Android C++ game development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ CZ DE DE DK DK DM DZ EC EE EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2002751314 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 2002751314 Country of ref document: EP |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 2002751314 Country of ref document: EP |
|
NENP | Non-entry into the national phase in: |
Ref country code: JP |
|
WWW | Wipo information: withdrawn in national office |
Country of ref document: JP |