Flexible building design - allowing uniqueness and changeability in Rapture :
Diagram - http://img843.imageshack.us/img843/2079/modularstructures.png
(construction elements layers)
Diagram - http://img267.imageshack.us/img267/7137/patternsk.png
Modular construction - objects & Patterns :
Buildings would be assembled out of a variety of object types :
The Outer 'structural' Walls define a space. These Outer-wall building blocks fit together in related sets only certain ways. They need to define a closed space - with the walls keeping the ocean out, and doorways and other portals (utility conduits, windows, etc..) have to exist to allow access. Some sets of patterns are 'expandable' - example- where there are two end walls but middle sections can be replicated in a row to define a needed dimensional space. Floors in a high-rise likewise would be repeated (stacked) to achieve the required size of the building.
Modular Windows pentrate the Outer Walls and are an important factor that shapes other building details (that have to be adapted to their shape and fit around them). Various window sizes/shapes would exist and the Outer Walls would accept inserting windows at certain predefined points (slots). Some building do not need windows and the slots would not be used and there would be a plain blank wall there instead.
'Section' objects fit inside the space defined by the Outer Walls, and are composed of floors, 'Inner walls' and 'Dividing walls' (which themselves optionally have doorways/portals/windows thru them). A number of Section layouts can be substituted with different combinations suited to the intended use of the space.
The 'Section' divides up the space into rooms/closets/hallways with the specific placement of walls/doors. We've seen shops with windows set into interior walls (ex - Pawn Shop in Paupers Drop...). Some interior 'walls' may be in the form of cabinetry (ex- shelves and bookcases built into walls).
Walls/floors/ceilings have some repeating structural pattern based on supporting beams and the structural surface sheets. These details are usually hidden so can be chopped up/fitted somewhat irreglarly (fractions) to match the required dimensions.
Once Inner walls and floors/ceilings are placed, they can have decorative surfaces attached to them (working around/fitting any portals). These Surface patterns are flexible in their dimensions and have fine repeating patterns that allow them to be adjusted to fit a required position. Often margins strips can be ajdusted to make up the diffrence between the space available and a fixed size tiling.
Behind the walls there is space left for vents, standard pipe and utility lines and equipment which have fairly standard positionings (unless otherwise specified). These utility conduits usually penetrate structural floors
at well defined standard points, but if needed the modular floors can be adapted to any combination required.
Some structural building Sections fit sets of much thinner (non-structural) floors (different from diagram). The position of those floors can be more varied (like open spaces, split levels, support struts, balconies, railings, open staircases, and other such building blocks). A common building 'Section' pattern might be 2 stories tall (think of various places in Poseidon Plaza) and allow variable placements of floors/stairs/railings, allowing a much more interesting split level arrangement.
Adjacent buildings will 'link-up' connecting the buildings external portals. There is a great deal of flexibility in the ways buildings are linked (the viaducts walkways have turns/angles, Ts, Ys, upsteps, support attachments, and having a stretchable straight section would allow an algorithmic 'fitter' program to do most of the hard bits in a connector tool (its what the auto-generator system would make use of)
Terrain/Object Substitution/Deformation :
Allows substitution/replacement with a 'damaged asset' or when repaired to a 'nice clean asset'...
Layers that let you get to the 'detailed' bits of Rapture and more realistic presentation for different places (crappy residential apartments have bare concrete walls and exposed pipes, etc...)
Players and the Auto-Generation system can have alot of options to work with, to create more 'unique' terrain.
Mechanisms 'behind the walls' (can be abstracted until someone 'opens it up' and then 'built-on-the-fly' can compose an appropriate detailed set of objects). Logical patterns of utilities are part of a 'rooms' pattern/template, controlled by abstract attributes associated with the 'room'/'section' object.
Divisable objects (unitized repeatable patterns - think of them as 'tiles') - consolidated objects that allow piece-wise modified. Start as large common pattern object (to simplify Database and rendering) but as soon as some unique change is made that 'large' grid object can be broken down into a group of smaller unit objects that now can individually be substituted to reflect the change (like a large hole you can see thru at one point and the rest of the wall still intact). An example would be a floor (one object) of all the same 'tiles' replicated as a grid. When one tile is broken the large object is broken up adding the new single 'broken' tile and then the surrounding floor in as few objects (smaller grids normal tiles) as possible -- no need to break a 10x10 tile grid object into 100 seperate tile objects when 5 objects will work. Further damage would cause those grid to be broken up more, if needed.
Mutateable objects - not just substitution but objects with a 'mesh' shape that can be changed/deformed to reflect the changes made (and become permanent data). Ragged holes can be made and even overlapped cumulatively making the damage look alot more realistic.
Deformation 'in-depth' - Large deformations can effect many adjacent objects and even object of different kinds --- not just wrecked wall section but wrecked decorative layer and wrecked decorations/fixtures mounted on the wall, and damaged utilities behind it and marks on the structural wall behind that. Debris gets strewn on the floor.
With repairs (player/NPC actions), individual 'tiles' would be automaticly (server function) re-merged with adjacent similar objects to simplify the data/processing (and the rendering load on the Client) and the simpler grid objects can wait until the next damaging effect (if ever).
Structural Insulation and Heating (details behind the walls) :
The Sea Water outside Rapture is ice cold and no matter how thick the concrete walls (which has a very poor insulation factor), heat will be pulled out through them continuously. Water condensation inside will form ice if warmer air is not circulated -- especially important near pipes and anything electrical, which are usually located between the inner and outer structural walls (utility space).
A constant stream of warm air is created by the structural heating system. Convection from heat given off by hot water circulation in pipes (from Hesphaestus or an independant builing unit) would rise thru the wall spaces and back down again to cross a cold precipitation surface (the cold outer concrete or metal wall) to condense excess humidity (which flows down to the sump below the bottom floor). The warmed are would also keep the outer surface above freezing temperaure to prevent ice formation.
Only a moderate temperature needs to be maintained in the utility spaces to prevent icing and the living space is to be kept at a somewhat warmer temperature (local thermostat control).
Insulation should be located on the hidden side of the inner walls/ceilings/floors to prevent heat loss from the living space. The regulated ventilation/environmental systems keep the living space at the appropriate temperature.
Insulation would be something with a sufficient insulation value (air pockets and dissimilar materials and something water/moisture wont degrade).
Some (more expensive) residences may have under-floor heating.
These details are visible in areas where there is much damage (or in some of those really cheap apartments).
Creation Tools (ease of use wanted) :
The different building objects have 'pattern sets' they belong to and their sub-objects (objects that would be inserted into them) likewise have 'pattern sets' of objects that can be substituted.
Construction options are basically picking from a presorted/filtered menu of useable substitutions and the tool will show you what it looks like. Common/logical arangements (like the 2 end pieces with a expanable middle piece) are added as a group together.
Sample (preexisting) constructions would be provided with 'typical' details already assembled so that the user can get going on the interesting bits or modifying and detailing (most of what makes an interior look unique are the decorations and furniture contents).
Fitters are programming to which the the player specifies a global choice for a theme or other overall attribute and the tool makes the changes and adjust things in the composition to match. 'Fitters' logic fills in details matching what the user has already specified - and saves alot of tedious work.
This all leans heavily on the modular and hierarchical nature of the object data and the ability of scripted templates to apply common changes to groups of objects.
The Auto-Generation mechanism in the MMORPG use alot of this functionality when automaticly building up new sections of the City as the players Game World expands. Its not all random, as from the start major features would be planned out, with data that would guide the way the city would logically grow (seed maps). Fortyunately alot of the city is ruins and pretty messed up, so that what got 'auto-generated' wouldnt have to be as exactly detailed compared to if it was all brand new and poplulated as in 'the good old days'. Alot will be rebuilt by the players and THEY will add alot of the exact detail.
Auto-Damage Generation :
Damage and destruction - mutating scenery objects.
- Holes that show hidden layers behind (which in turn may have further holes)
- Decals for minor effects (dents, scortching...) similar to what you saw in BS1/BS2 (except the MMORPG decals are permanent and cumulative -- can mutate into more severe damage.)
Debris - clumps of appropriate materials
- Become objects that can be manipulated by player - these too are group objects that appear to be many small bits but until the player interacts with them (like starts cleaning them up) are simplified to fewer objects to optimize Database and Rendering.
Real Secondary Effects on utilities/ structural objects
- Sparks/fires -- fires cause further damage that progresses over time
- Leaks/flooding -- puddle objects and bigger effects if there is enough major damage
- Malfunction/disruption of utiliy services -- systemic damage that effects other object that are 'plugged into' the utilities.
The 'damage' that the player will see is done by adding additional objects and rebuilding objects meshes algorithmicly on the client.
- The bulky object mesh data isnt sent, instead a set of coefficients are fed into a generator function that builds the required data 'on-the-fly (including the mutations needed for the 'damage' locally). The base 'pristine' shape data already exists on the Clients Object Dictionary (a disk database).
- Various static data like textures and basic object shapes would already exist on the client's disk database).
- This also allows presentaion (LOD) Level Of Detail for different platforms and detail settings (simplified data would be built to be shown on less than optimal hardware.
Creations of special 'one-of' buildings by players :
Some buildings have too unique a shape to have more than one in the city, some kind of grand architecture or some really distinctly arranged and decorated building. Players may submit them as such or the community/company will decide to make it a special building.
An environment in which it can be correctly placed will be determined or will be selected on the city map which is appropriate (substituting it for a 'closed' spaceholder building, prefereably away from where large numbers of players have seen it (placeholder buildings might start with a jumble of debris and obscuring seaweed so that the outside shape was largely indistinct). Placement "Off in the Ruins" may be the simplest method as long as the buildings proper environment restrictions is met. (You wouldnt have a grand museum in the middle of the warehouse district...).
Once the asset exists (created, accepted and published), it may be placed in different location in each server World. Some of these special building may be 'special' only in their interior and so can have a generic building outside, making them more flexibly placed.
Smaller units than complete buildings likewise can be treated this way -- special shops or arcades can fit in any compatible 'section' slot in a building. (in some cases the business originally owning a 'shop' may have had more than one replicated in different locations in the city). They would get placed in the appropriate environment (ie - a shop in a building that is a group of shops, a residence in a high-rise or 'court' style apartment block, etc...)
Such buildings may have complete details - including business/brand names, with signs and advertising (which can be inserted in other parts of the city ). Some will represent 'working' etsblishments - run by NPCs to populate the rebuilt city areas, and others will have damage of various extents applied and be put in 'the ruins'.
Hopefully many such building will be manually created as they can have a more cohesive/coordinated design (and feel) than the semi-random auto generation process can create. Their patterns of course can then be 'templatized' so that some of their design can be reused and mutated (furthering the available patterns the auto-generator can make use of).
Some significant 'one-of' buildings (like the stadium) which would have many activities tied to it, will be requested in advance/early from the Creation Community (if the company devs dont just do it themselves). There probably will be many such in the city (we really dont want Rapture to look like all of the city was built cookie-cutter and be bland and repetitive).