uLink 1.3, Lina, is too big! Get the advanced beta, while we finish the last set of tests.

723 views
Skip to first unread message

Aidin Abedi

unread,
Aug 15, 2012, 2:19:31 AM8/15/12
to unitypa...@googlegroups.com, unitypa...@googlegroups.com
Dear Awesome UnityPark Developers!

Sorry for the wait - unfortunately (or fortunately) uLink 1.3, Lina, is so big and rich it has taken time to test and refine everything. Although, this is uLink's first public beta release, Lina has gone through the first batch of tests without a hitch. But because of the many new internal changes and fundamental new features, all possible scenarios aren't full tested yet. Therefore we've decided to release it as a advanced beta first, so that those of you whom been itching and waiting these couple of days can get your hands dirty and play with all the nice things Lina has brought to Unity developers. So while we're working hard to test the remaining possible combinations, you can still try out and get to know Lina's new exciting APIs, which wont change! Also please email any issues or questions to our new unitypa...@googlegroups.com mailing list (and join it of course)!

Here it is, what everybody have been talking about: uLink 1.3.0-beta1 Lina (2012-08-15).unitypackage. In addition, we're also working on a new cool example project which shows some of uLink 1.3's many new features, specifically groups and the different types and levels of network occlusion culling.


A few highlighted features:
  • Incredibly easy to use multiple purpose Room/Session/Subgame feature which we call Groups. A client can at any time join or leave a group either explicitly (by calling Network.AddPlayerToGroup or Network.RemovePlayerFromGroup) or implicitly by owning at least one GameObject/NetworkView instantiated or assigned to that group, and vice verse leaving that group when losing his/her last owned object in it. A object can only belong to one group (there can be up to 65535 different groups) but a client can belong to multiple. A client won’t receive any updates or broadcast RPCs for objects in a group that the client hasn’t joined. However, the server is by definition a member of all groups and will therefore always receive all RPCs and updates. Besides using groups for efficient object management and high-level network occlusion culling, you can at any time add special attributes to each individual group - by calling Network.SetGroupFlags with any combination of the following flags:

    • NetworkGroupFlags.HideGameObjects - the group will not only cull its objects broadcast RPCs and updates to non-member clients but it will also completely remove its GameObjects from their scene. Meaning all the group’s objects will be destroyed for non-member clients (if they have been instantiated) and new objects won’t be instantiated for non-member clients. If a client joins or leaves the group, the objects will automatically be instantiated or destroyed. This attribute is useful for separating game sessions/instances on the same uLink server.

    • NetworkGroupFlags.AddNewPlayers - all future connected players will automatically join the group.

  • Powerful low-level network occlusion culling API. Besides the high-level culling features of Groups you can also set the network scope of each individual GameObject/NetworkView to each client, using NetworkView.SetScope. If a client is “out of scope” it will not receive any updates or broadcast RPCs regarding that object. This is useful for limiting the bandwidth, memory and CPU usage for each player depending on their line of sight or area of interest.

  • Rich P2P handover API which can handover multiple GameObjects simultaneously and where every aspect can be fully configured and customized, if desired. If a client owner is redirected, the objects will not be instantiated on the destination server until the client has connected. Client handovers will also trigger the uLink_OnPlayerApproval event and the NetworkPlayerApproval will contain all handover objects and their data so that they can easily be manipulated or dropped before they are instantiated. In addition, you can also pass a special handoverData per player handover, which will also be available when the player is fully redirected - in its NetworkPlayerApproval - at the destination server.

  • Game servers which haven't been port-forwarded and are behind a NAT or firewall can still be registered in a MasterServer, but their HostData information will only be sent to players on the same LAN (same public IP address). This allows webplayers, which can't broadcast and discover local servers because of security concern, to instead find them in the MasterServer's list. Additionally, clients will now automatically get their public IP address by the MasterServer.

  • Optimized performance and memory usage of BitStreams, by utilizing an internal pool of BitStreams so that uLink reuses everything efficiently.

  • Many many more optimizations, features, fixes and improvements which wont be listed until the final release.

Important change:
  • To avoid confusion the concept of a variable "creator" has been removed. The creator can now always be seen as the server, regardless of whom actually instantiates a GameObject/NetworkView. Therefore NetworkView.creatorPrefabNetworkView.creator, NetworkView.isCreator and even NetworkView.role have all been deprecated and replaced by NetworkView.isOwnerNetworkView.isProxy and the new NetworkView.hasAuthority and NetworkView.serverPrefab.


If you haven't already, sign up for the mailing list to stay informed. If somehow you got this email but didn't want to, email me at aidin...@muchdifferent.com.

Best whishes,
Aidin Abedi

Aidin Abedi

unread,
Aug 15, 2012, 2:24:03 AM8/15/12
to unitypark-news, unitypark-beta
UPDATE: Fixed the link to uLink 1.3.0-beta1 Lina (2012-08-15).unitypackage, which for some reason was disabled.

Aidin Abedi

unread,
Aug 15, 2012, 2:27:47 AM8/15/12
to unitypark-news, unitypark-beta
So how do I use the new feature "groups"?

There are many new APIs regarding groups, but below is few of of the most important functions which will get you started:

	Network.SetGroupFlags(NetworkGroup group, NetworkGroupFlags flags)
	Network.Instantiate(..., Vector3 position, Quaternion rotation, NetworkGroup group, params object[] initialData)
	NetworkView.SetViewID(NetworkViewID viewID, NetworkPlayer owner, NetworkGroup group)


	// If a client owns a at least one object in a group, it is a member of that group implicitly.
	// However you can also explicitly add a client to group using these functions:
	Network.AddPlayerToGroup(NetworkPlayer target, NetworkGroup group)

	Network.RemovePlayerFromGroup(NetworkPlayer target, NetworkGroup group)


One of the many uses for groups is to separate game sessions so that a single server can handle multiple different game matches/zones but only showing one or more of them to each individual client. You can for example hide a object from other clients, like so:

	// choose a group number within the range 1 to 65535.
	uLink.NetworkGroup group = 3;
 
	// hide objects, which belong to this group, from non-member clients.
	uLink.Network.SetGroupFlags(group, uLink.NetworkGroupFlags.HideGameObjects);
 
	// instantiate the player's object to this group (he/she will be implicitly added to the group).
	// you can also use NetworkView.SetViewID(NetworkViewID, NetworkPlayer, NetworkGroup), if you don't want to use Network.Instantiate.
	uLink.Network.Instantiate(client, ..., Vector3.zero, Quaternion.identity, group, ...); 

Aidin Abedi

unread,
Aug 20, 2012, 5:28:28 AM8/20/12
to unitypark-news, unitypark-beta
Hello UnityPark Developers,

We're happy to announce a second beta version of uLink 1.3, Lina, with a minor fix and some interesting improvements: uLink_1.3.0-beta2_Lina_(2012-08-20).unitypackage.


Improvements:
  • Added Network.batchSendAtEndOfFrame, which is by default true and tells uLink to queue all outgoing messages until the end of frame. Batching lets uLink do more optimizations such as fitting multiple messages in a single packet, if they are not too big. There will be a slight CPU and bandwidth cost for turning off batching, how much depends on the amount and type of messages. But one benefit of disabling it, is that you then know the message has been sent after NetworkView.RPC(...) has returned and CPU profiling of RPCs is more accurate, in Unity's Profiler. 

Fixes: 
  • Fixed issue when instantiating in a group, with the server as the owner. A false error was logged.

Sincerely,
Aidin

On Wed, Aug 15, 2012 at 8:24 AM, Aidin Abedi <aidin...@muchdifferent.com> wrote:

Aidin Abedi

unread,
Aug 30, 2012, 9:45:52 PM8/30/12
to unitypark-news, unitypark-beta
Dear uLink Developers,

We've been working hard and fixed many issues and tested new improvements in uLink 1.3's third beta, which is also most likely the last beta version before the upcoming final release. It comes with the windows installer, packed with Lina's version of MasterServer and Snowbox. Oh and if you're ever looking for previous uLink versions you will, from now on, always find them in our automatic listing. Look there tomorrow and you'll also find the mac installer of 1.3's beta 3.



Improvements:
  • Completely new uLink settings implementation, which uses a regular text-file with custom syntax instead of saving to script, which won't cause recompile and slowdowns.
  • Added methods GetPrefs() & SetPrefs() to Network, MasterServer and NetworkLog classes for run-time loading and saving uLink settings.
  • Updated uLink's MasterServer for 1.3 - including LAN discovery of registered but NAT-blocked servers, for webplayer clients.

Changes:
  • Removed System.Xml dependency, which cuts down on code size.
  • Moved Network.batchSendAtEndOfFrame to Network.config.batchSendAtEndOfFrame.
  • Changed default public/private encryption (RSA) key size to 2048-bit, to insure high security in the future.
  • Changed NetworkPrefs API.
  • Updated Snowbox shaders for Unity 3.5.5.

Fixes:
  • Fixed resolve host name bug on iOS.
  • Fixed false error when destroying server owned objects in a group.
  • Fixed issue when restarting server and not re-initializing group flags correctly.
  • Fixed minor warning about client ignoring group flags, even if none where set.
  • Fixed logging error if icon files for uLink scripts are missing.
  • Corrected a parameter name in a few Network.Instantiate variants.
  • Fixed error when loading uLink 1.3 settings on webplayer.


Best wishes,
Aidin

Aidin Abedi

unread,
Sep 17, 2012, 4:20:30 AM9/17/12
to unitypark-news, unitypark-beta
Our Dear uLink & Unity Developers!

We couldn't hold ourselves, we had to make a fourth beta of uLink 1.3. The reason is simple, we want to make uLink 1.3 even more fantastic than it already is. Besides fixes, we've added new exciting features and powerful tools. In addition, we've listened and implemented even more feature requests. So here it is uLink 1.3 beta 4, Lina, a even bigger bag of goodness: 

uLink 1.3.0-beta4 Lina (2012-09-17) [exe] [dmg]


Also note: We're working hard to finalize the new shiny demo project and in addition we hope to also include, yet another feature, in the final version of 1.3 Lina - detailed profiling via the Unity Editor Profiler.


New Features:
  • P2P Discovery - more love for P2P! Just like regular uLink client/server, P2P can now also discover localhost or LAN connected peers using NetworkP2P APIs equivalence to the MasterServer and peer data which includes ping, type, name etc. Peer data values like type and name can be set via the NetworkP2P inspector. See new P2P APIs below for more information.

  • Pending Player Approval - a connecting player can now be pended (indefinitely) using NetworkPlayerApproval.Pending(). This is useful for async operations, like looking up username and password from a database etc. If a player is set into pending, it will remain so (i.e. won't receive any objects, RPCs etc) until approved using NetworkPlayerApproval.Approve(...), or denied using NetworkPlayerApproval.Deny(...) which disconnects him/her.

  • Buffered Only RPCs - by calling a NetworkView.RPC with RPCMode.Buffered it will only be added to the RPC buffer, and only executed for new, but not yet connected or approved, players. Useful for giving connecting players a instant initial state of objects up on instantiation without calling existing players. Together with Network.RemoveRPCsByName(...) the initial state can be replaced and updated for each new player.

  • Change Object's Groupchange the group of a object using the set-property NetworkView.group, without having to destroy and re-instantiate it. Can only be called on the server and will modify the buffered instantiate RPC, group data, membership etc. Clients which will continue to see the object (i.e. are members of the both the old and the new group, including the owner) will just have the group ID changed, no instantiate/destroy. Clients which no longer will see the object (i.e. are only members of the old group) will have it destroyed locally and finally clients which are only members of the new group will instantiate it like any other buffered instantiate RPC.

New Tools:
  • CPU Limiter - start a child process and assign it's scheduling priority and processor affinity via easy to use options. In addition, you can limit how much CPU usage (%) that process can use at most (requires Windows 8 or Windows Server 2012). All useful for efficiently partitioning cores and CPU utilization among many server instances. If the process crashes you can also tell the tool to automatically restart it. For more information pass parameter "-help" in the command-line to view all options.

  • Host Finder - requests host data from uLink server(s) at a specific hostname/IP-address or on the entire LAN. Useful for making sure server is reachable through firewall or port forwarding, and watching ping, number of players etc. For more information pass parameter "-help" in the command-line to view all options.

New APIs:
  • Added callback/event uLink_OnPeerEvent(NetworkP2PEvent) and enumeration NetworkP2PEvent.
  • Added new properties NetworkP2P.peerName, NetworkP2P.peerType and NetworkP2P.comment.
  • Added new classes PeerData, LocalPeerData and PeerDataFilter.

  • Added functions NetworkP2P.DiscoverLocalHosts(...) and NetworkP2P.PollAndDiscoverLocalPeers(...) variants.
  • Added functions NetworkP2P.PollDiscoveredPeers() and NetworkP2P.ClearDiscoveredPeers().

  • Added functions NetworkP2P.RequestKnownPeers(), NetworkP2P.PollKnownPeers(), NetworkP2P.PollAndRequestKnownPeers(...) and NetworkP2P.ClearKnownPeers().
  • Added functions NetworkP2P.RequestKnownPeerData(...), NetworkP2P.PollKnownPeerData(...), NetworkP2P.AddKnownPeerData(...) and NetworkP2P.RemoveKnownPeerData(...) variants.

  • Added enumeration NetworkPlayerApprovalStatus.
  • Added properties NetworkPlayerApproval.status, NetworkPlayerApproval.isAutoApproving, NetworkPlayerApproval.isApproved, NetworkPlayerApproval.isPending, NetworkPlayerApproval.isDenied.

  • Added enumeration value RPCMode.Buffered so RPC is only buffered.

  • Added set-property NetworkView.group to change group of object.

  • Added static constants NetworkViewID.max, NetworkViewID.min, NetworkPlayer.maxClient, NetworkPlayer.minClient, NetworkGroup.max, NetworkGroup.min too help indicate the respective ID ranges.

Fixes:
  • Fixed DestroyByViewID bug in uLink 1.3 beta.
  • Fixed not transferring initialData after P2P handover in uLink 1.3 beta.
  • Fixed P2P bug when handing over 0 objects.
  • Fixed minor bug where local game host data values are overwritten by MasterServer.RegisterHost(...).
  • Removed generic IEquatable<> interface on NetworkPlayer, NetworkViewID and NetworkGroup to avoid a mono bug on iOS.
  • Corrected minor errors in API documentation.

Changes:
  • If a NetworkPlayer ID that is already in use is passed to NetworkPlayerApproval.AssignManualPlayerID(), it will disregard it and automatically assign a free NetworkPlayer ID.
  • If a server hasn't filled in its MasterServer.gameType and MasterServer.gameName and a client requests its host data whether directly or via LAN discovery, uLink will trigger a error event on the server to let it know the information is missing and can't be sent - just like when registering the server to a Master Server. The only difference is that the error event will only be triggered once to avoid spamming.

Sincerely,
Aidin

Aidin Abedi

unread,
Sep 17, 2012, 8:23:54 AM9/17/12
to unitypark-news, unitypark-beta
Sorry, the links where incorrectly pointing to uLink 1.2. Here are the correct links


1.3.0-beta4 Lina (2012-09-17) [exe] [dmg]


You can always find all releases, including beta version in our automatic listing here:

Aidin Abedi

unread,
Oct 2, 2012, 11:37:03 AM10/2/12
to unitypark-news, unitypark-beta
Dear beautiful and/or handsome uLink Developers!

We're very proud to release a fifth beta of uLink 1.3, Lina, with a lot of small improvements and good fixes. The final version of 1.3 is upon us, and with it comes a new flashy example project and documentation. Lina, is a huge addition of exciting features (see previous news email for full change log) and we're confident you'll love it as much as we have. Grab the new beta here and start playing:

1.3.0-beta5 Lina (2012-10-02) [exe] [dmg]  (looking for previous versions?)


New Feature:
  • Added CPU and memory profiling of uLink events/callbacks, executing RPCs and instantiating/destroying objects. And can be viewed in the Unity Editor's profiler window under the expandable item uLinkInternalHelper.Update(). The "deep profiling" option does not need to be enabled. Even more profiling categories, object context and details will come with uLink 2.0. But this is a great start for understanding what a uLink update does and what is costing CPU and memory. Additional categories will most likely also be added in the final version of uLink 1.3.0, like profiling state synchronization.

Improvements:
  • Improved clock synchronization accuracy to handle player approval pending and potential clock drifts in the Unity Editor.
  • Improved debug logging of clock synchronization.
  • Added property NetworkView.localPrefab which tells the local prefab name, if available, otherwise returns empty string.
  • Added method NetworkView.ToPrefabString() which tells the local prefab name, if available, otherwise returns the GameObject.name.
  • Added property setters for NetworkP2P.listenPort and NetworkP2P.maxConnections.
  • Improved logging when opening a NetworkP2P port.
  • BitStream makes sure a custom type's static constructor is called the first time, in case it registers desired BitStreamCodecs.
  • Added RPC method name in the error log message when Read/Write mismatch occurs and the receiver tries to read past the buffer size.

Fixes:
  • Fixed bug when changing group of a NetworkView, if the groups in question are not set to HideGameObjects.
  • Changed time measuring mechanism to be more precise, to avoid drift issues when running i certain virtual machines like VirtualBox.
  • Fixed packets being dropped issue when connecting through a VPN client.
  • Fixed minor mismatch of Profiler begin/end samples in custom build 5.
  • Fixed error when trying to show all connections in a NetworkP2P's inspector.
  • Fixed error when trying to call non-open NetworkP2P.allConnections.

Changes:
  • The uLink 1.3's network protocol has changed a bit which means the server and clients need to update to beta 5.
  • Removed NetworkP2P.Open(), NetworkP2P .Close() in favor of just changing NetworkP2P.listenPort and NetworkP2P.maxConnections.
  • Renamed NetworkP2P.isOpen to NetworkP2P.isListening.


Best wishes,
Aidin

Aidin Abedi

unread,
Nov 6, 2012, 9:50:49 AM11/6/12
to unitypark-news, unitypark-beta
Hello Awesome uLink Developers!

Obviously we wanted to release the final version of uLink 1.3.0 next, but we've been very busy fixing issues and adding small but extremely valuable improvements, so many in fact that we feel they need to get into your hands sooner rather than later. We're working intensely hard but still don't want to rush and label this release the final version, just to get 1.3 officially out the door. It's important the final version is excessively well tested, before rolling the red carpet. As you can see in the change log below, uLink 1.3 has become even better for it and we've been listening very closely to your feedback. Grab this brilliant peace of craftsmanship as soon as you can and enjoy:


1.3.0-beta6 Lina (2012-11-06) [exe] [dmg] (looking for previous versions?



New Utility Scripts:
  • Added uLinkConsoleGUI to see all Unity logging (not just uLink) directly in the game screen when running on standalone, Android, iOS, web player etc - without having to dig up the log file. Ridiculously easy to use - just drag & drop like any other uLink GUI script - and rich with features and customization.
  • Added uLinkOverrideNetworkDestroy which let's you with extreme ease override the destruction of network objects, called via Network.Destroy, to for example play an animation instead or keep it in the scene as debris/ragdoll. On network destroy it will broadcast a message (default: "uLink_OnNetworkDestroy") to all components and children to the object - and you don't need to worry about cleaning up it's network viewID etc.

Improvents:
  • Added "implicit NAK" so uLink can detect dropped reliable messages and resend much sooner, before having to wait for the resend timeout to trigger.
  • Improved resend algorithm for reliable RPCs by capping reliance on RTT to 0.5s.
  • Added property Network.config.resendDelayFunction to easily and fully customize uLink's internal resend algorithm, using delegate type NetworkConfig.ResendDelayFunction.
  • Added property Network.config.localIP to set local IP address (default: empty) for cases when you only want to use the client or server on specific network interface.
  • Added property Network.config.timeMeasurementFunction and enum NetworkTimeMeasurementFunction for testing purposes, in case uLink 1.3's default Stopwatch doesn't work properly.
  • Added NetworkView.ResetScope and Network.ResetScope to remove all network scope culling for a specific NetworkView or NetworkPlayer.
  • Added NetworkLogFlags.PlayerID for logging NetworkPlayer assignment and usage internally.
  • Added NetworkUtility.FindAvailablePort and NetworkUtility.IsPortAvailable.
  • Improved RPC and other log categories with some more debug entries and possibly relevant information.
  • Added BitStream initialData parameter to PreCreator (previously called PreInstantiator, see changes) to be able to use initialData information to customize construction/assembly of the instance.
  • Added NetworkInstantiator.CreateDefaultPreCreator, NetworkInstantiator.defaultPostCreator and NetworkInstantiator.defaultDestroyer.
  • Added property NetworkView.instantiator to be able to change postCreator and/or destroyer for specific NetworkView instances rather than per prefab.
  • Minor improvement to NetworkView's and NetworkP2P's inspectors to show different array fields with count in parantheses.
  • Added Network.HavePublicAddress and NetworkUtility.IsPublicAddress.
  • Added profiling for state synchronization and handover callbacks.
  • Added field autoScroll (default: true) in uLinkChatGUI to determine whether to scroll to the latest chat entry when added.
  • Added position, guiDepth and guiSkin to all GUI utility scripts: uLinkChatGUI, uLinkClientGUI, uLinkStatisticsGUI and uLinkConsoleGUI.

Fixes:
  • Fixed important issue in groups, mostly regarding Network.AddPlayerToGroup and Network.RemovePlayerFromGroup.
  • Fixed issue with uLink's internal usage of Stopwatch on Windows.
  • Fixed rare issue where RPC sender becomes unassigned.
  • Fixed issue with RPCMode.Buffered, in some cases still being sent to existing players.
  • Fixed issue in previous beta version causing NetworkView parent and child relationship to not work properly for prefabs.
  • Fixed rare issue when a client sends multiple connection request in the same network tick which can cause the connection to be dropped later.
  • Fixed cleanup issue in Network.DestroyAll.
  • Fixed minor editor GUI artifact in uLink's "View Statistics" and "Assign Unique Manual ViewIDs".
  • Fixed issue in Network.Destroy(NetworkViewID).
  • Improved previous VPN-issue fix, by reducing unnecessary packet overhead.
  • Fixed network emulation issue caused by the previous VPN-fix.

Changes:
  • NetworkP2P will no longer automatically begin listening if added programmatically in play-mode.
  • Setting NetworkP2P.listenPort to anything but -1 successfully, will automatically also enable the component if not already.
  • NetworkP2P.listenPort and NetworkP2P's inspector will now return and show the allocated port if initially set to 0 (0 means OS should find available port, -1 means disabled).
  • Renamed NetworkPlayerApproval.Pending(), NetworkPlayerApproval.isPending and NetworkPlayerApprovalStatus.Pending to NetworkPlayerApproval.Wait(),  NetworkPlayerApproval.isWaiting and NetworkPlayerApprovalStatus.Waiting.
  • Changed default for uLinkConsoleGUI.isVisible and uLinkStatisticsGUI.isEnabled to true.
  • Removed private field oldLockCursor in uLinkChatGUI.
  • Renamed NetworkInstantiator.PreInstantiator and NetworkInstantiator.PostInstantiator to NetworkInstantiator.PreCreator and NetworkInstantiator.PostCreator.
  • Deprecated NetworkUtility.IsAddressLocal.

Best of best wishes,
Aidin

Aidin Abedi

unread,
Nov 21, 2012, 6:35:40 PM11/21/12
to unitypark-news, unitypark-beta
Dear uLinkers!

It's time. Yet another sweet sweet beta version of uLink 1.3, Lina, is made available to you. Not as big change log as previously, but with important improvements and fixes. Get it now!

1.3.0-beta7 Lina (2012-11-21) [exe] [dmg] (looking for previous versions?


Improvements:
  • Added Network.ResynchronizeClock to re-synchronize a client's Network.time against the server, during a small interval. This is for long time running game clients. Warning, Network.time may change, jump either forward or backward.
  • Added Network.config.serverTimeOffsetMillis, which tells the time offset between the server's and client's local clock.
  • Added Network.localTime and Network.localTimeInMillis, which returns the local clock (beginning with zero).
  • Added uLinkStatisticsGUI.showDetails, to list more detailed network statistics.
  • Added "Server Time Offset" in both uLink's Unity Editor Window "View Statistics" and utility script uLinkStatisticsGUI.
  • Added "Frame Rate" in uLink's Unity Editor Window "View Statistics", so you don't have to render the game view to see FPS of the server for example.
  • uLink's Unity Editor Window "View Statistics" now always remembers its "Show Details" option toggle.

Fixes:
  • Fixed iOS build issue with "Fast but no exceptions" optimization, when calling uLink.NetworkVersion.current.
  • Fixed strange socket issue which in some Windows version can make the UDP socket unusable due to "Connection Reset".
  • Tweaked "implicit NAK" implementation to be much less aggressive.

Changes:
  • Added warning about broadcasting to more than 20 ports when discovering local hosts or peers.
  • Removed uLinkStatisticsGUI.showFrameRate.


Yours sincerely,
Aidin

Aidin Abedi

unread,
Jan 10, 2013, 9:07:42 AM1/10/13
to unitypark-news, unitypark-beta
Happy New Years All Developers!

It's about time, no? I'm extremely proud to announce the end of Lina's beta. However there will be no final uLink 1.3. Instead we're calling it uLink 1.5 because of the sheer volume of big heavenly features which made Lina grow fat ;) during the beta, along with vast improvements, fixes and the many new shiny utility scripts and tools to play with. I know a lot of you have asked about documentation of all the goodness - we're working hard to update the online manual and API references as we speak, and publish our new cool example project to demonstrate groups, scope and network culling specially. Because of this we've not yet updated the official download links for uLink, but we still like to get it in your creative hands as soon as possible and therefore made it first available here while all the docs are being updated. So what are you waiting for? Bring home the good stuff now:


uLink 1.5.0.1 Lina (2013-01-10) [exe] [dmg(looking for older versions?



The full change log of uLink 1.5 compared to 1.2 will be published when we've updated the docs and official download. In the meantime, you can see the change log compared to the last beta7 below:

Improvements since beta7:
  • Improved ping calculation and connection timeout.
  • Optimized group management in special cases.
  • Added two more options to uLink.RPCMode: OthersExceptOwnerBuffered and AllExceptOwnerBuffered.
  • Added NetworkInstantiatorUtility and NetworkViewInfo.
  • Added simple Network.config.serverTimeOffset in seconds.
  • Added a lot of socket warning logging with the new uLink.NetworkLogFlags.Socket.
  • Improved NetworkP2P error logging.
  • Improved MasterServer fault tolerance.
  • Minor optimization for finding appropriate RPC receiver.

Fixes since beta7:
  • Fixed the issue when changing group of object using the group setter property, for all cases.
  • Fixed unnecessary group send destroy error when shutting down server or when trying to send to disconnected clients.
  • Fixed socket issue causing lag if the machine accepts dead packets.
  • Fixed iOS shutdown issue, when user temporarily locks the screen or presses the home button.
  • Fixed uLink.NetworkView.hasAuthority on client-side.
  • Fixed uLink.NetworkPeer equality operators and Equals method.
  • Fixed ambiguity issue with passing a single parameter to (params object[]) initialData in uLink.Network.Instantiate, just like in NetworkView.RPC.
  • Fixed minor local port issue in HostFinder and improved parsing of parameter "-port(s)".
  • Fixed ping calculation bug in uLinkHostFinder.
  • Fixed warnings in the Snowbox project when upgrading it to Unity 4.x.
  • Fixed web browser https security warning i webplayer.
  • Fixed Unity Network converter issue, when two scene objects are connected/instances of the same network prefab.
  • Fixed and updated official uLink Master Server at unitypark.dyndns.org:23466.
  • Fixed minor issue with the new version parsing (since 1.5.0.0).
  • Fixed minor issue with NetworkPeer and NetworkP2P's inspector (since 1.5.0.0).

Changes since beta7:
  • Removed uLinkSmoothRigidbodyImproved.
  • Changed uLink.Network.ResynchronizeClock(ulong milliseconds) to uLink.Network.ResynchronizeClock(double seconds).
  • Changed uLink.Network.config.serverTimeOffsetMillis to uLink.Network.serverTimeOffsetInMillis.
  • Changed script execution order of basic uLink components so NetworkP2P, RegisterPrefabs and manual NetworkViews are always initialized first.
  • Changed order in network destroy so that OnDestroy is first called on all scripts and after that the NetworkView is unregistered.
  • Changed so that newly instantiated objects' scripts are not Awake:n before all NetworkViews are correctly initialized (works only in Unity 4.x).
  • Changed uLink.NetworkInstantiator's PreCreator and PostCreator to Creator and Activator (and changed last parameter of Creator from uLink.BitStream to uLink.NetworkViewInfo which contains much more).
  • Changed Snowbox quick connect button to localhost instead of official servers (which are temporarily down).

My very best to everyone,
Aidin
Reply all
Reply to author
Forward
0 new messages