Synchronizing Actions
Patent Information
- Application Number
- JP2024560659
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-05-11
- Filing Date
- 2023-04-12
- Publication Date
- 2026-01-30
- Estimated Expiration
- 2043-04-12
AI Technical Summary
Existing electronic devices experience network delays and processing times that cause jitter and delay in user interface interactions, leading to inconsistent and unsynchronized actions among multiple users, especially in multiplayer applications.
A system and method that includes a server synchronizing user requests across devices by determining a time period for action execution based on network delays, allowing intermediate actions to be performed locally while waiting for server instructions, ensuring synchronized user interface interactions.
Provides a jitter- and delay-free graphical user interface experience by executing intermediate actions immediately after user requests, offering feedback and synchronized actions across devices with varying network delays.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] The present disclosure relates to a device comprising a display screen and a processor. The present disclosure also relates to a system for synchronizing actions. The system includes a server communicatively coupled to a plurality of devices. The present disclosure also relates to a computer-implemented method for synchronizing actions. Background
[0002] In recent years, the use of electronic devices such as smartphones, tablets, and laptops has increased exponentially for daily activities such as, but not limited to, calling, messaging, browsing the Internet, navigation, and consuming media. Recently, electronic devices have also been widely used for playing games (e.g., single-user and multi-user games), rendering and editing images and videos by one or more users using a common interface, simulations, and the like. Many of these electronic devices incorporate touch-sensitive display screens, and applications implemented on the electronic devices can be controlled through touch-sensitive manipulation of such screens. An important aspect of applications implemented on electronic devices is the ease with which a user can interact with the user interface of the application and control various operations.
[0003] In particular, for a good user experience, applications are designed to seamlessly render a user interface without jitter or delay (delay or time lag). However, when a command is given to an application (such as a client-server application), the application interacts with a server during which the user experiences jitter or delay on the electronic device due to network delays between the server and the electronic device and the processing time it takes the server and / or the electronic device itself to process the command. As a result, a command given by the user on the user interface does not start to be executed immediately upon initiation of the command, but at a later time that is a function of the delays due to communication and processing. In fact, a user may provide the same command multiple times, resulting in an increase in the number of commands, unnecessary communication between the application and the server, and the associated delays, resulting in a poor user experience.
[0004] Furthermore, when two or more users control the user interface of the application, the users may face different latency issues, resulting in a poor user experience when the actions of the individual users are performed relative to each other with the intention of synchronizing the actions. For example, a first user performs a first action on an object at a certain time, and a second user performs a second action on the same object at a later time. However, due to the latency differences between the users, the second action is made visible in the user interface for the second user before the first action is completed by the first user. Thus, the latency differences may result in the actions of the users being inconsistent with each other, which may be impossible. One of the available prior art techniques is to collect commands from two or more users in a server and provide instructions according to the commands to the processors of their electronic devices simultaneously. However, latency still occurs in the electronic devices, and the user interfaces of the electronic devices are not properly synchronized.
[0005] Thus, a need exists to overcome the above-mentioned shortcomings associated with conventional systems.
[0006] The present disclosure seeks to provide a device comprising a display screen and a processor. The present disclosure also seeks to provide a system for synchronizing actions, the system including a server communicatively coupled to a plurality of devices. The present disclosure also seeks to provide a computer-implemented method for synchronizing actions. It is an object of the present disclosure to provide a solution that at least partially overcomes the problems encountered in the prior art.
[0007] According to a first aspect, an embodiment of the present disclosure provides an apparatus, comprising: With a display screen; With a processor; wherein the processor: generating and displaying a graphical user interface on said display screen; receiving a user request at said graphical user interface to perform a requested action; Sending said user request to a server; performing intermediate actions on the graphical user interface while waiting for the server to create and provide instructions related to the user request; receiving the instructions from the server related to the user request; Ending the execution of said intermediate action; · executing the received instructions related to the user request on the graphical user interface; It is configured as follows.
[0008] According to a second aspect, an embodiment of the present disclosure provides a system including a server communicatively coupled to a plurality of devices according to the first aspect, the devices cooperating via respective graphical user interfaces, the server comprising: receiving, from the plurality of devices, respective user requests to perform respective requested actions on respective graphical user interfaces; · from among said received user requests, collect a set of specific user requests received within a specific time interval; · processing said set of particular user requests to generate a plurality of instructions each relating to one of the user requests included in said set; wherein the server is configured, when processing the particular set of user requests, to determine a time period during which the respective requested action is to be performed based on various network delays between the server and individual devices, each of the plurality of instructions indicating to the individual devices the determined time period during which the respective requested action is to be performed, and wherein the server is configured to: · transmitting the instructions associated with the user requests included in the set to the plurality of devices; It is configured as follows.
[0009] According to a third aspect, embodiments of the present disclosure provide a computer-implemented method, the method comprising: generating and displaying a graphical user interface on a display screen of the device; receiving a user request at the graphical user interface to perform a requested action; sending said user request to a server; performing intermediate actions on the graphical user interface while waiting for the server to create and provide instructions related to the user request; receiving the instructions related to the user request from the server; terminating execution of said intermediate action; executing the received instructions related to the user request on the graphical user interface; Includes.
[0010] According to a fourth aspect, an embodiment of the present disclosure provides a computer program product having a non-volatile computer-readable storage medium having stored thereon computer-readable instructions executable by a computing device having a processor for performing a method according to the third aspect.
[0011] SUMMARY OF THE DISCLOSURE Embodiments of the present disclosure substantially eliminate or at least partially address the aforementioned problems in the prior art, enabling a graphical user interface to be rendered on a device such that a user does not experience jitter or delay in performing actions when interacting with an application's user interface to control various operations.
[0012] Further aspects, advantages, features and objects of the present disclosure will become apparent from the accompanying drawings and detailed description of illustrative embodiments, taken in conjunction with the appended claims.
[0013] It will also be appreciated that features of the present disclosure can be combined in various combinations without departing from the scope defined by the appended claims. [Brief description of the drawings]
[0014] The foregoing summary, as well as the following detailed description of exemplary embodiments, will be better understood when read in conjunction with the accompanying drawings. For the purpose of illustrating the disclosure, example configurations of the disclosure are shown in the drawings. However, the disclosure is not limited to the specific methods and apparatus disclosed therein. Also, the drawings are not drawn to scale. Similar elements are designated by the same numerals wherever possible. Embodiments of the present disclosure will now be described, by way of example only, with reference to the following drawings, in which: [Figure 1] 1 is a schematic diagram of an apparatus for rendering a graphical user interface according to an embodiment of the present disclosure. [Diagram 2] 2 is a schematic diagram of a timeline for processing a user request according to an embodiment of the present disclosure. [Diagram 3]1 is a schematic diagram of steps depicting the movement of a user-controllable object on a graphical user interface according to an embodiment of the present disclosure. [Figure 4] 4A and 4B are flow charts illustrating steps of a computer-implemented method for synchronizing actions according to an embodiment of the present disclosure. In the accompanying drawings, underlined numbers are used to represent the item at which the number is located or adjacent to the number. Numbers without underlines are associated with the item identified by the line extending from the number. When a number is not underlined and is written with an arrow, the number is used to identify the general item to which the arrow points. Detailed Description of the Embodiments
[0015] The following detailed description illustrates embodiments of the present disclosure and how they may be practiced. Although several forms for carrying out the present disclosure have been disclosed, those skilled in the art will recognize that other forms for carrying out the present disclosure are also possible.
[0016] According to a first aspect, an embodiment of the present disclosure provides an apparatus, comprising: With a display screen; With a processor; wherein the processor: generating and displaying a graphical user interface on said display screen; receiving a user request at said graphical user interface to perform a requested action; Sending said user request to a server; performing intermediate actions on the graphical user interface while waiting for the server to create and provide instructions related to the user request; receiving the instructions from the server related to the user request; Ending the execution of said intermediate action; · executing the received instructions related to the user request on the graphical user interface; It is configured as follows.
[0017] According to a second aspect, an embodiment of the present disclosure provides a system including a server communicatively coupled to a plurality of devices according to the first aspect, the devices cooperating via respective graphical user interfaces, the server comprising: receiving, from the plurality of devices, respective user requests to perform respective requested actions on respective graphical user interfaces; · from among said received user requests, collect a set of specific user requests received within a specific time interval; · processing said set of particular user requests to generate a plurality of instructions each relating to one of the user requests included in said set; wherein the server is configured, when processing the particular set of user requests, to determine a time period during which the respective requested action is to be performed based on various network delays between the server and individual devices, each of the plurality of instructions indicating to the individual devices the determined time period during which the respective requested action is to be performed, and wherein the server is configured to: · transmitting the plurality of instructions each associated with one of the user requests included in the set; It is configured as follows.
[0018] According to a third aspect, embodiments of the present disclosure provide a computer-implemented method, the method comprising: generating and displaying a graphical user interface on a display screen of the device; receiving a user request at the graphical user interface to perform a requested action; sending said user request to a server; performing intermediate actions on the graphical user interface while waiting for the server to create and provide instructions related to the user request; receiving the instructions related to the user request from the server; terminating execution of said intermediate action; executing the received instructions related to the user request on the graphical user interface; Includes.
[0019] According to a fourth aspect, an embodiment of the present disclosure provides a computer program product having a non-volatile computer-readable storage medium having stored thereon computer-readable instructions executable by a computing device having a processor for performing a method according to the third aspect.
[0020] The present disclosure provides the aforementioned device, the aforementioned system, and the aforementioned method. The embodiments of the present disclosure provide a jitter- and delay-free graphical user interface, providing a user with an excellent experience. In this regard, while the server is processing the user request, the execution of intermediate actions on the graphical user interface is controlled locally. Beneficially, the intermediate actions are provided on the graphical user interface immediately after the user request is received, thereby providing the user with feedback that the user request is in progress. This provides the user with excellent usability. Also, conflicting actions to be executed can be avoided because user requests received from multiple devices within a certain time interval are processed by the server at once. The multiple instructions each indicate to the respective devices the determined time period during which the respective requested actions will be executed, so that the permitted requested actions are executed in a synchronized manner on the multiple devices. Thus, each user can experience synchronized actions even if each device experiences different network delays.
[0021] Throughout this disclosure, the term "device" as used herein refers to an electronic device associated with (i.e., used by) a user and capable of enabling the user to perform a particular task. The user may be any entity associated with or operating the device, and may be a person (i.e., human), a virtual program (such as an autonomous program or bot), etc. In particular, the device is a user device (user device). The device is configured to provide a graphical user interface on its display screen, and may be, by way of non-limiting examples, a mobile phone, a PDA (Personal Digital Assistant), a handheld device, a laptop computer, a personal computer, etc. Beneficially, the interaction between the user and the device allows for effective operation and control.
[0022] As used herein, the term "graphical user interface" refers to the space in which a user interacts with a device. Typically, a graphical user interface displays one or more elements distributed spatially. A graphical user interface allows a user to manipulate the elements displayed on a screen using a mouse, a stylus, or a finger. Beneficially, a graphical user interface is designed to allow a user to interact with a device in an easy, efficient, and user-friendly manner, providing maximum usability for the device.
[0023] As used herein, the term "display screen" refers to the screen of a device. Typically, the display screen is configured to provide visual graphics of a graphical user interface to a user.
[0024] As used herein, the term "processor" refers to a computing element operable to respond to and process instructions provided by a user and control the operation of a device. Examples of processors include, but are not limited to, microprocessors, microcontrollers, complex instruction set computing (CISC) microprocessors, reduced instruction set computing (RISC) microprocessors, very long instruction word (VLIW) microprocessors, or any other type of processing circuitry. Additionally, the term processor may refer to one or more individual processors, processing units, and various elements associated with a processing unit that may be shared by other processing units.
[0025] The term "server" as used herein refers to a powerful virtualized physical or virtual infrastructure that executes application processing and information processing storage and allows users in remote locations to access stored information through a data communication network. The server includes appropriate logic, circuitry, interfaces, and / or code configured to store, process, and / or receive information from a device corresponding to a requested action. Furthermore, the server is configured to provide real-time instructions based on the requested action. The server may be a cloud server. Also, the server may be a single server or multiple servers operating in a parallel or distributed architecture. The servers are combined to cooperate with the disclosed device or a similar system. Examples of servers include, but are not limited to, a storage server, a web server, an application server, or combinations thereof.
[0026] As used herein, the term "user request" refers to a command provided by a user. Such a command may be provided via any suitable input, such as, for example, a touch input (if the display screen is a touch screen) or a mouse click. A user request includes information corresponding to a requested action to be performed on a graphical user interface. Furthermore, a command may be provided as, for example, a word, phrase, or sentence to cause a change in the graphical user interface. For example, a user request may be provided by tapping on a touch screen to move to a target location.
[0027] In some embodiments, the date and / or time (timestamp) of the user request is recorded. In particular, the time of receiving the user request from the user is recorded on the device. In this regard, the server has information about the time when the user made the user request. The timestamp of the user request allows the processor to identify the time to start an intermediate action and, in some embodiments, also to calculate the time period during which the requested action is to be performed when an instruction from the server is received. For example, the server may receive together with the user request a timestamp of the time (t0) when the user request was received on the device. After processing the user request, the server may provide a time period during which the user request should be performed, where the time period may start from time (t0). Since the timestamp of time (t0) is available to the server, the server may instead provide an end time (t2) when the time period ends. In this way, the instruction may indicate the time period by providing the time period or the end time of the time period. Advantageously, the timestamp also eliminates various delay issues in the device, since it allows the server to collect the user requests received over a certain time interval.
[0028] As used herein, the term "intermediate action" refers to an action that occurs between the time a user request is received and the time instructions to perform the requested action on the graphical user interface are received from a server or processed by a processor. Typically, intermediate actions are performed immediately after the user request is received. Furthermore, intermediate actions provide the illusion of an action being performed on the graphical user interface, even in the presence of network and / or processing delays. As a result, a user can see the intermediate action being performed immediately after providing the user request, thus avoiding unnecessary multiple submissions of the user request. During the execution of an intermediate action, the server processes the user request for the requested action and generates instructions to be provided to the processor. Completion of an intermediate action occurs when the processor processes or executes the instructions received from the server (corresponding to the requested action) on the graphical user interface. If the server determines that the requested action is permissible, the instructions received from the server cause the requested action to be executed on the graphical user interface. Otherwise, if the server determines that the requested action is not permitted, execution of the received instruction from the server may cancel the intermediate action and / or indicate to the user that the requested action is not possible. With regard to the former, for example, if the intermediate action is to slowly move the user-controllable object towards a target position and the user-controllable object has already moved partway towards the target when the instruction from the server is received, the intermediate action may be cancelled. In some embodiments, the time lag between receiving the user request and performing the intermediate action is less than a predefined time length. The predefined time length may be, for example, 0.5 seconds, 0.4 seconds, 0.3 seconds, 0.2 seconds, 0.1 seconds, or 0.01 seconds. This allows the intermediate action to be performed before the user notices a delay.
[0029]
[0008] In some embodiments, the requested action comprises repositioning at least one user-controllable object from a particular position to a target position on a graphical user interface, and the intermediate action comprises: displaying a visual indicator on the graphical user interface to indicate that repositioning of the at least one user-controllable object is in progress; displaying, on a graphical user interface, a movement of at least one user-controllable object from a particular position towards a target position; may include at least one of the above.
[0030] In this regard, the requested action includes an instruction to relocate at least one user-controllable object on the graphical user interface from a particular location to a target location, the particular location being the location where the user-controllable object was located at the time the user request was received, and in particular, the particular location being a starting point of the user-controlled object and the target location being a destination point of the user-controlled object.
[0031] As used herein, the term "user-controllable object" refers to a symbol presented on a graphical user interface that is controllable by a user. The symbol may represent, for example, a character. As an example, a user-controllable object may be a visual (or graphical) representation of a character generated by an application controlled by a user. In this regard, for example in real-time games, navigation, simulators, etc., a user-controllable object indicates the real-time position and movement of a character on a graphical user interface. In some embodiments, a user-controllable object may have geographic coordinates associated with it. Furthermore, a user-controllable object may also allow a user to locate other users, such as in a multiplayer video game. In some embodiments, a user-controllable object may be a pointer, an avatar, or an animated character.
[0032] Here, the intermediate action includes providing a visual indicator on a graphical user interface to indicate to a user that repositioning of at least one user-controllable object is in progress. In some embodiments, the visual indicator may be text, a symbol, or an image. For example, the visual indicator may be an arrow dropping from the top of the graphical user interface toward a target position. In some embodiments, the intermediate action includes indicating, on the graphical user interface, a movement of at least one user-controllable object from a particular position toward a target position.
[0033] In some embodiments, the processor is configured to determine a speed at which the at least one user-controllable object moves based on a distance between the particular location and a target location, and further configured to determine the speed based on at least one of a network delay between the device and a server, a processing delay at the server, and a processing delay at the device, and in some embodiments, the processor is configured to move the at least one user-controllable object from the particular location towards the target location at the determined speed when performing the intermediate action.
[0034] The processor is configured to determine a distance between the specific location and the target location. Based on the determined distance, the processor calculates an appropriate speed for moving the at least one user-controllable object. The processor further determines a network delay between the device and the server and / or a processing delay between the server and the device. The network delay is caused by the latency of data propagating through a data communication network between the device and the server. In some embodiments, the network delay may represent an average delay. The processing delay is caused by the time it takes the server and / or the device's processor to process the user request and received instructions, respectively.
[0035] In some embodiments, the received indication indicates a time period for at least one user-controllable object to reach a target position, the time period beginning from a start time (t0) at which the user request is received by the processor. adjusting a velocity based on a time for the at least one user-controllable object to reach a target position and a distance between the target position and a current position of the at least one user-controllable object on the graphical user interface; · in executing the received instructions, moving at least one user-controllable object towards a target position at said adjusted velocity; It is configured as follows.
[0036] In this regard, the time period is the time it takes for the user-controllable object to reach a target position from a particular position, where the processor is configured to increase or decrease the velocity of the user-controllable object based on the time period and the remaining distance between the target position and the current position.
[0037] For illustration, consider an example now. At time t0, a user request is provided to move a user-controllable object on a graphical user interface from a first location (such as the specific location) to a second location (such as the target location). For example, a user request is provided to move from coordinates (first location 100, 200) to coordinates (second location 300, 800), where these numbers represent the number of pixels in the X and Y directions, respectively, from the top left corner of the graphical user interface. Execution of an intermediate action may begin at time t1, which indicates moving the user-controllable object toward a second location at a first velocity. At time t2, a server receives the user request and begins processing the user request. After the user request is processed at the server, instructions are delivered from the server to the device at time t3. These instructions may instruct the processor to complete the user request by time t4. It is worth noting that the time period during which the requested action should be executed is the time from t0 to t4. At the device, execution of the intermediate action ends once the instructions are received or processed. The instruction is then executed by time t4. If the user-controllable object cannot reach the target position in time using the first velocity, then the velocity can be increased, or if there is a possibility that the user-controllable object will reach the target position sooner, then the velocity of the user-controllable object can be decreased.
[0038] In some embodiments, the intermediate action includes only presenting a visual indicator on a graphical user interface, and the received indication indicates a time period for the at least one user-controllable object to reach the target position, the time period beginning from a start time (t0) that is the time the user request is received by the processor. The processor also: determining a speed for moving the at least one user-controllable object based on a distance between the particular position and the target position and an amount of time it takes for the at least one user-controllable object to reach the target position; · in executing the received instructions, moving at least one user-controllable object from a particular position towards a target position at a determined velocity; It is configured as follows.
[0039] The visual indicator is preferably timed to be presented for a period of time no less than a delay in communicating the requested action to the server. The processor is configured to determine a distance between the particular location and the target location. The processor then controls a velocity of the user-controllable object based on the determined distance and the time period indicated in the received instruction.
[0040] In some embodiments, the processor is configured to determine a time period during which the intermediate action is to be performed based on at least one of a network delay between the device and the server, a processing delay at the server, and a processing delay at the device. Execution of the intermediate action ends after completion of the determined time period. This "time period" refers to the length of time during which the intermediate action is performed. The time period during which the intermediate action is performed is shorter than the time period for the at least one user-controllable object to reach the target position. Beneficially, this time period allows the processor to perform the intermediate action in a manner that does not cause a user to notice any jitter or delay in the graphical user interface.
[0041] In some embodiments, the execution of the intermediate action comprises: · Receive instructions related to user requests; · Processing instructions related to user requests; However, the processing is terminated by at least one of the following before the instruction is executed.
[0042] Advantageously, the completion of the intermediate action is performed before the received instruction is executed, so that the intermediate action and the requested action are not executed at the same time.
[0043] The present disclosure also relates to the above-mentioned system. The various embodiments and variants disclosed above apply mutatis mutandis to the above-mentioned system.
[0044] The plurality of devices and the graphical user interfaces, user requests, and requested actions for each of the plurality of devices correspond, respectively, to the devices, graphical user interfaces, user requests, and requested actions of the first aspect. The plurality of devices may cooperate using the same software application. Examples of such software applications include, but are not limited to, multiplayer games, multiuser simulators, multiuser design software, multiuser text editing software, etc.
[0045] The term "time interval" as used herein refers to a time period during which a set of user requests is collected from among the received user requests. After being collected, the set of user requests is processed to generate respective instructions. A server of the system is configured to process the set of user requests simultaneously. Furthermore, the server is configured to resolve conflicts between the user requests in the set such that there are no conflicts between the requested actions. The requested actions associated with the set of user requests are executed at different times because the actions are instructed to execute within the same time period, but starting from different start times (i.e. the time when the respective user requests are received at the associated device). Advantageously, said execution allows for a synchronization of graphical user interfaces, since devices with little network delay are not advantageous compared to other devices with large network delays.
[0046] For ease of explanation, an example will be described in which a first user and a second user (using a first device and a second device, respectively) are collaborating using the same software at the same time. A first network delay between the first device and the server is greater than a second network delay between the second device and the server. The first user's device and the second user's device each have a timer, i.e., an internal clock for receiving and time-stamping user requests.
[0047] Assume that at time t0=0 s and time t0′=0.1 s, user requests are received at the first device and the second device, respectively. Then, at time t2=0.5 s and time t2′=0.2 s, these user requests are received at the server from the first device and the second device, respectively. The server collects and processes the user requests and generates instructions for the first device and the second device, respectively, where each instruction instructs the corresponding device of the first device or the second device to perform the respective requested action within a specific time from time t0 or t0′, respectively. As an example, the instruction to the first device may be to perform the requested action at time t0+1.0 s, and the instruction to the second device may be to perform the requested action at time t0′+1.0 s. In this way, the second user of the second device has a shorter network delay compared to the first user of the first device, but this is not advantageous. Furthermore, to maintain a smooth user interface, intermediate actions are performed while waiting for instructions from the server.
[0048] In some embodiments, the server is configured to determine a particular time interval for the server to wait to collect a particular set of user requests based on different network delays between the server and each individual device. In this regard, the server is also configured to determine the network delays between the server and each individual device. Furthermore, the time period for performing intermediate actions may also vary based on the network delays.
[0049] In some embodiments, the server is configured to adjust the particular time interval based on variations in network delay, such that when network delay is low, the particular time interval can be adjusted to be shorter, such that user requests are collected and processed without any delay noticeable to the user.
[0050] The present disclosure also relates to a computer-implemented method as described above, the various embodiments and variants disclosed above apply mutatis mutandis to said computer-implemented method.
[0051]
[0008] In some embodiments, the requested action comprises repositioning at least one user-controllable object from a particular position to a target position on a graphical user interface, and the intermediate action comprises: displaying a visual indicator on the graphical user interface to indicate that repositioning of the at least one user-controllable object is in progress; displaying, on a graphical user interface, a movement of at least one user-controllable object from a particular position towards a target position; At least one of the above is included.
[0052] In some embodiments, the method includes determining a speed at which the at least one user-controllable object moves based on a distance between the particular location and the goal location, and further including determining the speed based on at least one of a network delay between the device and the server, a processing delay at the server, and a processing delay at the device.
[0053] Here, performing the intermediate action includes moving at least one user-controllable object from a particular position towards a target position at the determined velocity.
[0054] In this regard, in some embodiments, the received instructions indicate a time period for the at least one user-controllable object to reach a target position, the time period beginning from a start time (t0) that is the time when the user request is received, and the method includes adjusting a velocity based on a time for the at least one user-controllable object to reach the target position and a distance between the target position and a current position of the at least one user-controllable object on a graphical user interface.
[0055] Then, executing the received instructions includes moving at least one user-controllable object towards a target position at the adjusted velocity.
[0056] In some embodiments, the intermediate action includes only presenting a visual indicator on a graphical user interface. And the received instructions indicate a time period for the at least one user-controllable object to reach a target position, the time period starting from a start time (t0) that is the time when the user request is received. And the method includes determining a speed for moving the at least one user-controllable object based on a distance between the particular position and the target position and a time for the at least one user-controllable object to reach the target position.
[0057] Then, executing the received instructions includes moving at least one user-controllable object from a particular position towards a target position at the determined velocity.
[0058] In some embodiments, the method includes determining a time period during which the intermediate action is to be executed based on at least one of a network delay between the device and a server, a processing delay at the server, and a processing delay at the device, wherein execution of the intermediate action terminates after completion of the determined time period.
[0059]
[0013] In some embodiments, performing the intermediate action comprises: · Receive instructions related to user requests; · Processing instructions related to user requests; However, the processing is terminated by at least one of the following before the instruction is executed.
[0060] In some embodiments, the method further comprises time stamping the user request.
[0061]
[0008] In some embodiments, the method further comprises receiving, at the server, respective user requests from a plurality of devices, wherein the user requests are requests to perform respective requested actions on respective graphical user interfaces, and wherein the plurality of devices are cooperating through their respective graphical user interfaces, the method further comprising: at the server collecting, from among the received user requests, a set of specific user requests received within a specific time interval; processing, at the server, the set of particular user requests to generate a plurality of instructions each associated with one of the user requests included in the set; wherein processing the particular set of user requests includes determining a time period during which the respective requested actions are to be performed based on varying network delays between the server and individual devices, each of the plurality of indications indicating to the individual devices the determined time period during which the respective requested actions are to be performed, and the method further comprises: transmitting the instructions associated with the set of user requests from the server to the devices.
[0062] The present disclosure also relates to the above-mentioned computer program product. The various embodiments and variants disclosed above apply mutatis mutandis to the computer program product.
[0063] In some embodiments, the computer program product is implemented as an algorithm embedded in software stored on a non-volatile computer readable storage medium, including, but not limited to, electronic storage, magnetic storage, optical storage, electromagnetic storage, semiconductor storage, or any suitable combination thereof. Examples of implementations of computer readable storage media include, but are not limited to, Electrically Erasable Programmable Read Only Memory (EEPROM), Random Access Memory (RAM), Read Only Memory (ROM), Hard Disk Drive (HDD), Flash Memory, Secure Digital (SD) Card, Solid State Drive (SSD), computer readable storage media, and / or CPU cache memory.
[0064] [Detailed description of the drawing]
[0065] Referring to FIG. 1, an apparatus 100 for rendering a graphical user interface 102 according to an embodiment of the present disclosure is illustrated. As illustrated, the graphical user interface 102 is rendered on a display screen 104 of the apparatus 100. The graphical user interface 102 displays an object 106 and at least one user-controllable object 108. A user can control the movement of the user-controllable object 108 on the graphical user interface 102 of the apparatus 100. As an example, a user request to move the user-controllable object 108 can be provided on the graphical user interface by tapping at a target location 110 on the graphical user interface 102. In some embodiments, the user request is communicated to a server through a processor 112 of the apparatus 100. The server validates the user request and sends a movement instruction back to the apparatus 100. The instruction is executed by the processor 112 of the apparatus 100, and the user-controllable object 108 is moved from a specific location 114 to the tapped location (here, the target location 110).
[0066] 2, a timeline 200 associated with the processing of a user request 202 is illustrated in accordance with an embodiment of the present disclosure. As illustrated, a user controlling a user interface provides a user request 202 for performing a requested action at time t0. The user request 202 is communicated to a server 204. The user request 202 is received by the server 204 at time t2. The user request 202 provided at time t0 triggers an intermediate action 206. The intermediate action 206 is initiated at time t1, shortly after time t0 and prior to time t2.
[0067] At time t3, instructions 208 arrive from the server. The intermediate actions 206 may continue to execute until the instructions are received or processed by the device's processor. At time t4, instructions 208 are executed to perform the requested action 210.
[0068] Referring to FIG. 3, a schematic diagram of a step 300 depicting the movement of a user-controllable object 302 in a graphical user interface 304 according to an embodiment of the present disclosure is shown. As shown, time instants are depicted as t0, t1, t2, t3, and t4. At time t0, a user request to move the user-controllable object 302 to a target location 306 is received. At time t2, the user request is received by the server 308. At time t1, an intermediate action is performed using the processor of the device. The intermediate action is a moving visual indicator 310 that is rendered on the graphical user interface 304 of the device. As shown, the visual indicator 310 is an arrow descending from the top of the graphical user interface 304 towards the target location 306. In some embodiments, the visual indicator 310 is configured to touch the ground at time t3, i.e., at the same time that an instruction based on the requested action is received by the processor at the server 308. During time t3-t4, the user-controllable object 302 moves with a velocity v1 to a target position 306 (shown by the dashed line).
[0069] 4A and 4B, a flow chart 400 is shown illustrating steps of a computer-implemented method according to an embodiment of the present disclosure. In step 402, a graphical user interface is generated and displayed on a display screen of the device. In step 404, a user request is received on the graphical user interface to perform a requested action. In step 406, the user request is sent to a server. In step 408, an intermediate action is performed on the graphical user interface while waiting for the server to create and provide instructions related to the user request. In step 410, instructions related to the user request are received from the server. In step 412, the execution of the intermediate action is completed. In step 414, the instructions related to the received user request are performed on the graphical user interface.
[0070] Steps 402, 404, 406, 408, 410, 412, and 414 are merely exemplary and other options may be provided, i.e., one or more steps may be added, one or more steps may be removed, or one or more steps may be performed in a different order, without departing from the scope of the appended claims.
[0071] The embodiments of the present disclosure described above can be modified without departing from the scope defined by the appended claims. The terms "including," "comprising," "incorporating," "having," "being," and the like used to describe and claim the present disclosure are intended to be interpreted in a non-exclusive manner, i.e., to allow for the presence of items, parts, or components not expressly described. The absence of a plurality of elements does not preclude the presence of a plurality of the elements.
Claims
1. 1. An apparatus comprising: A display screen; a processor; wherein the processor: generating and displaying a graphical user interface on said display screen; receiving, at the graphical user interface, a user request to perform a requested action, the requested action being to move at least one user-controllable object on the graphical user interface from a particular position to a target position; sending the user request to a server configured to generate and provide instructions related to the user request; performing an intermediate action on the graphical user interface; wherein the intermediate action refers to moving the user-controllable object towards the target position at a first velocity while waiting for the server to generate and provide the instruction related to the user request, and the processor is configured to determine a time period during which the intermediate action is to be executed based on at least one of a network delay between the device and the server, a processing delay at the server, and a processing delay at the device; The processor further comprises: receiving instructions from the server related to the user request, the instructions including a time period within which the operation of moving the user-controllable object should be completed; terminating execution of the intermediate action before executing the received instruction; executing instructions on the graphical user interface associated with the received user request by increasing or decreasing the first velocity to a second velocity to complete movement of the user-controllable object to the target position by an indicated time period; wherein a determination of accelerating or decelerating the first speed to the second speed is based on a distance between the user-controllable object and the target position and a network delay between the device and the server.
2. the requested action includes repositioning at least one user-controllable object from the specified position to a target position on the graphical user interface; The intermediate action is displaying a visual indicator on the graphical user interface to indicate that repositioning of the at least one user-controllable object is in progress; displaying, on a graphical user interface, movement of at least one user-controllable object from a particular position towards a target position; Including at least one of 10. The apparatus of claim 1.
3. The device of claim 2 , wherein the processor is further configured to determine the second velocity at which to move the at least one user-controllable object using a processing delay at the server and a processing delay at the device.
4. 4. The apparatus of claim 3, wherein the time period begins at a start time that is the time the user request is received by the processor.
5. The apparatus of claim 2 , wherein the intermediate action comprises only displaying the visual indicator on the graphical user interface.
6. The execution of the intermediate action is Receipt of the instruction related to the user request and expiration of the time period of the network delay; or processing said instructions associated with said user request; 10. The apparatus of claim 1, wherein the processing is terminated by at least one of:
7. The apparatus of claim 1 , wherein the user request is time-stamped.
8. 1. A system comprising a server communicatively coupled to a plurality of devices, wherein a device included in the plurality of devices comprises a display screen and a processor, the processor: generating and displaying a graphical user interface on said display screen; receiving, at the graphical user interface, a user request to perform a requested action, the requested action being to move at least one user-controllable object on the graphical user interface from a particular position to a target position; sending the user request to a server configured to generate and provide instructions related to the user request; performing an intermediate action on the graphical user interface; wherein the intermediate action refers to moving the user-controllable object towards the target position at a first velocity while waiting for the server to generate and provide the instruction related to the user request, and the processor is configured to determine a time period during which the intermediate action is to be executed based on at least one of a network delay between the device and the server, a processing delay at the server, and a processing delay at the device; The processor further comprises: receiving instructions from the server related to the user request, the instructions including a time period within which the operation of moving the user-controllable object should be completed; terminating execution of the intermediate action before executing the received instruction; executing instructions on the graphical user interface associated with the received user request by increasing or decreasing the first velocity to a second velocity to complete movement of the user-controllable object to the target position by an indicated time period; wherein a determination of accelerating or decelerating the first speed to the second speed is based on a distance between the user-controllable object and the target position and a network delay between the device and the server, and wherein the plurality of devices cooperate via their respective graphical user interfaces; The server receiving, from the plurality of devices, respective user requests to perform respective requested actions on respective graphical user interfaces; collecting a set of specific user requests received within a specific time interval from among the received user requests; processing the set of particular user requests to generate a plurality of instructions each associated with one of the user requests included in the set; wherein the server is configured, when processing the particular set of user requests, to determine a time period during which the respective requested actions will be performed based on various network delays between the server and individual devices, and wherein each of the plurality of instructions indicates to the individual device the determined time period during which the respective requested action will be performed, and wherein the server: transmitting the plurality of instructions associated with the user requests included in the set to the plurality of devices; It is configured as follows: system.
9. The system of claim 8 , wherein the server is configured to adjust the specified time interval based on variations in network delay.
10. 1. A computer-implemented method comprising: generating and displaying a graphical user interface on a display screen of the device; receiving, at the graphical user interface, a user request to perform a requested action, the requested action being to move at least one user-controllable object on the graphical user interface from a particular position to a target position; sending the user request to a server configured to generate and provide instructions related to the user request; performing an intermediate action on the graphical user interface; wherein the intermediate action refers to movement of the user-controllable object towards the target position at a first velocity while waiting for the server to generate and provide the instruction associated with the user request; The method further comprises: determining a time period during which the intermediate action will be performed based on at least one of a network delay between the device and the server, a processing delay at the server, and a processing delay at the device; receiving instructions from the server related to the user request, the instructions including a time period within which the operation of moving the user-controllable object should be completed; terminating execution of the intermediate action before executing the received instruction; executing instructions on the graphical user interface associated with the received user request by increasing or decreasing the first velocity to a second velocity to complete movement of the user-controllable object to the target position by an indicated time period; wherein a decision to accelerate or decelerate the first speed to the second speed is based on a distance between the user-controllable object and the target position and a network delay between the device and the server.
11. The requested action includes repositioning at least one user-controllable object from the specified position to a target position on the graphical user interface, and the intermediate action includes: displaying a visual indicator on the graphical user interface to indicate that repositioning of the at least one user-controllable object is in progress; displaying, on a graphical user interface, movement of at least one user-controllable object from a particular position towards a target position; The method of claim 10, comprising at least one of:
12. The method of claim 11 , comprising determining the second velocity at which to move the at least one user-controllable object using a processing delay at the server and a processing delay at the device.
13. The method of claim 12 , wherein the time period begins at a start time that is the time the user request is received.
14. The method of claim 11 , wherein the intermediate action comprises only displaying the visual indicator on the graphical user interface.
15. The execution of the intermediate action is Receipt of the instruction related to the user request and expiration of the time period of the network delay; or processing said instructions associated with said user request; 11. The method of claim 10, wherein the processing is terminated by at least one of:
16. The method of claim 10 further comprising time stamping the user request.
17. 11. A method according to claim 10, comprising receiving, at the server, respective user requests from a plurality of devices, the user requests being requests to perform respective requested actions in respective graphical user interfaces, the plurality of devices cooperating through their respective graphical user interfaces; The method further comprises: collecting, at the server, a set of specific user requests received within a specific time interval from among the received user requests; processing, at the server, the set of particular user requests to generate a plurality of instructions each associated with one of the user requests included in the set; wherein processing the particular set of user requests includes determining a time period during which the respective requested actions will be performed based on varying network delays between the server and individual devices, and wherein each of the plurality of instructions indicates to the individual devices the determined time period during which the respective requested actions will be performed, and wherein the method further comprises: transmitting the instructions related to user requests included in the set from the server to the devices.
18. A computer program comprising program instructions arranged, when executed by a processor of a computing device, to cause the computing device to perform a method according to any of claims 10 to 17.