6. To send messages such as "attack", use RFCs: tno.Send("SomeFunction", TNet.Target.All, ...); Do not call these functions directly. That's the main difference between making a single player game and a multi-player game. Instead of calling functions, you will be sending messages to call those functions. And that's it.
No, because the server doesn't know anything about components or Unity at all, so it can't count how many TNObjects are needed. Plus it doesn't matter if you only have one TNObject per instantiated game object. The same way you can have multiple people living at the same address, you can have your scripts with RFCs be attached to child objects and they will still be found automatically. You may need to change TNBehaviour to this though, depending on your version:
public abstract class TNBehaviour : MonoBehaviour { [System.NonSerialized] TNObject mTNO; public TNObject tno { get { if (mTNO == null) mTNO = GetComponentInParent<TNObject>(); return mTNO; } } protected virtual void OnEnable () { if (tno == null) mTNO = gameObject.AddComponent<TNObject>(); if (Application.isPlaying) tno.rebuildMethodList = true; } /// <summary> /// Destroy this game object. /// </summary> public virtual void DestroySelf () { if (mTNO != null) mTNO.DestroySelf(); } }