Patents
Online building toy
US8292744B2
United States
Download PDF Find Prior Art Similar
Inventor: David B. Baszucki, Erik S. Cassel
Current Assignee : Roblox Corp
Worldwide applications
2005 US 2010 US
Application US12/969,518 events
2005-05-11 Priority to US11/128,096
2010-12-15 Application Bled by Roblox Corp
2010-12-15 Priority to US12/969,518
2011-04-14 Publication of US20110087479A1
2012-10-23 Application granted
2012-10-23 Publication of US8292744B2
Status Active
2025-06-09 Adjusted expiration
Info: Patent citations (5), Non-patent citations (14), Cited by
(91), Legal events, Similar documents, Priority and Related
Applications
External links: USPTO, USPTO PatentCenter, USPTO
Assignment, Espacenet, Global Dossier, Discuss
Abstract
The present invention pertains to a method and
apparatus for building online games. In one
embodiment, the method may include providing a user
interface that facilitates user selection of parts, and
placing a set of parts selected by a user in a three-
dimensional (3D) world. The method may also include
joining parts within the set based on their proximity to
each other in the 3D world to form one or more models
for a game, and sending a model Ble for each of these
models to a server via a network for use by various
users.
Images (23)
Classi:cations
A63F13/30 Interconnection arrangements
between game servers and game devices;
Interconnection arrangements between game
devices; Interconnection arrangements between
game servers
View 7 more classi.cations
Claims (19) Hide Dependent
1. A computerized method comprising:
providing, by a computer system, a user interface for
creating a game, the user interface facilitating user
selection of parts for the game;
placing, by the computer system, a set of parts selected by
a user in a three-dimensional (3D) world;
automatically detecting, without user interaction, by the
computer system, adjacent parts within the set based on
proximity of surfaces of the parts in the 3D world while
parts are being moved during editing operations of the
user;
upon detecting the adjacent parts, automatically
determining, without user interaction, joint types for the
adjacent parts;
automatically creating, without user interaction, by the
computer system, one or more joints of the determined
joint types between the adjacent parts, wherein at least
some of the adjacent parts are primitive geometric shapes
selected by the user for joining with other parts in the set,
the primitive geometric shapes including at least one of a
block, a wedge, a cylinder and a sphere;
forming one or more models for the game from the set of
parts that comprises parts automatically joined, without
user interaction, using the one or more joints; and
physically simulating, by a rigid body physics engine,
motion of joined parts having one or more joints in the
game and motion of the one or more models in the game.
2. The method of claim 1, further comprising:
detecting, by the physics engine, a Brst collision
between the joined parts having one or more joints
in the 3D world during physical simulation of the
motion of the joined parts having one or more
joints and the one or more models; and
simulating, based on the one or more properties, a
behavior of the joined parts having one or more
joints that results from the Brst collision.
3. The method of claim 2, further comprising:
allowing a user to modify one or more properties of
joined parts having one or more joints, the joined
parts selected by the user in the 3D world; and
simulating, based on the modiBed properties, a
modiBed behavior of the joined parts having one or
more joints that results from a second collision.
4. The method of claim 1 further comprising:
simulating a motion of the one or more models;
identifying connections broken as a result of the
motion; and
removing the broken connections from the one or
more models.
5. The method of claim 1 further comprising:
incorporating gameplay logic into the one or more
models.
6. The method of claim 1 further comprising:
sending a game Ble for the game to the server via
the network for use by the plurality of users.
7. The method of claim 1 further comprising:
receiving a request of the user for an existing
model created by a different user;
requesting a model Ble of the existing model from
the server;
presenting the existing model to the user; and
modifying the existing model based on input of the
user.
8. The method of claim 1 further comprising:
receiving a request of the user for an existing game
created by a different user;
requesting a game Ble for the existing game from
the server;
presenting the existing game to the user; and
allowing the user to play the existing game.
9. The method of claim 1 wherein one of the one or
more models is created in response to a user request
to group speciBc parts.
10. The method of claim 1 wherein the game is
associated with a plurality of properties selected from
the group consisting of one or more description
properties and one or more gameplay properties.
11. The method of claim 1 wherein each part in the set
of parts and each of the one or more models is
associated with a plurality of properties selected from
the group consisting of physical properties, visual
properties, descriptive properties, editing properties,
physical simulation properties, and gameplay
properties.
12. The method of claim 1 wherein each of the joints
has one or more properties selected from the group
consisting of a `exibility property and a break
threshold property.
13. The method of claim 1, wherein the physically
simulating the motion of joined parts and motion of
the one or more models uses one or more properties,
wherein the one or more properties specify one or
more of an event to occur when joined parts having
one or more joints collide during simulation and
whether joined parts having one or more joints are
intended to collide during simulation.
14. The method of claim 13, wherein the event to occur
when joined parts collide is a result of a collision
between a moving model and another moving item.
15. The method of claim 1, wherein the one or more
properties modiBable by the user include one or more
physical properties specifying one or more of mass,
elasticity, and friction.
16. The method of claim 1, wherein:
the joint types comprise one or more of a no-joint
type, a rigid joint, a revolute joint, and a motor joint;
and
the one or more joints comprise one or more of a
snap rigid joint, a glue joint, a bold rigid joint, and a
weld rigid joint.
17. The method of claim 1, wherein the automatically
determining joint types for the adjacent parts is based
on surface types of the adjacent parts.
18. A system comprising:
a memory; and
a processing system, coupled to the memory, the
processing system causing:
a user interface presenter to provide a user interface
for creating a game, the user interface facilitating user
selection of parts for the game;
an editing engine to place a set of parts selected by a
user in a three-dimensional (3D) world;
a joint engine to automatically detect, without user
interaction, adjacent parts within the set based on
proximity of surfaces of the parts in the 3D world while
parts are being moved during editing operations of the
user and, upon detecting the adjacent parts, to
automatically determine, without user interaction, joint
types for the adjacent parts and to automatically
create, without user interaction, one or more joints of
the determined joint types between the adjacent parts,
wherein at least some of the adjacent parts are
primitive geometric shapes selected by the user for
joining with other parts in the set, the primitive
geometric shapes including at least one of a block, a
wedge, a cylinder and a sphere, and to form one or
more models for the game from the set of parts that
comprises parts automatically joined, without user
interaction, using the one or more joints; and
a physics engine to physically simulate motion of
joined parts having one or more joints in the game and
motion of the one or more models in the game.
19. A computer readable medium that provides instructions,
which when executed on a processing system, cause said
processing system to perform a method comprising:
providing, by a computer system, a user interface for
creating a game, the user interface facilitating user
selection of parts for the game;
placing, by the computer system, a set of parts selected by
a user in a three-dimensional (3D) world;
automatically detecting, without user interaction, by the
computer system, adjacent parts within the set based on
proximity of surfaces of the parts in the 3D world while
parts are being moved during editing operations of the
user;
upon detecting the adjacent parts, automatically
determining, without user interaction, joint types for the
adjacent parts;
automatically creating, without user interaction, by the
computer system, one or more joints of the determined
joint types between the adjacent parts, wherein at least
some of the adjacent parts are primitive geometric shapes
selected by the user for joining with other parts in the set,
the primitive geometric shapes including at least one of a
block, a wedge, a cylinder and a sphere;
forming one or more models for the game from the set of
parts that comprises parts automatically joined, without
user interaction, using the one or more joints; and
physically simulating, by a rigid body physics engine,
motion of joined parts having one or more joints in the
game and motion of the one or more models in the game.
Description
RELATED APPLICATION
This application is a continuation of U.S. patent
application Ser. No. 11/128,096, Bled May 11, 2005,
now U.S. Pat. No. 7,874,921, which is incorporated
herein by reference.
FIELD OF THE INVENTION
This invention relates to the Beld of computer-aided
modeling of virtual reality and, in particular, to the
computer-aided building of toys in a three-dimensional
virtual world.
BACKGROUND
Building and playing with models online is becoming
increasingly popular among various users. Currently
there are several products that allow users to build
online games. For example, some products provide
users with a facility for building online puzzle games.
However, users of these products are restricted to
building puzzle games from existing models rather
than creating their own models for the game. In
addition, these products do not allow users to share
their games with others.
There are some products that allow users to create
models in a three-dimensional (3D) world from
geometric primitives. However, these products also
have limitations. For example, users of these products
must create models by manually joining parts together.
In addition, these products do not provide convenient
means for sharing models and games between
multiple users.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example,
and not by way of limitation, in the Bgures of the
accompanying drawings and in which:
FIG. 1 illustrates one embodiment of network
architecture in which embodiments of the present
invention may operate.
FIG. 2 is a block diagram of one embodiment of a
game builder.
FIG. 3 illustrates one embodiment of the architecture
of an online gaming service.
FIG. 4 is a `ow diagram of one embodiment of a
process for creating a model.
FIG. 5 is a `ow diagram of one embodiment of a
process for joining parts.
FIG. 6 is a `ow diagram of one embodiment of a
process 600 for testing a model.
FIG. 7 is a `ow diagram of one embodiment of a
process for building a game.
FIG. 8 is a `ow diagram of one embodiment of a
process for facilitating sharing of games among
different users.
FIG. 9 is a `ow diagram of one embodiment of a
process for facilitating sharing of models among
different users.
FIG. 10 illustrates exemplary parts with different
surface types and resulting joints formed for these
surface types according to one embodiment of the
present invention.
FIG. 11 illustrates an exemplary joint lookup table.
FIGS. 12-15 show exemplary representations of various
user interfaces facilitating construction and selection
of models and games according to some
embodiments of the present invention.
FIG. 16 is a block diagram of one embodiment of a
computer system.
DETAILED DESCRIPTION
In the following description, numerous speciBc details
are set forth such as examples of speciBc systems,
languages, components, etc. in order to provide a
thorough understanding of the present invention. It will
be apparent, however, to one skilled in the art that
these speciBc details need not be employed to practice
the present invention. In other instances, well known
materials or methods have not been described in detail
in order to avoid unnecessarily obscuring the present
invention.
The present invention includes various steps, which
will be described below. The steps of the present
invention may be performed by hardware components
or may be embodied in machine-executable
instructions, which may be used to cause a general-
purpose or special-purpose processor programmed
with the instructions to perform the steps.
Alternatively, the steps may be performed by a
combination of hardware and software.
The present invention may be provided as a computer
program product, or software, that may include a
machine-readable medium having stored thereon
instructions, which may be used to program a
computer system (or other electronic devices) to
perform a process according to the present invention.
A machine readable medium includes any mechanism
for storing or transmitting information in a form (e.g.,
software, processing application) readable by a
machine (e.g., a computer). The machine-readable
medium may includes, but is not limited to, magnetic
storage medium (e.g., `oppy diskette); optical storage
medium (e.g., CD-ROM); magneto-optical storage
medium; read only memory (ROM); random access
memory (RAM); erasable programmable memory (e.g.,
EPROM and EEPROM); `ash memory; electrical,
optical, acoustical or other form of propagated signal
(e.g., carrier waves, infrared signals, digital signals,
etc.); or other type of medium suitable for storing
electronic instructions.
The present invention may also be practiced in
distributed computing environments where the
machine readable medium is stored on and/or
executed by more than one computer system. In
addition, the information transferred between
computer systems may either be pulled or pushed
across the communication medium connecting the
computer systems.
Some portions of the description that follow are
presented in terms of algorithms and symbolic
representations of operations on data bits that may be
stored within a memory and operated on by a
processor. These algorithmic descriptions and
representations are the means used by those skilled in
the art to effectively convey their work. An algorithm is
generally conceived to be a self-consistent sequence
of acts leading to a desired result. The acts are those
requiring manipulation of quantities. Usually, though
not necessarily, these quantities take the form of
electrical or magnetic signals capable of being stored,
transferred, combined, compared, and otherwise
manipulated. It has proven convenient at times,
principally for reasons of common usage, to refer to
these signals as bits, values, elements, symbols,
characters, terms, numbers, parameters, or the like.
A method and apparatus for building online games is
described. In one embodiment, a user is provided with
a user interface facilitating user selection of parts. A
part may be a primitive geometrical shape such as a
block, a cylinder, a sphere, etc., or some other primitive
shape such as a wedge, a torus, a tube, a channel, etc.
Once the user selects a part, the part is placed in a
three-dimensional (3D) world. The multiple parts may
be automatically joined based on their proximity to
each other in the 3D world. In one embodiment,
mechanical joints for physics simulation are
automatically created based upon the proximity of the
parts in the 3D world and the adjacent surfaces of
proximate parts. A model may then be formed from
multiple parts. In one embodiment, the model is
formed by grouping the multiple parts (e.g., in
response to a group command of the user). The
resulting model may be published (saved on a server)
to be available to other users. In one embodiment, prior
to being published, the model is tested using physical
simulation. For example, the motion of a car model
may be simulated in the 3D world to illustrate how the
car operates.
In one embodiment, one or more models are placed in
a 3D world to create a game. SpeciBc gameplay logic
may be incorporate within the game to trigger desired
game events. In one embodiment, gameplay logic is
incorporated within the game by deBning gameplay
properties of the game and gameplay properties of this
game's models. The game may be published to be
available to other users.
In one embodiment, a game catalog is maintained to
allow different users to select desired published
games. The game catalog includes images of all
published games. A user may select a desired game by
clicking on its image in the game catalog. Similarly, in
one embodiment, a model catalog is maintained to
allow different users to select desired published
models. A user may add any model from the catalog to
his or her game, or modify any model from the catalog
to create a new model. The model catalog includes
images of all published models.
Users may receive points based on how well they play
games they have created, how many people play these
games, how well the players rate these games, or how
many people use models created by these users.
Accordingly, users are provided with a tool that closes
the loop from modeling to testing to publication to
feedback for user-created physical models and games
incorporating these models.
FIG. 1 illustrates one embodiment of network
architecture 100 in which embodiments of the present
invention may operate. The architecture 100 includes
an online gaming service 102 coupled to a
communications network 100 such as a public
network (e.g., the Internet, a wireless network, etc.) or a
private network (e.g., LAN, Intranet, etc.). The online
gaming service 102 communicates with multiple client
devices (clients 1 through client N) 106 via the network
104.
Each client 106 hosts a game builder module 108. The
game builder 108 is responsible for allowing a user to
build models and games that are physically realistic in
a 3D virtual world. Models are constructed from parts
that automatically join together to aid the user in
editing. A part may be a primitive geometrical shape
such as a block, a cylinder, a sphere, etc., or some
other primitive shape such as a wedge, a torus, a tube,
a channel, etc. Games are created by placing models in
the 3D world. Games incorporate gameplay logic that
triggers game events. The game builder 108 may
publish a user's model or game by transferring the
model or the game to the online gaming service 102.
The online gaming service 102 is responsible for
storing models and games created by users of the
clients 106. A user may be, for example, a young child
(e.g., 6-10 years old), an older child, a teenager, or an
adult. In one embodiment, the online gaming service
102 maintains a game catalog and a model catalog
that may be presented to users in a window of a
browser application running on a corresponding client
106 or a window controlled by the game builder 108. A
user may select a game (created by this or other user)
from the game catalog to play. The game catalog
includes images of games stored on the online gaming
service 102. In addition, a user may select a model
(created by this or other user) from the model catalog
to modify and/or add to a new game. The model
catalog includes images of models stored on the
online gaming service 102. In one embodiment, the
online gaming service 102 conducts contests for
model building, game building, or high scores in
individual games.
FIG. 2 is a block diagram of one embodiment of a
game builder 200. The game builder 200 may include a
game logic engine 202, a user interface presenter 204,
an editing engine 206, a rendering engine 208, a joint
engine 210, physics engine 212 and a data model 214.
The game logic engine 202 is responsible for invoking
components of the game builder 200 based on user
requests, and exchanging data with the online gaming
service 102 based on user requests.
The user interface presenter 204 is responsible for
generating user interfaces (UIs), presenting UIs to a
user and receiving input provided by the user via the
UIs. In one embodiment, UIs are presented in a
window(s) of a browser application running on the
client. Alternatively, UIs may be presented in a
window(s) controlled by the game builder 200. The UIs
provided by the user interface presenter 204 may
include, for example, a home page UI, a build UI, a
game catalog UI, a model catalog UI, etc. The home
page UI may present to a user a list of available
options (e.g., to build a new model or game, to access
an existing model or game, etc.). The build UI may
allow a user to select desired parts and/or models and
may display the selected parts and/or models in a 3D
virtual world.
The editing engine 206 is responsible for editing new
and existing games and models based on user input,
deBning properties of new and existing models and
games, and creating and updating a data model 214
for each new and existing model and game. A data
model 214 is a collection of data describing a game or
a model that is structured using a speciBc format (e.g.,
XML schema, binary or proprietary format).
The joint engine 210 is responsible for joining parts
based on their proximity to each other in the 3D world
as will be discussed in more detail below.
The rendering engine 208 is responsible for
interpreting and displaying 3D images of models and
games within the 3D view.
The physics engine 212 is responsible for simulating
the motion of objects (models and/or parts) displayed
in the 3D view. In one embodiment, the physics engine
212 simulates the object motion by computing object
position and orientation on a frame by frame basis.
FIG. 3 illustrates one embodiment of the architecture
of an online gaming service 300. The online gaming
service 300 includes a web server 302, an image
server 310, a database server 314 and a Ble server
318.
The Ble server 318 stores content Bles 320 received
from clients 106. The content Bles 320 include Bles of
models and games created by the users of clients 106.
These Bles may be, for example, in extensible markup
language (XML) format, binary format, etc. The content
Bles 320 may also include various large media Bles
such as textures, skyboxes, sounds, etc.
The image server 310 stores images Bles 312 that
include images of models and games stored on the Ble
server 318.
The database server 314 hosts a database 316 that
stores, for example, proBle information of each user,
account information of each user, game and model
information, news information, information pertaining
to online forums maintained by the online gaming
service 300, etc. The proBle information of each user
may specify, for example, games created by a user,
models created by a user, public information about a
user (e.g., “About Me”), recently played games, favorite
games, user scores and ratings, etc. The account
information may include, for example, user ID and
password. The game and model information may
include, for example, indexes of game and model Bles,
indexes of corresponding game and model images,
game creators, game creation dates, game popularity,
user rankings of games, etc. The news information
may include, for example, general information about
games, information about current contests (e.g.,
rewards offered for users who achieve high scores for
a game, etc.), etc. The forum information may include,
for example, discussions about games and models,
technical support forum information, etc.
The web server 302 hosts web site content 306 and
web server logic 304. The web server logic 304
receives content requests from clients 106 and sends
pages (e.g., HTML pages) with the requested content
to the clients 106. In one embodiment, the web server
logic 304 is responsible for composing model and
game catalogs with images of models and games
from the image server 310, and sending pages
containing these catalogs to the clients 106. The web
site content 306 may include, for example, model and
game catalogs, cached model and game Bles, an
installer Ble for the game builder 108, etc.
FIG. 4 is a `ow diagram of one embodiment of a
process 400 for creating a model. The process may be
performed by processing logic that may comprise
hardware (e.g., dedicated logic, programmable logic,
microcode, etc.), software (such as run on a general
purpose computer system or a dedicated machine), or
a combination of both. In one embodiment, processing
logic resides in a game builder 108 of FIG. 1.
Referring to FIG. 4, process 400 begins with processing
logic receiving a user request to build a model
(processing block 402). In one embodiment, the user
request to build a model is received upon a user
selection of a build model option in a home page UI.
At processing block 404, processing logic provides a
user interface facilitating user selection of parts. A part
may be a primitive geometrical shape such as a block,
a cylinder, a sphere, etc., or some other primitive shape
such as a wedge, a torus, a tube, a channel, etc. Each
part may be characterized as an item having a set of
properties. The properties of the part may include, for
example, physical properties, visual properties,
descriptive properties, physical simulation properties,
gameplay properties, etc. Physical properties may
specify, for example, size, mass, elasticity, frictional
characteristics, velocity, anchoring, etc. Visual
properties may specify, for example, transparency,
displayed name, color, surface textures, etc.
Descriptive properties may specify, for example, the
part's name, keywords describing the part, etc.
Physical simulation properties may specify, for
example, whether the part will collide with other items
during physical simulation, whether the part will act as
a Bxed object during physical simulation, etc.
Gameplay properties may include, for example, on-
touch triggers indicating actions to be taken when the
part makes contact with another item during physical
simulation, on-break triggers indicating which events
should take place when the part collides with another
item during physical simulation, etc.
At processing block 406, processing logic receives
user selection of parts. At processing block 408,
processing logic places the selected parts in a 3D
virtual world. In one embodiment, the 3D virtual world
is a 3D view of a game. Initially, this may be a 3D view
of an empty game. In one embodiment, the user is
allowed to move parts within the 3D world. In one
embodiment, upon a user request, the user may be
presented with a dialog box displaying a subset (or all)
of item properties for the selected part. The dialog box
may display default values of the properties and allow
the user to modify the default properties as needed.
The dialog box may appear, for example, by selecting a
property option in the menu of the build UI or by
double-clicking the part in the 3D view.
At processing block 409, processing logic
automatically creates mechanical joints for the
selected parts based on their proximity to each other in
the 3D world. In one embodiment, each resulting joint
has one or more properties, including, for example, a
joint type property, a joint `exibility property, a break
threshold property, etc. One embodiment of a process
for joining adjacent parts will be discussed in more
detail below in conjunction with FIG. 5.
At processing block 409, processing logic forms a
model from the selected parts. In one embodiment, the
model is formed when the user selects parts in the 3D
world and uses a group option in the menu of the build
UI to request that the selected parts be turned into a
model.
In one embodiment, a model is characterized as an
item having a set of properties. In particular, a model
may deBne a new item, along with a list of items
representing parts within this model. The properties of
the model may include, for example, physical
properties, visual properties, descriptive properties,