1.2 Zelda (2012-04-19)
- Fixed high CPU usage in Unity stand-alone builds running on virtual Windows machines (Amazon EC2 or other similar hosting platforms). The fix is in a file called Plugins/uLink/Utility Scripts/uLinkTargetFrameRateFix.cs which transparently replaces the Unity functions that cause it without you having to think about it or do anything. This fix was never included in 1.2 Zelda (2012-04-16) so we had to do a new release 3 days later (2012-04-19)
- Updated license text in installer.
1.2 Zelda (2012-04-16)
- The server operations chapter now has a guide for redirecting log files. This is smart for running several identical servers for FPS games and RTS games.
- Added new chapter for hosting game servers at Amazon EC2.
- Fixed high CPU usage in Unity stand-alone builds running on virtual Windows machines (Amazon EC2 or other similar hosting platforms). The fix is in a file called Utility Scripts/TargetFrameRateFix.cs which transparently replaces the Unity functions that cause it without you having to think about it or do anything.
- Fixed handover timeout on the destination game server after a P2P handover. A related MissingReferenceExcpetion has also been fixed.
- Fixed an issue in the “Assign Manual ViewIDs” wizard editor window on Unity 3.5 - where it failed to save changed viewIDs when assigned across multiple scenes.
New API Documentation release
- uLink.Enum - Better code example for using NetworkConnectionError user defined types.
- uLink.NetworkView - Documented multicast RPCs, the feature to send an RPC to a restricted set of NetworkPlayers.
- uLink.MasterServer - Changed bool with spelling error. isRegisterd changed to isRegistered.
- uLink.Network - Better Redirect() method description
- New class SerializedAssetBundle
- New class RegisterPrefabs
1.2 Zelda (2012-02-09)
- Added RPC method name when uLink logs a warning about X remaining bytes that are not read by the user's RPC receiver.
- Optimized Network.networkViews and added Network.networkViewCount for cases where you only want the number.
- Improved parameter logging if a user RPC receiver method causes a exception.
- Removed "write access" exception when sending a user defined class as initialData via Network.Instantiate().
- Fixed issue with destroying instantiated network objects on disconnect.
- Fixed issue where the compiler unfolds a single array argument to multiple arguments when sending RPCs.
1.2 Zelda (2011-10-05)
- Fixed issue when loading uLink settings in Unity 3.4.1.
1.2 Zelda (2011-09-27)
- Added SerializedAssetBundle for serialization of AssetBundles. Remember, you must yield on SerializedAssetBundle.WaitForDownload when downloading and SerializedAssetBundle.WaitForCreateRequest when recreating.
- Optimized BitStream by preallocating and increasing capacity even more intelligently.
- Added a new variant of RPC in NetworkView, Network and NetworkP2P which takes a list, array or similar and sends a private RPC to multiple targets.
- Optimized uLink.MonoBehaviour by caching uLink.NetwokView and uLink.NetworkP2P.
- Added 3 RPCTypeSafe options which can be configured in Network.rpcTypeSafe and i the uLink menu > Edit Settings.
- Added Network.defaultRPCFlags which tells the default NetworkFlags when using Network.RPC().
- In Network: replaced isTypeSafeByDefault with rpcTypeSafe, so that you have more options.
- In NetworkBufferedRPC: renamed SetManualExecution to DontExecuteOnConnected, so that it is even more clear.
1.2 Zelda (2011-09-06)
- New NetworkP2P inspector shows all connections live whether connecting, connected or disconnecting in playmode.
- Optimized garbage collection when sending state synchronizations for many NetworkViews, and when server is non-authoritative or Network.useDifferentStateForOwner is false.
- Added callback uLink_OnHandoverTimeout(NetworkPlayer) which is invoked when a P2P-handover has timed-out so that the game can cleanup any player game objects.
- In BitStream: Added ExpandCapacity and ExpandCapacityInBits so that you can pre-allocate the size and decrease garbage collection.
- In NetworkLogUtility: Added a new family of helper APIs for composing log messages.
Improvements in Snowbox:
- Implemented callback uLink_OnHandoverTimeout in Snowbox to cleanup the pre-transfered avatar if a portal handover has timed-out.
- The quick-play button now show the quick host’s address to clarify.
- Explicitly switching levels during handover now so that it can never end up loading the wrong one even if level-order is changed in build settings.
- In BitStreamTypeCode: Renamed Object to Undefined.
- Fixed serialization of a Enum with negative value.
1.2 Zelda (2011-09-02)
- Added optional parameters listenStartPort and listenEndPort to Network.InitializeServer so that you don’t have to worry about assigning a unique port for each server instance when running multiple servers on the same machine. uLink will automatically find the lowest available port within the specified range. Clients can then use, for example, the MasterServer API to list all available servers.
- Added support for Enum types in the default BitStreamCodec so that they are serialized optimally.
- Added NetworkInstantiator.AddAssetBundle so that you can easily register all network prefabs in a asset bundle in one line of code.
- Fixed saving issue in the RegisterPrefab browse window.
- Fixed iOS crash when executing RPCs with many arguments.
1.2 Zelda (2011-08-28)
- The NetworkView's Inspector now automatically assigns the lowest available manual view ID when added to a scene in the editor. It also checks for duplicate view IDs and offers useful recommendations. In addition, in playmode it shows the actual view ID assigned, whether manual or allocated!
- New editor window "Assign Unique Manual View IDs" which can check for duplicates manual view IDs across or within multiple scenes and automatically assign unique IDs with one click.
- New utility component “Register Prefabs” so you can drag&drop or browse all your network prefabs and select the ones you want to Network.Instantiate without moving them to a Resources-folder.
- New utility component “Instantiate Pool” which transparently pre-instantiates prefabs so you can use Network.Instantiate, Network.Destroy etc as usual but without the expensive overhead of actually creating & destroying game objects in Unity.
- New utility component “Smooth Rigidbody” which gives you the same smooth movement experience as “Smooth Character” but for rigidbodies which have a much lower performance cost on the physics engine in Unity than character controllers.
- Optimized execution of RPCs for both NetworkView and NetworkP2P so that they intelligently cache which functions are executed on which component and which BitStreamCodecs are used to deserialize each function parameter.
- Optimized sending of RPCs and user-data in Network, NetworkView and NetworkP2P so that they intelligently cache which BitStreamCodecs are used to serialize each parameter.
New Example Projects:
- Added NetworkInstantiator, a new family of APIs, which can be used to for example, register prefabs from asset bundles and to create your own customized instantiate pool of prefabs transparently.
- Extended editor window View Statistics with under-the-hood information.
- BitStream can now be appended as a parameter when sending RPCs or user-data, so that you also can have variable-length parameters when sending.
- Optimized BitStreamCodec and NetworkObserved lookups which are now blazing fast.
- Added Network.timeInMillis and NetworkMessageInfo.timeInMillis in ulong so that for example: arithmetic operations such as modulus always return fully deterministic and exact results regardless of hardware, compared to floating-points.
- Added BitStreamCodec.AddAndMakeNullable for special cases when you only need a nullable serializer but not a array too.
- Added optional replaceIfExists parameter in BitStreamCodec and NetworkObserved to clarify what action should be taken if a codec or a binder already exists.
- Added BitStream.WriteBitStream to append a stream data to another stream.
- Added the uLink icon to all uLink basic and utility components so they are quickly recognized.
- Added hide/show Cursor option in utility component ClientGUI so that the cursor still can be hidden if it's not locked.
- Added four different position options in utility component ChatGUI so that it for example doesn't cover the in-game HUD.
- Improved state synchronization of Animation, Rigidbody and Transform by adding prediction and relaxing strictness.
- Optimized executing RPCs on prefabs with multiple NetworkViews.
- Added Network.RemoveRPCsByName so that a buffered RPC can for example be replaced with new parameters without removing all buffered RPCs for a NetworkView.
- Added BitStream.bitsRemaining and BitStream.bytesRemaining to tell how much data is left to read in a stream. Useful when a BitStream for example contains different types of data which can be determined by its size.
- Added new parent-child APIs for multiple NetworkViews per prefab: NetworkView.root, NetworkView.parent and NetworkView.childCount.
- Heavily Optimized default codec by actually creating and adding a specialized codec for the requested type on-the-fly and caching its field and property information and serializers.
- Optimized state synchronization when game is non-authoritative, or it is authoritative but Network.useDifferentStateForOwner is false.
- Optimized Network.Destroy(GameObject) and Network.Destroy(NetworkView) for the local uLink instance.
- Optimized instantiate by caching sanity checks and NetworkView component lookups.
- Optimized instantiation of multiple NetworkViews per prefab by caching parent-child relationships into the original prefab.
- Minimized bandwidth overhead to the bone for multiple NetworkViews per prefab.
- Decreased loading-time for uLink editor scripts by pre-compiling all of them.
- Added and improved a lot of log and error messages.
- Added a lot of useful variations to pre-existing APIs.
- A big amount of internal optimizations.
- In NetworkView: Renamed GetPrefab & SetPrefabs to proxyPrefab, ownerPrefab and creatorPrefab.
- In NetworkView: Removed NetworkChildID and renamed childID to childIndex.
- In NetworkView: Removed SetParent and added SetChildren.
- In BitStream: Renamed CopyRemainder to ReadBitStream.
- In BitStream: Renamed CopyRemainderToBytes to GetRemainingBytes.
- In BitStreamCodec: Removed the type parameter in the Deserializer delegate.
- In BitStreamCodec: Removed defaultCodec. Use Find instead.
- Fixed averaging over time algorithm in NetworkStatistics so that it uses exponential moving average instead which always returns good results even after running really long time periods.
- Fixed Network.time and NetworkMessageInfo.timestamp issues where internal timers would leap forward and backward because of misbehaving hardware. This also applies to the MasterServer.
- Fixed a issue with latency in network emulation.
- Fixed bad characters in the release notes when viewed from the editor window "Check for Updates".
- Adapted utility component ChatGUI to Unity 3.4's changed default settings for input. ChatGUI is still also compatible with pre-3.4.
- Fixed some missing callbacks when using multiple NetworkViews per prefab.
- Fixed buffered timestamp byte-size issue.
Improved Manual Chapters:
- Network Views, RPC Details, State Synchronization Details - Added note about network view IDs having to match.
- Instantiating Network-Aware Objects - Clarified authoritative server behavior. An auth-server will not automatically block RPCs from non-owner players. This is something programmers have to care for themselves. Explained how to manually set up view IDs for instantiated objects using AllocateViewID(). New text for registration of prefabs before calling Network.Instatiate. New text about asset bundles.
- Tools/uTsung/Scripting - Clarified how network view IDs are kept and used by uTsung.
Improved API References:
- Registration of prefabs via the new APIs in the Network class.
- View ID allocation and deallocation in the Network class.
- Assigning a view ID to a NetworkView.
- Network.time documentation.
- Handling “WellKnownHosts” in the MasterServer class.
- HostData.ping documentation.
- NetworkConfig documentation.