bouyancy ... and could also float in this direction.
I see what you did there...
Also...
Kuroma: the on-the-fly designation system me an Rowanas have been talking about (provided my ideas as to how things work in the game are at least for the most part correct) I think might precisely offer the model for defining vessels that is needed.
It just needs some more thought and development!
BUT!!! I like your idea of having boats sort of like siege engines. The only reason I would love to toy around with the former suggestion is that it not only offers a designation system for boats, but also ANY moving object and could possible provide a plausible platform for applying physics (no matter how abstract a system it might be) to these movable objects. It could make doing things like intentionally collapsable structures, movable parts of buildings, and other things possible.
I would argue that the CPU load might not be game breaking since many games (like any Source Engine game) that simulate physics do this kind of stuff anyway (provided that it's only a handful of objects and doesn't have 100's of path finding calcs to de every frame like DF does so I might be full of shit here...)
Anyway... long story short, Kurouma's suggestion = kewl and awesome, but... but... ._. I wanna explore this other suggestion a bit more! Just in case! If not, just for shits and giggles and Fun!
Rowanas, your solution to the building-on-top-of-moving-objects-problem by having built things gain the same moving-object flag as the thing it's built on works or is at least thinking in the right direction! And you bring up some awesome ideas!!!
With multiple objects being linked together via bridge or something, or even by falling on each other, perhaps the objects could fuse together their object flags and for the sake of simplicity behave as a new, larger object (I'm ignoring any sort of structural strain sort of model... we can assume everything for the sake of simplicity (and tackling one physical phenomenon at a time) is infinitely strong and rigid).
To address the problem of touching the ground and stuff... The way I see a drydock sorta thing working is having the supports on the bottom of the boat (or side or top or whatever). Link them to a lever. When the boat is done, remove the supports. Buoyancy calculations start. If its surrounded by air, well, it's screwed. If falls and is destroyed. If it is in water, it might float depending on if there's enough water depth and if the object's not too dense. If it touches ground, it's screwed and falls apart.
I think if an object starts on the ground, it should not be destroyed and stay intact. But then, how would it be defined as an object separate from the ground in that case? Hmmm... Perhaps a cludgy "build movable object" designation which would make the designated facet be able to give any object constructed on it a movable object flag? I need to think about this more...
Lampyridae, I see what your idea is trying to do, but I don't think it will significantly benefit performance (assuming this would be working within the on-the-fly moving object designation I proposed.)