Systems and methods for remotely modifying cloud-based client applications - Patents.com

The cloud-based client application platform allows for remote modification and monetization of client applications through NFTs, addressing monetization challenges and enhancing user interaction and distribution efficiency.

JP2025539222APending Publication Date: 2025-12-04SKILLZ PLATFORM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025522956
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-10-20
Filing Date
2023-10-20
Publication Date
2025-12-04

AI Technical Summary

Technical Problem

The development and distribution of modified mobile video games, or 'mods', face challenges in monetization due to app store-based distribution, hindering the growth of modding communities and making it difficult for creators to participate effectively.

Method used

A system and method for remotely modifying cloud-based client applications using a cloud-based client application platform, enabling real-time streaming of video and audio to a user's browser, allowing interaction and modification through local browsers, and providing tools for monetization via non-fungible tokens (NFTs).

Benefits of technology

Facilitates easy modification, distribution, and monetization of cloud-based client applications across various devices, supporting interaction and enhancement regardless of hardware, and simplifies the process for users and creators.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025539222000001_ABST
    Figure 2025539222000001_ABST
Patent Text Reader

Abstract

A method, system, and apparatus, including a computer program encoded on a computer storage medium, for remotely modifying a cloud-based client application, the method including receiving a first request to initiate an interactive session with the cloud-based client application, reserving an application engine in response to the first request, receiving a second request to modify the cloud-based client application executing on the application engine using one or more software tools, modifying the cloud-based client application in the application engine, and providing media data associated with the modified cloud-based client application to a first user.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Application No. 63 / 380,333, filed October 20, 2022, the entire contents of which are incorporated herein by reference. [Background technology]

[0002] background The development and distribution of client applications designed to run on mobile devices (called mobile applications) has increased significantly with the popularity of mobile devices. Mobile applications can provide users with a wide variety of functions and features, as well as access to vast amounts of information, to meet virtually any need or interest. Modifying mobile video games ("mods" or "mods") is a common method used by gamers and fans to improve gameplay, enhance content creation, and add new features not present in the mobile video game originally released by the video game developer. Furthermore, mobile video game mods have complicated monetization. For example, app store-based distribution for mobile applications has made it difficult for game developers and creators to create, distribute, and monetize modified games. In some cases, game developers have purchased popular mods or developed communities entirely on their own. The lack of a clear monetization model has hindered the growth of modding communities and made it more difficult for creators to participate. Summary of the Invention [Means for solving the problem]

[0003] overview The present invention relates to a system and method for remotely modifying a cloud-based client application. According to the present invention, a client application can be remotely emulated on a cloud-based client application platform. Video and audio from the cloud-based client application can be streamed in real time to a browser running on a user's client device. The user can interact with the cloud-based client application through a local browser as if the cloud-based client application were running natively on the client device. Input from the user can be transmitted back to the client application engine to enable the user to control and interact with the cloud-based client application in real time. The cloud-based client application platform can provide cloud-based software tools to enable users to remotely create, enhance, add new functionality, or modify existing functionality, or otherwise modify the cloud-based client application for distribution and use by other users. The cloud-based client application platform can also provide tools for monetizing the modified cloud-based client application, for example, by enabling users to mint, purchase, and sell non-fungible tokens (NFTs) to monetize the modified cloud-based client application in an NFT ecosystem. The present invention can support interaction with cloud-based client applications on any client device running any operating system, regardless of the client device's underlying hardware and device characteristics.

[0004] In one aspect, a method includes receiving, by at least one data processor, a first request from a first client device of a user to initiate an interactive session with a cloud-based client application, the cloud-based client application configured to execute on a second client device, the second client device comprising a different computing platform than the first client device. For example, modifying the cloud-based application executing on the application engine includes storing data associated with the modified cloud-based application in a database.

[0005] For example, the modified cloud-based application is configured to be found and used by the application engine in subsequent active sessions.

[0006] For example, use of one or more software tools may occur via a browser installed on a client device.

[0007] For example, modifying a cloud-based application may include enhancing content creation, adding new functionality, removing functionality, or changing existing functionality.

[0008] For example, the method may further include receiving, by the at least one data processor, a third request from the first client device to transform the modified cloud-based client application into a digital asset, and transforming, by the at least one data processor, the modified cloud-based client application into a digital asset based on the third request.

[0009] For example, the method may further include receiving, by the at least one processor, a fourth request from the first client device to transform the digital asset; monetizing, by the at least one processor, the digital asset via a third-party platform based on the fourth request; and transmitting, by the at least one processor, a result of the transformation of the digital asset to the first client device.

[0010] For example, transforming a digital asset may include converting the digital asset into a non-fungible token (NFT).

[0011] In one aspect, a system includes at least one data processor and a memory storing instructions that, when executed by the at least one data processor, cause the at least one data processor to perform operations. The operations include receiving a first request from a first client device of a user to initiate an interactive session with a cloud-based client application, the cloud-based client application configured to execute on a second client device, the second client device comprising a different computing platform than the first client device. The operations also include reserving an application engine from a pre-instantiated application engine pool of a plurality of pre-instantiated application engine pools to execute the cloud-based client application remotely from the first client device in response to the first request. The operations also include receiving a second request from the first client device to modify the cloud-based client application executing on the application engine using one or more software tools, the one or more software tools configured to execute on a different computing platform than the first client device. The operations also include modifying the cloud-based client application executing on the application engine using the one or more software tools. The operations also include providing media data associated with the modified cloud-based client application to the first user via a display application executing on the first client device.

[0012] For example, modifying a cloud-based application running on an application engine may include storing data associated with the modified cloud-based application in a database.

[0013] For example, the modified cloud-based application is configured to be found and used by the application engine in subsequent active sessions.

[0014] For example, use of one or more software tools may occur via a browser installed on a client device.

[0015] For example, modifying a cloud-based application may include enhancing content creation, adding new functionality, removing functionality, or changing existing functionality.

[0016] For example, the operations further include receiving a third request from the first client device to convert the modified cloud-based client application into a digital asset, and converting the modified cloud-based client application into a digital asset based on the third request.

[0017] For example, the operations further include receiving a fourth request to monetize the digital asset from the first client device, monetizing the digital asset via a third-party digital asset marketplace based on the fourth request, and transmitting results of the monetization of the digital asset to the first client device.

[0018] For example, transforming a digital asset may include converting the digital asset into a non-fungible token (NFT).

[0019] In one aspect, a computer program product comprises a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor forming part of at least one computing system, cause the at least one programmable processor to perform operations. The operations include receiving a first request from a first client device of a user to initiate an interactive session with a cloud-based client application, the cloud-based client application configured to execute on a second client device, the second client device comprising a different computing platform than the first client device. The operations also include reserving an application engine from a pre-instantiated application engine pool of a plurality of pre-instantiated application engine pools to execute the cloud-based client application remotely from the first client device in response to the first request. The operations also include receiving a second request from the first client device to modify the cloud-based client application executing on the application engine using one or more software tools, the one or more software tools configured to execute on a different computing platform than the first client device. The operations also include modifying the cloud-based client application executing on the application engine using one or more software tools, and providing media data associated with the modified cloud-based client application to the first user via a display application executing on the first client device. [Brief explanation of the drawings]

[0020] BRIEF DESCRIPTION OF THE DRAWINGS The above embodiments will be more fully understood from the following detailed description taken in conjunction with the accompanying drawings, in which: The drawings are not intended to be drawn to scale. For clarity, not every component is labeled in every drawing. In the drawings:

[0021] [Figure 1] FIG. 1 is a block diagram illustrating an example of a system for remotely modifying cloud-based client applications.

[0022] [Figure 2] FIG. 2 is a block diagram illustrating an example of a cloud-based client application platform with multiple application engine module pools for remotely modifying cloud-based client applications.

[0023] [Figure 3] FIG. 3 is a block diagram illustrating an example of a cloud-based client application platform with multiple application engine module pools and multiple application instance module pools for remotely modifying cloud-based client applications.

[0024] [Figure 4] FIG. 4 is a block diagram illustrating an example of a cloud-based client application platform for remotely modifying cloud-based client applications.

[0025] [Figure 5] FIG. 5 is a block diagram illustrating an example of a system for remotely modifying and monetizing cloud-based client applications.

[0026] [Figure 6] FIG. 6 is a flow chart illustrating an example method for remotely modifying and monetizing cloud-based client applications.

[0027] [Figure 7] FIG. 7 is a flow chart illustrating an example method for remotely modifying a cloud-based client application.

[0028] [Figure 8] FIG. 8 is a block diagram of an example computing device that may perform one or more of the operations described herein according to embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0029] Detailed Description of the Invention Certain exemplary embodiments will now be described to provide a general understanding of the principles of the structure, function, manufacture, and use of the devices and methods disclosed herein. One or more examples of these embodiments are illustrated in the accompanying drawings. Those skilled in the art will understand that the devices and methods specifically described herein and shown in the accompanying drawings are non-limiting exemplary embodiments, and that the scope of the invention is defined only by the claims. Features illustrated or described in connection with one exemplary embodiment may be combined with features of other embodiments. Such modifications and variations are intended to be included within the scope of the present invention. Furthermore, in this disclosure, like-named components of embodiments generally have similar characteristics, and therefore, within a particular embodiment, every feature of each like-named component is not necessarily described in detail.

[0030] The present invention relates to a system and method for remotely modifying cloud-based client applications. According to the present invention, a client application can be remotely rendered on an emulated client device on a cloud-based client application platform. Video and audio from the cloud-based client application can be streamed in real time to a browser or other application running on a user's client device. The user can interact with the cloud-based client application through a local browser or other application as if the cloud-based client application were running natively on the client device. Input from the user can be sent back to the remote emulated device to enable the user to control and interact with the cloud-based client application in real time. In some embodiments of the present invention, the cloud-based client application platform can provide cloud-based software tools that enable users to remotely create, enhance, add new functionality, modify existing functionality, or otherwise modify the cloud-based client application for distribution and use by other users. The cloud-based client application platform can also provide tools for monetizing the modified cloud-based client application, for example, by enabling users to mint, purchase, and sell non-fungible tokens (NFTs) to monetize the modified cloud-based client application in an NFT ecosystem. The present invention can support interaction with cloud-based client applications on any client device running any operating system, regardless of the client device's underlying hardware and device characteristics.Cloud-based client applications may include, for example, mobile games or any other suitable type of client application that can be remotely operated from a client device. The present invention may simplify the process of modifying, distributing, and monetizing client applications because users are not required to install each client application, can easily try many different client applications, and can easily switch and move between client applications on any client device. For purposes of explanation only and not limitation, this disclosure may refer to a cloud-based mobile game as an exemplary cloud-based client application for illustrating various aspects of the present invention. However, the present invention may be used with any suitable type of client application that can be modified, remotely rendered, and remotely operated on a client device.

[0031] FIG. 1 is a block diagram illustrating an exemplary cloud-based client application platform 100 for remotely modifying cloud-based client applications, according to an embodiment of the present disclosure. The cloud-based client application platform 100 may include a server system 102. The server may be cloud-based (e.g., Amazon Web Services, Google Cloud, Microsoft Azure, or another suitable cloud-based infrastructure provider) or may be comprised of dedicated server hardware. The server system 102 may include an application engine module controller 104. The application engine module controller 104 may include multiple application engine modules 106 for supporting any suitable type of cloud-based client application. In embodiments, each application engine module of the multiple application engine modules 106 may be configured to emulate a particular type and configuration of a client device for executing the cloud-based client application. For example, in some implementations of the present invention, each or any of the application engine modules may include a suitable client device emulator. Each cloud-based client application may execute within a respective application engine module of the multiple application engine modules 106 as if the client application were running natively on a given client device. The application engine module controller 104 may enable registration / deregistration of application engine modules, atomic reservation of application engine modules, querying of application engine modules, and the like.The multiple application engine modules 106 may include a first application engine module 108, a second application engine module 114, a third application engine module 120, ..., and an Nth application engine module 126, where N may be any suitable natural number and may vary over time as described below. Each application engine module 108, 114, 120, ..., 126 may include a video / audio module for managing video and / or audio media data generated by a cloud-based client application executing on the respective application engine module and transmitting such video and / or audio media data to a client device for display to a user. Each application engine module 108, 114, 120, ..., 126 may also include a state module for receiving and processing input from the client device (e.g., mapping input to video / audio streams) generated while a user (remotely) interacts with the cloud-based client application. Each state module may also maintain the state of the cloud-based client application executing on the respective application engine module 108, 114, 120, ..., 126. For example, the first application engine module 108 may include a first video / audio module 110 in communication with a first state module 112. The second application engine module 114 may include a second video / audio module 116 in communication with a second state module 118. The third application engine module 120 may include a third video / audio module 122 in communication with a third state module 124. The Nth application engine module 126 may include an Nth video / audio module 128 in communication with an Nth state module 130.The application engine module controller 104 may maintain any suitable number of application engine modules and may register (i.e., instantiate, allocate, or otherwise create) or deregister (i.e., delete or deallocate) the application engine modules as needed. In one embodiment, the server system 102 may include multiple application engine module controllers 104, each managing a respective plurality of application engine modules 106 to form one or more application engine module clusters.

[0032] In some implementations of the present invention, each application engine module 108, 114, 120, ... 126 can be launched as an essential container within a ReplicaSet, such as Kubernetes, using, for example, a webRTC bridge (media channel for video / audio media data), OpenGL, or other suitable technology to support real-time media communication capabilities with a browser or other suitable application running on a client device. A ReplicaSet is a process that can launch multiple instances of an application engine module and maintain a specified number of application engine modules constant. A ReplicaSet can maintain a specified number of application engine module instances running within or in conjunction with the application engine module controller 104 at any given time to prevent users from losing access to cloud-based client applications when an application engine module fails or is inaccessible. In one embodiment, each application engine module 108, 114, 120, ... 126 can also include health checks, etc., and a transmitter proxy (as either an egress proxy or an ingress proxy, or both) that can handle, for example, Cross-Origin Resource Sharing (CORS) requests or other similar requests. Additionally or alternatively, each application engine module 108, 114, 120, ... 126 may include a debug bridge for receiving and processing debug and other application engine commands (e.g., from the application engine reservation controller 134 described below).

[0033] In one embodiment, the application engine module controller 104 may include a video / audio communication module 132 for supporting media communication between an application engine module of the plurality of application engine modules 106 and a client device. In an alternative embodiment, the video / audio communication module 132 may reside within the server system 102 but may be external to and in communication with the application engine module controller 104. Additionally or alternatively, each or any application engine module of the plurality of application engine modules 106 may include or communicate with a respective video / audio communication module 132. In other words, each or any of the plurality of video / audio communication modules 132 may reside within or be associated with each or any of the application engine modules of the plurality of application engine modules 106. In some implementations of the present invention, the video / audio communication module 132 may comprise a TURN (Traversal Using Relay NAT) server or the like (e.g., a STUN (Session Traversal Utilities for NAT) server or the like) for supporting communication of video / audio media data between the application engine module and a client device. Additionally or alternatively, the video / audio communication module 132 may comprise a suitable encoder for encoding video, for example, in h.264 or VP8 for WebRTC, etc. However, other suitable server communication protocols, encoding techniques, and / or transmission protocols for video / audio media data are also possible.

[0034] The server system 102 may include an application engine reservation controller 134 in communication with the application engine module controller 104. In an embodiment, the application engine reservation controller 134 may control various aspects of the plurality of application engine modules 106, including, for example, coordinating application engine scaling, controlling application engine access, and managing the initialization of application engine modules for users. The application engine reservation controller 134 may include an application engine inventory and reservation module 136. The application engine inventory and reservation module 136 may track and manage an inventory of all application engine modules in the plurality of application engine modules 106. The application engine inventory and reservation module 136 may also grant application engine reservations for use in active sessions. In some embodiments of the present invention, when a user requests to start an active session with a cloud-based client application, the application engine inventory and reservation module 136 may reserve an appropriate application engine module, load the reserved application engine module with the requested cloud-based client application (if not already loaded or pre-loaded), populate or cause to be populated the loaded cloud-based client application with appropriate user and / or application data (e.g., user profile information, user account information, application state information, etc. to support user interaction and engagement with the cloud-based client application), and bind or otherwise link the reserved application engine module to the active session.If there are no application engine modules available for the active session, the application engine inventory and reservation module 136 can instruct the application engine module controller 104 (e.g., via the application engine scaler module 138 described below) to add and register a new application engine module.

[0035] In some embodiments of the present invention, the registration process can be performed asynchronously. For example, the application engine inventory and reservation module 136 can wait for new application engine modules to be added and reserved by periodically polling the application engine module controller 104 or by receiving an appropriate message from the application engine module controller 104 after a task is completed. Once an application engine module is registered, it can be reserved for an active session and bound to the active session. In some embodiments of the present invention, an application engine module reserved for an active session may be accessible only to the user who requested it and only for the life of the active session. In other words, an application engine module reserved for a particular active session may not be used or accessed by another user during that active session. In some embodiments of the present invention, data stored in or otherwise used by a reserved application engine module during an active session may be temporary. For example, the application engine module can be deregistered at the end of the active session. Thus, any and all data stored or otherwise used by the application engine module during that active session can be deleted, for example, prior to deregistration of the application engine module. In alternative embodiments, data stored or otherwise used in a reserved application engine module during an active session may be stored (e.g., stored in database 146), retrieved, and used by the user in a subsequent active session. When an application engine module is deregistered, it may be reused for another active session, or its computing resources may be reallocated to a different application engine module.

[0036] In an embodiment, the application engine reservation controller 134 may include an application engine scalar module 138 that communicates with the application engine inventory and reservation module 136. The application engine scalar module 138 may respond to inventory and reservation changes by adding and instantiating new application engine modules to the plurality of application engine modules 106. The application engine scalar module 138 may proactively scale the number of application engine modules in the plurality of application engine modules 106 based on usage trends or other suitable metrics, for example, to maintain a sufficiently sized pool of reservable application engine modules. For example, the application engine scalar module 138 may store a predetermined threshold (e.g., provided or generated based on usage trends or other suitable metrics) for the size of the pool of the plurality of application engine modules 106. If the number of reservable application engine modules decreases below the predetermined threshold, the application engine scalar module 138 may add a new application engine module to the plurality of application engine modules 106 to increase the number of reservable application engine modules above the predetermined threshold. If the increase in the number of reservable application engine modules becomes excessively large (e.g., exceeds a second predetermined threshold), the application engine scaler module 138 may take no action, or may remove or otherwise deallocate unnecessary excess application engine modules from the plurality of application engine modules 106. Additionally or alternatively, suitable machine learning / artificial intelligence techniques may be employed by the application engine scaler module 138 to appropriately and dynamically scale the number of reservable application engine modules in the plurality of application engine modules 106.For example, a machine learning model can be trained based on usage data from users (e.g., usage trends, peak usage, off-hour usage, etc.). The machine learning model can then be used to dynamically add and remove / de-allocate application engine modules within the plurality of application engine modules 106. The machine learning model can be updated or otherwise adapted as usage data evolves over time.

[0037] In some implementations of the present invention, multiple application engine modules 106 may be associated with or otherwise correspond to and communicate with one or more application engine module pools, which may be managed, for example, by application engine inventory and reservation module 136 and / or application engine scalar module 138. For example, the application engine modules for each or any emulated client device supported by cloud-based client application platform 100 may be maintained in a single, large application engine module pool. Application engine modules for active sessions requested by users may be allocated, reserved, and instantiated from such a single, large application engine module pool, for example, by application engine inventory and reservation module 136 and / or application engine scalar module 138. However, accessing and instantiating each application engine module from such a single, large application engine module pool may create potential bottlenecks. For example, it may take a significant amount of time and computing resources to separately spin up each application engine module, especially when there may be tens of thousands, hundreds of thousands, or even millions of users with corresponding application engine modules instantiated for cloud-based client application platform 100 at any given time. The resulting allocation delays can adversely affect the performance of the cloud-based client application platform 100 and user interaction, potentially resulting in user dissatisfaction and even user churn.

[0038] FIG. 2 is a block diagram illustrating an exemplary cloud-based client application platform 200 having multiple application engine module pools for remotely modifying cloud-based client applications, according to an embodiment of the present disclosure. In some implementations of the present invention, each or any of the multiple application engine modules 206 can be associated with and communicate with a separate application engine module pool, which may be maintained, for example, by the application engine inventory and reservation module 136 and / or the application engine scaler module 138, with each application engine module pool supporting a particular type of application engine module or a set of related types of application engine modules. The multiple application engine modules 206 can operate in a manner similar to that described and illustrated with respect to the multiple application engine modules 106 of FIG. 1. In the embodiment shown in FIG. 2, each cloud-based client application can have or be associated with its own individual application engine module pool. For example, each pool of the multiple application engine module pools can be configured to support a single cloud-based client application, such that each pool of the multiple application engine module pools can be allocated for each cloud-based client application. By way of example and not limitation, a Klondike Solitaire mobile game designed to run on an Android smartphone may be supported by a first application engine module 108, which may be associated with a first application engine module pool 205 of first application engine modules.A Klondike Solitaire PC game designed to run on a PC laptop can be supported by a second application engine module 114, which can be associated with a second application engine module pool 210 of the second application engine module. A Klondike Solitaire mobile game designed to run on an iOS smartphone can be supported by a third application engine module 120, which can be associated with a third application engine module pool 215 of the third application engine module. A Klondike Solitaire game designed to run on a game console can be supported by an Nth application engine module 126, which can be associated with an Nth application engine module pool 220 of the Nth application engine module, etc. Alternatively, each pool of the multiple application engine module pools can be configured to support a set of related application engine modules (e.g., an application engine module that emulates an Android smartphone with a particular operating system version, etc.), thereby allowing each pool of the multiple application engine module pools to be allocated by application engine module type. Any suitable number of application engine module pools may be maintained and supported for any suitable number of application engine modules, e.g., by application engine inventory and reservation module 136 and / or application engine scaler module 138, depending on, e.g., the number of cloud-based client applications (or application engine module types) supported by the system or any suitable subset thereof.

[0039] In some embodiments of the present invention, each or any of the application engine modules in each of the multiple application engine module pools can be “pre-warmed.” For example, the application engine modules in each of the multiple application engine module pools can be pre-allocated and pre-instantiated within the application engine module pool and then placed in a standby or sleep mode, for example, by application engine inventory and reservation module 136 and / or application engine scaler module 138. By spinning up application engine modules in each application engine module pool in the background and maintaining those spun-up application engine modules in standby mode, waking up an application engine module that is in standby mode takes substantially less time than instantiating an application engine module from scratch, so the application engine modules can be immediately (or near-immediately) reserved and assigned to a user upon request for an active session with little or no associated delay. Once an application engine module in an application engine module pool is reserved and allocated, the reserved and allocated application engine module can be immediately (or near-immediately) replaced with another "pre-warmed" application engine module from the corresponding application engine module pool so that it is ready for immediate (or near-immediate) reservation and allocation by the next user requesting an active session. This "pre-warmed" replacement process can continue as each application engine module in the application engine module pool is reserved and allocated. In this manner, application engine modules from each of multiple application engine module pools can be allocated to users in real time.In this disclosure, “real-time” may refer to processing that may occur instantaneously or within a short period of time (e.g., a few seconds) so that there is minimal delay between when a request is received and when the request is processed and a response is provided. Computing resources allocated to an application engine module reserved for an active session may be deleted or otherwise deallocated immediately (or nearly immediately) once the active session ends and the reserved application engine module is no longer needed for that active session. In some implementations of the present invention, such freed computing resources may be reallocated, for example, by application engine inventory and reservation module 136 and / or application engine scaler module 138 to pre-warm another application engine module by adding it to an associated or different application engine module pool, rather than maintaining computing resources for a reserved application engine module no longer needed for an inactive session.

[0040] The size of each or any of the multiple application engine module pools may be fixed or dynamic. For example, the size of the application engine module pool may be fixed such that a predetermined application engine module pool size number of pre-warmed application engine modules may be maintained within the pool. As pre-warmed application engine modules in the application engine module pool are allocated, the application engine inventory and reservation module 136 and / or the application engine scaler module 138 may replace the allocated application engine modules with additional pre-warmed application engine modules to maintain the size of the application engine module pool at or near the predetermined application engine module pool size number. The predetermined application engine module pool size number may be based, for example, on usage trends of the particular application engine module, historical usage information, or other suitable metrics. Thus, a frequently used application engine module may have a larger predetermined application engine module pool size number, and a less frequently used application engine module may have a smaller predetermined application engine module pool size number.

[0041] Additionally or alternatively, the size of the application engine module pool may be dynamic. In some embodiments of the present invention, the application engine inventory and reservation module 136 and / or the application engine scalar module 138 may monitor the usage trends of each or any of the multiple application engine modules 206 in real time. For example, as the usage trend of a particular application engine module increases, the application engine scalar module 138 may increase the size of the associated application engine module pool (and thus the number of pre-warmed application engine modules maintained in the application engine module pool) to accommodate greater usage, so that application engine module allocation can continue in real time without additional delays. Conversely, as the usage trend of a particular application engine module decreases, the application engine scalar module 138 may decrease the size of the associated application engine module pool (and thus the number of pre-warmed application engine modules maintained in the application engine module pool) to accommodate lower usage, so that computing resources are not unnecessarily over-utilized and can be allocated elsewhere. In such an embodiment, the size of each or any of the application engine module pools may be dynamically varied to accommodate periods of increased usage (e.g., usage spikes) and lulls in usage in order to maintain real-time allocation of application engine modules.

[0042] In some embodiments of the present invention, the application engine inventory and reservation module 136 and / or the application engine scalar module 138 may include a suitable predictive model or use a suitable machine learning / artificial intelligence technique to determine the application engine module pool sizes of the multiple application engine module pools. For example, a machine learning model may be trained based on usage trend data for each supported application engine module to modify the application engine module pool size for the application engine module to minimize the amount of time to allocate the application engine module and maintain a reduced allocation time for real-time application engine module allocations. The machine learning model may then be used to dynamically and appropriately modify the size of the application engine module pool associated with the application engine module based on the usage exhibited at a particular time for that application engine module. The machine learning model may be updated or otherwise adapted as application engine module usage trends change and evolve over time, for example, as monitored by the application engine inventory and reservation module 136 and / or the application engine scalar module 138. In some embodiments of the present invention, the size of each application engine module pool in a subset of the multiple application engine module pools may be fixed, while the size of other application engine module pools in the multiple application engine module pools may be dynamic. For example, frequently used application engine modules may be associated with a dynamic-sized application engine module pool, while less frequently used application engine modules may be associated with a fixed-sized application engine module pool. Additionally or alternatively, the size of a particular application engine module pool may be fixed at certain times and dynamic at other times.For example, for application engine modules that generally experience lower usage, the size of the corresponding application engine module pool may be fixed. However, during (e.g., intermittent) periods of higher usage (e.g., usage spikes), the size of the corresponding application engine module pool may be dynamic. The application engine inventory and reservation module 136 and / or the application engine scalar module 138 may switch the application engine module pool size back to fixed when the period of higher usage ends. In this way, the application engine inventory and reservation module 136 and / or the application engine scalar module 138 can adapt to changing usage conditions as needed to maintain reduced allocation times for real-time allocation of application engine modules.

[0043] In some embodiments of the present invention, one or more application engine module pools may be maintained within and with the plurality of application engine modules 206, as shown in Figure 2. However, in some embodiments of the present invention, each or any of the one or more application engine module pools may be maintained external to the plurality of application engine modules 206 but within or with the application engine module controller 104 within the server system 102. Additionally or alternatively, each or any of the one or more application engine module pools may be maintained within or with the server system 102 but outside the application engine module controller 104, such as in the database 146. Additionally or alternatively, each or any of the one or more application engine module pools may be maintained in or with a suitable cloud or server storage system that is remote from and in communication with the server system 102.

[0044] As shown in FIGS. 1 and 2 , the server system 102 may include a session management controller 140 for managing active sessions. The session management controller 140 may communicate with the application engine reservation controller 134. In some embodiments of the present invention, the session management controller 140 may also be coupled to or otherwise in communication with the application engine module controller 104. The session management controller 140 may include a session manager module 142 for managing the allocation of application engine modules, including registration, deregistration, and scaling (e.g., communicating and coordinating with the application engine inventory and reservation module 136 and the application engine scaler module 138). The session manager module 142 may also function as a coordinator for the server system 102 to support, for example, load balancing and latency. The session manager module 142 may receive requests to initiate active sessions from client devices. Additionally, the session manager module 142 may receive session information from the client device (e.g., in addition to or as part of the request) that can be used to select an appropriate application engine module. In one embodiment, the session information received from the client device may include, for example, one or more characteristics of the cloud-based client application for which an active session is required, one or more characteristics of the client device (e.g., the type of client device, the operating system, etc.), and other similar characteristics or data.

[0045] The session management controller 140 may include an application engine selector module 144 that communicates with the session manager module 142. The session manager module 142 may pass received session information to the application engine selector module 144, which may use such information to select an appropriate application engine module for the requested active session. By way of example and not limitation, a user with a non-Android® client device, such as a PC laptop, may request an active session with a (cloud-based) Klondike Solitaire mobile game designed to run on an Android® smartphone. Based on the session information passed to the application engine selector module 144, the application engine selector module 144 may select an Android® application engine for the (cloud-based) Klondike Solitaire mobile game for the active session. The application engine selector module 144 may communicate with the application engine inventory and reservation module 136. As a result, the application engine selector module 144 can instruct the application engine inventory and reservation module 136 to reserve an Android® application engine module for the (cloud-based) Klondike Solitaire mobile game from the plurality of application engine modules 106 or 206. Once reserved, the (cloud-based) Android® Klondike Solitaire mobile game application engine module can be bound to the requested active session such that other users cannot use the reserved application engine module during the active session.The application engine selector module 144 can issue a command to start the (cloud-based) Klondike Solitaire mobile game in the Android® application engine module (e.g., passed to the Android® mobile game application engine module reserved via the application engine inventory and reservation module 136). The user can then begin remote interaction with the (cloud-based) Klondike Solitaire mobile game via the PC laptop, as if the Klondike Solitaire mobile game were running natively on the PC laptop itself. If the Android® Klondike Solitaire cloud-based mobile game application engine module is not available, the application engine inventory and reservation module 136 can instruct the application engine scaler module 138 to add and reserve the Android® Klondike Solitaire cloud-based mobile game application engine module to the plurality of application engine modules 106 or 206 in the manner described above.

[0046] In some embodiments of the present invention, session management controller 140 (e.g., session manager module 142 and application engine selector module 144) may coordinate with and control application engine reservation controller 134 (e.g., application engine inventory and reservation module 136 and application engine scaler module 138) to manage one or more application engine module pools, as shown and described with respect to Figure 2. Additionally or alternatively, session management controller 140 may directly coordinate with and control application engine module controller 104 to manage one or more application engine module pools.

[0047] In one embodiment, the application engine subscription controller 134 may, for example, identify and maintain usage trends of the application engine modules (e.g., for each user, for all users, or for any subset thereof), so that some implementations of the present invention may recommend cloud-based client applications to each user or to any user. In one embodiment, the session manager module 142 may include a recommendation engine, etc. The recommendation engine may receive usage trend information from the application engine subscription controller 134 and use such information to recommend different cloud-based client applications to the user. For example, the recommendation engine may recommend the most popular cloud-based client applications (e.g., for users using a particular type of client device, etc., overall, in a particular genre), a list of the most popular cloud-based client applications at a particular time or range of times (e.g., the past hour, the past day, the past week, etc.), etc. The recommendation engine may also recommend cloud-based client applications that are similar to or complementary to one or more cloud-based client applications with which the user has previously interacted. For example, if a user has played the cloud-based Klondike Solitaire mobile game, the recommendation engine may recommend other cloud-based games of the same or similar genre (e.g., Spider Solitaire, Tripeaks Solitaire, etc.), regardless of the device platform on which the games are based (because the device platform is emulated by any of the multiple application engine modules 106 or 206). Other recommendations are possible. Additionally or alternatively, suitable machine learning / artificial intelligence techniques may be used by the recommendation engine to dynamically provide cloud-based client application recommendations to the user.For example, a machine learning model can be trained based on usage data from users (e.g., usage trends, peak usage, off-hours usage, etc., for all users or any subset thereof). The machine learning model can then be used to dynamically recommend cloud-based client applications to users based on their usage trends. The machine learning model can be updated or otherwise adapted as the usage data evolves over time. Such recommendations can be communicated to the client device (e.g., as a URL or other link or hyperlink in a modal window or other appropriate notification or message). If the user accepts the recommendation (e.g., by selecting a URL or other link or hyperlink to the cloud-based client application), the session manager module 142 can have the indicated application engine module selected and reserved in the manner described herein to initiate an active session for the user.

[0048] Server system 102 may include one or more databases 146 that may communicate with one or more of application engine module controller 104, application engine reservation controller 134, and session management controller 140. Database 146 may be cloud-based or may reside on one or more physical storage systems. Database 146 may include, for example, any suitable information related to application engine modules, management of application engine modules, active session information, historical session information, usage trends or other metric data, cloud-based client application state data, copies of each or any cloud-based client application (or modified cloud-based client application, as described below), input from client devices, session logs, and other similar data.

[0049] According to one embodiment, the server system 102 may provide cloud-based software tools and other suitable functionality that enable users to remotely create, augment, or otherwise modify cloud-based client applications for distribution via the cloud-based client application platform 100 or 200. For example, such cloud-based software tools may be used to modify an existing cloud-based client application running during an active session on one of the multiple application engine modules 106 or 206 to create an augmented or modified cloud-based client application. In some implementations of the present invention, the cloud-based software tools may enable users to modify non-mobile applications into cloud-based mobile applications for distribution via the cloud-based client application platform 100 or 200. In one embodiment, the application engine module controller 104 may include a software tool module 148 that communicates with the multiple application engine modules 106 or 206. The software tool module 148 may enable “modifiers” (e.g., client application developers, client application users, etc.) to augment content, add new functionality or change existing functionality, and create or otherwise modify cloud-based client applications. For example, the software tools module 148 may include or otherwise provide suitable software tools for creating and editing digital content (e.g., creating and / or editing text, images, video, audio, or any combination thereof) within a cloud-based client application.Additionally or alternatively, software tools module 148 may include or otherwise provide suitable software development tools for generating, editing, and compiling computer code for cloud-based client applications. Other software tools are possible. Software tools module 148 may include or provide any suitable cloud-based software tools that can be used to build, create, augment, modify, generate, and / or deliver cloud-based client applications via cloud-based client application platform 100 or 200. Such cloud-based software tools may be used to provide a wide variety of users with features and functionality for “modifying” cloud-based client applications to enhance content creation, add new functionality or modify existing functionality, and create or otherwise evolve the cloud-based client applications as desired by the users.

[0050] In one embodiment, software tool module 148 can be used with each or any of multiple application engine modules 106 or 206 to modify the cloud-based client application supported by the respective application engine module 106 or 206. For example, after application engine reservation controller 134 reserves, registers, and binds an application engine module to an active session (e.g., via application engine inventory and reservation module 136 communicating with emulation module controller 104), software tool module 148 can provide appropriate tools for modifying or otherwise enhancing the cloud-based client application running in the reserved application engine module. As additional application engine modules are instantiated for other active sessions, software tool module 148 can provide additional and / or alternative tools for modifying or otherwise enhancing the cloud-based client applications running in those additional application engine modules. In one embodiment, software tool module 148 can provide a complete suite of diverse software tools for supporting a wide variety of cloud-based client applications. Additionally or alternatively, the software tools module 148 may provide a subset of software tools for use in remotely modifying or enhancing cloud-based client applications running on the application engine module.In one embodiment, software tool module 148 can use appropriate machine learning / artificial intelligence techniques to automatically and dynamically select and provide to a user appropriate tools (e.g., image editing software tools if image editing is being performed, text editing software tools if text editing is being performed, etc.) based on, for example, characteristics of the cloud-based client application (e.g., the type of client application, the type of operating system the client application runs on, etc.), the type of modification made to the cloud-based client application, etc. For example, a machine learning model can be trained based on tool usage data from the user (e.g., which software tools are used with what frequency, which cloud-based client applications were modified with which tools, etc.). The machine learning model can then be used to dynamically add and select appropriate software tools for a user to modify a given cloud-based client application. The machine learning model can be updated or otherwise adapted as tool usage data evolves over time. For example, software tool module 148 can maintain a core set of software tools, but additional or alternative software tools can be stored in and automatically retrieved from database 146, for example, as needed and as needed when a user is remotely modifying a cloud-based client application.

[0051] In one embodiment, once modifications to the cloud-based client application are complete, data stored in or otherwise used by the application engine module during an active session (e.g., any or all data associated with the modified cloud-based client application, including the modified cloud-based client application itself) may be stored in database 146 so that the modified cloud-based client application can be retrieved and used in subsequent active sessions. The modified cloud-based client application may then be distributed to and accessed by other users of cloud-based client application platform 100 or 200. In additional embodiments, software tools module 148 may provide tools and functionality for remotely modifying non-mobile applications (e.g., PC-based applications, game console-based applications, etc.) into cloud-based client applications and distributing them via cloud-based client application platform 100 or 200 in the manner described above. For example, software tools module 148 may provide appropriate tools for augmenting application content to accommodate different sized screens of mobile devices, compilers and other software development tools for creating and / or editing software code and recompiling applications to run on (different) target client device platforms and operating systems (e.g., iOS, Android, etc.), etc. Software tools module 148 may also provide appropriate tools for uploading modified or otherwise converted cloud-based client applications to cloud-based client application platform 100 or 200.By way of example and not limitation, the application engine reservation controller 134 can reserve, register, and bind a first application engine module to an active session (e.g., via the application engine inventory and reservation module 136 in communication with the emulation module controller 104) to support a non-mobile application for a first operating system environment (e.g., a PC-based application). The software tools module 148 can then provide the user with appropriate tools for converting the non-mobile application to a cloud-based client application. The application engine reservation controller 134 can reserve, register, and bind a second application engine module to an active session (e.g., via the application engine inventory and reservation module 136 in communication with the emulation module controller 104) to support a new cloud-based client application for a second operating system environment (e.g., an iOS application). For example, a binary executable file of the cloud-based client application output by a compiler (or cross-compiler) provided by the software tools module 148 for the first application engine module can be stored in the second application engine module. The second application engine module can become a new application engine module available in the plurality of application engine modules 106 or 206 that can be instantiated and used by other users, enabling the delivery of new cloud-based client applications to a wide variety of users of the cloud-based client application platform 100 or 200.In an alternative embodiment, the binary executable file of the cloud-based client application output by the compiler (or cross-compiler) provided by the software tools module 148 for the first application engine module can be delivered directly to and executed on the desired platform (e.g., an application in a mobile app store) in addition to or instead of being stored in another (second) application engine module within the cloud-based client application platform 100 or 200.

[0052] In some implementations of the present invention, the software tools module 148 may include a monetization module 149. In alternative embodiments, the monetization module 149 may be separate from the software tools module 148, either internal or external to the application engine module controller 104. The monetization module 149 may provide tools and support for monetizing modified cloud-based client applications. In one embodiment, the monetization module 149 may enable users to create, purchase, and sell non-fungible tokens (NFTs) to monetize modified cloud-based client applications in an NFT ecosystem. Embodiments of the present invention may enable the creation of NFTs on an appropriate blockchain, the conversion and storage of users' cloud-based client applications as NFTs, and the creation of methods for cloud-based client application developers and content creators to earn money on cloud-based client applications or instances of cloud-based client applications (e.g., particular "modifications" of a cloud-based client application, particular competitive and / or popular matches of a cloud-based mobile gaming application, etc.). NFTs are digital assets similar to cryptocurrencies. In contrast to cryptocurrencies, NFTs are not exchangeable. While it is possible to create and sell several identical NFTs, it is generally the scarcity of an NFT that gives it value. NFTs are part of a blockchain, a system in which records of transactions are maintained across several computers linked in a peer-to-peer network. Each NFT contains, for example, owner identification information, metadata, secure file links, and other identifying information. Each NFT may also contain a smart contract that may require, for example, an additional payment to the original owner for each transfer of ownership or licensed use.Such information makes each NFT unique, and the blockchain maintains a decentralized, secure, permanent record of who owns the NFT, the origin of the NFT's ownership, and the rights granted by the NFT, among other information. An NFT can have only one owner at a time. Many NFTs are part of the Ethereum blockchain, which supports both NFTs and the Ethereum cryptocurrency. Other blockchains that support NFTs include, for example, Solana, Zilliqa, Cardano, Flow, and Tezos. Other blockchains that support NFTs are also possible. NFTs can be used to publicly list, offer, auction, or sell ownership of or access to digital assets such as digital art, digital text, digital video games, digital music, and digital goods or places in virtual worlds, among other digital goods. NFTs can have intrinsic value similar to cryptocurrencies and can be used to eliminate intermediaries, simplify transactions, and create new markets, among other things.

[0053] Once a user modifies the cloud-based client application via the instantiated application engine module, the monetization module 149 can provide the user with appropriate tools and functionality for minting NFTs based on the modified cloud-based client application. For example, the monetization module 149 can provide the user with a selection of blockchain technologies that can be used for NFTs (e.g., Ethereum, Solana, etc.). The monetization module 149 can also provide the user with appropriate tools for creating digital wallets and a selection of marketplaces for NFTs. In some implementations of the present invention, the server system 102 (e.g., via the monetization module 149) can provide appropriate infrastructure to support an NFT marketplace ecosystem. In alternative embodiments, the monetization module 149 can communicate with one or more appropriate third-party NFT marketplaces (e.g., OpenSea, Nifty Gateway, Mintable, etc.). In such alternative embodiments, if the user selects a third-party NFT marketplace, the monetization module 149 can upload the digital files of the modified cloud-based client application to the third-party NFT marketplace. Once uploaded, the monetization module 149 can provide the user (e.g., via the modification module 160 of the browser module 152 of the client device 150, as described in more detail below) with a choice to select how to monetize the NFT. For example, the NFT can be sold at a fixed price, through a timed auction, or through an open-ended auction, although other options are possible (e.g., the user can decide to transfer the NFT or sell the NFT at a nominal price). The user can also specify a royalty if the NFT is resold on the secondary market.Once the user selects various characteristics of the NFT, the monetization module 149 can instruct the third-party marketplace to create the NFT, which can then be sold on the third-party NFT marketplace. Alternatively, the monetization module 149 can perform one or more functions of the third-party NFT marketplace to generate the NFT before uploading the NFT to the third-party NFT marketplace.

[0054] In one embodiment, the monetization module 149 may also provide tools and functionality to support the purchase of modified cloud-based client application NFTs by users of the cloud-based client application platform 100 or 200. For example, the monetization module 149 may provide tools for opening an NFT marketplace account (either with an NFT marketplace managed by the server system 102 or a third-party NFT marketplace). The monetization module 149 may also provide tools for creating a blockchain wallet and funding the wallet with the correct cryptocurrency or tokens necessary to participate in NFT marketplace activities, allowing users to purchase modified cloud-based client application NFTs via the cloud-based client application platform 100 or 200. Thus, some embodiments of the present invention may combine cloud-based “alterations” of client applications with NFTs to address issues of ownership, authenticity, provenance, and attribution. Additionally, the present invention may ensure that programmatic smart contracts manage the distribution and monetization of cloud-based client application NFTs (e.g., payments are split between the developer, the publisher / platform, and the creator). The "modified" cloud-based client applications can be independently distributed by their creators, monetized as NFTs as the creators see fit, and bought / sold on appropriate NFT marketplaces.

[0055] In some implementations of the present invention, cloud-based client application platform 100 or 200 may include one or more client devices 150 in communication with server system 102 (e.g., via the Internet or other suitable network). According to embodiments, client device 1150 may be any suitable type of device capable of launching a suitable browser or other suitable application with which a user may interact (e.g., via a touchscreen and / or pointing device, such as a mouse, stylus, etc.), such as, for example, a smartphone, tablet, laptop, desktop computer, game console, smart TV, smartwatch, or any other suitable device capable of supporting such user input and interaction via a browser or other suitable application. In embodiments, the present invention may support interaction with any suitable type of cloud-based client application on any suitable number of client devices 150, each running any suitable type of operating system and independent of the underlying hardware and device characteristics of client device 150.

[0056] A cloud-based client application may be any suitable client application configured to run natively on any suitable type of client device 148, but may be remotely executed and rendered in the cloud in an application engine module of one of the application engine modules 106 or 206 of the server system 102 according to embodiments of the present invention. For example, a cloud-based client application, such as a cloud-based mobile game or other web-based or suitable cloud-based client application, may be remotely provided as an end-user client application with which a user can interact via the server system 102. The software applications may relate to and / or provide a wide variety of functions and information, including, for example, entertainment (e.g., games, music, video, etc.), business (e.g., word processing, accounting, spreadsheets, etc.), news, weather, finance, sports, etc. In particular embodiments, the cloud-based client application may provide a digital game, such as a mobile digital game, a PC game, or a console game. The digital game may be or include, for example, a sports game, an adventure game, a virtual playing card game, a virtual board game, a puzzle game, a racing game, or any other suitable type of digital game. In one embodiment, the digital game may be an asynchronous competitive skill-based game in which players can compete against each other in the digital game, but do not have to play the digital game simultaneously. In an alternative embodiment, the digital game may be a synchronous competitive skill-based game in which players can play the digital game simultaneously and compete against each other in the digital game in real time. Other suitable cloud-based digital games are also possible, whether mobile-based, PC-based, console-based, or otherwise.In the case of a cloud-based client application that allows two or more users to compete or otherwise engage with each other, each user interacts with the cloud-based client application at its respective reserved and assigned application engine module and can compete, play, or otherwise engage with each other using the back-end architecture (e.g., a game server in the context of a digital game) supported by the respective application engine module and cloud-based client application. Additionally or alternatively, one or more users interacting with the cloud-based client application at its respective reserved and assigned application engine module can compete, play, or otherwise engage with or interact with users interacting with a client application directly installed and running natively on their client device (i.e., without using an application engine module). Thus, embodiments of the present invention can enable users across a wide variety of different computing platforms to engage with each other regardless of the underlying client device and operating platform used by each or any user for their client device 150.

[0057] Client device 150 may include a browser module 152. Browser module 152 may support any suitable type of browser application, such as, for example, Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari, DuckDuckGo, Opera, Brave, Vivaldi, Firefox Focus, a proprietary browser, etc. Additionally or alternatively, browser module 152 may be a suitable application capable of supporting local rendering of video / audio information streamed from a cloud-based client application to client device 150 (e.g., via OpenGL, etc.). In one embodiment, browser module 152 may include a display module 154, an interaction capture module 156, a session information module 158, and a modification module 160, which communicate with each other. Display module 154 may support display of video and / or audio information streamed from a cloud-based client application executing in a corresponding application engine module running on server system 102. In one embodiment, the video / audio output of a cloud-based client application running on the application engine module may be streamed in real time over the Internet (or other suitable network) to browser module 152 on client device 150 and displayed to a user via display module 154. Display module 154 may receive the streamed video / audio output from the application engine module via video / audio communication module 132 and appropriately render it on a display screen of client device 150. A user may interact with the cloud-based client application's video / audio stream in real time.In some implementations of the present invention, the user's input may be collected by interaction capture module 156 and communicated (over the Internet or other suitable network) via signaling communication module 162 (e.g., an appropriate data and signaling channel such as a gRPC gateway) to an application engine module within multiple application engine modules 106 or 206 assigned to the user's active session. The user's input may then be mapped to video / audio streams by a state module of the assigned application engine module, allowing the user to (remotely) control and interact with the cloud-based client application in real time as if the cloud-based client application were running natively on client device 150.

[0058] In one embodiment, the display module 154 may also provide a display of any or all cloud-based client applications available for use by the user (e.g., as URLs or other links or hyperlinks within a browser application, as linked icons on a desktop within the user interface of the client device 150, etc.). The interaction capture module 156 may capture the user's selection of a desired cloud-based client application (e.g., by the user clicking or otherwise selecting one of the displayed URLs, links, hyperlinks, or icons). Once the user selects the desired cloud-based client application, the session information module 158 may initiate an active session by communicating a request to the session management controller 140 (e.g., via a REST call, etc.). The session management controller 140 may then begin the process of reserving an appropriate application engine module for the active session, as described above. The session information module 158 may periodically poll the session management controller 140 (e.g., via REST, etc.) until an application engine module is reserved and assigned for the active session. Alternatively, the session management controller 140 may transmit an appropriate message or notification to the session information module 158 when an application engine module is reserved and assigned for an active session. Once an application engine module is reserved and assigned to a user's active session, the display module 154 may connect to the reserved application engine module over a media (video / audio) channel (e.g., via the video / audio communication module 132) and begin receiving video / audio media data streamed from the cloud-based client application.As a user interacts with the video / audio media data being streamed from the cloud-based client application running in the reserved application engine module, the interaction capture module 156 can provide the captured user input to the reserved application engine module via the signaling communication module 162 (e.g., webRTC signaling, via OpenGL, or other suitable techniques) to enable the user to remotely engage and interact with the cloud-based client application.

[0059] In one embodiment, modification module 160 can communicate with software tool module 148 on server system 102. Modification module 160 can provide a user on client device 150 with an appropriate interface for accessing the software tools provided by software tool module 148. Using modification module 160, a user can “modify” a cloud-based client application to enhance content creation, add new functionality or modify existing functionality, and create or otherwise evolve the cloud-based client application as desired by the user. For example, modification module 160 can provide an appropriate interface via display module 154 to display a list of software tools available from software tool module 148 for remotely modifying the cloud-based client application via client device 150, as well as access to the cloud-based client application within the application engine module. The user can select one or more tools as needed to modify the cloud-based client application in any desired manner, change the tools, and continue to modify the cloud-based client application as needed. Any and all modifications can be passed from modification module 160 to software tool module 148 so that the cloud-based client application can be correspondingly modified in a given application engine module. Once modifications to the cloud-based client application are complete, the user can save the modified cloud-based client application via modification module 160, which can communicate such information to software tools module 148.Software tools module 148 may store data stored in or otherwise used by the application engine module during an active session (e.g., any or all data associated with the modified cloud-based client application, including the modified cloud-based client application itself) in database 146 so that the modified cloud-based client application can be retrieved and used in subsequent active sessions (either as an update to an existing application engine module or as a separate new application engine module). Such a “modified” cloud-based client application can then be used by other users, and the “modified” cloud-based client application can be distributed to a wide variety of users of cloud-based client application platform 100 or 200. Thus, embodiments of the present invention may enable any user to create and / or modify cloud-based client applications by remotely accessing software tools via an appropriate browser on client device 150, without requiring the user to separately install each tool on client device 150 itself. Because users do not install software tools or client applications (original or modified) locally, embodiments of the present invention can reduce or eliminate storage requirements for such tools and client applications on client device 150, reduce network bandwidth requirements (because each tool package or client application does not need to be downloaded / uploaded in its entirety to / from each client device 150), etc.

[0060] In some embodiments of the present invention, the modification module 160 may also provide a user on the client device 150 with an appropriate interface for accessing and using the monetization module 149 via the software tools module 148. Using the modification module 160, a user may create, purchase, and sell NFTs to monetize a modified cloud-based client application within the NFT ecosystem via the client device 150 in conjunction with the monetization module 149. For example, the modification module 160 may provide an appropriate interface via the display module 154 to display appropriate tools and functionality available via the monetization module 149 for creating NFTs based on the modified cloud-based client application. For example, the modification module 160 may display to the user a selection of blockchain technologies available from and accessible by the monetization module 149 that can be used for NFTs. The modification module 160 may also display to the user appropriate tools from the monetization module 149 for creating a selection of digital wallets and marketplaces for NFTs. For purposes of explanation and not limitation, if the user selects a third-party NFT marketplace, the modification module 160 may display features available via the monetization module 149 to enable the user to upload the modified cloud-based client application's digital file to the third-party NFT marketplace. Once uploaded, the modification module 160 may display selections from the monetization module 149 to the user to select how to monetize the NFT. Once the user selects various characteristics of the NFT, the modification module 160 may cause the monetization module 149 to instruct the third-party marketplace to create the NFT, which can then be sold on the third-party NFT marketplace.Modification module 160 may also display tools and provide functionality from monetization module 149 to support the purchase of NFTs for the modified cloud-based client application by a user of cloud-based client application platform 100 or 200 via client device 150. For example, modification module 160 may display to a user appropriate tools and functionality available from monetization module 149 for opening an NFT marketplace account. Modification module 160 may also display to a user appropriate tools and functionality available from monetization module 149 for creating a blockchain wallet and funding the wallet with the correct cryptocurrency or tokens needed to participate in NFT marketplace activity, thereby enabling the user to purchase NFTs for the modified cloud-based client application via cloud-based client application platform 100 or 200.

[0061] In some implementations of the present invention, a cloud-based client application can be paused during an active session. For example, a user can pause the cloud-based client application at any particular or desired location, point in time, or time during an active session with the cloud-based client application (e.g., by pressing an appropriate “pause” button displayed to the user in or along with the browser application). Additionally or alternatively, a cloud-based client application can be paused if the connection between the browser module 152 and the server system 102 is interrupted or lost during an active session. Additionally or alternatively, a cloud-based client application can be paused if the user leaves the active session (e.g., by pressing the browser’s “back” button or closing the browser application). In some implementations of the present invention, client device 150 (e.g., within or associated with browser module 152) can store one or more appropriate cookies that browser module 152 can check to determine whether there is an active session for the user. Such information can be communicated to session management controller 140 via session information module 158. The user's interaction with the cloud-based client application can resume at the point where it was paused once the connection is re-established or the user returns to the active session (e.g., by pressing the appropriate "play" or "forward" button displayed to the user within or with the browser application, or by reopening the browser application). In one embodiment, the active session can be left open or otherwise maintained for a predetermined period of time (e.g., 1 hour, 2 hours, 1 day, etc.) while the active session is paused or if the user exits or disconnects from the active session.After the predetermined period of time has expired, the active session can be terminated and the application engine module can be deregistered. If the user wishes to continue the active session before the expiration of the predetermined period of time, the user can, for example, press a "play" button, refresh a web page within a browser application, or select the same URL, link, or hyperlink used to initiate the original active session to rejoin the previously assigned and reserved application engine module. In some embodiments of the present invention, the active session can be left open or otherwise maintained indefinitely until the user exits or otherwise terminates the active session.

[0062] By maintaining the state of the reservation application engine module and the cloud-based client application during such suspension, some embodiments of the present invention may enable a user to start an active session on one client device 150, pause the active session at a particular or desired location, point in time, or time, and then continue the active session from the paused location, point in time, or time on one or more other (different) client devices 150. By way of example and not limitation, a user may request to start an active session on a first client device 150 (e.g., a smartphone). The user may then pause the active session at a particular or desired location, point in time, or time (e.g., by closing the browser application on the first client device 150). The state of the cloud-based client application may be saved in a state module of the application engine module assigned to and registered with that active session. The user may then switch to a second client device 150 (e.g., a desktop computer) and select (via the display module 154 within the browser module 152 launched on the second client device 150) the same URL, link, or hyperlink that was used to start the original active session on the first client device 150. Such an action can resume the active session in the browser module 150 of the second client device 148. Thus, the user can be presented with the same digital page of the active session of the cloud-based client application that was paused at the same location, point in time, or time from the first client device 148.The user can continue to seamlessly interact with the same cloud-based client application via the second client device 150 (e.g., by pressing an appropriate “play” button within the browser application) from the paused location, point, or time in the same or similar manner as if the user had continued interacting with the cloud-based client application on the first client device 150. To support such platform switching, the session management controller 140 can maintain a user ID or other suitable identifier that uniquely identifies the user, in addition to the module ID. The session management controller 140 can use both the user ID and the module ID in combination with the cloud-based client application selection from the user (received from the second client device 150) and the saved state of the cloud-based client application to identify the correct (paused) application engine module to reassign to the second client device 150 to enable the user to continue the active session on the second client device 150 from the same location, point, or time where the user paused on the first client device 150. In an alternative embodiment, if the user selects the same cloud-based client application from the same URL, link, or hyperlink on the second client device 150, the user may be presented with the option of continuing the same active session on the cloud-based client application from the same pause position, point, or time, or starting a new active session with the cloud-based client application on the second client device 150.

[0063] In the event of a stop or crash of an application engine module during an active session, session management controller 140 can reserve and assign a new application engine module to the user. The cloud-based client application running within the application engine module can be populated with information from the previous (pre-stop / pre-crash) active session (e.g., using the cloud-based client application state and other session information retrieved from database 146) to reflect the state of the cloud-based client application at the point immediately prior to the stop or crash, so that it appears to the user that the active session was simply paused. The user can then return to and re-engage with the active session in the manner described above.

[0064] In some implementations of the present invention, session management controller 140 (e.g., via session manager module 142) may operate in conjunction with browser module 152 (e.g., via one or both of display module 154 and interaction capture module 156) to measure and monitor network latency information or other suitable characteristics of network communications between client device 150 and server system 102 during an active session and communicate such latency information to session management controller 140 (e.g., via session information module 158). Network latency information may be used to temporarily suspend an active session if network latency exceeds a predetermined or dynamic threshold (e.g., based on network latency trends, usage trends, etc.), and then resume the active session once the network latency falls below the threshold. Additionally or alternatively, network latency information may be used by server system 102 (e.g., via video / audio communication module 132) for network connection quality management. For example, video / audio communication module 132 may use the network latency information to determine the network connection quality to client device 150. If the network connection quality falls below a predetermined or dynamic threshold (e.g., based on network latency trends, usage trends, etc.), the video / audio communication module 132 may modify the quality and / or characteristics of the video / audio media data being streamed to the client device 150.For example, if the network connection quality falls below a threshold, the video / audio communication module 132 can reduce the frame rate, reduce the resolution, etc. of the streamed video / audio media data to maintain smooth display and interaction for cloud-based client applications on the client device 150 during an active session (e.g., to maintain smooth gameplay on the client device 150 in the context of a cloud-based mobile game), so that the active session does not need to be paused or otherwise interrupted. The video / audio communication module 132 can periodically or continuously update the quality and / or characteristics of the video / audio media data stream throughout the active session (e.g., lowering and / or increasing the frame rate, resolution, etc. of the video / audio media data stream as the network connection quality fluctuates over the course of the active session). As a result, the server system 102 can use the network latency information to determine, modify, and control the video / audio streaming quality for the client device 150 to maintain smooth display and interaction for the cloud-based client applications for the user.

[0065] Additionally or alternatively, the network latency information can be used by the session management controller 140 to determine and select an appropriate application engine module for a user. For example, in some embodiments of the present invention, the server system 102 can include multiple application engine module controllers 104, each managing a respective plurality of application engine modules 106 or 206 to form one or more application engine module clusters, as shown and described with respect to FIGS. 1 and 2. The application engine module clusters can be geographically distributed such that each of the respective plurality of application engine modules 106 or 206 can be located in a different geographic location. When a user requests an active session with a cloud-based client application, the network latency information can be used by the session management controller 140 to reserve and assign the application engine module that is geographically closest to the user's client device 150 or that otherwise has the least network latency. By measuring and monitoring network latency information for all client devices 150, the server system 102 can create, for example, a heat map of network latency across the cloud-based client application platform 100 or 200, which can be used to reserve and assign optimal application engine modules to each user (e.g., optimal in terms of network latency or network connection quality) to maintain smooth display and interaction of cloud-based client applications on the client devices 150 during each active session.

[0066] According to embodiments, because cloud-based client applications can be launched remotely within server system 102 and displayed on any suitable client device 150, the present invention can also enable cloud-based client applications to be integrated into third-party platforms, including third-party websites and applications, by embedding or otherwise providing a URL or link or hyperlink to one or more cloud-based client applications in the third-party platforms. Such integration can enable those third parties to more easily provide different features and functionality through the integrated cloud-based client applications that complement and enhance interaction and engagement with those third-party platforms. By way of example and not limitation, a retailer can incorporate any suitable cloud-based client application into a consumer touchpoint by embedding or otherwise providing a URL or other link or hyperlink to the cloud-based client application. For example, a retailer can incorporate a cloud-based mobile game into the retailer's website or application in accordance with embodiments of the present invention. A user can interact with the cloud-based mobile game on the retailer's website or application in the manner described herein as if the cloud-based mobile game were running on the user's client device. If a user wins an integrated cloud-based mobile game, the user may receive a prize in the retailer's own currency (e.g., loyalty, coupons, product / service discounts, free merchandise, etc.) Prize information may be communicated from the integrated cloud-based mobile game to a third-party platform (e.g., via the server system 102) and maintained on the retailer's website or application for use by the user.For example, fast food restaurants can integrate cloud-based mobile games into their websites or applications in accordance with embodiments of the present invention. Users can select and engage with the integrated cloud-based mobile game via the website or application, for example, by selecting an appropriate embedded or otherwise provided URL or other link or hyperlink to the integrated cloud-based mobile game and then (remotely) interacting with the integrated cloud-based mobile game. If the user wins the integrated cloud-based mobile game, the user can receive a free side order of food (or other suitable prize or offer appropriate to the retailer) that can be redeemed at the fast food restaurant. If the user loses, the user can compete again, be awarded a smaller prize, be given another opportunity to play, and so on. The present invention can support the integration of any suitable type of cloud-based client application with any suitable third-party platform. According to the present invention, by allowing users to interact with a cloud-based client application integrated into a third-party website or application via the third-party website or application, the third party can increase user engagement metrics with the third-party platform without requiring the user to download and install the cloud-based client application on the user's client device 150.

[0067] Integrating one or more cloud-based client applications with a third-party platform may allow for a tailored experience to be provided to users on the third-party platform that may not be available to the general public who access a non-integrated version of the cloud-based client application or who access it from a different website or application. For example, the integrated cloud-based client application on the third-party platform may provide features, functionality, interface modifications, etc. that are available to users of the integrated cloud-based client application. For example, if the integrated cloud-based client application is a cloud-based mobile game, users who interact with the integrated cloud-based mobile game may have access to special or promotional tournaments that are not available to general users of the cloud-based mobile game. Additionally or alternatively, users who interact with the integrated cloud-based client application may be presented with special limited-time offers (LTOs), advertisements, or other promotions that are not available to general users of the cloud-based client application. Additionally or alternatively, users who interact with the integrated cloud-based client application may be presented with modified or improved user interfaces (e.g., different screens, customizations, third-party branding, etc.) that are not available to general users of the cloud-based client application. Other modifications to the user experience of the integrated cloud-based client application (including modifications to the internal and / or external graphical user interfaces of the integrated cloud-based client application) are possible to support third-party platforms.

[0068] In some implementations of the present invention, data collected from users interacting with the integrated cloud-based client application may additionally or alternatively be used to tailor the user experience of the integrated cloud-based client application. In one embodiment, features, functions, and / or capabilities of the integrated cloud-based client application on the third-party platform may be targeted to individual users based on third-party platform user data, data from or associated with the user's client device 150, etc. For example, the server system 102 may identify each user's geographic location via the client device's 150 GPS (e.g., passed to the session management controller 140 via the session information module 158), from the user's account profile information (e.g., retrieved from the database 146), etc. A user accessing the integrated cloud-based client application from one geographic location (e.g., a first state or region) may be presented with a different user experience than a user accessing the integrated cloud-based client application from a different geographic location (e.g., a second state or region). The different user experience may include, for example, a different user interface, different tournaments (e.g., in connection with a cloud-based mobile game), different features and functionality, etc. For example, if the integrated cloud-based client application is a cloud-based mobile game, the user data may be used to match players of the integrated cloud-based mobile game, e.g., in the case of a competitive skill-based integrated cloud-based mobile game, the user information may be used to match users to other users interacting with the integrated cloud-based mobile game, rather than to users of the general population of the (non-integrated) cloud-based mobile game.Such player matching can help ensure fairness of competition and / or enforce anti-fraud / anti-cheat measures, as users of integrated cloud-based mobile games may have access to features and functionality that are not available to the general population of users of (non-integrated) cloud-based mobile games.

[0069] Some embodiments of the present invention can be used to integrate cloud-based client applications into online or digital advertising. By way of example and not limitation, cloud-based mobile games can be integrated into digital advertising to create interactive advertising units, such as playable ads. In some embodiments of the present invention, the integrated cloud-based mobile game can be accessed from a playable ad by having a user click on a URL, link, or hyperlink embedded or otherwise provided in the playable ad. Alternatively, the cloud-based mobile game can automatically start within the playable ad upon presenting, presenting, or displaying the playable ad to a user. Users can interact with the integrated cloud-based mobile game within and through the playable ads to earn prizes, promotions, and other similar rewards, for example, as part of a digital advertising campaign. In one embodiment, such rewards can be used in the cloud-based mobile game itself (e.g., virtual currency or rewards) to encourage users to interact with the playable ads. For example, users can use such rewards to make in-app purchases or for other types of redemptions or purchases within the integrated cloud-based mobile game itself while interacting with the playable ad. In alternative embodiments, such rewards may be used for or in conjunction with another application or website associated with the digital advertising campaign to drive user engagement. However, any suitable cloud-based client application may be integrated with a digital advertisement to create an interactive advertising unit. For example, an interactive advertising unit or other digital advertisement of a cloud-based client application product may include a trial version (or may be a fully-active but time-limited version) of the cloud-based client application product integrated with the interactive advertising unit or other digital advertisement.As a result, users can engage with and evaluate cloud-based client application products (e.g., within an interactive advertising unit or through other digital advertising) without waiting to download, install, or otherwise purchase the cloud-based client application product before evaluating it.

[0070] FIG. 3 is a block diagram illustrating an exemplary cloud-based client application platform 300 having multiple application engine module pools and multiple application instance pools for remotely modifying cloud-based client applications, according to an embodiment of the present disclosure. As previously described, each of the application engine modules in the multiple application engine modules 206 can be configured to emulate a particular type and configuration of a client device for executing the cloud-based client application. Additionally or alternatively, the server system 102 can support cloud-based client application instances (also referred to as “application instances”) that can be designed and configured to run natively in the cloud on the server system 102. Thus, an application instance can be an instance of a cloud-based client application that can be configured to run natively on the server system 102 without using an application engine module from the multiple application engine modules 206 (or 106). Thus, the server system 102 can include a module controller 304 that can operate in a manner similar to that discussed and described with respect to the application engine module controller 104 of FIGS. 1 and 2 . The module controller 304 may include multiple application engine modules 206 for supporting and emulating any suitable type of client device for executing any suitable type of cloud-based client application (as described with respect to FIGS. 1 and 2). The module controller 304 may also include multiple application instance modules 310 for supporting and executing any suitable type of application instance that may be launched natively on the server system 102.The module controller 304 can enable application instance module registration / deregistration, application instance module atomic reservation, application instance module query, etc., in a manner similar to that described for the multiple application engine modules 206 (and 106). The multiple application instance modules 310 can include a first application instance module 312, ..., and an Mth application instance module 320, where M can be any suitable natural number and can change over time. Each application instance module 312, ..., 320 can include a video / audio module for managing video and / or audio media data generated by the application instance and transmitting such video and / or audio media data to a client device for display to a user. Each application instance module 312, ..., 320 can also include a state module for receiving and processing input from the client device 150 (e.g., mapping input to video / audio streams, etc.) generated while a user (remotely) interacts with the application instance. Each state module can also maintain the state of the application instance. For example, the first application instance module 312 may include a first video / audio module 314 in communication with a first state module 316. The Mth application instance module 320 may include an Mth video / audio module 322 in communication with an Mth state module 324. The module controller 304 may maintain any suitable number of application instance modules and may register (i.e., instantiate, allocate, or otherwise create) or deregister (i.e., delete or deallocate) application instance modules as needed.In one embodiment, server system 102 may include multiple module controllers 304, each managing a respective plurality of application engine modules 206 to form an application engine module cluster and a respective plurality of application instance modules 310 to form an application instance module cluster. Server system 102 and module controllers 304 may support any suitable number and combination of application engine modules and application instance modules.

[0071] As shown in FIG. 3 , the server system 102 may include a reservation controller 328 in communication with the module controller 304, which may operate in a manner similar to that discussed and described with respect to the application engine reservation controller 134 of FIGS. 1 and 2 . In an embodiment, the reservation controller 134 may also control various aspects of the plurality of application instance modules 310, including, for example, coordinating application instance module scaling, controlling application instance module access, managing user application instance module initialization, etc. The reservation controller 328 may include an inventory and reservation module 330, which may operate in a manner similar to that discussed and described with respect to the application engine inventory and reservation module 136 of FIGS. 1 and 2 . The inventory and reservation module 330 may also track and manage an inventory of all application instance modules in the plurality of application instance modules 310. The inventory and reservation module 330 may grant application instance module reservations for use in active sessions. In some embodiments of the present invention, when a user requests to initiate an active session with an application instance module, the inventory and reservation module 330 may reserve an appropriate application instance module, populate or have populated the application instance module with appropriate user and / or application data (e.g., user profile information, user account information, application instance state data, etc. to support user interaction and engagement with the application instance), and bind the reserved application instance module to the active session.If there is no application instance module available for the active session, the inventory and reservation module 330 can instruct the module controller 304 (e.g., via the scaler module 332, described below) to add and register a new application instance module for use with the requested active session.

[0072] In some embodiments of the present invention, the registration process can be performed asynchronously. For example, the inventory and reservation module 330 can wait for new application instance modules to be added and reserved by periodically polling the module controller 304 or by receiving an appropriate message from the module controller 304 after a task is completed. Once an application instance module is registered, the application instance module can be reserved for an active session and bound to the active session. In some embodiments of the present invention, an application instance module reserved for an active session can be accessible only to the user who requested it, for the life of the active session. In other words, an application instance module reserved for a particular active session may not be used or accessed by another user during that active session. In some embodiments of the present invention, data stored in or otherwise used by a reserved application instance module during an active session can be temporary. For example, the application instance module can be deregistered at the end of the active session. Thus, any and all data stored or otherwise used by the application instance module during that active session can be deleted, for example, prior to deregistration of the application instance module. In an alternative embodiment, data stored or otherwise used in a reservation application instance module during an active session can be stored (e.g., stored in database 146), retrieved, and used by the user in subsequent active sessions. When an application instance module is deregistered, it can be reused for another active session, or its computing resources can be reallocated to a different application instance module.

[0073] In an embodiment, the reservation controller 328 may include a scalar module 332 in communication with the inventory and reservation module 330, which may operate in a manner similar to that discussed and described with respect to the application engine scalar module 138 of FIGS. 1 and 2. The scalar module 332 may also respond to changes in inventory and reservation by adding and instantiating new application instance modules to the plurality of application instance modules 310. The scalar module 332 may proactively scale the number of application instance modules in the plurality of application instance modules 310 based on usage trends or other suitable metrics, for example, to maintain a sufficiently sized pool of reservable application instance modules. For example, the scalar module 332 may store a predetermined threshold (e.g., provided or generated based on usage trends or other suitable metrics) for the size of the pool of the plurality of application instance modules 310. If the number of reservable application instance modules decreases below the predetermined threshold, the scalar module 332 may add a new application instance module to the plurality of application instance modules 310 to increase the number of reservable application instance modules above the predetermined threshold. If the increase in the number of reservable application instance modules becomes too large (e.g., exceeds a second predetermined threshold), the scalar module 332 may do nothing, or may remove or otherwise deallocate unnecessary excess application instance modules from the plurality of application instance modules 310. Additionally or alternatively, suitable machine learning / artificial intelligence techniques may be used by or in conjunction with the scalar module 332 to appropriately and dynamically scale the number of reservable application instance modules in the plurality of application instance modules 310.For example, a machine learning model can be trained based on usage data from users (e.g., usage trends, peak usage, off-hour usage, etc.). The machine learning model can then be used to dynamically add and remove / de-allocate application instance modules within the plurality of application instance modules 310. The machine learning model can be updated or otherwise adapted as usage data evolves over time.

[0074] In some implementations of the present invention, each or any of the multiple application instance modules 310 may be associated with and communicate with a separate application instance module pool, which may be maintained, for example, by the inventory and reservation module 330 and / or the scaler module 332, with each application instance module pool supporting a particular type of application instance module or a set of related types of application instance modules. In such implementations, each application instance may have or be associated with its own individual application instance module pool. For example, each of the multiple application instance module pools may be configured to support a single application instance, such that each of the multiple application instance module pools may be allocated per application instance. By way of example and not limitation, a Klondike Solitaire game designed to run natively on the server system 102 may be supported by a first application instance module 312, and the first application instance module may be associated with a first application instance module pool 318 of the first application instance module. A bingo game designed to run natively on server system 102 may be supported by an Mth application instance module 320, which may be associated with an Mth application instance module pool 326 of Mth application instance modules, etc. Any suitable number of application instance module pools may be maintained and supported for any suitable number of application instance modules, e.g., by inventory and reservation module 330 and / or scaler module 332, depending, e.g., on the number of application instances supported by the system or any suitable subset thereof.

[0075] In some embodiments of the present invention, each or any of the application instance modules in each of the multiple application instance module pools can be “pre-warmed.” For example, the application instance modules in each of the multiple application instance module pools can be pre-allocated and pre-instantiated within the application instance module pool and then placed in a standby or sleep mode, for example, by the inventory and reservation module 330 and / or the scalar module 332. By spinning up the application instance modules in each application instance module pool in the background and maintaining those spun-up application instance modules in a standby mode, waking up an application instance module in a standby mode takes substantially less time than instantiating an application instance module from scratch, so that the application instance module can be immediately (or nearly immediately) reserved and assigned to a user upon request for an active session with little or no associated delay. Once an application instance module in an application instance module pool is reserved and allocated, the reserved and allocated application instance module can be immediately (or nearly immediately) replaced by another “pre-warmed” application instance module from the corresponding application instance module pool so that it is ready for immediate (or nearly immediate) reservation and allocation by the next user requesting an active session. Such a "pre-warmed" replacement process can continue as each application instance module in the application instance module pool is reserved and assigned. In this manner, application instance modules from each of multiple application instance module pools can be allocated to users in real time.Computing resources allocated to an application instance module reserved for an active session may be deleted or otherwise deallocated immediately (or nearly immediately) when the active session ends and the reserved application instance module is no longer needed for that active session. In some embodiments of the present invention, such freed computing resources may be reallocated, for example, by inventory and reservation module 330 and / or scalar module 332 to add and pre-warm another application instance module in the associated application instance module pool or a different application instance module pool, rather than maintaining computing resources for reserved application instance modules no longer needed for inactive sessions.

[0076] The size of each or any of the multiple application instance module pools may be fixed or dynamic. For example, the size of an application instance module pool may be fixed such that a predetermined application instance module pool size number of pre-warmed application instance modules may be maintained within the pool. As pre-warmed application instance modules in an application instance module pool are allocated, the inventory and reservation module 330 and / or the scaler module 332 may replace the allocated application instance modules with additional pre-warmed application instance modules to maintain the size of the application instance module pool at or near the predetermined application instance module pool size number. The predetermined application instance module pool size number may be based, for example, on usage trends or other historical usage information for a particular application instance module. Thus, a frequently used application instance module may have a larger predetermined application instance module pool size number, and a less frequently used application instance module may have a smaller predetermined application instance module pool size number.

[0077] Additionally or alternatively, the size of the application instance module pool may be dynamic. In some embodiments of the present invention, the inventory and reservation module 330 and / or the scalar module 332 may monitor usage trends of each or any of the multiple application instance modules 310 in real time. For example, if the usage trend of a particular application instance module increases, the scalar module 332 may increase the size of the associated application instance module pool (and thus the number of pre-warmed application instance modules maintained in the application instance module pool) to accommodate greater usage, so that allocation of application instance modules can continue in real time without additional delays. Conversely, if the usage trend of a particular application instance module decreases, the scalar module 332 may decrease the size of the associated application instance module pool (and thus the number of pre-warmed application instance modules maintained in the application instance module pool) to accommodate lower usage, so that computing resources are not unnecessarily over-utilized and can be allocated elsewhere. In such an embodiment, the size of each or any of the application instance module pools may be dynamically varied to accommodate periods of increased usage (e.g., usage spikes) and lulls in usage in order to maintain real-time application instance module allocation.

[0078] In some embodiments of the present invention, the inventory and reservation module 330 and / or the scalar module 332 may include a suitable predictive model or use a suitable machine learning / artificial intelligence technique to determine the application instance module pool size for multiple application instance module pools. For example, a machine learning model may be trained based on usage trend data for each supported application instance module and modify the application instance module pool size for the application instance module to minimize the amount of time to allocate the application instance module and maintain fast allocation times for real-time application instance module allocations. The machine learning model may then be used to dynamically and appropriately modify the size of the application instance module pool associated with the application instance module based on the usage exhibited at a particular time for that application instance module. The machine learning model may be updated or otherwise adapted as application instance module usage trends change and evolve over time, for example, as monitored by the inventory and reservation module 330 and / or the scalar module 332.

[0079] In some embodiments of the present invention, the size of each application instance module pool in a subset of the plurality of application instance module pools may be fixed, while the sizes of other application instance module pools in the plurality of application instance module pools may be dynamic. For example, a highly used application instance module may be associated with a dynamic-sized application instance module pool, while a less frequently used application instance module may be associated with a fixed-sized application instance module pool. Additionally or alternatively, the size of a particular application instance module pool may be fixed at certain times and dynamic at other times. For example, for an application instance module that generally experiences less usage, the size of the corresponding application instance module pool may be fixed. However, during (e.g., intermittent) periods of higher usage (e.g., usage spikes), the size of the corresponding application instance module pool may be dynamic. The inventory and reservation module 330 and / or the scaler module 332 may switch the size of the application instance module pool back to fixed when the period of higher usage ends. In this manner, the inventory and reservation module 330 and / or the scalar module 332 can adapt to changing usage conditions as needed to maintain reduced allocation times for real-time allocation of application instance modules.

[0080] 3, one or more application instance module pools may be maintained within and with the plurality of application instance modules 310. However, in some embodiments of the present invention, each or any of the one or more application instance module pools may be maintained outside the plurality of application instance modules 310 but within or with the module controller 304 within the server system 102. Additionally or alternatively, each or any of the one or more application instance module pools may be maintained within or with the server system 102 but outside the module controller 304, such as in the database 146. Additionally or alternatively, each or any of the one or more application instance module pools may be maintained within or with a suitable cloud or server storage system that is remote from and in communication with the server system 102.

[0081] In some implementations of the present invention, each reserved and allocated application engine module and / or reserved and allocated application instance module may be associated with a different unique application engine module identification (ID) number or other suitable identifier (e.g., composed of numeric or alphanumeric characters, etc.) that uniquely identifies the reserved and allocated application engine module and / or reserved and allocated application instance module during an active session. The module ID may be used, for example, by session management controller 140 to track and manage the reserved and allocated application engine module and / or reserved and allocated application instance module during an active session to ensure that communications from client device 150 during the active session are addressed and forwarded to the correct application engine module or application instance module, and vice versa. In one embodiment, upon completion of an active session, session information module 158 may send an appropriate message to session management controller 140 so that session management controller 140 can disconnect the active session and deregister the application engine module or application instance module used during the active session. In some embodiments of the present invention, any and all data stored or otherwise used by a registered application engine module or a registered application instance module during its active session may be deleted upon deregistration of the application engine module or application instance module.In alternative embodiments, data stored or otherwise used by a reservation application engine module or a reservation application instance module during an active session can be stored (e.g., stored in database 146), retrieved, and used by the user in subsequent active sessions. When an application engine module or application instance module is deregistered, it can be reused for another active session, or its computing resources can be reallocated to a different application engine module or application instance module.

[0082] 4 is a block diagram illustrating an exemplary cloud-based client application platform 400 for remotely modifying cloud-based client applications, in accordance with one embodiment of the present disclosure. Cloud-based client application platform 400 provides similar features and functionality as those illustrated and described with respect to cloud-based client application platform 100 of FIG. 1. However, in some embodiments of the present invention, cloud-based client application platform 400 may use and include multiple application engine module pools to provide similar features and functionality as those illustrated and described with respect to cloud-based client application platform 200 of FIG. 2. Alternatively, in some embodiments of the present invention, cloud-based client application platform 400 may use and include multiple application engine module pools and multiple application instance pools to provide similar features and functionality as those illustrated and described with respect to cloud-based client application platform 300 of FIG. 3.

[0083] As shown in FIG. 4 , a software tool module can be instantiated within each or any of the multiple application engine modules 106. For example, each or any of the application engine modules 108, 114, 120, ... 126 can include a software tool module that can include or provide any suitable cloud-based software tool that can be used to build, create, augment, modify, generate, and / or deliver a cloud-based client application via the cloud-based client application platform 400. For example, the first application engine module 108 can include a software tool module 405 that communicates with the video / audio module 110 and the state module 112. The second application engine module 114 can include a software tool module 410 that communicates with the video / audio module 116 and the state module 118. The third application engine module 120 can include a software tool module 415 that communicates with the video / audio module 122 and the state module 124. The Nth application engine module 126 can include a software tool module 420 that communicates with the video / audio module 128 and the state module 130. Once an application engine module has been reserved, registered, and bound to an active session by the application engine reservation controller 134 (e.g., via the application engine inventory and reservation module 136 in communication with the application engine module controller 104), the software tool modules can be instantiated within the application engine module. In one embodiment, each or any of the respective software tool modules can provide a complete set of diverse software tools for supporting a wide variety of cloud-based client applications.Additionally or alternatively, each or any of the respective software tool modules may provide a subset of software tools for use in remotely modifying or augmenting a cloud-based client application running on the application engine module. Such a subset of tools may be based, for example, on characteristics of the cloud-based client application running on the application engine module (e.g., the type of cloud-based client application, the type of operating system on which the cloud-based client application is launched, etc.), the type of modification being made to the cloud-based client application running on the application engine module (e.g., image editing software tools if image modification is being made, text editing software tools if text editing is being made, etc.), etc.

[0084] In one embodiment, the tools and functionality supported by each software tool module may be available and accessible to any user via modification module 160 executing on client device 150, as described above with respect to cloud-based client application platform 100 of FIG. 1 . However, because certain users may simply want to interact with and engage with the cloud-based client application and not modify it, accessibility to the tools and functionality supported by each software tool module may be limited to a subset of users by cloud-based client application platform 400 or the user. For example, the ability to access each software tool module may be provided as a button or other suitable graphical element that can be displayed to the user through modification module 160 via display module 154, for example, when the user accesses an instantiated application engine module. By selecting such a button or graphical element, modification module 160 can display or cause to be displayed (e.g., via display module 154) to the user the software tools available from the software tool modules within the application engine module for the active session. Alternatively, such access may be hidden or otherwise not displayed from certain users (e.g., novice or novice users, users not interested in remotely modifying client applications, etc.) For example, an online user account associated with each user (e.g., maintained by cloud-based client application platform 400) may provide one or more appropriate account settings that may enable the user to specify whether or not they want access to such tools.If the user does not want such access, the tool or the ability to access the tool (e.g., no button or other graphical element) is not displayed to the user in the active session. Additionally or alternatively, predetermined rules may be established (e.g., by an administrator of cloud-based client application platform 400) to restrict access to such tools to particular users (e.g., experienced users, etc.). Other methods of restricting or limiting access to each software tool module are also possible.

[0085] In one embodiment, the application engine module controller 104 may include a monetization module 425 that communicates with multiple application engine modules 106. In such an embodiment, the monetization module 425 may be separate from the respective software tool modules running within the respective application engine modules. In an alternative embodiment, the monetization module 425 may be included in each or any of the respective software tool modules within the respective application engine modules. The monetization module 425 may provide features and functionality similar to those described with respect to the monetization module 149 of FIG. 1. Thus, the monetization module 425 may provide tools and support for monetizing the modified cloud-based client application to enable users to create, buy, and sell NFTs in an NFT ecosystem, as described above with respect to the monetization module 149 of FIG. 1.

[0086] FIG. 5 is a block diagram illustrating an exemplary cloud-based client application platform 500 for remotely modifying and monetizing cloud-based client applications in accordance with one embodiment of the present disclosure. A server system 520 can provide functionality for remotely viewing and modifying cloud-based client applications on a user's client device. The server system 520 can include software components and databases that can be deployed, for example, in one or more data centers 518 in one or more geographic locations. The software components of the server system 520 can include a client application module 522, a software tools module 524, and a monetization module 526. The software components can include subcomponents that can execute on the same or different individual data processing devices. The server system 520 can include one or more databases 528. The databases 528 can be cloud-based or can reside in one or more physical storage systems. The software components and data are further described below.

[0087] 5, the client application module 522, the software tools module 524, and the monetization module 526 can communicate with a database 528. The database 528 can include, for example, user information, client applications and associated data, modified cloud-based client applications and associated data, software tools for remotely modifying the cloud-based client applications, monetization information (e.g., NFTs, data related to NFTs, cryptocurrency wallet information, user account information such as cryptocurrency balances, etc.), digital content for remotely modifying the cloud-based client applications (e.g., images, video, audio, text, etc.), etc. The cloud-based client applications can relate to and / or provide a wide variety of functions and information including, for example, entertainment (e.g., games, music, video, etc.), business (e.g., word processing, accounting, spreadsheets, etc.), news, weather, finance, sports, etc. In a particular embodiment, the cloud-based client application can provide a cloud-based mobile game. The cloud-based mobile game may be or include, for example, a sports game, an adventure game, a virtual playing card game, a virtual board game, a puzzle game, a racing game, or any other suitable type of mobile game. In one embodiment, the cloud-based mobile game may be an asynchronous competitive skill-based game in which players can compete with each other in the cloud-based mobile game but do not need to play the cloud-based mobile game simultaneously. In an alternative embodiment, the cloud-based mobile game may be a synchronous competitive skill-based game in which players can play the cloud-based mobile game simultaneously and compete with each other in the cloud-based mobile game in real time.

[0088] In one embodiment, the cloud-based client application, or components thereof, can be accessed over a network 530 (e.g., the Internet, etc.) by users of client devices, such as client device A 502, client device B 506, client device C 510, ..., client device P 514, where P can be any suitable natural number. Each of the client devices can be any suitable type of electronic device capable of displaying the output of the cloud-based client application running remotely on server system 520 and communicating with server system 520 over network 530, such as, for example, a smartphone, a tablet computer, a laptop computer, a desktop or personal computer, a game console, etc. Other client devices are possible. Each of client devices 502, 506, 510, ..., 514 can include a display module for displaying the output of the cloud-based client application running remotely on server system 520 and allowing users to remotely interact with the cloud-based client application. For example, client device A 502 may include display module A 504, client device B 506 may include display module B 508, client device C 510 may include display module C 512, and client device P 514 may include display module P 516. In one embodiment, each display module may support any suitable type of browser application, such as, for example, Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari, DuckDuckGo, Opera, Brave, Vivaldi, Firefox Focus, proprietary browsers, etc., through which a user can access a cloud-based client application running remotely on server system 520.Additionally or alternatively, each display module may be or otherwise include a suitable application capable of supporting the rendering of the cloud-based client application locally in a browser application (e.g., via OpenGL, etc.). In alternative embodiments, database 528, or any portion thereof, may be stored on one or more client devices. Additionally or alternatively, software components for cloud-based client application platform 500 (e.g., client application module 522, software tools module 524, and monetization module 526), ​​or any portion thereof, may reside on or be used to perform operations on one or more client devices.

[0089] The client application module 522 can be configured to execute cloud-based client applications on the server system 520 and remotely display the output of the cloud-based client applications on a user's client device. For example, the client application module 522 can provide one or more application engine modules that enable each cloud-based client application to execute in a manner similar to that described with respect to the server system 102 of Figures 1, 2, 3, and 4. The output of the cloud-based client application can be displayed within a display module of the user's client device, which can also enable the user to interact with the cloud-based client application as if the cloud-based client application were running natively on the client device.

[0090] The software tools module 524 may provide cloud-based software tools and other suitable functionality to enable users to remotely create, augment, or otherwise modify cloud-based client applications via client devices for delivery via the cloud-based client application platform 500. For example, such cloud-based software tools may be used to modify existing cloud-based client applications running within the client application module 522 to create augmented or modified cloud-based client applications. In some embodiments of the present invention, the cloud-based software tools may enable users to modify non-cloud-based client applications into cloud-based client applications for delivery via the cloud-based client application platform 500 (e.g., appropriate compilers, cross-compilers, software development tools, etc.). The software tools module 524 may enable “modifiers” (e.g., client application developers, client application users, etc.) to augment content, add new functionality, or change existing functionality, create, or otherwise modify cloud-based client applications via client devices. For example, the software tools module 524 may include or otherwise provide suitable software tools for creating and editing digital content (e.g., text, images, video, audio, or any combination thereof) within the cloud-based client application. Additionally or alternatively, the software tools module 524 may include or otherwise provide suitable software development tools for generating, editing, and compiling (or cross-compiling) computer code for cloud-based client applications. Other software tools are possible.The software tools module 524 may include or provide any suitable cloud-based software tools that can be used to build, create, augment, modify, generate, and / or deliver cloud-based client applications using a user's client device via the cloud-based client application platform 500. Such cloud-based software tools may be used to provide a wide variety of users with features and functionality for "modifying" cloud-based client applications to augment content creation, add new functionality or modify existing functionality, and create or otherwise evolve the cloud-based client application as the user desires.

[0091] In one embodiment, software tools module 524 may provide a complete set of diverse software tools to support a wide variety of cloud-based client applications. Additionally or alternatively, software tools module 524 may provide a subset of software tools for use in remotely modifying or enhancing cloud-based client applications executing in client application module 522. In one embodiment, software tools module 524 may use appropriate machine learning / artificial intelligence techniques to automatically and dynamically select and provide to a user appropriate software tools (e.g., image editing software tools if image modifications are being performed, text editing software tools if text modifications are being performed, etc.) based on, for example, characteristics of the cloud-based client application (e.g., type of cloud-based client application, type of operating system on which the cloud-based client application is launched, etc.), the type of modifications to be made to the cloud-based client application, etc. For example, a machine learning model may be trained based on tool usage data from users (e.g., which software tools are used with what frequency, which cloud-based client applications were modified with which tools, etc.). The machine learning model may then be used to dynamically add and select appropriate software tools for a user to modify a given cloud-based client application. The machine learning models can be updated or otherwise adapted as software tool usage data evolves over time. For example, software tools module 524 can maintain a set of core software tools, but additional or alternative software tools can be stored in, for example, database 528 and automatically and dynamically retrieved from database 528 as needed and as needed when a user is remotely modifying the cloud-based client application via the user's client device.

[0092] In one embodiment, once modifications to the cloud-based client application are complete, data stored in or otherwise used by client application module 522 (e.g., any or all data associated with the modified cloud-based client application, including the modified cloud-based client application itself) can be stored in database 528 so that the modified cloud-based client application can be retrieved and used again by client application module 522 for other users. The modified cloud-based client application can then be distributed to and accessed by other users of cloud-based client application platform 500. In additional embodiments, software tools module 524 can provide tools and functionality for remotely modifying non-cloud-based client applications (e.g., PC-based applications, game console-based applications, etc.) into cloud-based client applications for distribution via cloud-based client application platform 500, in the manner described above. For example, to convert a non-cloud-based client application into a cloud-based mobile application, the software tools module 524 may provide appropriate tools for augmenting application content to accommodate different sized screens, such as mobile devices, compilers (or cross-compilers), and other software development tools for creating / editing and recompiling (or cross-compiling) client applications to run on (different) target client platforms and operating systems (e.g., iOS, Android®, etc.).The software tools module 524 may also provide appropriate tools for uploading modified or otherwise converted cloud-based client applications to the cloud-based client application platform 500.

[0093] In one embodiment, each display module on each client device may provide a user with an appropriate interface for accessing the software tools provided by the software tools module 524. Through the display modules, a user may “modify” the cloud-based client application to enhance content creation, add new features or modify existing features, and create or otherwise evolve the cloud-based client application as desired by the user. For example, a display module (e.g., display module A 504 of client device A 502) may display a list of software tools available from the software tools module 524 for remotely modifying the cloud-based client application via the client device, as well as access to the cloud-based client application in the client application module 522. The user may select one or more tools as needed to modify the cloud-based client application in any desired manner, change the tools, and continue to modify the cloud-based client application as needed. Any modifications may be passed or otherwise transmitted or communicated from the display module on the client device to the software tools module 524 so that the cloud-based client application may be correspondingly modified in the client application module 522. Once modifications to the cloud-based client application are complete, the user can save the modified cloud-based client application via a display module on the client device that can communicate such information to the software tools module 524.Software tools module 524 may be stored in client application module 522 so that the modified cloud-based client application can be retrieved and used in subsequent active sessions, or data otherwise used by client application module 522 (e.g., any or all data associated with the modified cloud-based client application, including the modified cloud-based client application itself) may be stored in database 528. Such “modified” cloud-based client applications may be used by other users, thereby enabling the “modified” cloud-based client applications to be distributed to a wide variety of users of cloud-based client application platform 500. Thus, some embodiments of the present invention may enable any user to create and / or modify cloud-based client applications by remotely accessing software tools via an appropriate browser on a client device, without the user having to separately install each tool on the client device itself. Because users do not install and run software tools or client applications (original or modified) locally, embodiments of the present invention can reduce or eliminate storage requirements for such tools and client applications on client devices and reduce network bandwidth requirements (because each tool package and / or client application does not need to be downloaded / uploaded in its entirety to / from each client device).

[0094] The monetization module 526 can provide tools and support for monetizing both modified and unmodified cloud-based client applications. In one embodiment, the monetization module 524 can enable users to create, buy, and sell NFTs to monetize modified cloud-based client applications within the NFT ecosystem. The present invention can create NFTs on an appropriate blockchain, save a user's cloud-based client application as an NFT, and enable cloud-based client application developers and content creators to create processes for monetizing cloud-based client applications or instances of cloud-based client applications (e.g., particular “modifications” of a cloud-based client application, particular competitive and / or popular matches of a cloud-based client gaming application, etc.). Once a user modifies a cloud-based client application via the client application module 522, the monetization module 526 can provide appropriate tools and functionality for creating NFTs based on the modified cloud-based client application. For example, the monetization module 526 can offer the user (via a display module on the client device) a selection of blockchain technologies that can be used for NFTs. The monetization module 526 may also provide the user (via a display module on the client device) with appropriate tools for creating a digital wallet and a selection of marketplaces for the NFT. In one embodiment, the server system 520 may provide appropriate infrastructure to support an NFT marketplace ecosystem. In an alternative embodiment, the monetization module 526 may communicate with one or more appropriate third-party NFT marketplaces.For purposes of explanation and not limitation, if the user selects a third-party NFT marketplace, the monetization module 526 can upload the digital file of the modified cloud-based client application to the third-party NFT marketplace. Once uploaded, the monetization module 526 can provide the user (via a display module on the client device) with a selection to select how to monetize the NFT. Once the user selects various characteristics of the NFT, the monetization module 526 can instruct the third-party marketplace to create the NFT, which can then be sold on the third-party NFT marketplace. Alternatively, the monetization module 526 can perform one or more functions of the third-party NFT marketplace to generate the NFT before uploading the NFT to the third-party NFT marketplace.

[0095] In one embodiment, the monetization module 526 may also provide tools and functionality to support the purchase of NFTs of the modified cloud-based client application by users of the cloud-based client application platform 500. For example, the monetization module 526 may provide tools (accessible to the user via a display module on the client device) for opening an NFT marketplace account (either with an NFT marketplace managed by the server system 520 or a third-party NFT marketplace). The monetization module 526 may also provide tools (accessible to the user via a display module on the client device) for creating a blockchain wallet and funding the wallet with the correct cryptocurrency or tokens necessary to participate in NFT marketplace activities, thereby enabling the user to purchase NFTs of the modified cloud-based client application via the cloud-based client application platform 500. Thus, an exemplary embodiment of the present invention may combine cloud-based “alterations” of cloud-based client applications with NFTs to address issues of ownership, authenticity, provenance, and attribution. Additionally, the present invention can ensure that programmatic smart contracts manage the distribution and monetization of cloud-based client application NFTs (e.g., payments are split between the developer, publisher / platform, and creator). The "modified" cloud-based client application can be independently distributed by the creator, monetized as NFTs as the creator sees fit, and bought / sold on appropriate NFT marketplaces.

[0096] In one embodiment, a display module on each client device may provide a user with an appropriate interface through which to access and use the monetization module 526. Using the display module on the client device, a user may create, purchase, and sell NFTs to monetize the modified cloud-based client application within the NFT ecosystem using the monetization module 526. For example, the display module on the client device may display appropriate tools and functionality (available from the monetization module 526) for creating NFTs based on the modified cloud-based client application. For example, the display module may display to the user a selection of blockchain technologies (available from the monetization module 526) that can be used for NFTs. The display module may also display to the user appropriate tools (available from the monetization module 526) for creating digital wallets and a selection of marketplaces for NFTs. By way of example and not limitation, if the user selects a third-party NFT marketplace, the display module on the client device may display functionality (available from the monetization module 526) that enables the user to upload digital files of the modified cloud-based client application to the third-party NFT marketplace. Once uploaded, the display module can display options (available from the monetization module 526) to the user to choose how to monetize the NFT. Once the user selects various characteristics of the NFT, the display module can cause the monetization module 526 to instruct a third-party marketplace to create the NFT, which can then be sold on the third-party NFT marketplace.The display module may also display tools and provide functionality (available from the monetization module 526) to support the purchase of NFTs for the modified cloud-based client application by a user of the cloud-based client application platform 500 via a client device. For example, the display module may display to the user the appropriate tools and functionality (available from the monetization module 526) for opening an NFT marketplace account. The display module may also display to the user the appropriate tools and functionality (available from the monetization module 526) for creating a blockchain wallet and funding the wallet with the correct cryptocurrency or tokens needed to participate in NFT marketplace activity, thereby enabling the user to purchase NFTs for the modified cloud-based client application via the cloud-based client application platform 500.

[0097] FIG. 6 is a flowchart illustrating an exemplary method 600 for remotely modifying and monetizing a cloud-based client application using, for example, server system 520 of FIG. 5 (although server system 102 of FIG. 1 , 2 , 3 , or 4 could alternatively be used), according to an embodiment of the present disclosure. At block 605, server system 520 may receive a first request from a client device (e.g., client device 502) of a first user to initiate an interactive session with the cloud-based client application. The cloud-based client application may be configured to run on a different computing platform than the client device. At block 610, in response to the first request, server system 520 may reserve an application engine for remotely executing the cloud-based client application from the client device (e.g., using client application module 522). The application engine may be bound or otherwise linked to the first user for the duration of the interactive session. At block 615, server system 520 may receive a second request from the client device to modify the cloud-based client application using one or more software tools. The one or more software tools may be configured to run on a different computing platform than the client device. At block 620, the server system 520 may modify the cloud-based client application in the application engine based on the second request (e.g., using the software tool module 524). At block 625, the server system 520 may receive a third request from the client device to convert the modified cloud-based client application into a digital asset.At block 630, the server system 520 may convert the modified cloud-based client application into a digital asset based on the third request (e.g., using the monetization module 526). At block 635, the server system 520 may receive a fourth request to monetize the digital asset from the client device. At block 640, the server system 520 may monetize the digital asset using a third-party digital asset marketplace based on the fourth request (e.g., using the monetization module 526). At block 645, the server system 520 may transmit results of the monetization of the digital asset to the client device. At block 650, the server system 520 may receive a fifth request from the client device to end the interactive session with the modified cloud-based client application. At block 655, the server system 520 may deregister the application engine to end the interactive session (e.g., using the client application module 522) in response to the fifth request. The application engine may be unbound or otherwise unlinked from the first user, and the modified cloud-based client application may be available for use by a second or subsequent user.

[0098] FIG. 7 is a flowchart illustrating an exemplary method 700 for remotely interacting with a client application using, for example, the server system 102 of FIG. 1 , 2 , 3 , or 4 (although the server system 520 of FIG. 5 could alternatively be used), according to an embodiment of the present disclosure. At block 705, the server system 102 may receive a first request from a client device (e.g., client device 150) of a first user to initiate an interactive session with the cloud-based client application. The first request may include one or more characteristics of at least one of the first user and the client device. The cloud-based client application may be configured to run on a different computing platform than the client device. At block 710, in response to the first request, the server system 102 may reserve an application engine (e.g., from multiple application engine modules 106 or 206) for executing the cloud-based client application remotely from the client device. The application engine may be bound or otherwise linked to the first user for the duration of the interactive session. In one embodiment, each application engine may be reserved for one user, such that each application engine may be used by at most a single (bound) user during an interactive session. At block 715, the server system 102 may modify the cloud-based client application based on one or more characteristics of at least one of the first user and the client device. In an embodiment, one or more characteristics of the first user and / or the client device may be used to modify the cloud-based client application running on the application engine (e.g., logged-in state, etc.).At block 720, the server system 102 may execute the modified cloud-based client application in the application engine. At block 725, the server system 102 may stream media data from the modified cloud-based client application to a browser application or other suitable application (e.g., browser module 148) executing on the client device of the first user. At block 730, the server system 102 may receive interaction data from the client device when the first user engages with the media data streamed from the modified cloud-based client application via the browser application. At block 735, the server system 102 may receive a second request from the client device to terminate the interactive session with the modified cloud-based client application. In one embodiment, the second request may be the termination of a stream to which the client device is connected, rather than a specific request from the client to terminate the interactive session. At block 740, the server system 102 may deregister or deallocate the application engine in response to the second request. In one embodiment, the application engine may be deregistered or deallocated from the inventory and the processor, and the process supporting the application engine may be spun down or otherwise terminated, so that the application engine is not reused for multiple users. In an alternative embodiment, the application engine may be unbound or otherwise unlinked from a first user and available for use by a second (or subsequent) user.

[0099] Embodiments of the present invention can improve network efficiency by not requiring users to download and install on their client devices numerous (e.g., dozens, hundreds, or more) different client applications with which they want to interact or software tools for modifying and monetizing each of those client applications. Instead, the present invention can improve network traffic and network bandwidth utilization because only video / audio data and user input (from client applications and software tools) are communicated between a server system (e.g., server system 102 or server system 520) and a client device (e.g., client device 150 or client devices 502, 506, 510, ..., 514) rather than either the entire client application or the software tools. Furthermore, the present invention can reduce computer storage requirements on both the client and server sides. For example, users do not need to download and install any client applications or software tools on their client devices. In some embodiments of the present invention, server system 102 can store a single version of a cloud-based client application and software tools that can be accessed from and delivered to any type of client device, rather than having to store multiple different versions of the client application to support multiple different types of client devices and software tools to support countless different types of client applications.

[0100] Embodiments of the present invention may also improve the processing efficiency of client device 150 because client device 150 can process video / audio data from cloud-based client applications and software tools more quickly and efficiently than if the entire client application and software tool itself were to run natively on the client device. Embodiments of the present invention may also improve the processing efficiency of server system 102. Rather than maintaining the continuous execution of cloud-based client applications and computing resources to support cloud-based client applications on server system 102, server system 102 may allocate computing resources when application engine modules and / or application instance modules are registered for an active session and deallocate those resources when the active session is completed. In other words, server system 102 may register and deregister application engine modules and / or application instance modules as needed, respectively, without having to continuously maintain and process each cloud-based client application and software tool for each client device. As a result, the server system 102 can more effectively allocate computing resources to application engine modules and / or application instance modules that are being used (and cloud-based client applications that run within those application engine modules or as application instances), and away from application engine modules and / or application instance modules that are not being used.In some implementations of the present invention, pre-warming of application engine modules in an application engine module pool and / or application instances in an application instance pool can also substantially reduce response times for establishing active sessions. Accordingly, embodiments of the present invention can manage users of active sessions at scale to maintain instant (or near-instant) launch and interaction with cloud-based client applications (e.g., “instant play” in the context of cloud-based mobile gaming), particularly when there are, for example, hundreds or thousands of cloud-based client applications, hundreds or thousands of software tools, and millions, tens of millions, or more users simultaneously interacting with those cloud-based client applications.

[0101] FIG. 8 is a block diagram of an example computing device 800 capable of performing one or more of the operations described herein, according to embodiments. The computing device 800 may be connected to other computing devices within a LAN, an intranet, an extranet, and / or the Internet. The computing device 800 may operate in the capacity of a server machine in a client-server network environment or in the capacity of a client in a peer-to-peer network environment. The computing device 800 may be provided by a personal computer (PC), a set-top box (STB), a server, a network router, switch, or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Furthermore, while only a single computing device 800 is shown, the term “computing device” should also be interpreted to include any collection of computing devices that individually or together execute a set (or sets) of instructions to perform the methods described herein.

[0102] The exemplary computing device 800 may include a computer processing device 802 (e.g., a general-purpose processor, an ASIC, etc.), a main memory 804, a static memory 806 (e.g., a flash memory, etc.), and a data storage device 808, which may communicate with each other via a bus 830. The computer processing device 802 may be provided by one or more general-purpose processing devices, such as a microprocessor, a central processing unit, etc. In an illustrative example, the computer processing device 802 may comprise a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or a processor implementing a combination of instruction sets. The computer processing device 802 may also comprise one or more special-purpose processing devices, such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a digital signal processor (DSP), a network processor, etc. The computer processing device 802 may be configured to perform the operations described herein in accordance with one or more aspects of the present disclosure to perform the operations and steps described herein.

[0103] Computing device 800 may further include a network interface device 812 that may communicate with a network 814. Data storage device 808 may include a machine-readable storage medium 828 that may store one or more sets of instructions, such as, for example, instructions for performing the operations described herein, according to one or more aspects of the present disclosure. Instructions 818 implementing core logic instructions 826 may also reside, completely or at least partially, within main memory 804 and / or within computing device 802 during execution of the instructions by computing device 800, main memory 804, and computing device 802, which also constitute computer-readable media. Instructions may further be transmitted or received over network 814 via network interface device 812.

[0104] Although the machine-readable storage medium 828 is shown to be a single medium in the illustrative example, the term "computer-readable storage medium" should be interpreted to include a single medium or multiple media (e.g., a centralized or distributed database and / or associated caches and servers) that store one or more sets of instructions. The term "computer-readable storage medium" should also be interpreted to include any medium that can store, encode, or carry a set of instructions for execution by a machine, causing the machine to perform the methods described herein. Thus, the term "computer-readable storage medium" should be interpreted to include, but is not limited to, solid-state memory, optical media, magnetic media, etc.

[0105] Embodiments of the subject matter and operations described in this disclosure may be implemented in digital electronic circuitry, or computer software, firmware, or hardware, including the structures disclosed in this disclosure and their structural equivalents, or one or more combinations thereof. Embodiments of the subject matter described in this disclosure may be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on a computer storage medium for execution by or to control the operation of a data processing apparatus. Alternatively or additionally, the program instructions may be encoded in an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to a suitable receiving device for execution by the data processing apparatus. The computer storage medium may be, or may be included in, a computer-readable storage device, a computer-readable storage substrate, a random-access or serial-access memory array or device, or one or more combinations thereof. Furthermore, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. A computer storage medium may also be, or be contained in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).

[0106] The operations described in this disclosure may be implemented as operations performed by a data processing apparatus on data stored in one or more computer-readable storage devices or received from other sources.

[0107] The term "data processing apparatus" encompasses all kinds of apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computing device, a computer, a system-on-chip, or a plurality or combination of the above. A computing device may include one or more processors, which may include special-purpose logic circuits, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC), a central processing unit (CPU), or a multi-core processor. In addition to hardware, an apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or one or more combinations thereof. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.

[0108] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted, declarative, procedural, or functional, and can be deployed in any form, either as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but does not necessarily, correspond to a file in a file system. A program can be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in markup language resources), in a single file dedicated to the program in question, or in multiple cooperating files (e.g., files storing one or more modules, subprograms, or portions of code). A computer program can be deployed to run on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communications network.

[0109] The processes and logic flows described in this disclosure may be performed by one or more programmable processors executing one or more computer programs to perform actions by manipulating input data and generating output. The processes and logic flows may also be performed by, and an apparatus may also be implemented as, special purpose logic circuitry, such as, for example, an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

[0110] Processors suitable for executing a computer program include, by way of example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor receives instructions and data from a read-only memory or a random-access memory, or both. The essential elements of a computer are a processor for performing actions in accordance with the instructions and one or more memory devices for storing instructions and data. Generally, a computer also includes one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, optical disks, solid-state drives, etc., or is operatively coupled to receive data from or transfer data to them, or both. However, a computer need not have such devices. Furthermore, a computer may be incorporated into another device, such as a smartphone, a mobile audio or media player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Suitable devices for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media, and memory devices, including semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0111] To provide for interaction with a user, embodiments of the subject matter described herein may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, light-emitting diode (LED) monitor, etc., for displaying information to the user, and a keyboard and pointing device, such as a mouse, trackball, touchpad, stylus, etc., by which the user can provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or haptic feedback, and input from the user may be received in any form, including acoustic, speech, or tactile input. Other possible input devices include touchscreens or other touch-sensitive devices, such as single-point or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software. Additionally, the computer can interact with the user by sending resources to and receiving resources from devices used by the user, for example, by sending a web page to a web browser on the user's client device in response to a request received from the web browser.

[0112] Embodiments of the subject matter described in this disclosure may be implemented in a computing system that includes back-end components, e.g., as a data server, or includes middleware components, e.g., an application server, or includes front-end components, e.g., a client computer having a graphical user interface or web browser through which a user can interact with embodiments of the subject matter described in this disclosure, or any combination of one or more such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, e.g., a communications network. Examples of communications networks include local area networks (“LANs”) and wide area networks (“WANs”), internetworks (e.g., the Internet), peer-to-peer networks (e.g., ad hoc peer-to-peer networks), etc.

[0113] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data (e.g., HTML pages) to the client devices (e.g., for the purpose of displaying the data to and receiving user input from users interacting with the client devices). Data generated at the client devices (e.g., results of user interactions) can be received from the client devices by the server.

[0114] One or more computer systems may be configured to perform particular operations or actions by installing software, firmware, hardware, or a combination thereof on the system that causes the system to perform the actions during operation. One or more computer programs may be configured to perform particular operations or actions by including instructions that, when executed by a data processing device, cause the device to perform the actions.

[0115] References throughout this disclosure to "one embodiment" or "an embodiment" mean a particular feature, structure, or characteristic described in connection with an embodiment that is included in at least one embodiment. Thus, the appearances of the phrase "in one embodiment" or "in an embodiment" in various places throughout this disclosure are not necessarily all referring to the same embodiment. Additionally, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or."

[0116] While the present disclosure contains many specific implementation details, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather as descriptions of features specific to particular embodiments of a particular invention. Certain features described in this disclosure in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, while features may be described above as acting in particular combinations and initially claimed as such, one or more features from a claimed combination may, in some cases, be omitted from the combination, and the claimed combination may be directed to a subcombination or a variation of the subcombination.

[0117] Similarly, although operations and / or logic flows are depicted in the figures and / or described herein in a particular order, this should not be understood as requiring such operations and / or logic flows to be performed in the particular order shown, or in any sequential order, or that all of the operations shown be performed, to achieve desirable results. In certain situations, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the above embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems may generally be integrated together in a single software product or packaged in multiple software products.

[0118] Accordingly, specific embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.

[0119] The terms "example" or "exemplary" are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as "example" or "exemplary" should not necessarily be construed as preferred or advantageous over other aspects or designs. Rather, use of the terms "example" or "exemplary" is intended to concretely present the concept. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless otherwise specified or clear from the context, "X includes A or B" is intended to mean any of the natural inclusive permutations. That is, "X includes A or B" is satisfied if X includes A, if X includes B, or if X includes both A and B. Additionally, the articles "a" and "an," as used in this application and the appended claims, should be construed generally to mean "one or more" unless otherwise specified or clear from the context that the singular form is intended. Furthermore, the use of the terms "one embodiment" or "one embodiment" or "one implementation" or "one embodiment" throughout is not intended to refer to the same embodiment or implementation unless so stated. Furthermore, the terms "first," "second," "third," "fourth," etc., as used herein, are intended as labels to distinguish different elements and do not necessarily imply an order according to their numerical designations.

[0120] In the above description and in the claims, phrases such as "at least one of" or "one or more of" may appear followed by a list of conjunctive elements or features. The term "and / or" may also appear with a list of two or more elements or features. Such phrases are intended to mean any of the listed elements or features individually, or any of the listed elements or features in combination with any of the other listed elements or features, unless otherwise implicitly or explicitly contradicted by the context in which they are used. For example, the phrases "at least one of A and B," "one or more of A and B," and "A and / or B" are intended to mean "A alone, B alone, or A and B together," respectively. A similar interpretation is intended for lists containing more than two items. For example, the phrases "at least one of A, B, and C," "one or more of A, B, and C," and "A, B, and / or C" are intended to mean "A alone, B alone, C alone, A and B, A and C, B and C, or A, B, and C," respectively. Furthermore, use of the term "based on" above and in the claims is intended to mean "based at least in part on," allowing for unrecited features or elements.

[0121] The above description of illustrated embodiments of the present invention is not intended to be exhaustive or to limit the invention to the precise form disclosed. While specific embodiments and examples of the present invention have been described herein for illustrative purposes, those skilled in the art will recognize that various equivalent modifications are possible within the scope of the present invention. The subject matter described herein can be implemented in systems, devices, methods, and / or articles, depending on the desired configuration. The embodiments set forth in the foregoing description do not represent all embodiments consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. While several variations have been described in detail above, other modifications or additions are possible. In particular, additional features and / or variations may be provided in addition to those described herein. For example, the embodiments described above may be directed to various combinations and subcombinations of the disclosed features and / or combinations and subcombinations of several additional features described above. Other embodiments may be within the scope of the following claims.

Claims

1. 1. A method, comprising: receiving, by at least one data processor, a first request from a first client device of a user to initiate an interactive session with a cloud-based client application, the cloud-based client application configured to execute on a second client device, the second client device comprising a different computing platform than the first client device; reserving, by the at least one data processor, an application engine from a pre-instantiated application engine pool of a plurality of pre-instantiated application engine pools to execute the cloud-based client application remotely from the first client device in response to the first request; receiving, by the at least one data processor, a second request from the first client device to modify the cloud-based client application executing on the application engine using one or more software tools, the one or more software tools configured to execute on the computing platform different from the first client device; modifying, by the at least one data processor, the cloud-based client application executing on the application engine using the one or more software tools; providing, by the at least one data processor, media data associated with the modified cloud-based client application to the first user via a display application executing on the first client device; and A method comprising:

2. The method of claim 1 , wherein modifying the cloud-based application executing on the application engine includes storing data associated with the modified cloud-based application in a database.

3. The method of claim 2 , wherein the modified cloud-based application is configured to be found and used by the application engine in subsequent active sessions.

4. The method of claim 1 , wherein using the one or more software tools occurs via a browser installed on the client device.

5. The method of claim 1 , wherein modifying the cloud-based application includes enhancing content creation, adding new functionality, removing functionality, or changing existing functionality.

6. receiving, by the at least one data processor, a third request from the first client device to transform the modified cloud-based client application into a digital asset; transforming, by the at least one data processor, the modified cloud-based client application into the digital asset based on the third request; and The method of claim 1 further comprising:

7. receiving, by the at least one processor, a fourth request from the first client device to transform the digital asset; monetizing, by the at least one processor, the digital asset through a third-party platform based on the fourth request; and transmitting, by the at least one processor, a result of the transformation of the digital asset to the first client device; The method of claim 6 further comprising:

8. 8. The method of claim 7, wherein converting the digital asset comprises converting the digital asset into a non-fungible token (NFT).

9. 1. A system comprising: at least one data processor; a memory storing instructions that, when executed by the at least one data processor, cause the at least one data processor to: receiving a first request from a first client device of a user to initiate an interactive session with a cloud-based client application, the cloud-based client application configured to execute on a second client device, the second client device comprising a different computing platform than the first client device; in response to the first request, reserving an application engine from a pre-instantiated application engine pool of a plurality of pre-instantiated application engine pools to execute the cloud-based client application remotely from the first client device; receiving a second request from the first client device to modify the cloud-based client application executing on the application engine using one or more software tools, the one or more software tools configured to execute on the computing platform different from the first client device; and modifying the cloud-based client application executing on the application engine using the one or more software tools; providing media data associated with the modified cloud-based client application to the first user via a display application executing on the first client device; and The memory and A system comprising:

10. The system of claim 9 , wherein modifying the cloud-based application executing on the application engine includes storing data associated with the modified cloud-based application in a database.

11. The system of claim 10 , wherein the modified cloud-based application is configured to be searched for and used by the application engine in subsequent active sessions.

12. The system of claim 10 , wherein using the one or more software tools occurs via a browser installed on the client device.

13. The system of claim 9 , wherein modifying the cloud-based application includes enhancing content creation, adding new functionality, removing functionality, or changing existing functionality.

14. The operation is receiving a third request from the first client device to transform the modified cloud-based client application into a digital asset; converting the modified cloud-based client application into the digital asset based on the third request; and The system of claim 9 further comprising:

15. The operation is receiving a fourth request from the first client device to monetize the digital asset; Monetizing the digital asset via a third-party digital asset marketplace based on the fourth request; and transmitting the results of the monetization of the digital asset to the first client device; The system of claim 14 further comprising:

16. 16. The system of claim 15, wherein converting the digital asset comprises converting the digital asset into a non-fungible token (NFT).

17. 1. A computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor forming part of at least one computing system, cause the at least one programmable processor to: receiving a first request from a first client device of a user to initiate an interactive session with a cloud-based client application, the cloud-based client application configured to execute on a second client device, the second client device comprising a different computing platform than the first client device; in response to the first request, reserving an application engine from a pre-instantiated application engine pool of a plurality of pre-instantiated application engine pools to execute the cloud-based client application remotely from the first client device; receiving a second request from the first client device to modify the cloud-based client application executing on the application engine using one or more software tools, the one or more software tools configured to execute on the computing platform different from the first client device; and modifying the cloud-based client application executing on the application engine using the one or more software tools; providing media data associated with the modified cloud-based client application to the first user via a display application executing on the first client device; and A computer program product that causes a computer to perform operations including: