The new API in uLink 1.3-beta2

89 views
Skip to first unread message

Aidin Abedi

unread,
Aug 25, 2012, 8:14:23 AM8/25/12
to unitypark-beta
uLink 1.3's documentation is not ready yet. We're working hard on it and an example project, to demonstrate some of the most interesting features. In the meanwhile, for those curious, we've compiled a list of the new API signatures in beta2. Please note, this is not a substitute for documentation and additional features and API will be added - so this is not a complete representation of the final version of uLink 1.3, Lina.


New classes, structs & enums:
  • struct NetworkGroup
  • class NetworkP2PHandoverInstance
  • enum NetworkGroupFlags
  • enum NetworkP2PHandoverFlags
  • enum NetworkP2PSpace
  • enum NetworkVersionBuild

Added methods & properties (to existing classes & structs):
  • Network.batchSendAtEndOfFrame

  • Network.SetGroupFlags(NetworkGroup, NetworkGroupFlags)
  • Network.GetGroupFlags(NetworkGroup)

  • Network.AddPlayerToGroup(NetworkPlayer, NetworkGroup)
  • Network.RemovePlayerFromGroup(NetworkPlayer, NetworkGroup)

  • Network.Instantiate(string, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(Object, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(string, string, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(Object, Object, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(NetworkPlayer, string, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(NetworkPlayer, Object, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(NetworkPlayer, string, string, string, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(NetworkPlayer, Object, Object, Object, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(NetworkViewID, NetworkPlayer, string, string, string, Vector3, Quaternion, NetworkGroup, params object[])
  • Network.Instantiate(NetworkViewID, NetworkPlayer, Object, Object, Object, Vector3, Quaternion, NetworkGroup, params object[])

  • Network.RemoveRPCs(NetworkPlayer, NetworkGroup)
  • Network.RemoveRPCsInGroup(NetworkGroup)
  • Network.RemoveRPCsByName(NetworkGroup, string)
  • Network.RemoveInstantiates(NetworkPlayer, NetworkGroup)
  • Network.RemoveInstantiatesInGroup(NetworkGroup)
  • Network.RemoveInstantiatingRPCs(NetworkPlayer, NetworkGroup)
  • Network.RemoveInstantiatingRPCsInGroup(NetworkGroup)

  • NetworkView.listOfGameObjects

  • NetworkView.isOwner
  • NetworkView.isProxy
  • NetworkView.authority
  • NetworkView.hasAuthority
  • NetworkView.serverPrefab

  • NetworkView.group
  • NetworkView.FindInGroup(NetworkGroup)

  • NetworkView.SetScope(NetworkPlayer, bool)
  • NetworkView.GetScope(NetworkPlayer)

  • NetworkView.SetViewID(NetworkViewID, NetworkPlayer)
  • NetworkView.SetViewID(NetworkViewID, NetworkPlayer, NetworkGroup)
  • NetworkView.SetViewID(NetworkViewID, NetworkMessageInfo, NetworkGroup)

  • NetworkP2P.listOfGameObjects

  • NetworkP2P.Handover(Object, NetworkPeer, NetworkP2PHandoverFlags, params object[])
  • NetworkP2P.Handover(Object, NetworkPeer, Vector3, Quaternion, NetworkP2PHandoverFlags, params object[])
  • NetworkP2P.Handover(Object, NetworkPeer)
  • NetworkP2P.Handover(Object, NetworkPeer, Vector3, Quaternion)
  • NetworkP2P.Handover(NetworkP2PHandoverInstance[], NetworkPeer)
  • NetworkP2P.Handover(NetworkPlayer, NetworkPeer, params object[])
  • NetworkP2P.Handover(NetworkP2PHandoverInstance[], NetworkPeer, NetworkP2PHandoverFlags, params object[])

  • NetworkP2P.HandoverPlayerObjects(NetworkPlayer, NetworkPeer)
  • NetworkP2P.HandoverPlayerObjects(NetworkPlayer, NetworkPeer, Vector3, Quaternion)
  • NetworkP2P.HandoverPlayerObjects(NetworkPlayer, NetworkPeer, Vector3, Quaternion, NetworkP2PHandoverFlags, params object[])

  • NetworkPlayerApproval.handoverInstances
  • NetworkPlayerApproval.handoverData

  • NetworkP2PMessageInfo(NetworkPeer, NetworkFlags, NetworkP2P)
  • NetworkP2PMessageInfo.networkP2P

  • MasterServer.ping

  • NetworkPlayer.externalEndpoint
  • NetworkPlayer.externalIP
  • NetworkPlayer.externalPort
  • NetworkPlayer.internalEndpoint
  • NetworkPlayer.internalIP
  • NetworkPlayer.internalPort

  • NetworkPlayer.SetLocalData(object)
  • NetworkPlayer.GetLocalData()

  • LocalHostData.port
  • LocalHostData.ipAddress
  • LocalHostData.internalPort
  • LocalHostData.internalIP
  • LocalHostData.CopyFrom(LocalHostData)
  • LocalHostData.Equals(LocalHostData)

  • HostData.externalPort
  • HostData.externalIP
  • HostData.Equals(HostData)

  • BitStream.ReadNetworkGroup()
  • BitStream.ReadNetworkP2PHandoverInstance()
  • BitStream.WriteNetworkGroup(NetworkGroup)
  • BitStream.WriteNetworkP2PHandoverInstance(NetworkP2PHandoverInstance)

  • NetworkVersion(unit, unit, unit, unit, NetworkVersionBuild, unit, string, DateTime)
  • NetworkVersion.patch
  • NetworkVersion.hotfix
  • NetworkVersion.build
  • NetworkVersion.revision
  • NetworkVersion.name
  • NetworkVersion.date
  • NetworkVersion.isBetaBuild
  • NetworkVersion.isCustomBuild
  • NetworkVersion.Equals(NetworkVersion)

Added fields (to existing enums):
  • RPCReceiver.ListOfGameObjects
  • NetworkConnectionError.DetectedDuplicatePlayerID
  • NetworkLogFlags.Group
  • BitStreamTypeCode.NetworkP2PHandoverInstance
  • BitStreamTypeCode.NetworkGroup

Best wishes,
Aidin Abedi

Ashkan Saeedi Mazdeh

unread,
Aug 27, 2012, 10:33:35 AM8/27/12
to unitypa...@googlegroups.com
Can u shed some light on NetworkView.listOfGameObjects ? to me it can be a networkviewID's objects in clients and server when called from server and just the single object using the ID of the caller networkview in clients (weather proxy or owner). is it true? if yes does the client prefab need to be registered in server?
 
The API seems really good and with a small layer on top of it many things could be possible.

2012/8/25 Aidin Abedi <aidin...@muchdifferent.com>

--
 
 


--
Ashkan Saeedi Mazdeh
co-founder MindHammergames
Skype: ashkan_gc

Aidin Abedi

unread,
Aug 27, 2012, 11:54:10 AM8/27/12
to unitypa...@googlegroups.com
NetworkView.listOfGameObjects and NetworkP2P.listOfGameObjects has to do with RPC receivers, which as you know you can be choosen per NetworkView or NetworkP2P by assigning any of the following enumeration values:
	public enum RPCReceiver : byte
	{
		/// <summary>
		/// Does not listen for incoming RPCs to this networkView, RPCs will be ignored.
		/// </summary>
		Off,
 
		/// <summary>
		/// Forwards incoming RPCs only to the observed component property, if it is a MonoBehaviour.
		/// </summary>
		OnlyObservedComponent,
 
		/// <summary>
		/// Forwards incoming RPCs to all MonoBehaviours in this gameobject. Default value.
		/// </summary>
		ThisGameObject,
 
		/// <summary>
		/// Forwards incoming RPCs to all MonoBehaviours in this gameobject and also to all 
		/// MonoBehaviours in all of this gameobject's children.
		/// </summary>
		ThisGameObjectAndChildren,
 
		/// <summary>
		/// Forwards incoming RPCs to all MonoBehaviours in the root gameobject, which this
		/// gameobject belongs to, and also to all MonoBehaviours in all the root's children.
		/// </summary>
		RootGameObjectAndChildren,
 
		/// <summary>
		/// Forwards incoming RPCs to all MonoBehaviours in all game objects activated in the scene.
		/// </summary>
		AllActiveGameObjects,
 
		/// <summary>
		/// Forwards incoming RPCs to all MonoBehaviours in the game objects specified by the listOfGameObjects property.
		/// </summary>
		ListOfGameObjects
	}

If you select RPCReceiver.ListOfGameObjects, the NetworkView or NetworkP2P will forward the RPC to the game objects in the listOfGameObjects property.


Cheers,
Aidin


--
 
 

Ashkan Saeedi Mazdeh

unread,
Aug 27, 2012, 12:47:33 PM8/27/12
to unitypa...@googlegroups.com
Great! It's much better than the previous approach of inspector based choice of GameObject/All/Self/...
These new APIs are really powerful and once users start using them will understand how much easier their work is in some situations.
One internal questions, Do you still send RPC Names or they are just changed to a hashtable or something like that?
2012/8/27 Aidin Abedi <aidin...@gmail.com>

Aidin Abedi

unread,
Aug 27, 2012, 1:24:08 PM8/27/12
to unitypa...@googlegroups.com
I'm glad you like them!

Yes, uLink 1.3 still sends RPC names. The RPC table, which associates a rpcID number with name, function pointer etc is only available in uLink 2.0 alpha.

--
 
 

Reply all
Reply to author
Forward
0 new messages