Download as pdf or txt
Download as pdf or txt
You are on page 1of 31

US007874921B2

(12) United States Patent (10) Patent No.: US 7,874,921 B2


Baszucki et al. (45) Date of Patent: Jan. 25, 2011
(54) ONLINE BUILDING TOY 2003/0132966 A1 7/2003 Simas et al.
(75) Inventors: David B. Baszucki, Portola Valley, CA OTHER PUBLICATIONS
(US); Erik S. Cassel, San Mateo, CA ThemePark World Manual. 1999. Electronic Arts Inc. (http://www.
(US) replacementdocs.com/download.php?view.820).*
The Even More Incredible Machine game manual. 1992. "http://
(73) Assignee: Roblox Corporation, San Mateo, CA www.replacementdocs.com/download.php?view.3716”.*
(US) Forbus, Kenneth D., “Why Computer Modeling Should Become a
Popular Hobby.” Guest Editorial, D-Lib Magazine, Oct. 1996, 5
c -r pageS.
(*) Notice: Sibi tO E. site th still
patent 1s extended or adjusted under
Funes, Pablo, “Evolution Of Complexity in Real-World Domains.”
Dissertation presented to the Faculty of the Graduate School of Arts
U.S.C. 154(b) by 597 days. and Sciences, Brandeis University, Chapters 1-4, May 2001.
Peysakhov, Maxim, et al., “Using Assembly Representations to
(21) Appl. No.: 11/128,096 Enable Evolutionary Design of Lego Structures.” Department of
Computer Science, Drexel University, 31 Pages.
(22) Filed: May 11, 2005
* cited by examiner
(65) Prior Publication Data Primary Examiner John M Hotaling, II
US 2006/O258447 A1 Nov. 16, 2006 Assistant Examiner—Sunit Pandya
(74) Attorney, Agent, or Firm Blakely, Sokoloff, Taylor &
(51) Int. Cl. Zafman LLP
A63F 3/00 (2006.01)
(52) U.S. Cl. ..................... 463/43: 463/2; 463/5: 463/6; (57) ABSTRACT
463/31: 463/42
(58) Field of Classification Search ................... 463,42. The present invention pertains to a method and apparatus for
463/2, 5, 6,43: 345/420 building online games. In O embodiment, the method may
See application file for complete search history. include providing a user interface that facilitates user selec
tion of parts, and placing a set of parts selected by a user in a
(56) References Cited three-dimensional (3D) world. The method may also include
joining parts within the set based on their proximity to each
U.S. PATENT DOCUMENTS other in the 3D world to form one or more models for a game,
6,162,108 A 12/2000 Frederiksen and sending a model file for each of these models to a server
6,195,625 B1* 2/2001 Day et al. ...................... 703/7 via a network for use by various users.
6,389,375 B1 5, 2002 Thomsen et al.
2002/0196250 A1 12/2002 Anderson et al. 16 Claims, 22 Drawing Sheets

/ 100

ONNE GAMING
SERVICE 102

NETWORK104
(e.g., Internet)

GAMEBUILDER GAMEBUDER GAMEBUILDER


108 108 ) 108

CLENT 1106 CLIENT 2106 CLIENTN 106


U.S. Patent Jan. 25, 2011 Sheet 1 of 22 US 7,874,921 B2

100
/
ONLINE GAMING
SERVICE 102

NETWORK104
(e.g., Internet)

GAMEBUILDER GAMEBUILDER GAME BUILDER


108 108 108

CLENT 110 CLIENT 210 CLIENTN 106

FIG. 1
U.S. Patent Jan. 25, 2011 Sheet 2 of 22 US 79 874,921 B2
U.S. Patent Jan. 25, 2011 Sheet 3 of 22 US 7,874,921 B2

IMAGE
SERVER
Ed
- N | IMAGE
FILE

DATABASE
SERVER
314
DATABASE
WEBSERVER
316
302

WEBSERVER FILE
WEBSITE BUSINESS LOGIC 304 SERVER
CONTENT
306
if |fs
conTENT MODEL
FILE
GAME
FILE

ONLINE GAMING SERVICE 300


U.S. Patent Jan. 25, 2011 Sheet 4 of 22 US 7,874,921 B2

400
/
START

402
RECEIVE AUSER REQUEST TO BUILD A MODEL

404
PROVIDE AUSER INTERFACEFACILITATING
USER SELECTION OF PARTS

406
RECEIVE USER SELECTION OF PARTS

408
PLACE SELECTED PARTS IN A 3D WORLD

CREATEMECHANICAL JOINTS FOR SELECTED 409


PARTS BASED ON PROXIMITY OF SELECTED PARTS

410
FORMA MODEL FROM SELECTED PARTS

TEST THE MODEL IN 412


RESPONSE TO USER COMMAND
414
RECEIVE AUSER REQUEST
TO PUBLISH THE MODEL
416
SEND THE MODEL FILE TO ASERVER

FIG. 4
U.S. Patent Jan. 25, 2011 Sheet 5 of 22 US 7,874,921 B2

500
/
START

502
DETECT 2 ADJACENT PARTS

504
IDENTIFY SURFACETYPE OF EACH PART

CONSULT LOOK-UP TABLE(S) TODETERMINE 506


JOINT TYPE BASED ON SURFACETYPE
508
CREATE JOINT OF APPROPRIATE TYPE

FIG. 5
U.S. Patent Jan. 25, 2011 Sheet 6 of 22 US 7,874,921 B2

600
/
START

602
RECEIVE USER COMMAND TO TEST MODEL

604
RETREVE PROPERTIES FROM DATA MODEL

606
SIMULATE MOTION OF THE MODEL

IDENTIFY JOINTS BROKEN 608


ASA RESULT OF MOTION

REMOVE BROKEN JOINTS 610


FROM THE MODEL

END

FIG. 6
U.S. Patent Jan. 25, 2011 Sheet 7 of 22 US 7,874,921 B2

700
/
START

702
PLACE MODES IN A 3D WORLD

704
INCORPORATE GAME PLAY
LOGIC WITHIN THE GAME

706
DEFINE GAME PROPERTIES

708
TEST THE GAME

710
PUBLISH THE GAME

FIG. 7
U.S. Patent Jan. 25, 2011 Sheet 8 of 22 US 7,874,921 B2

800
/
START

802
RECEIVE GAME FILE FROM CLENT

804
SAVE AN INDEXTO GAME FILE IN DATABASE

806
CREATE ANIMAGE OF THE GAME

UPON CLIENT REQUEST, SEND GAME 810


CATALOG CONTENT TO CLIENT

812
RECEIVE, FROM CLIENT, DATA IDENTIFYING GAME
SELECTED BY USER FROM GAME CATALOG

814
SEND GAME FILE TO CLIENT

END
FIG. 8
U.S. Patent Jan. 25, 2011 Sheet 9 of 22 US 7,874,921 B2

900
/
START

902
RECEIVE MODEL FILE FROM CLIENT

904
SAVE AN INDEXTO MODEL FILE IN DATABASE

906
CREATE ANIMAGE OF THE MODEL

908
ADD CREATED IMAGE FILE TO CACHE

UPON CLIENT REQUEST, SEND MODEL 910


CATALOG CONTENT TO CLIENT

912
RECEIVE, FROM CLIENT, DATA IDENTIFYING MODEL
SELECTED BY USER FROMMODEL CATALOG

914
SEND MODEL FILE TO CLIENT

FIG. 9
U.S. Patent Jan. 25, 2011 Sheet 10 of 22 US 7,874,921 B2

Part with Revolute joint


of surface
In Proximity - forms a
revolute joint
1008

Part with "sle oit or Part with simple surfaces


surface in Proximity - torms a
"glue joint

FIG. 10
U.S. Patent Jan . 25, 2011 Sheet 11 of 22 US 7,874,921 B2

[]
U.S. Patent Jan. 25, 2011 Sheet 12 of 22 US 7,874,921 B2

Part
Surface
proxrty (it

* W

Eos os
-
0.
, 3.

5. deft

FIG. 12A

fasty

te
alse

FIG. 12B
U.S. Patent Jan. 25, 2011 Sheet 13 of 22 US 7,874,921 B2

rostri cassertygirit

1216

1212

FIG. 12C

ratitySri

Essix

: Highscorescoed true

FIG. 13A
U.S. Patent Jan. 25, 2011 Sheet 14 of 22 US 7,874,921 B2

Games - Microsoft Internet Explorer


File Edit View Favorites Tools Help

esse - e E2 (afsen servate ea


Address 3) http://www.com/levels.aspx

REMOVE IT w5

The Idea of WAR O 9inueva7 |s/18/200s s:03:21 PM

Life Pool 10 (9 nueva7 |s/ie/zoos S 293& M.

natt green ball s us


2/26/2005 8:1349 PM

Dangerous Driver V9 2/17/2005 12:43:11 PM

2/18/2005 11:34:36 AM
au.seszucki 2/17/2005 LSA 34 oM

Spasmotron2 vs. Wimpotron2 8 (David. Baszucki

level 3 - Block. It t 2/17/2005 2534 PN

Bridge It wa
U.S. Patent Jan. 25, 2011 Sheet 15 of 22 US 7,874,921 B2

Models - Microsoft internet Explorer


File Edit View Favorites Tools Help sing

MODELS 132 1320

Tank-car 3/18/2005 4:17:59 PM

th
erik.cassel 3/ie/2005 21247 PM

s Bulldozer david. Baszucki i1/28/2005 4:00:16 PM

i
Bulldozer david, aszuki f28A2s 3:54:36 pm

Big Ball with card david, Baszucki 11/5/2004 3:29:05 PM

Child on Skateboard
David Baszucki list243;os9 pm

Lose Game Beacon David Baszucki 1if5/2004 3:00:10 PM

David. Baszucki

| David, Baszucki 11/5/2004 S 22 AM

Fle 13c.
U.S. Patent Jan. 25, 2011 Sheet 16 of 22 US 7,874,921 B2

1400
/
Garng use first

arra is

o E"
e.

1404
/

1404
U.S. Patent Jan. 25, 2011 Sheet 17 of 22 US 7,874,921 B2

1500
/
sing undefired

a motor on the
firefit is

e.
a

FIG. 15A
U.S. Patent Jan. 25, 2011 Sheet 18 of 22 US 7,874,921 B2

1510
/
are unds first

rts: we

o a
U.S. Patent Jan. 25, 2011 Sheet 19 of 22 US 7,874,921 B2

earne indered

stress-fit is

easter
1s a

FIG. 15C
U.S. Patent Jan. 25, 2011 Sheet 20 of 22 US 7,874,921 B2

1530
/
earns utidefined

Mility
tritta t

This model is
now controlled
by the arrow
keys. To test,
- click "GO :

FIG. 15D
U.S. Patent Jan. 25, 2011 Sheet 21 of 22 US 7,874,921 B2

1540
gang undefing
/

The user can


* now test the
model-by. ... *
controlling with
the arrow keys:

are urgf

FIG. 15E
U.S. Patent Jan. 25, 2011 Sheet 22 of 22 US 7,874,921 B2

-1 1600
1602 1610
PROCESSOR
N N VIDEO DISPLAY
INSTRUCTIONS 1626

1 608 1612
1604

N N ALPHA-NUMERIC
INSTRUCTION 1626 INPUT DEVICE

1606 1614

CURSOR
STATIC MEMORY CONTROL
DEVICE

1622

NETWORK
INTERFACE
DEVICE COMPUTER
READABLE MEDIUM
INSTRUCTIONS

1620

SIGNAL
GENERATION
DEVICE

FIG. 16
US 7,874,921 B2
1. 2
ONLINE BUILDING TOY one skilled in the art that these specific details need not be
employed to practice the present invention. In other instances,
FIELD OF THE INVENTION well known materials or methods have not been described in
detail in order to avoid unnecessarily obscuring the present
This invention relates to the field of computer-aided mod invention.
eling of virtual reality and, in particular, to the computer The present invention includes various steps, which will be
aided building of toys in a three-dimensional virtual world. described below. The steps of the present invention may be
performed by hardware components or may be embodied in
BACKGROUND machine-executable instructions, which may be used to cause
10 a general-purpose or special-purpose processor programmed
Building and playing with models online is becoming with the instructions to perform the steps. Alternatively, the
increasingly popular among various users. Currently there are steps may be performed by a combination of hardware and
several products that allow users to build online games. For software.
example, some products provide users with a facility for The present invention may be provided as a computer
building online puzzle games. However, users of these prod 15 program product, or software, that may include a machine
ucts are restricted to building puzzle games from existing readable medium having Stored thereon instructions, which
models rather than creating their own models for the game. In may be used to program a computer system (or other elec
addition, these products do not allow users to share their tronic devices) to perform a process according to the present
games with others. invention. A machine readable medium includes any mecha
There are some products that allow users to create models nism for storing or transmitting information in a form (e.g.,
in a three-dimensional (3D) world from geometric primitives. Software, processing application) readable by a machine
However, these products also have limitations. For example, (e.g., a computer). The machine-readable medium may
users of these products must create models by manually join includes, but is not limited to, magnetic storage medium (e.g.,
ing parts together. In addition, these products do not provide floppy diskette); optical storage medium (e.g., CD-ROM);
convenient means for sharing models and games between 25 magneto-optical storage medium; read only memory (ROM);
multiple users. random access memory (RAM); erasable programmable
memory (e.g., EPROM and EEPROM); flash memory; elec
BRIEF DESCRIPTION OF THE DRAWINGS trical, optical, acoustical or other form of propagated signal
(e.g., carrier waves, infrared signals, digital signals, etc.); or
The present invention is illustrated by way of example, and 30 other type of medium Suitable for storing electronic instruc
not by way of limitation, in the figures of the accompanying tions.
drawings and in which: The present invention may also be practiced in distributed
FIG. 1 illustrates one embodiment of network architecture computing environments where the machine readable
in which embodiments of the present invention may operate. medium is stored on and/or executed by more than one com
FIG. 2 is a block diagram of one embodiment of a game 35 puter system. In addition, the information transferred
builder. between computer systems may either be pulled or pushed
FIG.3 illustrates one embodiment of the architecture of an across the communication medium connecting the computer
online gaming service. systems.
FIG. 4 is a flow diagram of one embodiment of a process Some portions of the description that follow are presented
for creating a model. 40 interms of algorithms and symbolic representations of opera
FIG. 5 is a flow diagram of one embodiment of a process tions on data bits that may be stored within a memory and
for joining parts. operated on by a processor. These algorithmic descriptions
FIG. 6 is a flow diagram of one embodiment of a process and representations are the means used by those skilled in the
600 for testing a model. art to effectively convey their work. An algorithm is generally
FIG. 7 is a flow diagram of one embodiment of a process 45 conceived to be a self-consistent sequence of acts leading to a
for building a game. desired result. The acts are those requiring manipulation of
FIG. 8 is a flow diagram of one embodiment of a process quantities. Usually, though not necessarily, these quantities
for facilitating sharing of games among different users. take the form of electrical or magnetic signals capable of
FIG. 9 is a flow diagram of one embodiment of a process being stored, transferred, combined, compared, and other
for facilitating sharing of models among different users. 50 wise manipulated. It has proven convenient at times, princi
FIG. 10 illustrates exemplary parts with different surface pally for reasons of common usage, to refer to these signals as
types and resulting joints formed for these Surface types bits, values, elements, symbols, characters, terms, numbers,
according to one embodiment of the present invention. parameters, or the like.
FIG. 11 illustrates an exemplary joint lookup table. A method and apparatus for building online games is
FIGS. 12-15 show exemplary representations of various 55 described. In one embodiment, a user is provided with a user
user interfaces facilitating construction and selection of mod interface facilitating user selection of parts. A part may be a
els and games according to Some embodiments of the present primitive geometrical shape such as a block, a cylinder, a
invention. sphere, etc., or some other primitive shape Such as a wedge, a
FIG. 16 is a block diagram of one embodiment of a com torus, a tube, a channel, etc. Once the user selects a part, the
puter system. 60 part is placed in a three-dimensional (3D) world. The multiple
parts may be automatically joined based on their proximity to
DETAILED DESCRIPTION each other in the 3D world. In one embodiment, mechanical
joints for physics simulation are automatically created based
In the following description, numerous specific details are upon the proximity of the parts in the 3D world and the
set forth Such as examples of specific systems, languages, 65 adjacent Surfaces of proximate parts. A model may then be
components, etc. in order to provide a thorough understand formed from multiple parts. In one embodiment, the model is
ing of the present invention. It will be apparent, however, to formed by grouping the multiple parts (e.g., in response to a
US 7,874,921 B2
3 4
group command of the user). The resulting model may be service 102 conducts contests for model building, game
published (saved on a server) to be available to other users. In building, or high scores in individual games.
one embodiment, prior to being published, the model is tested FIG. 2 is a block diagram of one embodiment of a game
using physical simulation. For example, the motion of a car builder 200. The game builder 200 may include a game logic
model may be simulated in the 3D world to illustrate how the engine 202, a user interface presenter 204, an editing engine
car operates. 206, a rendering engine 208, a joint engine 210, physics
In one embodiment, one or more models are placed in a 3D engine 212 and a data model 214.
world to create a game. Specific gameplay logic may be The game logic engine 202 is responsible for invoking
incorporate within the game to trigger desired game events. In components of the game builder 200 based on user requests,
one embodiment, gameplay logic is incorporated within the 10 and exchanging data with the online gaming service 102
game by defining gameplay properties of the game and game based on user requests.
play properties of this game's models. The game may be The user interface presenter 204 is responsible for gener
published to be available to other users. ating user interfaces (UIs), presenting UIs to a user and
In one embodiment, a game catalog is maintained to allow receiving input provided by the user via the UIs. In one
different users to select desired published games. The game 15 embodiment, UIs are presented in a window(s) of a browser
catalog includes images of all published games. A user may application running on the client. Alternatively, UIS may be
select a desired game by clicking on its image in the game presented in a window(s) controlled by the game builder 200.
catalog. Similarly, in one embodiment, a model catalog is The UIs provided by the user interface presenter 204 may
maintained to allow different users to select desired published include, for example, a home page UI, a build UI, a game
models. A user may add any model from the catalog to his or catalog UI, a model catalog UI, etc. The home page UI may
her game, or modify any model from the catalog to create a present to a user a list of available options (e.g., to build a new
new model. The model catalog includes images of all pub model or game, to access an existing model or game, etc.).
lished models. The build UI may allow a user to select desired parts and/or
Users may receive points based on how well they play models and may display the selected parts and/or models in a
games they have created, how many people play these games, 25 3D virtual world.
how well the players rate these games, or how many people The editing engine 206 is responsible for editing new and
use models created by these users. existing games and models based on user input, defining
Accordingly, users are provided with a tool that closes the properties of new and existing models and games, and creat
loop from modeling to testing to publication to feedback for ing and updating a data model 214 for each new and existing
user-created physical models and games incorporating these
30 model and game. A data model 214 is a collection of data
models. describing a game or a model that is structured using a spe
FIG. 1 illustrates one embodiment of network architecture
cific format (e.g., XML schema, binary or proprietary for
mat).
100 in which embodiments of the present invention may The joint engine 210 is responsible for joining parts based
operate. The architecture 100 includes an online gaming Ser 35 on their proximity to each other in the 3D world as will be
vice 102 coupled to a communications network 100 such as a discussed in more detail below.
public network (e.g., the Internet, a wireless network, etc.) or The rendering engine 208 is responsible for interpreting
a private network (e.g., LAN, Intranet, etc.). The online gam and displaying 3D images of models and games within the 3D
ing service 102 communicates with multiple client devices V1eW.
(clients 1 through client N) 106 via the network 104. 40 The physics engine 212 is responsible for simulating the
Each client 106 hosts a game builder module 108. The motion of objects (models and/or parts) displayed in the 3D
game builder 108 is responsible for allowing a user to build view. In one embodiment, the physics engine 212 simulates
models and games that are physically realistic in a 3D virtual the object motion by computing object position and orienta
world. Models are constructed from parts that automatically tion on a frame by frame basis.
join together to aid the user in editing. A part may be a 45 FIG.3 illustrates one embodiment of the architecture of an
primitive geometrical shape Such as a block, a cylinder, a online gaming service 300. The online gaming service 300
sphere, etc., or some other primitive shape Such as a wedge, a includes a web server 302, an image server 310, a database
torus, a tube, a channel, etc. Games are created by placing server 314 and a file server 318.
models in the 3D world. Games incorporate gameplay logic The file server 318 stores content files 320 received from
that triggers game events. The game builder 108 may publish 50 clients 106. The content files 320 include files of models and
a user's model or game by transferring the model or the game games created by the users of clients 106. These files may be,
to the online gaming service 102. for example, in extensible markup language (XML) format,
The online gaming service 102 is responsible for storing binary format, etc. The content files 320 may also include
models and games created by users of the clients 106. A user various large media files Such as textures, skyboxes, Sounds,
may be, for example, a young child (e.g., 6-10 years old), an 55 etc.
older child, a teenager, or an adult. In one embodiment, the The image server 310 stores images files 312 that include
online gaming service 102 maintains a game catalog and a images of models and games stored on the file server 318.
model catalog that may be presented to users in a window of The database server 314 hosts a database 316 that stores,
a browser application running on a corresponding client 106 for example, profile information of each user, account infor
or a window controlled by the game builder 108. A user may 60 mation of each user, game and model information, news
select a game (created by this or other user) from the game information, information pertaining to online forums main
catalog to play. The game catalog includes images of games tained by the online gaming service 300, etc. The profile
stored on the online gaming service 102. In addition, a user information of each user may specify, for example, games
may select a model (created by this or other user) from the created by a user, models created by a user, public informa
model catalog to modify and/or add to a new game. The 65 tion about a user (e.g., "About Me'), recently played games,
model catalog includes images of models stored on the online favorite games, user scores and ratings, etc. The account
gaming service 102. In one embodiment, the online gaming information may include, for example, userID and password.
US 7,874,921 B2
5 6
The game and model information may include, for example, example, by selecting a property option in the menu of the
indexes of game and model files, indexes of corresponding build UI or by double-clicking the part in the 3D view.
game and model images, game creators, game creation dates, At processing block 409, processing logic automatically
game popularity, user rankings of games, etc. The news infor creates mechanical joints for the selected parts based on their
mation may include, for example, general information about proximity to each other in the 3D world. In one embodiment,
games, information about current contests (e.g., rewards each resulting joint has one or more properties, including, for
offered for users who achieve high scores for a game, etc.), example, a joint type property, a joint flexibility property, a
etc. The forum information may include, for example, dis break threshold property, etc. One embodiment of a process
cussions about games and models, technical Support forum for joining adjacent parts will be discussed in more detail
information, etc. 10 below in conjunction with FIG. 5.
The web server 302 hosts web site content 306 and web At processing block 409, processing logic forms a model
server logic 304. The web server logic 304 receives content from the selected parts. In one embodiment, the model is
requests from clients 106 and sends pages (e.g., HTML formed when the user selects parts in the 3D world and uses
pages) with the requested content to the clients 106. In one a group option in the menu of the build UI to request that the
embodiment, the web server logic 304 is responsible for 15 selected parts be turned into a model.
composing model and game catalogs with images of models In one embodiment, a model is characterized as an item
and games from the image server 310, and sending pages having a set of properties. In particular, a model may define a
containing these catalogs to the clients 106. The web site new item, along with a list of items representing parts within
content 306 may include, for example, model and game cata this model. The properties of the model may include, for
logs, cached model and game files, an installer file for the example, physical properties, visual properties, descriptive
game builder 108, etc. properties, editing properties, physical simulation properties,
FIG. 4 is a flow diagram of one embodiment of a process gameplay properties, etc. Physical properties may specify, for
400 for creating a model. The process may be performed by example, Velocity, anchoring, etc. Visual properties may
processing logic that may comprise hardware (e.g., dedicated specify, for example, transparency, displayed name, etc.
logic, programmable logic, microcode, etc.), Software (such 25 Descriptive properties may specify, for example, name, key
as run on a general purpose computer system or a dedicated words describing the model, etc. Editing properties may
machine), or a combination of both. In one embodiment, specify, for example, whether the model can be selected for
processing logic resides in a game builder 108 of FIG. 1. editing, whether the model can be ungrouped (separated into
Referring to FIG. 4, process 400 begins with processing individual parts), etc. Physical simulation properties may
logic receiving a user request to build a model (processing 30 specify, for example, whether the model will collide with
block 402). In one embodiment, the user request to build a other items during physical simulation, whether the model
model is received upon a user selection of a build model will act as a fixed object during physical simulation, etc.
option in a home page UI. Gameplay properties may include, for example, on-touch
At processing block 404, processing logic provides a user triggers indicating actions to be taken when the model makes
interface facilitating user selection of parts. A part may be a 35 contact with another item during physical simulation, on
primitive geometrical shape Such as a block, a cylinder, a break triggers indicating which events should take place
sphere, etc., or some other primitive shape Such as a wedge, a when the model collides with another item during physical
torus, a tube, a channel, etc. Each part may be characterized as simulation, etc.
an item having a set of properties. The properties of the part In one embodiment, upon a user request, the user may be
may include, for example, physical properties, visual proper 40 presented with a dialog box displaying a Subset (orall) of item
ties, descriptive properties, physical simulation properties, properties for the model. The dialog box may display default
gameplay properties, etc. Physical properties may specify, for values of the properties and allow the user to modify the
example, size, mass, elasticity, frictional characteristics, default properties for the model as needed. The dialog box
Velocity, anchoring, etc. Visual properties may specify, for may appear, for example, by selecting a property option in the
example, transparency, displayed name, color, Surface tex 45 menu of the build UI or by double-clicking the model in the
tures, etc. Descriptive properties may specify, for example, 3D view.
the parts name, keywords describing the part, etc. Physical In one embodiment, processing logic associates the model
simulation properties may specify, for example, whether the with a controller that indicates how the model receives control
part will collide with other items during physical simulation, signals during the physical simulation. Controllers may vary
whether the part will act as a fixed object during physical 50 depending on the device from which they gather input. These
simulation, etc. Gameplay properties may include, for devices may include, for example, a keyboard, a mouse, a
example, on-touch triggers indicating actions to be taken joypad, artificial machine intelligence, etc. A controller may
when the part makes contact with another item during physi generate various control signals such as a left tread signal, a
cal simulation, on-break triggers indicating which events right tread signal, a forward/back signal, and a left/right sig
should take place when the part collides with another item 55 nal. In one embodiment, a controller is displayed with the
during physical simulation, etc. model as a flag or symbol. The flag or symbol may have a
At processing block 406, processing logic receives user specific color or shape to illustrate the selected controller. An
selection of parts. At processing block 408, processing logic artificial machine intelligence controller may generate chase
places the selected parts in a 3D virtual world. In one embodi or flee behavior based on the proximity of other controlled
ment, the 3D virtual world is a 3D view of a game. Initially, 60 items.
this may be a 3D view of an empty game. In one embodiment, In one embodiment, processing logic creates a data model
the user is allowed to move parts within the 3D world. In one (e.g., using XML Scheme) for the new model using properties
embodiment, upon a user request, the user may be presented of the model, properties of parts integrated into the model,
with a dialog box displaying a Subset (or all) of item proper and properties of joints within the model.
ties for the selected part. The dialog box may display default 65 At processing block 412, processing logic simulates the
values of the properties and allow the user to modify the motion of the model to test how the model behaves. In one
default properties as needed. The dialog box may appear, for embodiment, processing logic begins the simulation in
US 7,874,921 B2
7 8
response to a user command (e.g., a user selection of a run In another embodiment, processing logic first uses a rigid
option in the menu of the build UI). Alternatively, processing joint lookup table to determine whether a rigidjoint should be
logic begins simulation automatically when the user creates constructed between the two parts, and if so, the type of the
the model. One embodiment of a process for testing a model rigid joint. Rigid joint types may include, for example, a glue
will be discussed in more detail below in conjunction with 5 joint, a weld joint, a bolt joint, and a Snap-fit joint.
FIG. 6. Based on the result of the simulation, the model may If the rigid joint lookup table does not indicate a rigid joint
be modified.
At processing block 414, processing logic receives a user for the parts, processing logic searches a mechanical joint
request to publish the model. In one embodiment, the user lookup table to determine whether a mechanical joint should
request is received when the user selects a publish option in 10 be constructed between the two parts, and if so, the type of the
the menu of the build UI. mechanical joint. Mechanical joint types may include, for
At processing block 414, processing logic sends the model example, a revolute joint, a revolute with motor joint, a trans
file to a server (e.g., online gaming service 102 of FIG. 1). In lational joint, a translational with motor joint, and ball-socket
one embodiment, processing logic creates the model file by type joints. Motor joints are joints that are driven, and can
converting the data model into a binary stream. 15 have the additional property of a driving force, position,
FIG. 5 is a flow diagram of one embodiment of a process velocity or acceleration in the degree of freedom of the joint.
500 for joining parts. The process may be performed by Motor joints may have the property of a control signal which
processing logic that may comprise hardware (e.g., dedicated dictates where the parts receive their input signal. Motor
logic, programmable logic, microcode, etc.), Software (such joints may also have the property of a joint control system that
as run on a general purpose computer system or a dedicated modifies an input signal prior to using the signal to stipulate a
machine), or a combination of both. In one embodiment, force, position, velocity or acceleration with which to drive
processing logic resides in a joint engine 210 of FIG. 2. the joint.
Referring to FIG. 5, process 500 begins with processing At processing block 508, processing logic uses the joint
logic detecting two adjacent parts (processing block 502). In type determined at processing block 506 to create a joint
one embodiment, the adjacency of the two parts is determined 25 between the two parts. The resulting joint defines physical
by aligning the parts to a grid in the 3D view. In another constraints between the two parts. In one embodiment, a joint
embodiment, the adjacency of the two parts is determined by has a flexibility property and a break threshold property. The
aligning one part to a grid defined by the Surface of another flexibility property may specify a spring constant that dictates
part in the 3D view. In one embodiment, when the surfaces of the flexibility compliance of the joint. The break threshold
the two parts occupy the same plane and overlap, the parts are 30 property may specify a force threshold controlling when the
considered to be adjacent. A parts Surface may correspond to joint should be removed during physical simulation. The
the parts face, or the face of the rectangular bounding box breakthreshold property may specify both a normal and shear
that encloses the part. For example, a block part has six threshold. The flexibility and break threshold properties of
Surfaces that correspond to its faces. Surfaces can define a the joint are defined to cause the joint to approximate the
coordinate system from any corner or the center of the Sur 35 behavior of a real joint in the real world. For example, a glue
face. joint can have high flexibility and a low break threshold, a
At processing block 504, processing logic determines the weld joint can have a low flexibility and a high break thresh
Surface type of each part. Exemplary Surface types include no old, and a Snap joint may have a low normal break threshold
Surface, male Snap, female Snap, glue, bolt, weld, ball and and a high shear break threshold. Exemplary Surface types
Socket, revolute, motor, slider, and actuator. Surfaces may 40 and corresponding joints will be discussed in more detail
have a texture property specifying a texture for Surface below in conjunction with FIG. 10.
appearance. Surfaces may also have properties that dictate FIG. 6 is a flow diagram of one embodiment of a process
physical effects such as wind, fire, electricity, etc. 600 for testing a model. The process may be performed by
At processing block 506, processing logic uses the Surface processing logic that may comprise hardware (e.g., dedicated
type to find the joint type to be used for connecting the two 45 logic, programmable logic, microcode, etc.), Software (such
parts. The joint type indicates how the two adjacent parts will as run on a general purpose computer system or a dedicated
be joined. The join type may be found by searching one or machine), or a combination of both. In one embodiment,
more lookup tables. In one embodiment, processing logic processing logic resides in a physics engine 212 of FIG. 2.
searches a single joint lookup table. FIG. 11 illustrates an Referring to FIG. 6, process 600 begins with processing
exemplary joint lookup table that specifies joint types for 50
logic receiving a user command to test a model (processing
various combinations of surface types. Possible joints include block 602). In one embodiment, this user command is
a no-joint type (no contact of objects during physical simu received when the user selects a run option in the menu of a
lation), Snap joint (rigidjoint, breakable, similar to a Snap fit), build UI.
glue (rigidjoint, slightly flexible, breakable), bolt (rigidjoint, At processing block 604, processing logic retrieves prop
not flexible, high breakage threshold), weld (rigid joint, not 55
flexible, not breakable), ball and socket (3 degree of rotational erties resident in the data model describing the relevant
freedom joint, no translational freedom), revolute (1 degree model. In one embodiment, these properties are properties of
or rotational freedom, no translational freedom), motor (revo parts integrated into the model and properties of joints con
lute with rotation, rotational Velocity, rotational acceleration, necting these parts.
or torque driver), slider (1 degree of translational freedom 60 At processing block 606, processing logic simulates the
perpendicular to part surface), actuator (slider with position, motion of the model based on the above properties in
velocity, acceleration or force driver), revolute-slider (1 response to control signals received via a controller associ
degree of rotational freedom, 1 degree of translational free ated with the model. In one embodiment, processing logic
dom), revolution-actuator (actuator with 1 degree of rota computes object position and orientation on a frame-by
tional freedom), motor-slider (motor with 1 degree of trans 65 frame basis.
lational freedom), and motor-actuator (actuator and motor At processing block 608, processing logic identifies indi
combined). vidual joints that have broken as a result of the simulated
US 7,874,921 B2
9 10
motion. Breaking of a joint may be dictated by the joint the timer counter during the run state, the property of initial
property and/or physical simulation properties of the relevant score that specifies the starting value for the score counter
parts. during the run state, and the property of timer up action that
At processing block 610, processing logic removes the defines the action to take when the timer counter goes to the
broken joints from the model and, in one embodiment, rede value of 0. Such an action may be, for example, a win action,
fines the model based on the remaining joints. a lose action, a draw action, and a pause action. Gameplay
FIG. 7 is a flow diagram of one embodiment of a process properties may further contain the timer affects score prop
700 for building a game. The process may be performed by erty that defines how the timer counter should affect the score
processing logic that may comprise hardware (e.g., dedicated counter during the run state (e.g., increase the score, decrease
logic, programmable logic, microcode, etc.), Software (such 10 the score or do not change the score).
as run on a general purpose computer system or a dedicated At processing block 704, processing logic incorporates
machine), or a combination of both. In one embodiment, gameplay logic within the game. In one embodiment, the
processing logic resides in a game builder 108 of FIG. 1. gameplay logic is incorporated by defining gameplay prop
Referring to FIG. 7, process 700 begins with processing erties of the game and/or gameplay properties of the models
logic placing one or more models in a 3D world (processing 15 included in the game. The gameplay properties may be
block 702). The 3D world may be a 3D view of an empty defined based on user input or using default gameplay prop
game. The models may include one or more models authored erties.
by the user constructing the game. A model authored by the At processing block 706, processing logic defines other
user constructing the game may be stored in memory in the properties of the game such as the name of the game, the
form of a data model. The user may also select for the game keywords describing the game, etc., and saves the game in the
models authored by other users. In one embodiment, this form of the data model.
selection may be made by choosing a model from a model At processing block 708, processing logic tests the game
catalog displayed to the user in response to the user's request by simulating the motion of the models and parts within the
to view existing games. In one embodiment, the model cata game. The simulation may be performed in the manner dis
log contains images of models maintained by the online gam 25 cussed above. In one embodiment, the simulation is per
ing service 102. The model catalog may be sorted by a model formed upon receiving a user request to test the game. Alter
author, model creation date, model popularity and user rank natively, the simulation may be performed automatically
ing. In one embodiment, when the user clicks on a model once the game is created.
image in the model catalog, the corresponding model is At processing block 710, processing logic receives a user
requested from the online gaming service 102. Upon receiv 30 request to publish the game and converts the memory resident
ing the game file from the online gaming service 102, pro game within the data model to a binary stream, which is then
cessing logic loads it into the data model and displays its 3D transmitted to the online gaming server 102.
image in the 3D world. FIG. 8 is a flow diagram of one embodiment of a process
The models may be placed in the 3D world to create a game 800 for facilitating sharing of games among different users.
of a specific type. These types may include, for example, 35 The process may be performed by processing logic that may
puZZle games, multiplayer games, combination games, con comprise hardware (e.g., dedicated logic, programmable
troller games and real-time manipulation games. A puzzle logic, microcode, etc.), software (such as run on a general
game does not include controllable items, and is created when purpose computer system or a dedicated machine), or a com
the user places items in the 3D world. A multiplayer game is bination of both. In one embodiment, processing logic resides
intended to be played by several users, and is created when 40 in an online gaming service 102 of FIG. 1.
more than one controllable item is placed within a game, and Referring to FIG. 8, process 800 begins with processing
users in different locations access the same game. A combi logic receiving a game file from a client (processing block
nation game is a game that requires the user to both manipu 802).
late or place parts and models (in an edit phase), followed by Next, processing logic Saves an index (e.g., the game hash)
a runtime phase where the user controls models in the game. 45 for the game file in a database (processing block 804), creates
A controller game is a game without any edit phase, the user a thumbnail image of the game (processing block 806), stores
simply controls items in a runtime phase. A real-time manipu the game file on the file server 318, and stores the image of the
lation game is a game that requires a user to manipulate place game on the image server 310. In one embodiment, process
parts and models during the runtime phase. ing logic also caches the game image file for Subsequent
In one embodiment, a game is characterized as a collection 50 requests.
of items. A game can be represented in the form of a data Further, upon receiving a request to view existing games
model, or in binary form as a game file. In one embodiment, from one of multiple clients, processing logic creates a page
a game maintains two counters, the timer counter and the (e.g., HTML document) containing a game catalog with
score counter, and a current state Such as an edit State or a run images of games stored by the online gamine service 102 and
state. During the edit state, physical simulation is not used and 55 sends this page to the requestor (processing block 810). In on
parts maintain their positions. During the run state, physical embodiment, the game catalog may also contain information
simulation is used to move parts according to their physical identifying the author of the game, the game creation date, the
properties using the physics engine. popularity of the game, and the author ranking.
In one embodiment, a game has a set of properties includ Afterwards, processing logic receives, from the client, data
ing, for example, descriptive properties and gameplay prop 60 identifying a game selected by a user from the game catalog
erties. Descriptive properties may specify the game's name, (processing block 812), queries the database to find the index
keywords describing the game, etc. Gameplay properties may for this game, and sends a corresponding game file to the
indicate whether a high score should be thought of as better client (processing block 814).
than a lower score for the purposes of ranking, and whether FIG. 9 is a flow diagram of one embodiment of a process
the run state should be immediately used following the open 65 900 for facilitating sharing of models among different users.
ing of a game file. Gameplay properties may also contain the The process may be performed by processing logic that may
initial timer value property that specifies the starting value for comprise hardware (e.g., dedicated logic, programmable
US 7,874,921 B2
11 12
logic, microcode, etc.), software (such as run on a general FIG. 15D illustrates a build UI 1530 facilitating a user
purpose computer system or a dedicated machine), or a com selection of a controller for a model 1534. The controller is
bination of both. In one embodiment, processing logic resides displayed as a flag 1536 attached to the model 1534.
in an online gaming service 102 of FIG. 1. FIG. 15E illustrates a build UI 1540 facilitating the testing
Referring to FIG. 9, process 900 begins with processing of a model 1542. The controller is used to control the motion
logic receiving a model file from a client (processing block of the model 1542 during physical simulation.
902). FIG. 16 shows a diagrammatic representation of machine
Next, processing logic Saves an index (e.g., the model hash) in the exemplary form of a computer system 1600 within
for the model file in a database (processing block 904), cre which a set of instructions, for causing the machine to per
ates an image of the model (processing block 906), stores the 10 form any one of the methodologies discussed above, may be
model file on the file server 318, and stores the image of the executed. In alternative embodiments, the machine may com
model on the image server 310. In one embodiment, process prise a network router, a network Switch, a network bridge,
ing logic also caches the model image file for Subsequent Personal Digital Assistant (PDA), a cellular telephone, a web
requests (processing block 908). appliance or any machine capable of executing a sequence of
Further, upon receiving a request to view existing models 15 instructions that specify actions to be taken by that machine.
from one of multiple clients, processing logic creates a page The computer system 1600 includes a processor 1602, a
(e.g., HTML document) containing a model catalog with main memory 1604 and a static memory 1606, which com
images of models stored by the online gamine service 102 and municate with each other via a bus 1608. The computer sys
sends this page to the requester (processing block 910). In on tem 1600 may further include a video display unit 1610 (e.g.,
embodiment, the model catalog may also contain information a liquid crystal display (LCD) or a cathode ray tube (CRT)).
identifying the author of the model, the model creation date, The computer system 1600 also includes an alpha-numeric
the popularity of the model, and the author ranking. input device 1612 (e.g. a keyboard), a cursor control device
Afterwards, processing logic receives, from the client, data 1614 (e.g. a mouse), a disk drive unit 1616, a signal genera
identifying a model selected by a user from the model catalog tion device 1620 (e.g., a speaker) and a network interface
25 device 1622.
(processing block 912), queries the database to find the index The disk drive unit 1616 includes a computer-readable
for this model, and sends a corresponding model file to the
client (processing block 914). medium 1624 on which is stored a set of instructions (i.e.,
FIG. 10 illustrates exemplary parts with different surface software) 1626 embodying any one, or all, of the methodolo
types and resulting joints formed for these Surface types gies described above. The software 1626 is also shown to
according to one embodiment of the present invention. Part
30 reside, completely or at least partially, within the main
1002 having a revolute joint on the surface is joined with part memory 1604 and/or within the processor 1602. The software
1004 that has simple surfaces, creating a revolute joint 1006. 1626 may further be transmitted or received via the network
Part 1008 having a glue joint is joined with part 101 that has interface device 1622. For the purposes of this specification,
simple surfaces, forming a glue joint 1012. the term “computer-readable medium’ shall be taken to
FIGS. 12-15 show exemplary representations of various
35 include any medium that is capable of storing or encoding a
user interfaces facilitating construction of models and games sequence of instructions for execution by the machine and
according to some embodiments of the present invention. that cause the machine to performany one of the methodolo
gies of the present invention. The term “computer-readable
FIG. 12A illustrates a popup window displaying properties medium’ shall accordingly be taken to included, but not be
of a part. In particular, a popup window 1204 displays prop 40 limited to, Solid-state memories, optical and magnetic disks,
erties of a block 1202. and carrier wave signals.
FIG.12B illustrates a popup window displaying properties In the foregoing specification, the invention has been
of a model. In particular, a popup window 1208 displays described with reference to specific exemplary embodiments
properties of a car chassis 1206. thereof. It will, however, be evident that various modifica
FIG. 12C illustrates a popup window 1210 displaying 45 tions and changes may be made thereto without departing
properties of a part, including its on touch properties 1212. from the broader spirit and scope of the invention as set forth
FIG. 12D illustrates a popup window 1214 displaying in the appended claims. The specification and drawings are,
properties of a part, including a menu 1216 specifying various accordingly, to be regarded in an illustrative rather than a
control signals. restrictive sense.
FIG. 13A illustrates a popup window 1302 displaying 50 What is claimed is:
properties of a game, including its gameplay properties 1304. 1. A computerized method comprising:
FIG. 13B shows a window 1310 displaying a game catalog providing, by a computer system, a user interface for cre
1312. ating a game, the user interface facilitating user selection
FIG. 13C shows a window 1320 displaying a game catalog of parts for the game;
1322.
55 placing, by the computer system, a set of parts selected by
a user in a three-dimensional (3D) world;
FIG. 14 illustrates a build UI 1400 facilitating a user selec automatically detecting, without user interaction, by the
tion of a part 1402. The selected part 1402 is placed in a 3D computer system, adjacent parts within the set based on
world 1404. proximity of surfaces of the parts in the 3D world while
FIGS. 15A-15B illustrate a buildUI 1500 facilitating a user 60 parts are being moved during editing operations of the
selection of parts 1502 through 1512 for a model. As shown, user,
the user selects five parts 1502 through 1512 that are placed in upon detecting the adjacent parts, automatically determin
a 3D world. ing, without user interaction, joint types for the adjacent
FIG. 15C illustrates a build UI 1520 that allows a user to parts based on Surface types of the adjacent parts;
select all the parts and to request grouping of the parts (by 65 automatically creating, without user interaction, by the
selecting a group option 1522 in the menu). In response, the computer system, one or more rigid joints of the deter
selected parts are grouped into a model 1524. mined joint types between the adjacent parts, wherein at
US 7,874,921 B2
13 14
least some of the adjacent parts are primitive geometric physical properties, visual properties, descriptive properties,
shapes selected by the user for joining with other parts in editing properties, physical simulation properties, and game
the set, the primitive geometric shapes including at least play properties.
one of a block, a wedge, a cylinder and a sphere; 10. The method of claim 1 wherein each of the joints has
forming one or more models for the game from the set of 5 one or more properties selected from the group consisting of
parts that comprises parts automatically joined, without a flexibility property and a break threshold property.
user interaction, using the one or more rigid joints; 11. The method of claim 1, wherein the event to occur when
physically simulating, by a rigid body physics engine, joined parts collide is a result of a collision between a moving
motion of joined parts having one or more rigid joints in model and another moving item.
the game and motion of the one or more models in the 10 12. The method of claim 1, wherein the one or more prop
game using one or more properties, wherein the one or erties modifiable by the user include one or more physical
more properties specify one or more of an event to occur properties specifying one or more of mass, elasticity, and
when joined parts having one or more rigidjoints collide friction.
during simulation and whether joined parts having one 13. The method of claim 1, wherein:
or more rigid joints are intended to collide during simu 15 the joint types comprise one or more of a no-joint type, a
lation; rigid joint, a revolute joint, and a motor joint; and
detecting, by the physics engine, a first collision between the one or more rigid joints comprise one or more of a Snap
the joined parts having one or more rigidjoints in the 3D rigidjoint, a gluejoint, a bold rigidjoint, and a weld rigid
world during physical simulation of the motion of the joint.
joined parts having one or more rigid joints and the one 14. A system comprising:
or more models; a memory; and
simulating, based on the one or more properties, a behavior a processing system, coupled to the memory, the process
of the joined parts having one or more rigid joints that ing System causing:
results from the first collision; a user interface presenter to provide a user interface for
allowing a user to modify one or more properties of joined 25 creating a game, the user interface facilitating user selec
parts having one or more rigid joints, the joined parts tion of parts for the game;
selected by the user in the 3D world; and an editing engine to place a set of parts selected by a user in
simulating, based on the modified properties, a modified a three-dimensional (3D) world;
behavior of the joined parts having one or more rigid 30 a joint engine to automatically detect, without user inter
joints that results from a second collision. action, adjacent parts within the set based on proximity
2. The method of claim 1 further comprising: of surfaces of the parts in the 3D world while parts are
simulating a motion of the one or more models; being moved during editing operations of the user and,
identifying connections broken as a result of the motion; upon detecting the adjacent parts, to automatically deter
and mine, without user interaction, joint types for the adja
removing the broken connections from the one or more
35 cent parts based on Surface types of the adjacent parts
models. and to automatically create, without user interaction,
3. The method of claim 1 further comprising: one or more rigid joints of the determined joint types
incorporating gameplay logic into the one or more models. between the adjacent parts, wherein at least Some of the
adjacent parts are primitive geometric shapes selected
4. The method of claim 1 further comprising: 40 by the user for joining with other parts in the set, the
sending a game file for the game to the server via the primitive geometric shapes including at least one of a
network for use by the plurality of users. block, a wedge, a cylinder and a sphere, and to form one
5. The method of claim 1 further comprising: or more models for the game from the set of parts that
receiving a request of the user for an existing model created comprises parts automatically joined, without user inter
by a different user; 45 action, using the one or more rigid joints; and
requesting a model file of the existing model from the a physics engine to physically simulate motion of joined
server; parts having one or more rigid joints in the game and
presenting the existing model to the user; and motion of the one or more models in the game using one
modifying the existing model based on input of the user. or more properties, wherein the one or more properties
6. The method of claim 1 further comprising: 50 specify one or more of an event to occur when joined
receiving a request of the user for an existing game created parts having one or more rigid joints collide during
by a different user; simulation and whether joined parts having one or more
requesting a game file for the existing game from the rigid joints are intended to collide during simulation, to
server;
detect a first collision between the joined parts having
presenting the existing game to the user; and
55 one or more rigid joints in the 3D world during physical
simulation of the motion of the joined parts and the one
allowing the user to play the existing game. or more models, to simulate, based on the one or more
7. The method of claim 1 wherein one of the one or more properties, a behavior of the joined parts having one or
models is created in response to a user request to group more rigid joints that results from the first collision, to
specific parts. 60 allow a user to modify one or more properties of joined
8. The method of claim 1 wherein the game is associated parts having one or more rigid joints selected by the user
with a plurality of properties selected from the group consist in the 3D world, and to simulate, based on the modified
ing of one or more description properties and one or more properties, a modified behavior of the joined parts hav
gameplay properties. ing one or more rigid joints that results from a second
9. The method of claim 1 wherein each part in the set of 65 collision.
parts and each of the one or more models is associated with a 15. An apparatus comprising:
plurality of properties selected from the group consisting of a memory; and
US 7,874,921 B2
15 16
a processor, coupled to the memory, the memory storing 16. A computer readable medium that provides instruc
the following for execution by the processor: tions, which when executed on a processing system, cause
means for providing a user interface for creating a game, said processing system to perform a method comprising:
the user interface facilitating user selection of parts providing, by a computer system, a user interface for cre
for the game; 5 ating a game, the interface facilitating user selection of
parts for the game;
means for placing a set of parts selected by a user in a placing, by the computer system, a set of parts selected by
three-dimensional (3D) world; a user in a three-dimensional (3D) world;
means for automatically detecting, without user interac automatically detecting, without user interaction, by the
tion, adjacent parts within the set based on proximity 10 computer system, adjacent parts within the set based on
of surfaces of the parts in the 3D world while parts are proximity of surfaces of the parts in the 3D world while
being moved during editing operations of the user, parts are being moved during editing operations of the
upon detecting the adjacent parts, means for automati user,
cally determining, without user interaction, joint upon detecting the adjacent parts, automatically determin
types for the adjacent parts based on Surface types of 15 ing, without user interaction, joint types for the adjacent
the adjacent parts; parts based on Surface types of the adjacent parts;
means for automatically creating, without user interac automatically creating, without user interaction, by the
tion, one or more rigid joints of the determined joint computer system, one or more mechanical rigidjoints of
types between the adjacent parts, wherein at least the determined joint types between the adjacent parts
Some of the adjacent parts are primitive geometric wherein at least some of the adjacent parts are primitive
shapes selected by the user for joining with other parts geometric shapes selected by the user for joining with
in the set, the primitive geometric shapes including at other parts in the set, the primitive geometric shapes
least one of a block, a wedge, a cylinder and a sphere; including at least one of a block, a wedge, a cylinder and
means for forming one or more models for the game 25 forming a sphere;
from the set of parts that comprises parts automati one or more models for the game from the set of
cally joined, without user interaction, using the one or parts that comprises parts automatically joined, without
more rigid joints; user interaction, using the one or more rigid joints;
physically simulating, by a rigid body physics engine,
means for physically simulating motion of joined parts motion of joined parts having one or more rigid joints in
having one or more rigid joints in the game and so the game and motion of the one or more models in the
motion of the one or more models in the game using game using one or more properties, wherein the one or
one or more properties, wherein the one or more prop more properties specify one or more of an event to occur
erties specify one or more of an event to occur when when joined parts having one or more rigidjoints collide
joined parts having one or more rigid joints collide during simulation and whether joined parts having one
during simulation and whether joined parts having is or more rigid joints are intended to collide during simu
one or more rigid joints are intended to collide during lation;
simulation; detecting, by the physics engine, a first collision between
means for detecting, by a physics engine, a first collision the joined parts having one or more rigidjoints in the 3D
between the joined parts having one or more rigid world during physical simulation of the motion of the
joints in the 3D world during physical simulation of 40 joined parts having one or more rigid joints and the one
the motion of the joined parts having one or more rigid or more models;
joints and the one or more models; simulating, based on the one or more properties, a behavior
means for simulating, based on the one or more proper of the joined parts having one or more rigid joints that
ties, a behavior of the joined parts having one or more results from the first collision;
rigid joints that results from the first collision; 45 allowing a user to modify one or more properties of joined
means for allowing a user to modify one or more prop parts having one or more rigid joints selected by the user
erties of joined parts having one or more rigid joints in the 3D world; and
selected by the user in the 3D world; and simulating, based on the modified properties, a modified
means for simulating, based on the modified properties, 50 behavior of the joined parts having one or more rigid
a modified behavior of the joined parts having one or joints that results from a second collision.
more rigid joints that results from a second collision. k k k k k

You might also like