StruXture is a sandbox physical simulation puzzle game. The objective is to construct hanging structures that can hold goal objects using constraint-based building building parts. Each level contains several goal areas that must be solved to progress to the next level. The gameplay focuses on interactive control of dynamically linked objects.
Initial Design Document
The primary design objective of this game is to allow a player to construct an architectural structure from basic building blocks (bricks, boards, beams, etc.) in a physical simulation. Depending on the selected gametype, the player will have to accomplish a specific task that relies on their construction. Gametypes include building a structure that reaches a set height, constructing a rigid structure that must endure projectile impacts, and constructing a bridge to get an object from one side of a valley to the other. The core structure of the gameplay relies on the creativity of the player and provides an open build environment where the player can freely design any structure with the provided building blocks. Based in a real-time rigid-body physics environment, the challenge presented to the player is based in the construction process used to create their structure. Depending on what type of challenge is presented by the various game levels, the player must create various types of structures with an aim to achieve the level specific goal. The purpose of this game is to provide an understanding of how rigid-bodies and constraint-based simulations physically interact and how material design can impact structural integrity.
Educational Impact: While allowing for certain entertainment aspects, this game also provides an educational look at how material science and architectural design influence structural integrity. Providing an interactive sandbox allows the player to investigate how different choices in materials and architecture can impact how stable their constructed structure is when presented with endurance challenges. These aspects are developed into the design of the game and its various challenges.
All objects provided to the player in the game interact with each other and the environment as rigid-body objects. This allows the objects to be moved, pushed, thrown, and placed around the game’s environment by the user. These objects are then combined to construct a single structure; however these objects will not simply be pushed apart by the physical challenges presented by the games various levels.
There are two aspects to this game that are heavily influenced by the users design and are incorporated throughout the design of the game:
- The player has free control of all build objects within the world
- Building is defined by constraint-based joint connections and free rigid-body objects
- Objects can be held together with physical constraints; the architectural design will influence how and when these constraints break (ex. chain-links)
- Goal objects are defined to implement simple puzzles
- Level objectives are simplified and provide a basic foundation to start with, but have an open-ended design where there may be multiple solutions
The addition of these two components defines a unique environment in which the player can build their own design depending what types of links or objects they use and how they combine them together to form a single structure. This illustrates the importance of the selected objects and how their joints can be used to make larger structures. Both of these concepts are critical to understanding the outcomes of physical strains and impacts. Through an interactive learning process, this game aims to emphasize the importance of these concepts while also providing an entertaining goal to achieve, that is, to build the most architecturally sound structure.
Platform: The target platform for this game is the PC. This is due to the intricate process imposed by the construction of complex buildings. Mainly the mouse and keyboard provides an interface that provides the required flexibility and accuracy needed to properly align the games building blocks. This does not mean that other platforms cannot be considered; however initially, the target platform will be the PC. Additional techniques can be developed to allow the player to construct a building using a mobile interface or console controller. These concerns are typical for complex game genres such as real-time strategy games and role playing games. Along these lines, it may be necessary to develop two different interface controls for the construction process. This aspect may be addressed in later versions of the game.
Layered Development Schedule: The methodology used to design and implement the game is implemented through functional layers. This provides an iterative development method that will be followed to implement different aspects of the game-play mechanics, level design, and puzzles.
Layer0 – Mouse Interface: The objective is to develop a mouse based user interface for player interaction. The build structure of this game relies on the ability to use a mouse cursor to select and move objects around the build environment. Utilizing the mouse cursor to facilitate this interaction is critical for the entire development process to begin. To facilitate an intuitive interface for this form of control, there will be a 3rd person camera implemented with basic movement controls; however, the focus is on how the player selects and manipulates objects within the world and camera movement and control are secondary objectives.
- Layer1 – Object Selection and Display: Develop the ability to select game objects utilizing the mouse interface developed in Layer0. This includes the functionality to display a selected object and view its available sockets. The selection algorithm defines a large part about how the player interacts with objects within the build environment, so this makes up a significant portion of the players interaction with the simulated environment.
- Layer2 – Object Movement: Implement object movement and rotation using the mouse based interface. Providing the player with the ability to move and rotate objects is critical to the build process. The control and feel of this development will drastically impact the play-ability of the game, so this presents a portion that will require additional polishing.
- Layer3 – Gametype Development: Implementation of two primary rudimentary game-types that demonstrate how the build process can be used to achieve proscribed (simple) goals. Additionally at this point the GUI for the game-types will also have to be developed to indicate to the user the goal and their current progress and any additional build information that may be required. This includes the development of the levels that will depend upon the types of game-types developed. Since the game-play is based on the interactive control of dynamic (simulated) objects, there are constraints that define how level objectives are completed. This includes carefully constructing goal platforms and maintaining stability of the completed objective until the puzzle is complete (similar to how in Jenga you have to wait for everything to stop moving before the next player can take their turn). Based on this outline, there are two basic game-types: goal-zone and Height-game.
- Layer4 – Socket Selection and Joint Connections: To facilitate more complex building mechanisms, socket joints are used to dynamically build constraints between arbitrary objects. This allows more complex structures to be built, rather than only stacking objects to complete objectives. This also creates more complex puzzle requirements because the joints must form solid platforms to place goal-objects. This design aspect is innovative due to the in-game control and attachment of constraints between arbitrarily building objects. This means that there must be snap controls for building connected parts and also controls for breaking constraints.
There are two game types that are included within the game: goal-zone and a height-game. Each provides similar puzzle-based challenges for collecting a set of goal objects within the goal zone. To complete each level, each goal object must reside within the goal zone or required height and must be stable for 3 seconds.
Goal-zone: The objective of this game-type is to collect all of the goal objects within the identified goal zone. The main problem is that the goal zone is typically in an area were the player cannot place the goal objects. Therefore they will have to construct structures to hold the game objects in the goal zone to complete the puzzle.
Height-game: Similar to the mechanic of the goal-zone game-type, the height game requires the player to place all goal objects above a pre-defined height. The objective is to build structures and stack objects until all goal objects reach the required height – how this is achieved is completely open ended.
Providing an example of one of the proposed game-types, a height-build game-type is detailed in this section. In this game-type the player is required to construct a building that reaches a predefined height. The proposed challenge to this game-type is provided through either a time-limit or a restricted set of building materials. For the latter this game-type can also be considered as an interactive 3D puzzle. Generally, the purpose of this game-type is to allow the player to use their own creativity to find a solution. The following image provides a sketched illustration of the player’s view of the build environment and the objects that they can utilize to build a structure that reaches the predefined height goal.
Concept Art: The following sketch provides an overview of the game world, the physical objects that can be manipulated by the player, and the general GUI of the game. The image in Figure 1. illustrates the general layout of the view of the build environment presented to the player.
The build environment contains two general areas: the left side provides an initial set of build objects that the player can use to construct their structure. The right side with a grid provides an open area where the player can freely build. There is an in-level indication of the height requirement: Easy and Hard. The player must use the building blocks provided on the left side to build a structure that surpasses either the Easy or the Hard height indicators (different height goals). The players score can be determined by the amount of time they take to finish the build, by the final height of their construction, or by being able to place all objects above the required height.
The general environment provides a background in which the player can create structures, but there select game objects that can be interacted with to build structures. In Figure 3, the interactive game objects are highlighted. The blue and red objects illustrate general building materials that can be used to complete the level objective. Since in this case the objects are simple planks of wood (blue objects) and simple crates (red objects), they have to be stacked in some way to reach the indicated height goal (the heights shown by the suspended wires). The goal object (green) represents the specific object that must be elevated to reach the goal height. This means that the green object must be placed on top of the other objects to obtain the goal height of the level to complete the puzzle. Once the goal object is placed on some form of structure to meet this requirement and the goal object is stable for 3 seconds, the level will be complete.
To provide additional feedback to the player, the GUI of the game will incorporate markers to illustrate progress towards the levels objective. A GUI mock-up is shown in Figure 4. In this instance, the hard and easy markers visually indicate how tall the structure has to be to meet the height objective shown on the left. In this example, the goal object has been placed well above the easy objective height; however, the precarious process of balancing several wood planks on end would present a significant challenge to the player. This is one method in which the player is free to explore different solutions – some being much harder than others to meet the intended goal. For example, this would result in the fewest number of required objects to reach the goal height, but will also be very difficult to balance and place the goal object without toppling the entire structure. An alternative would be to collect more building objects to create a more secure structure to place the goal object.
The final GUI render mock-up of the game is shown in Figure 5. This includes various GUI elements that can be implemented through simple text elements and shows an alternative method for illustrating how close the player is to the height objective. The idea behind obtaining game objects will also include searching for available materials within the level. This will mean that some levels will be larger and may require the player to find these objects within the environment.
A nice feature or additional game-type could include a selection of available objects (Figure 5,6 lower left corner) for a free-build mode. Although this feature will only be implemented as an additional game-type.
Proof of Concept: The development of the main controls, interface, and dynamic generation of joints has been illustrated in the UDK using skeletal meshes.
This game provides to the player the ability to select and move build-objects; however the process of building complex structures (those including joints) must be simplified. This simplification is provided by the use of joint sockets for objects that can be connected to other objects. Utilizing this technique the game does not have to be crippled by a generic grid form where all objects must be placed on predefined square grid spaces.
The images in Figure 7 and 8 identify the connection sockets that can be used to connect two rigid-body objects together. Generally there are several different socket joints that could provide physical constraints on the movement allowed between two objects; however the primary type of joint will be a ball and socket joint. This is because with a default joint type the user does not have to select what type of joint to create. This will simplify the build process by only requiring the player to select two sockets to create a joint. This allows the player to easily connect two objects to form a larger structure. Repeating this process will provide the player with the ability to create complex structures from a limited set of initial build-objects. This development allows the game to flexibly allow for an infinite number of different building blocks and patterns. The game will rely on the creativity of the player to realize all of the different possibilities
Using the ball-and-socket constraint to link different objects, the player can link two objects using the following process: (1) select the object to see the highlighted sockets, (2) move the object within the proximity of another object to display the sockets on the nearby object that the selected object can be connected to, (3) align the joint positions. This will connect the two objects with a new ball-and-socket joint.
Development and Tools: The implementation of this game will be built upon the Unreal Development Kit (UDK) using custom artistic assets. These assets (Static Meshes, Skeletal Meshes, Textures, and Materials) will be developed using game industry standard tools. All of the content in the entire game has been created from scratch using the following tools:
- Modeling/Texture Mapping – 3DS Max 2013
- Animation – Maya 2013
- Texture Mapping (Diffuse, Normal, Specular, etc) – Photoshop CS3
- High-Poly Modeling – ZBrush
- Game Engine: UDK
Goal Zone Gameplay
The first video illustrates three different levels of the goal-zone game-type. This objective of this each level is to place all of the (green) goal objects within the goal zones. As the levels progress, the difficulty increases due to the number of goal objects, the number of goal zones, and the complexity of the building puzzles.
The structure of the gameplay is guided through the pre-defined level structures that the player can use to create new hanging supports to hold other objects. This provides a framework from which the player can start creating more complex structures using the ball-and-socket joints of the connectable objects. Also, it is possible to connect more than one object to an individual ball-and-socket joint to create suspension networks.
Content: All of the content within the game has been developed from scratch including all textures, meshes, programming, music, as well as all other assets used to complete the implementation of the game. The videos shown above show all 6 of the levels that were created for the game in the initial development.
Note: This project was a quick build that was completed in one month. The development of all assets and the entire game (programming + 6 levels + asset creation) was completed during this development time.