NOTE: The following is an outline for how a Construction Game system could be implemented that will provide a deeper, more realistic mechanic for players to construct large and/or complex structures based on a design blueprint. The exact base values which all blueprints should contain need to be determined. I believe that the initial blueprint design should focus on a focused set of values to minimize initial complexity. Eventually all blueprints would inherit from that base class and expand based on type, and perhaps allow for customized values. This system does not cover the process of Engineering or Architecture to make new blueprints or edit existing ones. It focuses on the building process which utilizes a finished blueprint.
The construction process should take place in a number of stages, and not be an instantaneous process. The size and complexity of the construction should be reflected in the amount and type of materials each stage of work requires, the tools needed, and the time required to complete each task.
If the game models are designed properly the stages of construction once completed would turn on the associated submesh or change to a mesh as defined in the blueprint allowing the client to display a visual representation for overall progress of the costruction. For instance, as the foundation work is completed the would floor appear, as each wall is built that wall will appear in place. This might require complex entities on the server to track the status of these various parts, but would allow for future implementations like having a wall once destroyed reflect that state as well. This would require defining what states and parts of a model is needed or available at the model level, and should try to provide a simple "placeholder" mechanism to signify where an asset needs a 3D representation, but denotes a special state.
Some stages of work should require other stages to be complete before being allowed to be started. Floors precede walls, walls precede a roof, finishing work can not be started until certain stages of work are complete.
The following is a general outline of the stages of a construction process.
Initiating the Construction
- A wielded blueprint will be the access point for initiating construction.
- The size of a construction site will be defined by blueprint and should encapsulate the total size of the finished structure plus some open space surrounding for pre-defined stockpile representations for each major group of materials needed, like piles of lumber or stone, tools needed.
- The land where the construction site can be placed must be owned by a player through a deed, or be unclaimed lands.
- The construction site should be allowed to be rotated and orientated on the land by player before finalizing the Initialization stage and a visualization of the finished work should appear as a general guide for the player to see how it will roughly look.
- Upon finalizing the location and orientation the server will create the construction site entity into the world which will contain the needed information which should be derived primarily from the Blueprint used.
- A construction entity could one defined as wooden stakes around a patch of dirt which represent the boundary corners, or optionally the blueprint itself could define a construction site marker model as part of the blueprint for special instances. But all construction entities should be simple in nature and define the construction space well. The object being constructed would be contained within the construction entity.
Advanced or Future Options:
- Construction should not be allowed on a land that is not suitable, so trees, large rocks should not be present. This could be part of the clearing on or foundation work on the other hand though.
- The ground could should also be checked for slope to determine if it is suitable and could be a parameter of the blueprint. Once again this could be addressed in the foundation work possibly as the tools and skills exist in game to do this and offer another usage case for the terrain modifiers in building fortifications.
- A house built on stilts for instance can be on greater slope then a structure without, possibly even in to land types not allowed by another blueprint, like a fisherman's shack built on stilts next to the water. Or a structure that is designed to be carved into a mountain side like a mountain gate.
States of a Construction
The status of a construction could be handled in a number of ways.
- Visualization - As major stages of work are completed these parts can be displayed. This is not likely to be able to be applied to finer aspects of the process. It would be too difficult to create visualizations for each finite stage of work, so for more detailed analysis could be provided using other mechanisms.
- Look Operations - Performing a look operation on the construction could give details like materials and tools contained, stages of work involved and percentages completed.
- A GUI interface can be added to process a look operation and provide the information in a structured format. This could also potentially serve as an entry point to selecting and initiating a building process.
After a construction site entity was spawned all characters will be able to gather tools and building materials needed for construction and simply give it to the construction site. (Using "give" operation).
Items given to a construction site will be contained within that site and be represented in some way by the construction model intself. Increasing numbers of supplies should be somewhat visible on the site itself using a variety of models being placed as per blueprint specification.
- How to handle a give operation when max material is attained? Keep the material and at the end of the construction any excess produces stockpile entities in the world to be reclaimed? The other option is to have the site reject the give. This is less realistic.
- Players would need to make use of tools if they do not have their own, would stealing tools from a site be allowed? I think this should be allowed and could allow for more new parts of gameplay to occur as a result.
Advanced or Future Options:
The types of materials added to a construction could be a factor in the textures available in the process, finer materials if applied in the right ways could unlock a better looking result then one performed with generic tools. (See Building operations Advanced Ideas for continuation of this.)
There should be new task: "build" which can to be used on construction sites which simply causes use of gathered materials stockpiled to be used by a build operation which requires it. This task could be performed by anyone with the needed tool at any time. Depending on the tool wielded and the current stages completed different build tasks could be presented to the worker.
A significant building stage itself would likely require several building operations be performed to complete it.
Each Building operation could take an amount of time or work quota with a defined tool to be performed to complete that operation. Thus building as a group or having players who have greater building skills which perform operations would result in shorter build times in completing stages of work. Players should not have to wait for a stage to complete so they can begin a stage of their own or get involved in the construction, as long as they have an appropriate tool listed for an available operation they can help out by adding time to completion for it.
After completing an operation it should be noted in that stage the operation has been completed for it, or perhaps as a percentage of total completion for that stage.
Advanced or Future Options:
- Turn building operations into mini-games of challenge, using puzzle type mechanics, dexterity events, or team play events where players have to solve them together.
- The ability to finish these mini-games could be applied as a modifier in the operation adding to its overall completion rate or perhaps applying a special result or bonus.
- Portions of a building that are well crafted could be more resilient to damage, or could be applied as modifier to check if a different or unique texture is used to reflect its finely crafted nature.
- A finely constructed castle gate of good material is stronger then its generic counterpart, a well crafted windmills gears would be less likely to damage or fail under high wind conditions. Would such options need to be defined in the blueprint?
Once all the stages of work are completed the Entity being constructed should be removed from the construction entity and placed in the appropriate location and orientation in the game world. Any remaining materials and tools would be placed in the world so they can be retrieved from the stockpiles, and the construction entity should then be removed from world.
Defining the Parts
The base attributes which all Blueprints should contain for initializing the parameters of a construction entity.
- Name - a name given to the blueprint
- Type - this sets the Entity type display default is generic
- Bounding Box - the size of the construction site, this should be at least the size of object being
A generic construction entity which would by default be used unless otherwise specified.
- Visual Representation
- Attributes of a construction entity not defined in a blueprint
- Defining stockpile locations and representations