WO2019083747A1 - Synchronisation d'événements pour système informatique de développement - Google Patents

Synchronisation d'événements pour système informatique de développement

Info

Publication number
WO2019083747A1
WO2019083747A1 PCT/US2018/055760 US2018055760W WO2019083747A1 WO 2019083747 A1 WO2019083747 A1 WO 2019083747A1 US 2018055760 W US2018055760 W US 2018055760W WO 2019083747 A1 WO2019083747 A1 WO 2019083747A1
Authority
WO
WIPO (PCT)
Prior art keywords
broadcast
computing system
software application
development
component
Prior art date
Application number
PCT/US2018/055760
Other languages
English (en)
Inventor
Gershom L. Payzer
Richard Michael Fox
Gregory M. Smith
Connor Peet
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Priority to EP18796556.1A priority Critical patent/EP3685267A1/fr
Publication of WO2019083747A1 publication Critical patent/WO2019083747A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/69Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Definitions

  • Some software applications output graphical content that can be broadcast to interested viewers over a computer network.
  • a broadcast may include one or more broadcast features enabling viewers of the broadcast to interact with the software application itself.
  • a broadcast feature may allow a viewer to provide a bonus to one or more players or teams participating in a video game or e-sports competition.
  • FIG. 1 depicts an example of a gameplay broadcast including broadcast features.
  • FIG. 2 illustrates interaction between a software application, a broadcasting service hosting broadcast features, and a viewer device.
  • FIG. 3 schematically shows an example development computing system interacting with a broadcasting service.
  • FIG. 4 schematically shows a different example development computing system interacting with a network service.
  • FIG. 5 illustrates an example method for application development iteration.
  • FIG. 6 schematically illustrates detection of a change in state of a broadcast feature by an event synchronization component.
  • FIG. 7 illustrates another example method for application development iteration.
  • FIG. 8 schematically illustrates detection of a change in the running of a software application in a pre-build preview state by an even synchronization component.
  • FIG. 9 schematically shows an example computing system.
  • a "network feature” generally refers to an application, process, tool, widget, etc., that can be accessed over a network by one or more external users or devices to review or interact with data provided by a software application.
  • network features can include leaderboards, achievements/trophies, online matchmaking functions, broadcast features, etc.
  • these network features are built on platforms and using tools that are separate from the development environment that the developer uses to maintain the core game code. Furthermore, it is often desirable for a single game to support multiple different network platforms, meaning it is often necessary to develop multiple different versions of the same network feature. This added complexity can significantly increase the time and effort required to build software applications, especially during testing of changes.
  • a video game developer may decide to modify an existing network feature. This will likely involve accessing an external service hosting the network feature, using tools provided by the external service to modify the network feature, and waiting potentially several hours for the changes to propagate and become live.
  • the developer before the modified network change can be tested, the developer must also make changes to core game code related to the modified network feature using their own development environment, separate from the external service. This often requires a lengthy and resource-intensive compile step to produce an updated build of the game. Only after this lengthy process is complete can the developer test their changes. Should the developer conclude that additional changes are necessary, the above process must be repeated, requiring potentially large amounts of time for what could amount to a trivial bug fix.
  • a “broadcast feature” as used herein is typically any application, process, tool, widget, etc., provided to viewers of a broadcast of graphical content output by a software application (e.g., a video game). Broadcast features often allow broadcast viewers to interact with the software application itself. For example, while watching two players compete in a video game environment, a viewer may use a broadcast feature to provide a specific player with a temporary bonus. In this scenario, both players are running a video game application created by a particular developer, and graphical content provided by the video game application is being broadcast over the Internet via a network-based broadcasting service.
  • Viewers can watch the gameplay by accessing the broadcasting service, which hosts the broadcast features that allow the viewers to interact with the running video game application. Should the developer wish to test a change to the broadcast feature, they will likely need to edit the video game software, wait for a new build of the video game software to compile, edit the broadcast features hosted on the broadcasting service, then wait for those changes to propagate and go live, all before changes can be tested.
  • the broadcasting service hosts the broadcast features that allow the viewers to interact with the running video game application.
  • the present disclosure is directed to techniques for facilitating rapid iteration in software application development.
  • a development computing system including an application development component, a broadcast feature editing component, and an event synchronization component.
  • the application development component may, for instance, include a set of processes and tools useable to create and maintain software application code, assets, and/or resources, and may in some cases be specific to a particular programming language, game development engine, etc.
  • the broadcast feature editing component can be any software usable to build and maintain broadcast features associated with a software application, and is often specific to a particular broadcasting service on which the finished broadcast features will be hosted.
  • the event synchronization component functions as an interface between the application development component and broadcast feature editing component, and is configured to coordinate operations by the application development component and broadcast feature editing component.
  • both the software application and broadcast features can be edited locally, and key operations performed by the application development component (e.g., starting or stopping a preview, changing files, compiling software, terminating a process) can be communicated to the broadcast feature editing component, and vice versa, via the event synchronization component.
  • the event synchronization component bridges the developer's local application development component and development tools associated with the external network service, allowing the developer to more effectively test changes at both locations in tandem.
  • the increased integration between the application development component and broadcast feature editing component can allow for near-instantaneous local testing of changes, without requiring lengthy compile or publish steps, and using real network- provided data. This can significantly improve the developer's ability to rapidly iterate and test changes to their application, which can improve the efficiency of the software development process at all levels.
  • the present disclosure primarily focuses on software applications taking the form of video games that work in tandem with some number of externally-hosted network features meant to enhance the video game experience, for players and/or viewers.
  • the herein-described techniques can be used to facilitate the development of any suitable software application that incorporates one or more broadcast or other network features.
  • the application development iteration techniques described herein could be applied in the realm of educational software, in which students remotely view and interact with a live lecture, robotics software, in which a robot firmware and remote control interface are developed in tandem, remote operated surgical robotics, etc.
  • a "software application” useable with “network features” may refer to any computer software that produces at least some content accessible remotely via a network service using network features or tools hosted on the network service.
  • a broadcast feature is a specific variety of network feature that often facilitates viewer interaction with a broadcast of graphical content.
  • a broadcasting service is a specific variety of network service that hosts network features - namely, a service that facilitates broadcasting and remote viewing of graphical content output by a software application.
  • the present disclosure primarily focuses on broadcast features and broadcasting services, it will be understood that the herein-described techniques may be applied to any suitable network features and services. Accordingly, the development iteration techniques described herein may be applied to any network feature paired with any software application, and accessed via any network service.
  • a broadcast feature can take the form of a viewer control provided as part of a video game broadcast experience.
  • Many video game broadcast services allow individual players, groups of players, professional leagues, etc., to broadcast graphical output of a video game application to interested viewers over the Internet.
  • Such viewers often have some ability to interact with players of the video game and/or with the video game software itself by manipulating viewer controls included as part of a user interface displayed to the viewers. Examples of viewer controls include chat interfaces, voting buttons, interactive maps, inventory screens, statistics viewers, etc.
  • viewers may affect the video game application by, for example, altering one or more properties or variables of the video game application, thereby affecting how the video game application is executed.
  • Other viewer controls may, for example, allow a viewer to access and review data associated with the video game application, thereby allowing the viewer to view statistics, inventory screens, maps, item locations, current objectives, etc.
  • FIG. 1 An example user interface 100 presented to a viewer of a video game broadcast is shown in FIG. 1.
  • User interface 100 includes graphical content 102 output by a video game application.
  • FIG. 1 illustrates a broadcast of video gameplay, which may, for example, be provided by a single individual playing a game on their own personal device, a group of individuals playing a game hosted on a network-based server, professional competitors playing a video game while located in a real-world arena, and/or any other suitable party.
  • FIG. 1 illustrates a broadcast of video gameplay, which may, for example, be provided by a single individual playing a game on their own personal device, a group of individuals playing a game hosted on a network-based server, professional competitors playing a video game while located in a real-world arena, and/or any other suitable party.
  • FIG. 1 illustrates a broadcast of video gameplay, which may, for example, be provided by a single individual playing a game on their own personal device, a group of individuals playing a game hosted on a
  • gameplay broadcasting may be facilitated by an Internet-accessible broadcasting service, or other network service (e.g., a service maintained by a hardware manufacturer of a gaming device, a software developer of a video game application, an organization hosting a video game competition, a 3 rd party streaming service), and transmitted to interested viewers along with one or more broadcast features that allow viewers of the broadcast to interact with players of the video game and/or the video game itself.
  • an Internet-accessible broadcasting service e.g., a service maintained by a hardware manufacturer of a gaming device, a software developer of a video game application, an organization hosting a video game competition, a 3 rd party streaming service
  • graphical content 102 is accompanied by broadcast features 104A-
  • the broadcast features allow viewers of the video game broadcast to manage the inventory of a player participating in the video game.
  • selection of broadcast feature 104 A causes the video game application providing the graphical content to automatically change the player's equipped item to a "rifle.”
  • selection of broadcast features 104B or 104C changes the player's equipped item to a "shotgun" or "knife,” respectively.
  • viewer selection of one of the broadcast features 104A may not immediately change the player's equipped item. Rather, selection of one of the broadcast features 104 may amount to a suggestion to the player of an item that the viewer believes the player should equip.
  • selection of one of the broadcast features 104 may constitute a vote for the item that the viewer believes the player should use. Upon a particular item receiving a majority of the votes cast by viewers, it may be automatically equipped. Alternatively, the item with the most votes may be automatically equipped once an in-game condition or threshold is met (e.g., the start of a new match), or the player may simply be provided a notification indicating which item a majority of viewers voted for. It will be understood that broadcast features, such as those shown in FIG. 1, may function in any suitable way.
  • the user interface shown in FIG. 1, including the graphical content produced by the video game application as well as the broadcast features, are presented as examples and are not limiting.
  • a user interface may include more/fewer/different components and interactable elements, having any suitable sizes and positions.
  • broadcast features may be manipulated/interacted with in any suitable way, and can be used to provide any suitable input to a video game player and/or video game application.
  • the software application providing output for remote viewing is not a video game application, other broadcast features may be used besides the broadcast features shown in FIG. 1.
  • FIG. 2 schematically illustrates how a software application, such as the video game application of FIG. 1, may interact with a network service (i.e., broadcasting service) hosting one or more network features (e.g., broadcast features), such as broadcast features 104.
  • a network service i.e., broadcasting service
  • FIG. 2 shows a client device 200 running a software application 202.
  • Client device 200 may be any suitable network-accessible computing device including, for example, a video game console, a laptop computer, desktop computer, smartphone, tablet, wearable computing device, augmented/virtual reality computing device, server computer, etc.
  • client device 200 may be implemented as computing system 900 described below with respect to FIG. 9.
  • software application 202 may be any suitable software application that outputs graphical content that can be accessed or viewed by one or more remote devices or users.
  • the present disclosure generally uses the example of a video game application, however other types of software applications are also within the scope of this disclosure.
  • a broadcasting service may take any suitable form and may be provided by any suitable party.
  • the broadcast features may be any features, tools, processes, widgets, applications, etc., useable by external users or devices to access or interact with the output of a software application running on the client device.
  • a broadcasting service can include any number of broadcast features and/or other network features, including multiplayer-specific features (e.g., rules/algorithms for matchmaking), leaderboards, statistics aggregators, trophies/achievements, interface controls such as those described above with respect to FIG. 1, etc.
  • FIG. 2 also shows interaction between broadcasting service 204 and a viewer device 208.
  • broadcast features hosted by a broadcasting service may allow one or more external devices or users to access or interact with data associated with a software application running on a client device.
  • viewer device 208 may be a personal device belonging to a viewer of the video game broadcast that is rendering user interface 100 based on data provided by the broadcasting service.
  • broadcasting service 204 may take output provided by software application 202 (e.g., graphical output from a video game), pair it with the broadcast features, and provide it to the viewer device.
  • This provides some advantages, as it allows the core software application to enjoy a degree of platform independence, and support multiple different broadcasting services, provided those services include similar network features.
  • the tools useable for building broadcast features on a given broadcasting service are frequently provided by the broadcasting service itself, allowing the developer to build the core software application, then build complementary broadcast features on any broadcasting services they would like the software application to support.
  • a developer will often make use of a personal development computing system 300 equipped with an application development component 302 to build the source code, assets, resources, etc., of a software application 304.
  • this software application will be stored in a pre-build state (e.g., non-compiled source code and assets).
  • the application development component will often include one or more computer programs, shells, interpreters, tools, etc., which may often correspond to specific programming languages or video game development engines.
  • the application development component may be configured to run all or part of the software application in a preview state, allowing the developer to test changes to the game code without compiling a new build.
  • broadcast feature editing component 308 of one or more broadcasting service computers 306 of a broadcasting service can be used to build broadcast features 310 that interact with the software application. Practically, this can include logging on to a development platform provided by the network service, from which the developer can specify or change rules for multiplayer matchmaking; add/modify leaderboards, achievements, or rewards; add or change statistics monitoring or aggregation features; design or modify broadcast features for video game broadcast scenarios; etc.
  • FIG. 3 the environment illustrated in FIG. 3 is not always conducive to rapid iteration with regard to modifying broadcast features.
  • Network services often include an arbitrarily large number of different servers and other network infrastructure that are in more or less constant use and are only taken offline infrequently and when necessary. Accordingly, when a developer makes a change to a broadcast feature using the broadcast feature editing component, it can take potentially several hours for the change to propagate throughout the broadcasting service and become visible to the developer. Similarly, changing a broadcast feature often requires making modifications to the core software application code itself, to ensure that the software application supports the modified feature.
  • testing interactions between the software application and the modified broadcast feature often requires that the software application be in a compiled state (as opposed to running in a pre-build preview mode within the application development component). Compiling a software application of any significant size often requires several hours.
  • FIG. 4 schematically illustrates an example development computing system 400 useable to develop both software applications and broadcast features associated with those software applications.
  • Development computing system 400 may include any suitable hardware and/or software components, and in some cases, may be implemented as a desktop computer, laptop computer, smartphone, tablet, wearable device, augmented/virtual reality device, etc.
  • Development computing system may be implemented as computing system 900 described below with respect to FIG. 9.
  • Development system 400 includes an application development component
  • application development component 402 that, as with application development component 300 of FIG. 3, will typically include one or more computer programs, shells, interpreters, tools, etc., useable to build and maintain software application code, application, and/or other resources.
  • the application development component may in some cases be configured to support one or more specific programming languages or video game development engines.
  • Development computing system 400 also includes a broadcast feature editing component 404.
  • the broadcast feature editing component includes a collection of software and tools that are stored locally on the development computing system, such software and tools being useable to build and edit broadcast features that cooperate with a software application.
  • broadcast feature editing component 404 may be used to modify network features that are hosted by a remote network service. As shown in FIG. 4, broadcast feature editing component 404 is communicatively coupled with broadcasting service 406. This enables communication back and forth between the development computing system and broadcasting service, allowing the development computing system to retrieve or modify data (e.g., broadcast features) located at the broadcasting service.
  • the development computing system may maintain local copies of files that represent the broadcast features, and automatically synchronize changes to these local copies with the network service. Further, communication with the network service allows the development computing system to retrieve real network-provided data from the network service. This can be beneficial during testing of software applications and network features, for example allowing the developer to test how a leaderboard or statistics aggregator functions when provided with real data from players around the world.
  • Development computing system 400 also includes an event synchronization component 408, configured to interface with the application development component and broadcast feature editing component.
  • the event synchronization component is configured to monitor operations of both the application development component and supplemental broadcast feature editing component. This can include, for example, monitoring system processes of the development computer system, using plugins or Application Programming Interfaces (APIs) to access data, watching for changes to a local file system, etc.
  • APIs Application Programming Interfaces
  • the event synchronization component may coordinate operations of both the application development component and broadcast feature editing component.
  • the application development component may be configured to run all or part of a software application in a pre-build, preview state.
  • the broadcast feature editing component may be configured to present broadcast features in a pre-production, preview mode.
  • the event synchronization component may be configured to convey user interaction with one preview to a different preview.
  • a developer may be testing a broadcast feature taking the form of a virtual joystick that allows viewers to temporarily control the software application (e.g., control a player-character in a video game).
  • the event synchronization component can capture the detected input and provide it to a pre- build preview of the software application running in the application development component, causing the software application preview to respond just as if a post-build software application had received a real viewer input from the broadcasting service.
  • FIG. 5 illustrates an example method 500 for application development iteration.
  • Method 500 may be implemented on any suitable computer hardware, including a desktop computer, laptop computer, mobile computing device (e.g., smartphone or tablet), augmented/virtual reality computing device, server computer, etc.
  • method 500 may be implemented on computing system 900 described below with respect to FIG. 9.
  • method 500 includes, at an application development component of a development computing system, running a software application developed using the application development component in a pre-build preview state.
  • this may involve running all or part of the software application in the application development component without first compiling the software application assets and source code. This can enable the developer to rapidly test changes to the application code, though has drawbacks as compared to running the application in a post-build state. For instance, typically a pre- build preview version of a software application will be unable to communicate with a network service or interact with live broadcast features.
  • method 500 includes, at a broadcast feature editing component of the development computing system, changing a state of a pre-production preview version of a broadcast feature.
  • pre-production preview version refers to a broadcast feature that is locally stored and maintained/presented/rendered by the broadcast feature editing component, as opposed to a production version of the broadcast feature that is hosted by a network service and is actively network-accessible.
  • the broadcast feature editing component may present a pre- production preview version of a broadcast feature that already exists on the broadcasting service - e.g., for testing how the developer's changes will affect existing features.
  • the production version of the broadcast feature is manipulable by viewers of a broadcast to alter running of a post-build version of the software application, while the pre- production preview version only exists on the development computing system, and is only visible to the developer.
  • the broadcast feature editing component may present pre-production preview versions of broadcast features that are being actively developed or that otherwise have never existed on the network service.
  • the developer may use the broadcast feature editing component to create a new broadcast feature, then view and interact with a pre-production preview version of that broadcast feature.
  • the pre-production preview version of the broadcast feature is represented by computer files stored locally by the development computing system.
  • Such computer files may take any suitable form.
  • the broadcast feature may be represented by Hypertext Markup Language (HTML) files, Cascading Style Sheets (CSS) files, JavaScript Object Notation (JSON) files, and/or computer files having any other suitable type.
  • HTTP Hypertext Markup Language
  • CSS Cascading Style Sheets
  • JSON JavaScript Object Notation
  • a remote copy of these computer files may be stored on the broadcasting service (e.g., the production version of the broadcast feature, or an in-development version of the broadcast feature), and the broadcast feature editing component may synchronize changes to the locally-stored computer files with the broadcasting service.
  • Changing a state of a pre-production preview version of a broadcast feature can refer to a variety of potential operations performed by the broadcast feature editing component.
  • the broadcast feature editing component will render and display to the developer a preview of what the broadcast feature will look like to viewers watching a broadcast of graphical content output by a post-build version of the software application (i.e., a pre-production preview of the broadcast feature).
  • the developer may interact with the pre-production preview just as a viewer would interact with a production version of the broadcast feature while watching a broadcast.
  • changing the state of the broadcast feature can include the developer interacting with the broadcast feature just as a user would, for instance by actuating virtual buttons, manipulating a virtual joystick, panning or zooming on an environment map, etc.
  • testing of the broadcast feature may be enhanced when the broadcast feature editing component incorporates real software application usage data provided by the broadcasting service.
  • the broadcast feature editing component incorporates real software application usage data provided by the broadcasting service.
  • the statistics aggregator may be desirable for the statistics aggregator to use real data generated via players actually playing the video game, as opposed to static data pulled from a default test file.
  • changing the state of a pre-production preview version of a broadcast feature can include modifying the locally-stored computer files that represent the computer file. For instance, the developer may make a change to the appearance or coding of the broadcast feature, or delete the broadcast feature entirely.
  • method 500 includes, at an event synchronization component of the development computing system, detecting the changed state of the broadcast feature, and based on the changed state, altering the running of the software application in the pre-build preview state. This can occur in a variety of different ways, depending on the nature of the changed state of the broadcast feature.
  • the broadcast feature is a virtual j oystick that allows a viewer to change the position of a player-character ordinarily controlled by a broadcasting player. Accordingly, when the developer changes the state of the pre-production preview version of the broadcast feature (i.e., by manipulating the virtual joystick), the event synchronization component may instruct the application development component to change the position of a player-character within a game environment of the software application running in the pre-build preview state.
  • the broadcast feature may allow a viewer to provide a player-character with a bonus, powerup, ability, etc. Accordingly, altering the running of the software application in the pre-build preview state can include providing a bonus to the player character.
  • the broadcast control may allow viewers to change a player-character's inventory. Accordingly, altering the running of the software application in the pre-build preview state can include changing the inventory of the player-character based on the changed state of the broadcast feature.
  • the running of the software application in the pre-build preview state may be altered in any number of ways, depending on the specific broadcast feature being tested, and the specific way in which the state of the broadcast feature is changed.
  • changing the state of the broadcast feature can include modifying or deleting the locally-stored files associated with the broadcast feature.
  • the event synchronization component may instruct the application development component to change and/or delete application assets and/or code pertaining to the broadcast feature, thereby altering how the software application runs in the pre-build preview state.
  • the event synchronization component may detect the changed state of the pre-production preview version of the broadcast feature in any suitable way.
  • the event synchronization component may be a command-line executable service configured to scan for changes to a local filesystem, analyze how local applications allocate and manipulate data stored in memory, subscribe to events reported by software applications on the development computing system (e.g., the application development and broadcast feature editing components), read and/or write data maintained by other applications via an API, and/or generally monitor local data manipulated by software on the development computing system.
  • the event synchronization component may take other suitable forms, and detect broadcast feature state changes in other suitable ways, depending on the operating system and software environment of the development computing system.
  • FIG. 6 schematically shows an example broadcast feature editing component
  • broadcast feature 602A can change the position of a player-character in a game environment
  • broadcast feature 602B can change the player-character's inventory
  • broadcast feature 602C can award a bonus to the player character. It will be understood that the appearances and functions of these broadcast features are examples, and that broadcast features may be presented in any suitable way and have any suitable functions.
  • FIG. 6 also schematically shows an example event synchronization component 604, which has detected a change in state 606 of one or more of the pre- production preview broadcast features 602A-602C. Based on the change in state, the event synchronization component coordinates with an application development component 608 to alter the running of a pre-build, preview version of a software application 610. As discussed above, altering the running of the software application may be done in any number of ways, depending on the specific software application and broadcast features in question, and how the state of the broadcast feature was changed.
  • the broadcast feature editing and application development components are separate pieces of software, often associated with different services and frequently running on different computing systems.
  • the broadcast feature editing component enables creating, editing, and testing of broadcast features, such broadcast features would ordinarily have no effect on the running of a pre-build preview software application in a separate piece of software (i.e., the application development component). It is only through use of the event synchronization component that the development iteration advantages described herein are achieved.
  • FIG. 7 illustrates another example method 700 for application development iteration.
  • method 700 may be implemented on any suitable computer hardware, including a desktop computer, laptop computer, mobile computing device (e.g., smartphone or tablet), augmented/virtual reality computing device, server computer, etc.
  • method 700 may be implemented on computing system 900 described below with respect to FIG. 9.
  • method 700 includes, at an application development component of a development computing system, running a software application developed using the application development component, the software application running in a pre-build preview state.
  • method 700 includes, at a broadcast feature editing component of the development computing system, maintaining a pre-production preview version of a broadcast feature. Both steps 702 and 704 may be done substantially as discussed above.
  • method 700 includes, at an event synchronization component of the development computing system, detecting a change in the running of the software application in the pre-build preview state, and changing a state of the broadcast feature to reflect the change in running of the software application.
  • the event synchronization component may instruct the broadcast feature editing component to update the state of the statistics aggregator to reflect the change.
  • other changes to the running of the software application can have other effects on broadcast features of the broadcast feature editing component, depending on the specific circumstances.
  • the event synchronization component may detect the change in running of the software application in any suitable way. For example, as discussed above, the event synchronization component may detect the change by watching for changes to a local filesystem, analyzing local data stored in memory, subscribing to application events, receiving updates via an API, etc.
  • FIG. 8 schematically shows another example application development component 800 running an example software application 802 in a pre-build preview state.
  • FIG. 8 also schematically shows an example event synchronization component 804, which has detected a change 806 in the running of the software application, and instructs a broadcast feature editing component 808 to update the state of a broadcast feature.
  • the broadcast feature editing component may update a leaderboard broadcast feature 81 OA to reflect a player-character's win/loss, or a statistics aggregator 810B to reflect an updated number of enemies defeated, shots fired, distance travelled, etc.
  • the specific broadcast features shown in FIG. 8 are examples, and are not limiting.
  • events detectable by the event synchronization component can include: software starts compiling, software finishes compiling, a user requests to save their work, a preview is generated, a specific action is taken within a preview, a new process is started or stopped, a program is shut down, etc.
  • the event synchronization component may take any suitable action.
  • the broadcast feature editing component can also be instructed to save its changes.
  • the broadcast feature editing component can be instructed to pause its shutdown as the application development component finishes processing.
  • the event synchronization component can instruct the broadcast feature editing component to also begin a preview of the network feature controls.
  • the methods and processes described herein may be tied to a computing system of one or more computing devices.
  • such methods and processes may be implemented as a computer-application program or service, an application-programming interface (API), a library, and/or other computer-program product.
  • API application-programming interface
  • FIG. 9 schematically shows a non-limiting embodiment of a computing system 900 that can enact one or more of the methods and processes described above.
  • Computing system 900 is shown in simplified form.
  • Computing system 900 may take the form of one or more personal computers, server computers, tablet computers, home- entertainment computers, network computing devices, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phone), and/or other computing devices.
  • Computing system 900 includes a logic machine 902 and a storage machine
  • Computing system 900 may optionally include a display subsystem 906, input subsystem 908, communication subsystem 910, and/or other components not shown in FIG. 9.
  • Logic machine 902 includes one or more physical devices configured to execute instructions.
  • the logic machine may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs.
  • Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result.
  • the logic machine may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic machine may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. Processors of the logic machine may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the logic machine optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the logic machine may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration.
  • Storage machine 904 includes one or more physical devices configured to hold instructions executable by the logic machine to implement the methods and processes described herein. When such methods and processes are implemented, the state of storage machine 904 may be transformed— e.g., to hold different data.
  • Storage machine 904 may include removable and/or built-in devices.
  • Storage machine 904 may include optical memory (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory (e.g., RAM, EPROM, EEPROM, etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others.
  • Storage machine 904 may include volatile, nonvolatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content- addressable devices.
  • storage machine 904 includes one or more physical devices.
  • aspects of the instructions described herein alternatively may be propagated by a communication medium (e.g., an electromagnetic signal, an optical signal, etc.) that is not held by a physical device for a finite duration.
  • a communication medium e.g., an electromagnetic signal, an optical signal, etc.
  • logic machine 902 and storage machine 904 may be integrated together into one or more hardware-logic components.
  • Such hardware-logic components may include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC / ASICs), program- and application-specific standard products (PSSP / ASSPs), system-on-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.
  • FPGAs field-programmable gate arrays
  • PASIC / ASICs program- and application-specific integrated circuits
  • PSSP / ASSPs program- and application-specific standard products
  • SOC system-on-a-chip
  • CPLDs complex programmable logic devices
  • module may be used to describe an aspect of computing system 900 implemented to perform a particular function.
  • a module, program, or engine may be instantiated via logic machine 902 executing instructions held by storage machine 904. It will be understood that different modules, programs, and/or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same module, program, and/or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc.
  • module may encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc.
  • a “service”, as used herein, is an application program executable across multiple user sessions.
  • a service may be available to one or more system components, programs, and/or other services.
  • a service may run on one or more server-computing devices.
  • display subsystem 906 may be used to present a visual representation of data held by storage machine 904.
  • This visual representation may take the form of a graphical user interface (GUI).
  • GUI graphical user interface
  • Display subsystem 906 may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with logic machine 902 and/or storage machine 904 in a shared enclosure, or such display devices may be peripheral display devices.
  • input subsystem 908 may comprise or interface with one or more user-input devices such as a keyboard, mouse, touch screen, or game controller.
  • the input subsystem may comprise or interface with selected natural user input (NUI) componentry.
  • NUI natural user input
  • Such componentry may be integrated or peripheral, and the transduction and/or processing of input actions may be handled on- or off-board.
  • NUI componentry may include a microphone for speech and/or voice recognition; an infrared, color, stereoscopic, and/or depth camera for machine vision and/or gesture recognition; a head tracker, eye tracker, accelerometer, and/or gyroscope for motion detection and/or intent recognition; as well as electric-field sensing componentry for assessing brain activity.
  • communication subsystem 910 may be configured to communicatively couple computing system 900 with one or more other computing devices.
  • Communication subsystem 910 may include wired and/or wireless communication devices compatible with one or more different communication protocols.
  • the communication subsystem may be configured for communication via a wireless telephone network, or a wired or wireless local- or wide-area network.
  • the communication subsystem may allow computing system 900 to send and/or receive messages to and/or from other devices via a network such as the Internet.
  • a method for application development iteration comprises: at an application development component of a development computing system, running a software application developed using the application development component in a pre-build preview state; at a broadcast feature editing component of the development computing system, changing a state of a pre-production preview version of a broadcast feature associated with a broadcasting service configured to broadcast graphical content output by a post-build version of the software application; and at an event synchronization component of the development computing system, detecting the changed state of the broadcast feature, and based on the changed state, altering the running of the software application in the pre- build preview state.
  • the software application is a video game.
  • altering the running of the software application in the pre-build preview state includes altering a position of a player-character within a game environment of the video game. In this example or any other example, altering the running of the software application in the pre-build preview state includes providing a bonus to a player-character. In this example or any other example, altering the running of the software application in the pre-build preview state includes changing an inventory of a player- character.
  • the broadcast feature editing component incorporates real software application usage data provided by the broadcasting service. In this example or any other example, a production version of the broadcast feature is manipulable by viewers of the broadcast to alter running of the post-build version of the software application.
  • computer files representing the pre-production preview version of the broadcast feature are locally stored by the development computing system.
  • the broadcast feature editing component synchronizes changes to the computer files representing the pre- production preview version of the broadcast feature with the broadcasting service.
  • the event synchronization component is a command-line executable service.
  • the event synchronization component detects the changed state of the pre-production preview version of the broadcast feature via monitoring of local data manipulated by the broadcast feature editing component.
  • a method for application development iteration comprises: at an application development component of a development computing system, running a software application developed using the application development component in a pre-build preview state; at a broadcast feature editing component of the development computing system, maintaining a pre-production preview version of a broadcast feature associated with a broadcasting service configured to broadcast graphical content output by a post-build version of the software application; and at an event synchronization component of the development computing system, detecting a change in the running of the software application in the pre-build preview state, and changing a state of the broadcast feature to reflect the change in running of the software application.
  • the software application is a video game.
  • the broadcast feature is a leaderboard.
  • the broadcast feature is a gameplay statistics aggregator.
  • the broadcast feature editing component incorporates real software application usage data provided by the broadcasting service.
  • the event synchronization component is a command-line executable service.
  • computer files representing the pre-production preview version of the broadcast feature are locally stored by the development computing system.
  • the event synchronization component detects the change in running of the software application via monitoring of local data manipulated by the application development component.
  • a development computing system comprises: an application development component configured to run a video game application developed using the application development component in a pre-build preview state; a broadcast feature editing component configured to facilitate editing and manipulation of pre-production preview versions of broadcast features associated with a broadcasting service, the broadcasting service configured to broadcast graphical content output by a post-build version of the video game application; and an event synchronization component configured to monitor local data manipulated by the broadcast feature editing component to detect a change in state of a broadcast feature of the broadcast feature editing component, and based on the changed state, alter the running of the video game application in the non-compiled preview state.

Abstract

Un composant de développement d'application d'un système informatique de développement exécute une application logicielle développée par le composant de développement d'application dans un état de prévisualisation de pré-construction. Un composant d'édition de caractéristique de diffusion du système informatique de développement modifie un état d'une version de prévisualisation de pré-production d'une caractéristique de diffusion associée à un service de diffusion conçu pour diffuser un contenu graphique délivré par une version de post-construction de l'application logicielle. Un composant de synchronisation d'événements du système informatique de développement détecte l'état modifié de la caractéristique de diffusion et, sur la base de l'état modifié, modifie le déroulement de l'application logicielle dans l'état de prévisualisation de pré-construction.
PCT/US2018/055760 2017-10-23 2018-10-13 Synchronisation d'événements pour système informatique de développement WO2019083747A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP18796556.1A EP3685267A1 (fr) 2017-10-23 2018-10-13 Synchronisation d'événements pour système informatique de développement

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762575936P 2017-10-23 2017-10-23
US62/575,936 2017-10-23
US15/865,582 US10191722B1 (en) 2017-10-23 2018-01-09 Event synchronization for development computing system
US15/865,582 2018-01-09

Publications (1)

Publication Number Publication Date
WO2019083747A1 true WO2019083747A1 (fr) 2019-05-02

Family

ID=65032081

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2018/055760 WO2019083747A1 (fr) 2017-10-23 2018-10-13 Synchronisation d'événements pour système informatique de développement

Country Status (3)

Country Link
US (1) US10191722B1 (fr)
EP (1) EP3685267A1 (fr)
WO (1) WO2019083747A1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11090569B1 (en) * 2018-10-31 2021-08-17 Snap Inc. Game testing system
US20220067169A1 (en) * 2020-08-28 2022-03-03 Secure Code Warrior Limited Method and apparatus for generating security vulnerability guidelines

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006171A1 (en) * 2005-06-30 2007-01-04 Makaram Raghunandan System development tool
US8317606B2 (en) * 2008-12-04 2012-11-27 Disney Enterprises, Inc. Live authoring method for real time development of video games
US20150304697A1 (en) * 2014-04-18 2015-10-22 Microsoft Corporation Changing broadcast without interruption to active gameplay

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758093A (en) 1996-03-29 1998-05-26 International Business Machine Corp. Method and system for a multimedia application development sequence editor using time event specifiers
JPH11239670A (ja) * 1998-02-25 1999-09-07 Sony Corp 携帯用電子機器
US7168062B1 (en) * 1999-04-26 2007-01-23 Objectbuilders, Inc. Object-oriented software system allowing live modification of an application
US7634787B1 (en) * 1999-06-15 2009-12-15 Wink Communications, Inc. Automatic control of broadcast and execution of interactive applications to maintain synchronous operation with broadcast programs
US7448024B2 (en) 2002-12-12 2008-11-04 Bea Systems, Inc. System and method for software application development in a portal environment
US8328610B2 (en) 2006-08-16 2012-12-11 Nintendo Co., Ltd. Intelligent game editing system and method with autocomplete and other functions that facilitate game authoring by non-expert end users
US7853925B2 (en) 2006-12-13 2010-12-14 Sap Ag System and method for managing hierarchical software development
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US20120324418A1 (en) 2011-06-20 2012-12-20 Chad Gerid Fallon Software Application Framework Using Microsoft SharePoint
KR20140033858A (ko) * 2012-09-11 2014-03-19 삼성전자주식회사 사용자 단말의 상태 변화에 기초한 측위 서비스 제공 방법 및 그 사용자 단말
US20150099588A1 (en) 2013-10-09 2015-04-09 Zynga Inc. Systems and methods of distributing game network features
US9588760B1 (en) 2015-11-24 2017-03-07 International Business Machines Corporation Software application development feature and defect selection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006171A1 (en) * 2005-06-30 2007-01-04 Makaram Raghunandan System development tool
US8317606B2 (en) * 2008-12-04 2012-11-27 Disney Enterprises, Inc. Live authoring method for real time development of video games
US20150304697A1 (en) * 2014-04-18 2015-10-22 Microsoft Corporation Changing broadcast without interruption to active gameplay

Also Published As

Publication number Publication date
US10191722B1 (en) 2019-01-29
EP3685267A1 (fr) 2020-07-29

Similar Documents

Publication Publication Date Title
EP3681609B1 (fr) Diffusion en continu interactive inter-plateformes
US10143924B2 (en) Enhancing user experience by presenting past application usage
US9751011B2 (en) Systems and methods for a unified game experience in a multiplayer game
CA2825223C (fr) Emulation a distance de dispositifs informatiques
US10765954B2 (en) Virtual event broadcasting
US10814230B2 (en) Interactive event broadcasting
US10864448B2 (en) Shareable video experience tailored to video-consumer device
WO2021021341A1 (fr) Exécution de jeu locale pour visualisation et parties pour spectateurs
US10191722B1 (en) Event synchronization for development computing system
US11141656B1 (en) Interface with video playback
Liu et al. A modularity design approach to behavioral research with immersive virtual reality: A SkyrimVR-based behavioral experimental framework
JP2019155103A (ja) ゲームリプレイ方法およびシステム
JP7464336B2 (ja) ビデオゲームにおけるサーバベースのビデオヘルプ
US20190282895A1 (en) Control sharing for interactive experience
Todd Preserving Video Game Significance: A Practical Guide for Video Game Preservation, Exhibition, and their Significant Properties
Mehta et al. Second mind: a system for authoring behaviors in virtual worlds
Nieminen Preparing a newly published video game for Steam Deck verification
KR101701127B1 (ko) 스킨 조합에 따른 효과 부여 방법 및 시스템
CN117316195A (zh) 剧情视频文件的编辑方法、装置、电子设备及存储介质
Chojnacki et al. The design and implementation of multiplayer, web-based, 2D game made in client-server architecture
NO20111454A1 (no) Et system for utvikling av dataspill pa internett

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18796556

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018796556

Country of ref document: EP

Effective date: 20200422