The present invention relates to computer-based games in general, and more particularly to adapting games for operation on multiple computer platforms.
Computer games may be played on various types of computer devices, including personal computers, handled PDA devices, and cellular telephones. To adapt a computer game for multiple platforms, computer game developers typically visually reduce the size of game objects for viewing on smaller displays while attempting to preserve full game functionality. Unfortunately, such scaling often does not take into account differences in capabilities between devices.
The present invention discloses a system and method for adapting a game session on a first device for continued play on a second device.
In one aspect of the present invention a method is provided for adapting a game session on a first device for continued play on a second device, the method including establishing a game session on a first device, scaling the functionality of the game within the game session, and continuing the game session with the scaled game functionality on a second device.
In another aspect of the present invention the scaling step includes applying a predefined scaling function.
In another aspect of the present invention the scaling step includes applying a predefined scaling function that changes any of the number, type, or behavior of any object that is active in the game session
In another aspect of the present invention the scaling step includes applying a predefined scaling function that changes the gaming environment of the game session.
In another aspect of the present invention the scaling step includes applying a predefined scaling function that changes a game map of the gaming session.
In another aspect of the present invention the scaling step includes scaling at the first device before the game session is continued at the second device.
In another aspect of the present invention the scaling step includes scaling at a server operative to control any of the devices.
In another aspect of the present invention the scaling step includes scaling at the second device before the game session is resumed thereat.
In another aspect of the present invention the establishing step includes establishing the game session as a multi-user game session on a plurality of devices, the scaling step includes scaling the functionality of the game within the game session with respect to any of the devices, and the continuing step includes continuing the game session with the scaled game functionality on the devices for which the game functionality was scaled.
In another aspect of the present invention the game session is active on at least two of the devices, where a first game session object of a first type on a first one of the devices does not affect a second game session object of a second type on a second one of the devices unless the game session on the second device includes at least one object of the first type.
In another aspect of the present invention a system is provided for adapting a game session on a first device for continued play on a second device, the system including a first device operative to host a game session, and scaling means for scaling the functionality of the game within the game session, and a second device operative to continue the game session with the scaled game functionality.
In another aspect of the present invention the scaling means is operative to apply a predefined scaling function.
In another aspect of the present invention the scaling means is operative to apply a predefined scaling function that changes any of the number, type, or behavior of any object that is active in the game session
In another aspect of the present invention the scaling means is operative to apply a predefined scaling function that changes the gaming environment of the game session.
In another aspect of the present invention the scaling means is operative to scale at the first device before the game session is continued at the second device.
In another aspect of the present invention the scaling means is operative to scale at a server operative to control any of the devices.
In another aspect of the present invention the scaling means is operative to scale at the second device before the game session is resumed thereat.
In another aspect of the present invention the system further includes a plurality of devices operative to collectively host the game session as a multi-user game session, and scaling means operative to scale the functionality of the game within the game session with respect to any of the devices, where any of the devices for which the game functionality was scaled is operative to continuing the game session with the scaled game functionality.
In another aspect of the present invention the game session is active on at least two of the devices, where a first game session object of a first type on a first one of the devices does not affect a second game session object of a second type on a second one of the devices unless the game session on the second device includes at least one object of the first type.
In another aspect of the present invention a computer-implemented program is provided embodied on a computer-readable medium, the computer program including a first code segment operative to establish a game session on a first device, a second code segment operative to scale the functionality of the game within the game session, and a third code segment operative to continue the game session with the scaled game functionality on a second device.
The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the appended drawings in which:
Reference is now made to
At some point after the user has begun to play the game on first device 110, the user may wish to continue playing the game, being the same game session currently being played on first device 110, on a second device 130, such as a hand-held computer. The user may instruct game server 120 to continue the game session on second device 130, whereupon game server 120 may pause the game session on first device 110 and resume the game session on second device 130. Game server 120 preferably instructs second device 130 to scale the game functionality appropriately, as is described in greater detail hereinbelow.
In the example shown in
The system of
The game scaling process may be performed by automatic or semi-automatic generation of platform-dependant executable files representing full and scaled-down versions of a game from the same source code, or by dynamic adaptation of the compiled code of a game to a specific computer platform, following identification of the capabilities of the platform, in accordance with conventional techniques.
Reference is now made to
By way of example,
When the properties of the objects of one user change when transitioning from one device to another, the properties of the remaining objects in that user's new environment may also change in accordance with a scaling factor, as may the objects of the other users who have not transitioned.
Reference is now made to
These functions may be combined to specify a set of operations related to the transition from a first device to a second device. During transition, the complete set of the types of the game objects, T, may be partitioned into two disjoint subsets:
T=Tr U Tf (F2)
where Tr are the object types allowed in the restricted environment and Tf are the object types allowed in the full environment and not allowed in the restricted environment. The condition of such a partition is formulated as follows:
for every type t1 from Tr, an object of type t1 may be attacked by an object of a type t2 from Tr (F3)
This may be formalized as follows:
the sub matrix act′ of the matrix act induced by T→Tr contains at least one 1 in each column. (F4)
A new matrix actm (i,j) may be constructed, which describes whether the object of type t13 i is allowed to attack an object of type t_j if one of the objects belong to restricted game environment. This may be implemented as a binary matrix where 1=“true” and 0=“false”.
The matrix is preferably defined as follows:
actm(i,j)=act(i,j), if i,j belong to Tr, otherwise actm(i,j)=false (F5)
The matrices act and actm represent 2 groups of object pairs:
E1={i,j|act(i,j)=true and actm(i,j)=true}
E2={i,j|act(i,j)=true and actm(i,j)=false} (F6)
Informally, E1 represents the types of the attacks enabled in the restricted game environment, whereas E2 represents the types of the attacks enabled in the full game environment that are disabled if one of the players belongs to the restricted game environment.
Membership of a pair (i,j) in E1, E2 may be verified by computation of the values actm(i,j), act(i,j)
A Supplemental Life Updates matrix (SLU) may be constructed for computing updates to the life functions associated with an object. These updates may be used to preserve the user experience after a transition to another device. For each user in a restricted environment, an SLU matrix may be constructed between the user and each other user, such that at least one of the users from the pair of users belong to the restricted environment.
The SLU matrix is preferably defined as follows:
SLU(i,n,j,m,j′)
where an additional decrease may be applied to the life function for every object of type j′ of player m when attack(i,n,j,m) is performed. If j′=j, this decrease is in addition to that given by (F1). The function SLU is defined for (i,j) in E1.
This function may be defined as follows:
SLU(i,n,j,m,j′)=SUMe SLU0(i,n,j,m,e) (F7)
Where the sum is taken over e, e runs the object type pairs (i′,j′) belonging to E2.
The function SLU0(i,n,j,m, e) may be defined for (i,j) in E1, and e=(i′,j′) in E2 as follows:
SLU0(i,n,j,m,(i′,j′))=dens(i′,n,j′,m)*strike(i′,n,j′,m)/(defenced(i′,n,j′,m)*A*B), (F8)
where A=SUM dens (k,n,l,m), the sum is taken over (k,l) from E1, and B is the number of the objects of type j′ currently held by player m.
Note that SLU(i,n,j,m,j′) may be updated when the number of the object of user m is updated.
The above algorithm may be appreciated by way of example, as follows.
At time t1:
dens(*,user1,*,user2):
dens(tanks,user1,tanks,user2)=0.4;
dens(tanks,user1,planes,user2)=0.3;
dens(planes,user1,tanks,user2)=0.2;
dens(planes,user1,planes,user2)=0.1;
dens(*,user2,*,user1):
dens(tanks,user2,tanks,user1)=0.4;
dens(tanks,user2,planes,user1)=0.1;
dens(planes,user2,tanks,user1)=0.4;
dens(planes,user2,planes,user1)=0.1;
Two scenarios are now considered. In the first scenario, the game is played within a desktop environment only. In the second scenario, user 1 switches to PDA at time t1, and at time t2 he returns to the desktop environment. The following illustrates preserving the user game experience for transitions to the mobile environment by similarity of the life function in both scenarios at time t2.
First Scenario.
The users perform the following 20 actions:
attack(tanks,user1,tanks,user2) - - - 4 times;
attack(tanks,user1,planes,user2) - - - 3 times;
attack(planes,user1,tanks,user2) - - - 2 times;
attack(planes,user1,planes,user2) - - - 1 times;
attack(tanks,user2,tanks,user1) - - - 4 times;
attack(tanks,user2,planes,user1) - - - 1 times;
attack(planes,user2,tanks,user1) - - - 4 times;
attack(planes,user2,planes,user1) - - - 1 times;
The attacks occur in the following order:
life(tank1)=24;
life(tank2)=9;
life(plane1)=8;
For user2:
life(tank3)=50;
life(plane2)=36;
Second Scenario.
The partition (F2) of set T is performed as follows:
tank1 (of user1) attack tank3.
life(tank3) decreases by SLU(tanks,user1,tanks,user2, tanks)=1.5;
life(plane2) decreases by SLU(tanks,user1,tanks,user2, planes)=3.5;
Thus, after the action,
life(tank3)=57.5
life(plane2)=46.5
tank1 (of user1) attack tank3.
life(tank3) decreases by SLU(tanks,user1,tanks,user2, tanks)=1.5;
life(plane2) decreases by SLU(tanks,user1,tanks,user2, planes)=3.5;
Thus, after the action,
life(tank3)=55.0;
life(plane2)=43.0;
tank3 (of user2) attack tank.
life(tank1) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(tank2) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(plane1) decreases by SLU(tanks,user2,tanks,user1, planes)=1.75;
Thus, after the action,
life(tank1)=28.0;
life(tank2)=14.0;
life(plane1)=13.25
tank1 (of user1) attack tank3
life(tank3) decreases by SLU(tanks,user1,tanks,user2, tanks)=1.5;
life(plane2) decreases by SLU(tanks,user1,tanks,user2, planes)=3.5;
Thus, after the action,
life(tank3)=52.5
life(plane2)=39.5
tank3 (of user2) attack tank2.
life(tank1) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(tank2) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(plane1) decreases by SLU(tanks,user2,tanks,user1, planes)=1.75;
Thus, after the action,
life(tank1)=27.0
life(tank2)=12.0
life(plane1)=11.5
tank3 (of user2) attack tank1.
life(tank1) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(tank2) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(plane1) decreases by SLU(tanks,user2,tanks,user1, planes)=1.75;
Thus, after the action,
life(tank1)=25.0
life(tank2)=11.0;
life(plane1)=9.75
tank3 (of user2) attack tank2.
life(tank1) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(tank2) decreases by SLU(tanks,user2,tanks,user1, tanks)=1.0;
life(plane1) decreases by SLU(tanks,user2,tanks,user1, planes)=1.75;
Thus, after the action,
life(tank1)=24.0
life(tank2)=9.0
life(plane1)=8.0
tank2 (of user1) attack tank3.
life(tank3) decreases by SLU(tanks,user1,tanks,user2, tanks)=1.5;
life(plane2) decreases by SLU(tanks,user1,tanks,user2, planes)=3.5;
Thus, after the action,
life(tank3)=50.00;
life(plane2)=36.0
Therefore, at time t2 the values of life function will be are as follows:
For user1:
life(tank1)=24.0;
life(tank2)=9.0;
life(plane1)=8.0;
For user2:
life(tank3)=50.0;
life(plane2)=36.0;
It is appreciated that one or more of the steps of any of the methods described herein may be omitted or carried out in a different order than that shown, without departing from the true spirit and scope of the invention.
While the methods and apparatus disclosed herein may or may not have been described with reference to specific computer hardware or software, it is appreciated that the methods and apparatus described herein may be readily implemented in computer hardware or software using conventional techniques.
While the present invention has been described with reference to one or more specific embodiments, the description is intended to be illustrative of the invention as a whole and is not to be construed as limiting the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention. For example, it is appreciated that game scaling as described hereinabove may be performed at a first device before the user switches from it to a second device, at a server communicating with the various gaming devices, or at the second device before game play is resumed on it.