1.) In order for TNet to function at all, a TNManager object needs to be part of the sceneNo, just your first scene should have a TNManager. Main menu would be the logical place for it.
2.) Any network object i'm hoping to manage through TNet has to be added to the list prior to runtime. Is this correct? Is there no way to dynamically add new types? Or not yet known objects (for example, streamed items that do not exist ingame yet)Nope. Only objects you plan on instantiating quickly. You can still instantiate objects found in the Resources folder by their name, if you wish.
3.) The object added to the TNManager, has to be a prefab.Yup.
4.) This prefab has to contain a TNObject with a unique identifier.Nope. It should contain a TNObject only if you want to have this object synchronized on the network later -- for example the player's avatar. One-shot objects that get destroyed shortly (for example cannonballs, explosions, etc) don't need a TNObject on them. Lastly, you should leave the ID at '0' so that TNet assigns one for you when it instantiates the object.
5.) If the object is TNManger.CreateEx(...) I can leave the id 0 as it will be auto assigned. If the object is not being instantiated by TNet, I need to assign this id myself.Correct, and this applies to Create as well, not just CreateEx.
6.) In order to syncronise my prefab across the network, all I need to do is add the TNAutoSync object to the parent object of the prefab. Is this correct or does it belong on the object that contains the rigidbody.Parent object of the prefab? Auto sync goes on whichever object you want to synchronize -- generally on the same object that contains your TNObject script. Also, auto sync should be used liberally. It's better to do your own RFC calls instead. Lastly, you can only have one TNAutoSync per TNObject -- so only one per prefab. So again, be careful with it.
7.) Following point 6, Only one TNAutoSync object is required per prefab to sync.Yup. But again, see the last part of #6.
8.) All code relating to input and camera control needs to be controlled with own custom code, using the property TNManager.isMine?TNObject.isMine is the property that tells you if you own the object or not. You should only control the objects you own.
9.) By doing all of the above, to get two networked clients communicating. They join the same channel, then instantiate their own version of the prefab using TNManager.CreateEx(). In doing so, the first players create is buffered? For when the next player joins? The next player joining when their own player is instantiated, TNet automatically updates the host (and all other players) - without needing any additional code?All create calls that created an object with a TNObject script on them get buffered, yes. Unless you destroy them later. Then they get removed.
10.) When a player leaves the room, their instantiated object is automatically removed and all other clients are updated? Is this the case or does this code have to be written manually.Correct, but that's assuming you specified 'false' for the 'persistent' flag for TNManager.Create / TNManager.CreateEx.
11.) Following on from 10. If the host leaves the room, all other player objects and their own are destroyed automatically? The rest of the players in the room only receive the destroy on the player leaving though?No, if a host leaves, another player is chosen to be the host. This is why you should be using TNObject.isMine. Host doesn't own everything. Host is just like any other player. The "host" status is just to make it so that only one player does the "generic" logic -- such as AI, pathfinding, etc, rather than having everyone do it.
5.) If the object is TNManger.CreateEx(...) I can leave the id 0 as it will be auto assigned. If the object is not being instantiated by TNet, I need to assign this id myself.Correct, and this applies to Create as well, not just CreateEx.
You can still instantiate objects found in the Resources folder by their name, if you wish.
If the host disconnects, a new player gets to become a host. Server does not migrate. If a server goes down, that's it. Everyone will be disconnected.