Computer-implemented method and computer system for generating a virtual 3D environment
Through slot hierarchy and randomized object filling methods, a dynamic virtual 3D environment is generated, which solves the problems of high repetition and insufficient creativity in existing 3D games, and achieves diversified game experience and the generation of artificial building structures.
Patent Information
- Application Number
- CN202080022328.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-03-19
- Filing Date
- 2020-03-10
- Publication Date
- 2025-08-08
- Estimated Expiration
- 2040-03-10
AI Technical Summary
In existing 3D video games, the physical structure of the game world usually does not change after being built, causing players to repeatedly travel through the same game world, lacking challenges and emotional design, and the world generated by algorithms lacks the creativity and artificial architectural structure of human designers.
The slot hierarchy is used to generate a virtual 3D environment. By randomly selecting the layout of the top-level slot and the lower-level slot, filling each layout with dynamic and static objects, randomly generating the features of the 3D environment, including urban blocks, buildings, rooms, etc., and displaying them using the virtual 3D environment rendering engine.
It realizes dynamic random generation of 3D environments, provides a diverse gaming experience, reduces repetition, enhances challenges and emotional design, and supports the creativity of human designers, including artificial building structures.
Smart Images

Figure CN113597331B_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present disclosure relate to the generation of virtual three-dimensional (3D) environments, and more particularly, to the generation of dynamic virtual 3D environments with randomized features. Background Art
[0002] Three-dimensional (3D) video games, such as Call of Duty or Fortnite, allow players to experience a virtual 3D environment, or game world, as if they were viewing it through the eyes of a real-life person. Such a game world is displayed on a computer or television screen as a collection of flat polygons, each representing a face of an object, such as a wall, and rendered to resemble concrete, brick, or some other object. For example, a very simple rectangular house might have four polygons for its walls, four polygons for its roof, and one polygon for its floor. The wall polygons might be rendered to resemble plaster, the roof polygons might be rendered to resemble roof tiles, and the floor polygons might be rendered to resemble carpet. Additional polygons can be inserted within the wall polygons to create doors and windows.
[0003] Game creators design these 3D environments much like architects design buildings. They can draw lines on a two-dimensional plane to represent walls, or they can draw all the sides of each polygon in three-dimensional space. Using special software called an "editor," game creators place these polygons in the game world, assembling buildings, streets, vehicles, and everything else visible to the player. Modern 3D games display tens of thousands of these polygons on screen at once to make the game world appear as realistic as possible.
[0004] Designing and building these 3D environments is extremely time-consuming. Consequently, for games created using these traditional methods, the physical structure of the game world typically doesn't change after it's built. Consequently, each time the 3D environment is regenerated, it remains essentially unchanged.
[0005] 3D video games are designed to present players with a series of challenges to complete within the game world. Players typically cannot complete every challenge or level on their first attempt. In some cases, players may need dozens of attempts to complete a challenge. In traditional games, this means players will traverse the same, identical game world or section of the game world multiple times while attempting to complete the challenge. This can become tedious and reduce suspense and enjoyment.
[0006] Recently, some video games, such as "No Man's Sky," have created technology that allows computer algorithms to generate the terrain of the game world, rather than requiring humans to manually design it. This method is called "procedural generation." Before video games used procedural generation to create terrain in the game world, other software, such as Bryce Terrain Editor, allowed artists to procedurally generate 3D scenes for artwork and films.
[0007] However, the algorithmically generated worlds created by procedural generation techniques are not ideal for video games, which benefit significantly from the creativity of human designers who design game worlds for challenge and emotion. Until now, there has been no way to teach computers how to algorithmically create game worlds that produce the same level of challenge and emotion as talented human designers. Furthermore, procedural generation is limited to natural terrain, flora, and fauna, but not man-made architectural structures. Summary of the Invention
[0008] Embodiments of the present disclosure generally relate to computer-implemented methods and computer systems for generating a virtual 3D environment with randomized features. In one embodiment of the computer-implemented method for generating a virtual 3D environment, a hierarchy of slots is provided. The slots are organized into multiple layers, from one or more top-level slots to one or more bottom-level slots. Each slot defines a portion of a 3D environment and includes multiple layouts. Each layout of non-bottom-level slots defines the position of at least one slot from a lower layer within the portion of the 3D environment defined by the non-bottom-level slots. One or more top-level slots are positioned in the 3D environment. The 3D environment is created by randomly selecting one of a plurality of layouts of top-level slots and lower-level slots included within the top-level slots, and populating each selected layout with one or more objects associated with each slot arranged in the selected layout. The 3D environment is then rendered for display.
[0009] In one embodiment, the objects associated with the one or more slots include one or more dynamic objects each having a plurality of associated object options. Populating each selected layout with the one or more objects associated with each slot arranged in the selected layer includes randomly selecting one of the object options associated with each dynamic object and populating the corresponding selected layout with the randomly selected object option.
[0010] In one embodiment, the objects associated with the one or more slots include one or more static objects, each static object defining a single object. Populating each selected layout with the one or more objects associated with each slot arranged in the selected layer includes populating the one or more selected layouts with the associated static objects.
[0011] In one embodiment, the volume of the portion of the 3D environment defined by the slots decreases with each underlying layer.
[0012] In one embodiment, each bottom slot defines a bottom portion of a 3D environment and includes one or more layouts, each layout defining the position of one or more objects within the bottom portion.
[0013] In one embodiment, the hierarchy of slots includes tile slots representing city blocks or game levels, the tile slots including one or more layouts defining the positions of one or more lower-level slots within a tile portion of a 3D environment. In one embodiment, each layout of a tile slot defines the positions of one or more plots within the tile portion, each of the plot slots representing a plot and including one or more layouts, each layout defining the positions of one or more lower-level slots within a plot portion of the tile portion.
[0014] In one embodiment, the hierarchy of slots includes a building slot that represents a building. A building slot includes one or more layouts that define the location of one or more underlying slots within the building portion of a 3D environment. A building slot may include a plurality of associated objects that define features of the building. These features may include one or more exterior shape objects that each define a unique exterior shape of the building, one or more exterior objects that each define a unique appearance of the exterior of the building, and / or one or more window objects that each define a unique window of the building.
[0015] In one embodiment, each layout of a building slot defines the location of one or more floor slots within a building portion. Each floor slot represents a floor of a building and includes one or more layouts that define the location of one or more lower-level slots within the floor portion of the building portion.
[0016] In one embodiment, a floor slot has a plurality of associated objects that define characteristics of the floor of the building including one or more stair objects each defining a unique stair for the floor and one or more corridor objects each defining a unique corridor for the floor.
[0017] In one embodiment, each room slot has multiple associated objects that define the characteristics of the room including a door object that defines a unique door for each room, a wall object that defines a unique type of wall for each room, a ceiling object that defines a unique type of ceiling for each room, a lighting object that defines a unique lighting characteristic for each room, a floor object that defines a unique floor for each room, and a window object that defines a unique window for each room.
[0018] In one embodiment, each layout of a room slot defines the location of one or more furniture slots within the room portion. Each furniture slot includes one or more layouts defining the location of one or more furniture objects within the furniture portion of the room portion, each furniture object representing one or more pieces of furniture. The furniture objects may include one or more bed objects for each defined bed, one or more chair objects for each defined chair, one or more desk objects for each defined desk, one or more rug objects for each defined rug, one or more dresser objects for each defined dresser, and one or more bed and dresser objects for each defined bed and dresser set.
[0019] In one embodiment of the method, a rendered 3D environment is displayed as a first 3D environment. Subsequently, one of a plurality of layouts of top-level slots and lower-level slots included within the top-level slots is randomly selected, and each selected layout is populated with one or more objects associated with each slot in the selected layout. The regenerated 3D environment is then displayed as a second 3D environment different from the first 3D environment.
[0020] In one embodiment of the method, rendering the 3D environment includes generating a seed of data defining the 3D environment, transmitting the seed to a plurality of client computing devices, and synchronizing the display of the 3D environment by each client computing device using the corresponding seed.
[0021] In one embodiment, the rendering of the 3D environment includes rendering the 3D environment using a virtual 3D environment rendering engine.
[0022] An embodiment of a computer-implemented system for generating a virtual 3D environment is included in a non-transitory computer-readable medium. The system includes a slot hierarchy organized into multiple layers from one or more top-level slots to one or more bottom-level slots. Each slot defines a portion of a 3D environment and includes multiple layouts. Each layout of non-bottom-level slots defines the position of at least one slot from a lower level within the portion of the 3D environment defined by the non-bottom-level slot. An editor tool system is configured to locate one of the top-level slots in the 3D environment. A generator of the system is configured to randomly select one of the multiple layouts of top-level slots and bottom-level slots included in the top-level slot, and fill each selected layout with one or more objects associated with each slot arranged in the selected layout. The virtual 3D environment rendering engine of the system is configured to render the 3D environment for display.
[0023] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to help determine the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all of the disadvantages mentioned in the Background. BRIEF DESCRIPTION OF THE DRAWINGS
[0024] Figure 1 is a simplified diagram illustrating a generalized example of a suitable computing device or environment in which the described methods, embodiments, techniques, and technologies, for example, related to the generation of dynamic virtual 3D environments, may be implemented.
[0025] Figure 2 is a simplified diagram of an example of an environment generator module according to an embodiment of the present disclosure.
[0026] Figure 3 is a simplified block diagram of an example of a volume or portion of a virtual 3D environment represented by a plurality of hierarchically organized slots in accordance with an embodiment of the present disclosure.
[0027] Figure 4A and 4B is a simplified diagram of an exemplary layout of tile slots according to an embodiment of the present disclosure.
[0028] Figure 5 is a simplified diagram of an exemplary layout of plot slots according to an embodiment of the present disclosure.
[0029] Figure 6 is a simplified diagram of an exemplary layout of building slots according to an embodiment of the present disclosure.
[0030] Figure 7 is a simplified diagram of an exemplary layout of room slots according to an embodiment of the present disclosure.
[0031] Figure 8 is a simplified diagram of an exemplary layout of furniture slots according to an embodiment of the present disclosure.
[0032] Figure 9 is a flow chart illustrating an exemplary method of generating a portion of a 3D environment according to an embodiment of the present disclosure.
[0033] Figure 10 is a simplified diagram illustrating the distribution of seeds defining a 3D environment to multiple client computing devices according to an embodiment of the present disclosure. DETAILED DESCRIPTION
[0034] The embodiments of the present disclosure are described more fully below with reference to the accompanying drawings. Elements identified with the same or similar reference numerals refer to the same or similar elements. However, the various embodiments of the present disclosure can be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. On the contrary, these embodiments are provided to make the present disclosure thorough and complete and to fully convey the scope of the present disclosure to those skilled in the art.
[0035] Embodiments of the present disclosure generally relate to computerized methods or software and computer systems configured to execute software for designing and generating dynamic virtual 3D environments on a display. Figure 1 is a simplified diagram illustrating a generalized example of a suitable computing device or system or computing environment 100 in which the described methods, embodiments, techniques, and techniques related to, for example, the generation of a virtual 3D environment, may be implemented. The example computing environment 100 is not intended to impose any limitations on the scope of use or functionality of the techniques disclosed herein, as each technique may be implemented in a variety of general-purpose or special-purpose computing environments. For example, each disclosed technique may be implemented with other computer system configurations, including multi-processor systems, microprocessor-based or programmable consumer electronic devices, embedded platforms, network computers, video game consoles, game engines, and the like. Each disclosed technique may also be practiced in a distributed computing environment, in which tasks are performed by remote processing devices that are linked via a communications connection or network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
[0036] The computing environment 100 may include at least one processor or processing unit 102 and memory 104, which may represent local or network accessible memory. Processor 102 executes computer-executable instructions and may be a real or virtual processor. In a multi-processing system, multiple processing units execute computer-executable instructions to increase processing power, and therefore, multiple processors may run simultaneously. Memory 104 is non-transitory and may be volatile memory (e.g., registers, cache, RAM), non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or some combination of the two. Memory 104 stores software 106, such as an environment generator module, which, when executed by a processor such as processor 102, may implement one or more of the embodiments and functionality described herein.
[0037] The computing environment 100 may include additional features, such as data storage 108, one or more input devices 110, one or more output devices 112, and one or more communication connections 114. An interconnection mechanism (not shown), such as a bus, controller, or network, may be used to interconnect the components of the computing environment 100. Typically, operating system software (not shown) provides an operating environment for executing code in the computing environment 100 and coordinates the activities of the components of the computing environment 100.
[0038] Data storage 108 and memory 104 may be removable or non-removable and may include selected forms of non-transitory machine-readable media. Typically, machine-readable media include magnetic disks, magnetic tapes or cartridges, non-volatile solid-state memory, CD-ROMs, CD-RWs, DVDs, magnetic tape and optical data storage devices, or any other machine-readable, non-transitory media that can be used to store information and accessed within computing environment 100. Data storage 108 may store software or code 106 that may implement the embodiments described herein.
[0039] The data store 108 may also be distributed over a network, thereby storing and executing software instructions in a distributed manner. In other embodiments, some of these operations may be performed by specific hardware components containing hardwired logic. Those operations may alternatively be performed by any combination of programmed data processing components and fixed hardwired circuit components.
[0040] The input devices 110 may include one or more touch input devices, such as a keyboard, keypad, mouse, pen, joystick, touch screen, touchpad or trackball, voice input device, gesture recognition device output device, scanning device, microphone or other sound transducer, or other device that provides input to the computing environment 100. The output devices 112 may include a display that can be used to display a graphical user interface for editing, creating, and / or viewing a 3D environment, such as that formed according to embodiments of the present disclosure. Optional output devices 112 may also include a printer, speakers, CD burner, or other device that provides output from the computing environment 100.
[0041] Communication connection 114 enables wired and / or wireless communication to another computing entity (e.g., a server, client computing device, database, and / or other device) over a communication medium (e.g., a connection network). For example, the communication medium may be used to transmit information such as computer-executable instructions, compressed graphics information, and / or other data in a modulated data signal.
[0042] Figure 2is a simplified diagram of an example of an environment generator module 116 defined by code or software 106 according to an embodiment of the present disclosure. However, it should be understood that the illustrated module 116 may be implemented by different software programs executing on the same or different computing devices.
[0043] As mentioned above, embodiments of the environment generator module 116 allow game designers and artists to design custom components or features of 3D environments (e.g., 3D game worlds), including random features that change each time a 3D environment is generated or displayed, such as the level of playing a game or game at each time. Examples of 3D environment features that can be randomized include city blocks, buildings, the interior and exterior surfaces of buildings, buildings or floor levels, rooms, furniture sets, game characters, game logic, artificial outdoor objects such as streets and fences, and natural outdoor objects such as trees and shrubs, and / or other features of a 3D game world environment. Designers can also specify parts that may randomly change in the 3D environment and parts that remain unchanged in each generation of the 3D environment. Therefore, game designers may be able to implement multiple randomly changing features in a 3D environment, the scope of which ranges from the structure of a sofa to the position of an entire building in a city block.
[0044] A dynamic virtual 3D environment can be designed or constructed using slots 120 (e.g., templates) that define groups of objects (e.g., lists of objects) that can be contained within any single 3D volume of space within the virtual 3D environment. For example, each volume of space can be as large as an entire city block or as small as a kitchen table. The slots 120 are organized hierarchically, meaning that a high-level or top-tier slot (block), such as a city block, contains a hierarchy of smaller slots that define increasingly finer details of the portion of the virtual 3D environment within the top-tier slot. Thus, a top-level slot includes lower-tier slots, which in turn may include even lower-tier slots, and so on. This can continue until the last or bottom-tier slot is reached, defining the final object or Actor to be rendered in the portion of the 3D environment corresponding to the bottom-tier slot.
[0045] The editor tools 122 of the environment generator module 116 can be used to create and edit a virtual 3D environment (e.g., the layout of the architecture of the 3D environment) using the slots 120. In some embodiments, the editor tools 122 can be used to edit or design the slots 120, edit or design the layout 123 associated with the slots 120, edit or design objects 124, associate objects 124 with the slots 120, edit gameplay features 126 (e.g., mission objects, etc.), associate gameplay features with the slots 120, and / or edit or design other features of the virtual 3D environment. The created virtual 3D environment can be output by the editor as a 3D environment package 128 or saved to the memory 104.
[0046] Generator 130 operates based on 3D environment package 128 to generate a virtual 3D environment 132. In one embodiment, generator 130 randomizes features defined by slots 120, objects 124, gameplay features 126, and / or other components of the 3D environment package, as discussed in more detail below, to generate 3D environment 132. Generator 130 may supplement or replace certain software code of editor tool 122 with its own software code so that, for example, each time a game is played, the design of the virtual 3D environment or game world for a given game comes from generator 130 rather than from editor tool 122.
[0047] The 3D environment rendering engine 134 operates to render the 3D environment 132 on the display 112, simulate physics within the game world, impart artificial intelligence to non-player characters within the game world, allow human players to play together or against each other (e.g., over a network of devices), and / or other functions to transform the generated 3D environment 132 into a functional game. The rendering engine 134 can be implemented using a conventional 3D game generation engine, such as Unreal Engine 4 (UE4).
[0048] In some embodiments, the 3D environment generation module 116 can be integrated with an existing 3D game generation engine, which is a set of commercial software libraries that can render graphics on a television, computer, or smartphone screen, simulate the physics of the game world, give non-player characters in the game world artificial intelligence, and allow human players to play together or against each other across a network of devices. As described below, the 3D environment generation module can be integrated into Unreal Engine 4 (UE4) or similarly implemented in other 3D game generation engines.
[0049] One or more layouts 123 associated with each slot 120 provide a unique template for one possible design of the portion of the 3D environment occupied by the slot 120. While a slot 120 may define a set of associated objects 124 and underlying (sub)slots 120 that may be contained within the three-dimensional volume of space corresponding to the slot 120, each layout 123 describes the location of each of these objects 124 and underlying slots 120 within the three-dimensional volume. In other words, the layout 123 shows the physical location of each underlying slot 120 or object 124 within the three-dimensional portion of the slot 120, such as where a room is located within a building or where furniture is located within a room. For example, a building slot defining a building environment may include sub-slots (first level down) that define the floor levels or floors of the building, which may include sub-slots (second level down) that define rooms, which may include sub-slots (third level down), which may be the bottom slot that defines one or more final objects or Actors (such as a table and chairs).
[0050] Figure 31 is a simplified block diagram of an example of a volume or portion 140 (hereinafter referred to as a "portion") of a virtual 3D environment 132 represented or defined by a plurality of hierarchically organized slots 120 in accordance with an embodiment of the present disclosure. Each slot 120 defines a corresponding portion of the 3D environment 132. Thus, each lower-level slot 120 defines a subset of the volume or portion 140 of the next higher-level slot 120.
[0051] The non-bottom layer slots 120 define their portion 140 of the 3D environment using one or more associated layouts 123, each layout defining the position of at least one slot 120 from the underlying layer within the portion 140 of the 3D environment. Figure 3 As shown, top-level slot 120A defines a volume or portion 140A of 3D environment 132 using an associated layout 123 that defines the location of one or more lower-level slots (e.g., slot 120B) within portion 140A. Figure 3 140B. Similarly, slot 120B defines a volume or portion 140B of 3D environment 132 within portion 140A using an associated layout 123 that defines the location of one or more lower-level slots (e.g., slot 120C) within portion 140B. Layout 123 associated with slot 120C defines the location of one or more lower-level slots and objects within portion 140C of portion 140B of virtual 3D environment 132. This hierarchy of slots 120 can be extended to additional lower-level slots 120 having layouts that define portions or subsets of upper-level slots 120 until a bottom-level slot is reached. A bottom-level slot does not include the layout of the lower-level slots and completes the definition of that particular subset of virtual 3D environment 132.
[0052] Each time the 3D environment is generated, the generator 130 may randomly select one of the unique layouts 123 for each slot to form the virtual 3D environment 132 for rendering on the display. Thus, for example, each time the virtual 3D environment 132 is rendered, such as when playing a game, the characteristics of the 3D environment 132 may randomly change based on the random selection of the layout 123 of slots 120 and objects 124 that at least partially define the virtual 3D environment 132.
[0053] As described above, in addition to the diversity provided by the multiple unique layouts 123, the objects 124 associated with each slot 120 (furniture, walls, floors, etc.) can include various associated options, such as various surface or material options, and other options that further define the virtual 3D environment 132. For example, a wall object can be "painted" to resemble plaster, brick, or concrete blocks. Similarly, objects 124 can include different design variations of the object 124. For example, a sword object can have associated options that define the sword's design (size, shape, color, surface texture, etc.), and a lamp can have various associated options that define the lamp's design (size, number of lighting elements, shape, decorative features, etc.). Thus, one or more objects 124 of a slot 120 can be configured with associated options that can be randomized by the generator 130 to provide different variations of the object 124 each time the 3D environment 132 is generated or rendered for display.
[0054] A slot 120 having multiple layouts 123 can be designated by the creator as a dynamic slot with features randomly selected when generating a 3D environment 132 (e.g., each time a game level is played). Thus, the 3D environment can be regenerated multiple times (e.g., more than 100 times), while creating a unique 3D environment 132 each time.
[0055] Slots 120 can also be designated as static slots, which have a fixed layout and fixed objects that are not randomized when the generator 130 generates the 3D environment 132. These slots 120 can, for example, be generated only during editor time, effectively "baking" the slots 120 with the desired assets or objects 124 and layout 123 that remain the same each time the corresponding portion of the 3D environment 132 is generated. Thus, static slots 120 resemble traditional 3D environment generation practices. In some embodiments, a slot 120 with multiple layouts 123 and objects 124 with multiple associated options is designated as a static slot 120, freezing the slot 120 in a single layout. Additionally, the static designation of a slot 120 can freeze objects 124 and other functionality to have only one configuration.
[0056] While the backend code of the generator 130 can use a standardized system to generate all layered slots 120 (e.g., it is slot layer agnostic and does not depend on the type of layer), it is helpful to decompose the different levels of the slot 120 into specific layers with descriptions that can correspond to the real world. The following is an exemplary list of layered slots 120 according to an embodiment of the present disclosure.
[0057] A tile slot can be a top-level slot within a hierarchy of slots 120 that define a randomizable 3D environment 132. In some embodiments, a tile slot represents a city block or a gameplay level of a game within a tile portion (e.g., a volume) of the virtual 3D environment 132. Thus, a tile slot can define a complete city block or a complete gameplay level that a player must navigate to complete the game level. Each tile slot includes a layout 123 that defines the location of lower-level slots and / or objects within the tile portion, such as a layout of a plot slot or other lower-level slots within the 3D volume of the tile portion.
[0058] Plot slots can be in a lower layer relative to tile slots. Plot slots define a subdivision of a plot portion of the 3D environment 132, such as a subdivision of a tile portion of a tile slot. Plot slots can define different volumes of the 3D environment 132, such as a small plot slot that defines a relatively small portion of the 3D environment, a large plot slot that defines a relatively large portion of the 3D environment, and a medium plot slot that defines a portion of the 3D environment between the portions defined by the small plot slot and the large plot slot. Plot slots can also define specific features within the corresponding plot portion of the 3D environment, such as roads (road plot slots), lanes (lane plot slots), sidewalks (sidewalk plot slots), and other features. Each plot slot includes one or more layouts 123, each layout defining a unique position of lower-level slots and / or objects within the 3D volume of the corresponding plot portion, such as a layout of a building slot within the 3D volume of the plot portion.
[0059] The objects 124 of the parcel slots can be fixed to provide fixed characteristics for the parcel portion that remain the same each time the parcel portion is generated or rendered in the 3D environment. Additionally, the objects of the parcel slots can be dynamic and have associated options or characteristics that allow the objects to be randomized to create a different appearance for the parcel portion each time the 3D environment is generated or rendered. For example, a parcel slot can include a road object corresponding to a road in the 3D environment, which can take the form of an asphalt road, a concrete road, a gravel road, or other type of road.
[0060] Building slots are used to define or represent building structures within a building portion subdivision of a virtual 3D environment 132. Building slots can be located in a lower layer relative to a parcel slot and define building structures within the parcel portion of the parcel slot. Building slots can define or represent different types of building structures within a building portion, such as complete buildings, carports (Carport Building slot), bridges (Bridge Building slot), houses (House Building slot), and other types of building structures. Each building slot includes one or more layouts 123, each of which defines a unique position of underlying slots and / or objects within the 3D volume of the corresponding building portion, such as a floor slot or a floor slot and / or a room slot.
[0061] The objects 124 associated with a building slot can be fixed to provide fixed features of the building portion that remain the same each time the building is generated or rendered in the 3D environment 132. Additionally, the objects of a building slot can be dynamic and have associated options or features that allow the objects to be randomized to create a different appearance for the building structure each time the building portion is generated or rendered in the 3D environment 132. For example, examples of objects 124 associated with a building slot can include an exterior shape object that defines a unique exterior shape for each building, an exterior object that defines a unique appearance for each building exterior, and / or one or more window objects that define a unique window for each building exterior.
[0062] Floor layers or floor slots (hereinafter referred to as "floor slots") are used to define or represent floors within a floor portion subdivision of a virtual 3D environment 132. Each floor slot can be located in a lower layer relative to a building slot and defines the characteristics of a floor of the building portion of the building slot. Each floor slot includes one or more layouts 123, each layout defining a unique position of lower layer slots and / or objects within the 3D volume of the corresponding floor portion, such as a room slot.
[0063] The objects 124 associated with a floor slot may be fixed to provide fixed features for the floor section that remain the same each time the floor is generated or rendered in the 3D environment 132. Additionally, the objects of the floor slot may be dynamic and have associated options or features that allow the objects to be randomized to create a different appearance for the floor section each time the 3D environment 132 is generated or rendered. For example, examples of objects associated with a floor slot may include a stair object for a unique stair within each custom floor section, and / or one or more corridor objects for a unique corridor within each custom floor section.
[0064] Room slots are used to define or represent rooms within a room section subdivision of a virtual 3D environment. Each room slot can be located at a lower level relative to a floor slot and define the characteristics of a room within the floor section of the floor slot. Each room slot includes one or more layouts, each of which defines a unique position of one or more lower level slots and / or objects within the 3D volume of the corresponding room section, such as furniture slots.
[0065] Room slots may define different volumes of the 3D environment 132, such as a small room slot defining a relatively small room portion of the 3D environment 132, a large room slot defining a relatively large room portion of the 3D environment 132, and a medium room slot defining a room portion of the 3D environment 132 between the portions defined by the small and large room slots. Room slots may also be categorized based on the type of room to be depicted within the room portion of the 3D environment 132. For example, an office room slot may include a layout 123 representing or defining a room design with typical office characteristics, a bedroom room slot may include a layout 123 representing or defining a room design with typical bedroom characteristics, a kitchen room slot may include a layout 123 representing or defining a room design with typical kitchen characteristics, and a dining room may include a layout 123 representing or defining a room design with typical restaurant characteristics.
[0066] The objects 124 associated with a room slot may be fixed to provide fixed features of the room portion that remain the same each time the room portion is generated or rendered in the 3D environment 132. Additionally, the objects 124 of a room slot may be dynamic and have associated options or features that allow the objects to be randomized to create a different appearance for the room portion each time the 3D environment 132 is generated or rendered. Examples of objects 124 associated with a room slot may include a door object for a unique door for each custom room, a wall object for a unique type of wall for each custom room, a ceiling object for a unique type of ceiling for each custom room, a light object for a unique lighting feature for each custom room, a floor object for a unique floor for each custom room, and / or a window object for a unique window for each custom room.
[0067] Furniture slots are used to define or represent furniture within the furniture section of the 3D environment 132. A furniture slot can be in a lower layer relative to a room slot and define furniture objects within the room section of the room slot. Each furniture slot can include one or more layouts 123, each of which defines one or more lower layer slots and / or unique positions of objects within the 3D volume of the corresponding furniture section. Furniture slots can also be categorized based on the type of furniture to be depicted within the furniture section of the 3D environment 132. For example, an office furniture slot can include a layout that represents or defines a typical set of office furniture (e.g., desks, office chairs, tables, etc.), a bedroom furniture slot can include a layout that represents or defines a typical set of bedroom furniture (e.g., beds, coffee tables, dressers, chairs, etc.), a kitchen furniture slot can include a layout that represents or defines a typical set of kitchen furniture (e.g., dining table, chairs, buffet tables, counters, cabinets, etc.), a dining room furniture slot can include a layout that represents or defines a typical set of dining room furniture (e.g., dining table, chairs, etc.), and so on.
[0068] The associated objects 124 of a furniture slot can be fixed to provide fixed characteristics of the furniture part that remain constant each time the furniture part is generated or rendered in the 3D environment 132. Additionally, the objects of the furniture slot can be dynamic and have associated options or characteristics that allow the objects to be randomized to create a different appearance of the furniture part each time the 3D environment 132 is generated or rendered, such as a different type of furniture piece or group of furniture pieces (e.g., a different chair or table design), and / or a different appearance of the furniture (e.g., a different color, texture, etc.).
[0069] Examples of associated objects 124 for a furniture slot may include a bed object representing or defining a unique bed, a chair object defining or representing a unique chair, a desk object defining or representing a unique desk, a rug object defining or representing a unique rug, a dresser object defining or representing a unique dresser, and / or a bed and dresser object defining or representing a unique bed and dresser set. For example, a bedroom furniture slot may include a layout with randomizable associated furniture objects, such as a "C4 bed" set, a "bed and dresser" set, an "empty bedroom" set, etc., and when a furniture portion of a 3D environment is generated or rendered, one of these associated furniture objects is spawned in the corresponding furniture slot.
[0070] Objects 124 are generally bottom-level or final elements that can be included within a layout 123 of a slot 120. Objects 124 can be used to define any item in a 3D environment 132 and can include associated options that are randomly selected when the 3D environment 132 is generated, as described above. Thus, a wall object of a building slot can be a dynamic object with associated options, such as a painted surface, a plaster surface, and other surface types. When the 3D environment 132 is generated or rendered, one of the associated options for the wall object is randomly selected, and a building is generated with the wall (e.g., a plaster surface) having the selected associated option.
[0071] Similarly, a chair object or desk object that can be associated with a furniture slot can include multiple associated chair and desk designs. When generating or rendering the 3D environment 132, one of the association options for the chair object or desk object is randomly selected, and, for example, a furniture part (e.g., a recliner, a large office desk) having the chair or desk with the selected association option is generated or rendered.
[0072] A spawn slot may also be a bottom-level or final Actor slot that may be included in a layout 123 of a slot 120. A spawn slot corresponds to a spawning object that is relevant to gameplay, such as an enemy, or a mission objective or object. Thus, a spawn slot may define the characters, objects, and logic needed to create a gameplay challenge. For example, a spawn slot may contain a list of possible enemy types that may be present in a room, and how they interact with the environment, other characters, and the player. Thus, for example, a spawn slot may contain a weapon slot that is automatically triggered when the player enters the room.
[0073] Figure 4A and 4B An exemplary layout 123A of the tile slots 120A is shown in a simplified diagram of FIG, which illustrates the positioning of the tile slots 120B within the tile slot portion 140A of the 3D environment 132. As described above, the optional tile slots 120B include small tile slots, medium tile slots (shown), and large tile slots, as well as road tile slots, lane tile slots (shown), and other types of tile slots that can be used to define one or more tile portions 140B within the tile portion 140A of the 3D environment 132 corresponding to the tile slot 120A. Figure 4A The layout 123A of the plot slots 120A includes four medium plot slots 120B-1 and a lane plot slot 120B-2 in a rectangular plot, and Figure 4B The layout defines a tile portion 140A (eg, square tiles) of four medium tile slots 120B-1. The tile slots 120A may include these and other layouts.
[0074] Figure 5 yes Figure 4A and 4B 1, which includes a pair of building slots 120C in the form of a medium house building slot 120C-1 within a land portion 140B. Other building slots 120C that may be included in the layout 123B for the medium land slot 120B-1 include small and large house building slots, small, medium, and large building slots, and other slots that may be used to further define the land portion 140B. Thus, the layout 123B for the land slot 120B generally defines the size and position of each building within the portion 140B of the 3D environment 132 corresponding to the land slot 120B. Furthermore, for example, the land slot 120B may determine exterior and non-building objects 124 and final Actors, including ambient sounds, light sources, and other objects or features of the 3D environment 132.
[0075] Figure 6is a simplified diagram of an example of a layout 123C corresponding to a building slot 120C of a building section, e.g. Figure 5 One of the medium housing slots 120C-1 is shown in FIG. Figure 6 In the example shown, building slot 120C-1 includes multiple floors. Thus, the illustrated floor of building slot 120C-1 includes floor slot 120D having a layout 123D that defines the locations of multiple room slots 120E, including medium room slot 120E-1 and small room slot 120E-2 within floor portion 140D. The layout 123D of floor slot 120D (or building slot 120C-1) may include predefined static features or objects and spaces, such as stairwells 144 connecting different floors or floor slots 120D, open areas 146, and other features that may be included within the floors of the building. The layout 123D of floor slot 120D may also include final objects or actors for any non-room areas, game logic including overlays and artificial intelligence nodes for areas outside of room slots, connecting paths between room slots, and other features that may form a complete virtual 3D environment 132.
[0076] Figure 7 Such as Figure 6 A simplified diagram of an exemplary layout 123E for a room slot 120E, such as the medium-sized room slot 120E-1 in FIG. A room slot layout 123E may include furniture slots, such as furniture slot 120F, which defines a portion 140F of a 3D environment 132. Room slot 120e includes a layout 123E for fixed or dynamic objects 124, such as cabinet furniture 124A. Furthermore, room slot layout 123E may include entry and exit points 148 for room portion 140E, game logic including artificial intelligence nodes and overlay nodes 149 within room portion 140E, other objects, and ultimately, actors.
[0077] Figure 8 is a furniture slot located in the corresponding room slot 120E (e.g. Figure 7 120F). Layout 123F includes furniture objects 124, such as a table 124B, a chair 124C, a bed 124D, and an end table 124E, which can be randomized to have different associated object options, as described above. Layout 123F can also include other objects and ultimately Actors, as well as game logic including overlays and artificial intelligence nodes associated with the furniture objects.
[0078] Conventional techniques for designing 3D games and their environments involve placing "mission objects" throughout the 3D game environment. These objects tell the game where to place enemy positions, booby traps, weapon caches, high-value targets, mission objectives, and more. Typically, these objects are carefully planned and placed by game designers to optimize the player's experience. However, it's clear that designers can't precisely place these objects if these environments change each time the game is played.
[0079] Embodiments of the present disclosure allow game designers to assign properties and rules to quest objects, giving each quest object its own intelligence so that each quest object knows how to place itself within the 3D game environment 132 each time the environment 132 is randomly generated or rendered. In some embodiments, quest objects are defined for each game level by assigning rules and properties to each game level using the editor tool 122, such as through a suitable interface (e.g., a pop-up menu, etc.). These rules and properties tell the system what kind of rooms or objects a quest object must be contained in, how far it must be from other structures or other quest objects, and / or other characteristics.
[0080] For example, if the player's mission objective is to locate and recover a secret document, the rules of the mission object may specify that the document must be located in a locked drawer within a desk. When the game is run (e.g., executed by a processor), the mission object rules for the current level are applied to the generated 3D environment 132 having random features based on the slots 120 and objects 124, as described above, to randomly determine in which desk object within the generated or rendered 3D environment 132 the document will be located.
[0081] Figure 9 1 is a flowchart illustrating an example of a computer-implemented method for generating at least a portion of a virtual 3D environment according to an embodiment of the present disclosure. This method may be implemented in response to execution of code by the environment generation module 116 or other processors.
[0082] At 150 of the method, a hierarchy of slots 120 may be provided, such as Figure 2 As shown, the slots 120 are formed according to one or more of the above-described embodiments. For example, the slots 120 may be hierarchically organized into multiple layers from one or more top-level slots to one or more bottom-level slots, and each slot 120 may define a portion of the 3D environment 132 and include one or more layouts 123. The layout 123 of a non-bottom-level slot defines the position of at least one slot 120 from a lower level within the portion of the 3D environment 132 defined by the non-bottom-level slot.
[0083] The dynamic virtual 3D environment can be designed or created using the editor tool 122 of the 3D builder module. For example, at step 152 of the method, the designer can use the editor tool 122 to position one of the top slots 120 on the display (e.g., Figure 1 This may involve, for example, selecting a tile slot 120A from a set of unique predefined tile slots and placing the selected tile slot within the designer view of the 3D environment (e.g., a display (output device) 112) using conventional techniques, such as dragging the selected tile slot from a list of tile slots and placing the selected tile slot at a desired location in the 3D environment. Figure 4A and 4B ).
[0084] In some embodiments, the editor tools 122 allow the designer to modify, copy, rename, and / or perform other actions on predefined slots 120 before or after the selected slot is placed in the designer view of the 3D environment. For example, the designer can adjust (e.g., modify, add, or delete) the layout 123 in the top or lower level slots, adjust the lower level slots (e.g., the slot type, such as small, medium, or large room, whether the slot is designated as dynamic or static, etc.), use the editor tools 122 to adjust the objects 124 available in or associated with the slot 120, and / or adjust other characteristics of the slots 120 described above. In addition, the designer can select and use the editor tools 122 to add gameplay features 126 to the 3D environment, such as quest objects. The created dynamic virtual 3D environment can be used as a 3D environment package 128 ( Figure 2 ) is saved to a memory (e.g., memory 104).
[0085] At 154 of the method, for example, after creating the dynamic 3D environment package 128, the generator 130 of the module 116 can generate a 3D environment 132 having randomized features. In some embodiments, as described above, this involves processing the 3D environment package 128 by randomly selecting one of a plurality of layouts 123 of top-level slots and lower-level slots included within the top-level slots defined within the package 128, and populating each selected layout with one or more slots 120 and / or objects 124 associated with each slot arranged in the selected layout.
[0086] The generator 130 may also reduce the data file of the 3D environment by deleting non-gameplay slots 120, objects 124, and Actors that are not selected to form the final 3D environment 132. This reduces the data size of the generated virtual 3D environment 132.
[0087] The generator 130 may also run code to add a navigation mesh, or "NavMesh," to the 3D environment 132 and link overlay nodes according to conventional techniques. A navigation mesh is a set of locations placed throughout the 3D environment 132 that forms the game world, which informs computer-controlled friendly and enemy characters ("AI" characters) how to navigate the game world. Additionally, areas of the 3D environment 132 may be connected by "wire-connected points" that link sections of the 3D environment 132 (e.g., city blocks) using conventional techniques. Furthermore, lighting calculations may be performed using conventional techniques to determine how to dynamically place light and shadows on everything in the 3D environment 132.
[0088] At 156 of the method, the 3D environment 132 with randomized features is rendered for display, e.g. Figure 1 The 3D environment 132 is displayed on a display (output device) 112 using a suitable rendering engine 134. In some embodiments, for example, the 3D environment 132 is generated (step 154) and rendered (step 156) during execution of a 3D video game (e.g., a game similar to Fortnite).
[0089] 3D environment 132 may also be generated in response to replaying a game level or other instance in which 3D environment 132 must subsequently be regenerated. This regeneration of 3D environment 132 may include repetition of step 154, resulting in the generation of a unique 3D environment 132 due to randomization of the characteristics of 3D environment 132 based on 3D environment package 128. As a result, first 3D environment 132 may be displayed on display 112 based on the first 3D environment generated and rendered according to method steps 150, 152, 154, and 156. Subsequently, a second 3D environment, different from the first 3D environment, may be generated using 3D environment package 128 based on a second execution of method step 154 and rendered for display on display 112 in response to execution of step 156. This process may be repeated to generate and display many unique virtual 3D environments 132.
[0090] The features of the 3D environment 132 that are randomized in step 154 of the method include one or more of the randomizable features described above, for example, for each level of the game. For example, the randomized features may include:
[0091] - City blocks with random layout of plots and / or paths;
[0092] - plots within city blocks with random building layouts;
[0093] - Buildings with random floors or floor layouts within a plot;
[0094] - floors or levels within a building with random room layouts;
[0095] -Rooms within buildings with random furniture layouts; and / or
[0096] - Furniture packs with randomized furniture layouts within the room.
[0097] Randomization features of the 3D environment, e.g. for each level of the game, may also include, for example:
[0098] - Random objects (e.g., final actor, item type, etc.); and / or
[0099] - Random options related to the object (e.g. object design, surface treatment, etc.).
[0100] Random features may also include random gameplay features, such as for each level of the game, such as specified by a spawn slot, which may include, for example:
[0101] - Random game characters (e.g. enemies);
[0102] - Random character actions with the environment, other characters and / or the player;
[0103] - Random game actions (e.g., game action triggers, weapon placement); and / or
[0104] -Random mission targets for players
[0105] - Random quest objects (e.g., location of quest objects).
[0106] Similar techniques can be employed when generating outdoor environments within the 3D environment 132. For example, a city tile slot can provide a layout for outdoor object slots, such as trees, shrubs, and grass. The tree slot can include several different types of trees, which can be randomized during 3D environment generation. Similarly, the shrub and grass slots can each include several variations of shrubs and grass, which can be randomized during 3D environment generation.
[0107] In some embodiments, the generation of the 3D environment can be generated using a server over the network. The rendering of the game's 3D environment 132 can be deterministic, for example, by using a mutating seed algorithm. This ensures that the same seed can be used to generate the 3D environment multiple times and obtain exactly the same results.
[0108] Thus, rendering of the 3D environment 132 for display (step 156) may include generating a data seed defining the 3D environment. The seed may then be transmitted to a plurality of client computing devices. For example, the seed 160 may be transmitted by the server 166 to the client computing device 162 via the network 164, such as Figure 10160. The display of the 3D environment by each client computing device 162 can be synchronized using the seed 160 according to conventional techniques. This allows multiple players (executing games on client computing devices) to experience the same 3D environment 132 while playing the same game. After the dynamic 3D environment is generated at the client device 162, the copied objects can be forcibly deleted from the client device 162 to ensure that no copies are created.
[0109] As described above, in one exemplary embodiment, the 3D environment generation module 116 may be integrated within UE4 to allow game developers to use Unreal Engine's editing tools to design the layout of a randomized game level, which may be represented by the editor tool 122 ( Figure 2 ), and similar to how an architect might design a building using CAD software. Furthermore, embodiments of the 3D environment generation module 116 may also modify Unreal Engine technology to allow these randomized levels to be displayed on screen as 3D virtual environments, contain computer-controlled characters, respond to environmental events, and perform other game-related functions.
[0110] Embodiments of the 3D environment generation module 116 may also utilize the core UE4 concept of an "Actor" for its implementation. An "Actor" in UE4 can represent both a real-world object 124 within a 3D virtual environment 132, such as a wall, a piece of furniture, a building, or a character, and a non-visual entity, such as a game event trigger, a computer-controlled enemy spawn point, or information needed for a computer-controlled character to navigate a 3D game environment. From a technical / programming perspective, an Actor is implemented as a single object-oriented entity, generally referred to herein as an Object, with a set of characteristics that are useful for many different types of Actors.
[0111] Embodiments of the 3D environment generation module 116 can also leverage UE4's ability to support an object-oriented programming technique called "inheritance," which creates child actor classes that have the same behavior, data, and characteristics as an actor, but can change or extend their behavior by injecting additional software code into the child actor. Similarly, these child actors can also have their own child actors that inherit the behavior of their parent, creating more opportunities for specialization or enhanced behavior.
[0112] Actors can also have child objects called "components." Like Actors, components can pass behavior to their child components through inheritance. When the game is running, an embodiment of the 3D environment generation module can utilize a UE4 component called ChildActorComponent to dynamically generate Actors of any given Actor type, thereby constructing the virtual game world and all of its parts.
[0113] Game developers can use the 3D environment generation module 116 to lay out random game levels within the UE4 editor tool. Embodiments of the 3D environment generation module 116 can modify the UE4 editor to allow designers to place Actors on the screen from within the UE4 editor.
[0114] In some embodiments, the developer designs a 3D virtual environment by creating a "layout Actor", which is provided by the 3D environment generation module 116. This can be done, for example, by selecting the "Create Layout Actor" option provided by the 3D environment generation module 116 in the menu options of the UE4 editor. The designer then assigns behaviors and features to the layout Actor using the pop-up menu or other tools in the UE4 editor. The developer can also add ChildActorComponents directly to the layout Actor and instruct these ChildActorComponents to generate any desired type of "slot Actor". The developer then creates a slot Actor and adds the just-created layout Actor to the layout list of the slots it can generate. The developer can create additional layout Actors and add them to the layout list of the slot Actor.
[0115] The developer can then create a new Slot Actor that will hold the layout actors representing the next level of the 3D virtual environment and assign that Slot Actor to the ChildActorComponent of one of the layout actors assigned to the first Slot created. The designer repeats this process recursively until it fits whatever depth the designer wants for the environment.
[0116] Then, once these layouts and slots are created (including the relationships between slots and layouts), designers create the actual game levels by placing slot actors into a UE4 "map," which is a 2D and 3D representation of a 3D virtual environment with randomized features. These slot actors contain a list of top-level layouts that can be selected to trigger the randomization process.
[0117] Embodiments of the present disclosure generally relate to computer-implemented methods and computer-readable media for generating virtual 3D environments with randomized features using hierarchically organized slots. The embodiments facilitate improvements in how 3D environments, such as 3D video game environments, are generated and displayed, as well as improvements in gameplay. For example, the randomized features of 3D environments created and generated according to embodiments of the present disclosure allow the 3D game world to change each time the game is played, while maintaining a high degree of visual fidelity and designer control over how the game world is constructed.
[0118] In addition to these improvements in the technical field of 3D environment or game design and development, the improvements provided by embodiments of the present disclosure include improvements in the operation of computing devices. For example, dynamic layering slots allows for the random creation of different environments while remaining within the confines of the slots that define the 3D environment. This improves the operation of the computer by allowing a large number of unique virtual 3D environments to be designed and stored without having to write a separate program for each 3D environment and storing each separate program in the system's memory. Therefore, compared to the memory required to store each of the numerous unique 3D environments formed according to embodiments of the present disclosure separately using conventional technology, embodiments of the present disclosure allow the computer to use less memory, resulting in faster computing times without sacrificing quality. In addition, embodiments of the present disclosure improve the efficiency with which unique virtual 3D environments can be generated. These advances are very noteworthy and important in this technical field and in the capabilities and performance of computers.
[0119] Although embodiments of the present disclosure have been described with reference to preferred embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the present disclosure.
Claims
1. A computer-implemented method for generating a virtual 3D environment, comprising: providing a hierarchy of slots, the hierarchy of slots being organized in layers from one or more top-level slots to one or more bottom-level slots, each slot defining a portion of a 3D environment and comprising a plurality of layouts, each of the layouts of non-bottom-level slots defining a position of at least one slot from a lower layer within the portion of the 3D environment defined by the non-bottom-level slot; locating one of the top-level slots within the 3D environment; Generating the 3D environment includes: randomly selecting one of a plurality of layouts of the top slot and lower slots included within the top slot; and populating each of the selected layouts with one or more objects associated with each slot arranged in the selected layout; and The 3D environment is rendered for display.
2. The computer-implemented method of claim 1 , wherein: The objects associated with one or more of the slots include one or more dynamic objects each having a plurality of associated object options; as well as Filling each of the selected layouts with one or more objects associated with each slot arranged in the selected layer includes: randomly selecting one of the object options associated with each of the dynamic objects, and filling the corresponding selected layout with the randomly selected object option.
3. The computer-implemented method of claim 2, wherein: The objects associated with one or more of the slots include one or more static objects, the one or more static objects each defining a single object; as well as Populating each of the selected layouts with one or more objects associated with each slot arranged in the selected layer includes populating one or more of the selected layouts with the associated static objects. 4 . The computer-implemented method of claim 1 , wherein the volume of the portion of the 3D environment defined by the slot decreases with each underlying layer.
5. The computer-implemented method of claim 1 , wherein each of the bottom-level slots defines a bottom portion of the 3D environment and includes one or more layouts, each of the one or more layouts defining a position of one or more objects within the bottom portion.
6. A computer-implemented method according to claim 1, wherein the hierarchy of slots includes tile slots representing city blocks or game levels, and the tile slots include one or more layouts that define the position of one or more lower-level slots within the tile portion of the 3D environment.
7. The computer-implemented method of claim 6, wherein each of the layouts of tile slots defines a location of one or more parcel slots within the tile portion, each of the parcel slots representing a parcel of land and comprising one or more layouts, each of the one or more layouts defining a location of one or more underlying slots within a parcel portion of the tile portion.
8. A computer-implemented method according to claim 1, wherein the hierarchy of slots includes a building slot representing a building, the building slot including one or more layouts defining the position of one or more lower-level slots within the building portion of the 3D environment.
9. A computer-implemented method according to claim 8, wherein the building slot has multiple associated objects, and the multiple associated objects define characteristics of the building selected from the group consisting of: one or more exterior shape objects that each define a unique exterior shape of the building, one or more exterior appearance objects that each define a unique appearance of the exterior of the building, and one or more window objects that each define a unique window of the building.
10. A computer-implemented method according to claim 8, wherein each of the layouts of building slots defines the location of one or more floor slots within the building portion, each of the floor slots representing a floor of the building, and includes one or more layouts defining the location of one or more lower-level slots within the floor portion of the building portion.
11. A computer-implemented method according to claim 10, wherein the floor slot has multiple associated objects, and the multiple associated objects define characteristics of the floor of the building selected from the group consisting of: one or more stair objects each defining a unique stair for the floor and one or more corridor objects each defining a unique corridor for the floor.
12. A computer-implemented method according to claim 10, wherein each of the layouts of floor slots defines the location of one or more room slots within the floor portion, each of the room slots represents a room in a floor of the building, and includes one or more layouts defining the location of one or more lower-level slots within the room portion of the floor portion.
13. A computer-implemented method according to claim 12, wherein each room slot has multiple associated objects, which define characteristics of the room selected from the group consisting of: door objects each defining a unique door for the room, wall objects each defining a unique type of wall for the room, ceiling objects each defining a unique type of ceiling for the room, lighting objects each defining unique lighting characteristics for the room, floor objects each defining a unique floor for the room, and window objects each defining a unique window for the room.
14. A computer-implemented method according to claim 12, wherein each of the layouts of room slots defines the location of one or more furniture slots within the room portion, each of the furniture slots includes one or more layouts defining the location of one or more furniture objects within the furniture portion of the room portion, each furniture object representing one or more pieces of furniture.
15. A computer-implemented method according to claim 14, wherein the furniture objects are selected from the group consisting of: one or more bed objects each defining a unique bed, one or more chair objects each defining a unique chair, one or more desk objects each defining a unique desk, one or more rug objects each defining a unique rug, one or more dressing table objects each defining a unique dresser, and one or more bed and dressing table objects each defining a unique bed and dressing table set.
16. The computer-implemented method of claim 1 , wherein: The hierarchy of slots includes one or more room slots, each room slot representing a room in the 3D environment and including one or more layouts defining a position of one or more underlying slots within the room portion of the 3D environment; as well as Each room slot has multiple associated objects that define the characteristics of a room of a building selected from the group consisting of: a door object for each unique door defining the room, a wall object for each unique wall type defining the room, a ceiling object for each unique ceiling type defining the room, a lighting object for each unique lighting characteristic defining the room, a floor object for each unique floor defining the room, and a window object for each unique window defining the room.
17. The computer-implemented method of claim 16, wherein: Each of the layouts of room slots defines a location of one or more furniture slots within the room portion; Each of the furniture slots includes one or more layouts for positions of one or more furniture objects within a furniture portion of a floor portion, each furniture object representing one or more pieces of furniture; and The furniture objects are selected from the group consisting of: one or more bed objects, each defining a unique bed, one or more chair objects, each defining a unique chair, one or more desk objects, each defining a unique desk, one or more rug objects, each defining a unique rug, one or more dresser objects, each defining a unique dresser, and one or more bed and dresser objects, each defining a unique bed and dresser set.
18. The computer-implemented method of claim 1 , further comprising: displaying the rendered 3D environment as a first 3D environment; Regenerate the 3D environment, including: randomly selecting one of a plurality of layouts of the top slot and lower slots included in the top slot; as well as populating each of the selected layouts with one or more objects associated with each slot arranged in the selected layout; and The regenerated 3D environment is displayed as a second 3D environment different from the first 3D environment.
19. The computer-implemented method of claim 1 , wherein: Rendering the 3D environment includes generating a seed of data defining the 3D environment; transmitting the seed to a plurality of client computing devices; as well as Display of the 3D environment by each of the client computing devices is synchronized using the corresponding seed.
20. A non-transitory computer-readable medium comprising a computer-implemented system for generating a virtual 3D environment, the system comprising: a hierarchy of slots, the hierarchy of slots being organized in layers from one or more top-level slots to one or more bottom-level slots, each slot defining a portion of a 3D environment and comprising a plurality of layouts, each of the layouts of non-bottom-level slots defining a position of at least one slot from a lower layer within the portion of the 3D environment defined by the non-bottom-level slot; an editor tool configured to locate one of the top-level slots within the 3D environment; The generator is configured to generate the 3D environment by the following steps: randomly selecting one of a plurality of layouts of the top slot and lower slots included within the top slot; and populating each of the selected layouts with one or more objects associated with each slot arranged in the selected layout; as well as The virtual 3D environment rendering engine is configured to render the 3D environment for display.