EDITOR INTEGRATION
Apart from having a very powerful and usable programming API, uLink is also well integrated into the Unity Editor and has many utilities that can be used by non-programmers. The top menu has been extended with an all-new uLink drop-down that gathers all of the uLink GUI tools at one place. From there you can edit the uLink project settings, start external tools, generate security keys, check for uLink updates, etc. See below for a complete reference. The Component drop-down menu has also been extended with two new categories, both the absolute basic uLink components, and the very handy list of uLink utility component scripts.Component Menu
The Component menu is the central tool-box in the Unity Editor where you can find all of its components. When you import the uLink package, it adds two new sub-menues under Component that contain the available uLink components. Adding uLink components to your game objects and prefabs is just as convenient as adding regular Unity components.Important: Do not confuse the uLink Network View and Network P2P components with their Unity counterparts, located in Scripts! They are NOT interchangeable, and you should never mix them in the same project. The uLink components have their names prefixed with uLink in the Inspector.
uLink Basics
uLink Basics contains the core uLink components, that you will use most frequently. Network ViewThe uLink network view is the real work-horse throughout the uLink API. Every game object that needs to be visible to the network has to have a network view. Read more about this very important concept in the Network Views manual chapter. Network P2P
The uLink Network P2P component maintains one connection to one other network peer. You can have more than one game object with a Network P2P component if you want to connect a Unity instance to more than one other network peer. Read more about connecting setting up a peer-to-peer network in uLink in the P2P manual chapter.
uLink Utilities
uLink Utilities contains a diverse set of script components that can be used to solve many routine networking tasks. You can also modify and extend them to suit the needs of your game. The scripts themselves are located in Plugins/uLink/Utility Scripts in the Project browser. See the Utility Scripts manual chapter for a detaild description.uLink Menu
The uLink menu contains all uLink-specific options and tools gathered at one single place.Enter licence...
Enter license... brings up a window that helps you validate your uLink license. You enter the license key that you received from us into the first text field. This will generate a code line in the second text field. Copy this line into a server-side script so that it is run before the server calls uLink.Network.InitializeServer(). This way the server is initialized in vaildated mode and all trial-restrictions are lifted. The Enter Licence Key for uLink window is only a convenience to generate the validation code line. If you type the code yourself, you don't have to use this window. Imporatnt: It is not enough to just enter the license key in the first box! The actual validation happens when the server evaluates uLink.Network.licenseKey upon initialization.Convert from Unity Network...
This brings up the Convert from Unity Network to uLink window, which is a very convenient tool to use when you have a networked Unity project based on Unity Network and want to migrate it to uLink. The process is fully automatic, and comes in two steps.- Pressing the first button will go through all of your project's script files and replace every reference to Unity Network with a corresponding reference to uLink. This is possible because of the high degree of syntactic symmetry between the two APIs. You can rest assured that no functionality will be lost this way, your project will work with uLink if it works with Unity Network. However, you still need to correct any compilation errors that may arise, before moving to the next step.
- Pressing the second buttom will go through all your project's scenes and prefabs, and replace all Unity Network components with corresponding uLink components. Again, this is made possible by the API symmetry. All properties and set values will be maintained, so you don't have to worry about configurations you have made in the editor being lost. Connections between network views and prefabs are also maintained. For uLink to work properly, all prefabs must be located under a Resources project folder. For this purpose, all prefabs in your project are moved to a Resources folder located in the project root. You can disable this behavior by unchecking the Move Prefabs to Resources option at the bottom.
Generate Authentication Keys...
This item opens the Generate Authentication Keys for uLink window. This lets you generate security keys for your client and server communication in a very easy manner. The security key-pair consists of a private key that must only be known by the server, and a public key that can be included in the client code. You can read all about scurity and key-pairs in the Security and Encryption manual chapter. To generate a unique key-pair for your game, click the Generate button, and then perform the following steps.- Paste the contents of the first text field, which is the private key, into a script that is only used by the server. Make sure that the code is always executed before the server calls uLink.Network.InitializeSecurity() and uLink.Network.InitializeServer(). Once the server starts, it is initialized to use secure exchange of data with any client that has the public key.
- Paste the contents of the second text field, which is the public key, into a script that is run on the client. The code must be executed before the client calls uLink.Network.Connect(). You don't have to worry about keeping the public key secret.
View Statistics...
This opens the uLink Statistics view, which contains some useful global information about uLink in the running editor. Status shows the status of the uLink runtime. It combines the values of uLink.Network.peerType and uLink.Network.status. Last Error shows a formatted string with the last occured network error. Server Clock shows the value of uLink.Network.time which is the server's time since it started, in seconds. Network Objects shows the number of network-aware objects that are currently shared over the network.Edit Settings...
This opens up the uLink Settings view which lets you configure many aspects of how uLink should behave in your project. These settings are unique to each project and does not affect those that are specified for other projects. They are stored in the file Resources/uLinkNetworkPrefs.cs in your project. Do not modify this file, as it is automatically overwritten by the uLink Settings view. The Reset button allows you to reset all the settings to default values. Be careful with this as your settings will be lost if you reset them. The settings file is automatically saved on change if the Auto-Save option is turned on. Without the auto-save feature, you can save your settings by pressing the Save now button. State Sync Send RateSpecifies the rate, in updates per second, of state-syncs across the network. Fast-paced games, like FPSs, should use a rate between 15 and 25 to avoid that the game feels laggy. Slow-paced games can use any value. This value is the one configuration in uLink that affects server-side bandwidth the most, at least if the usage of state-sync in the game is extensive. A game that relies on RPCs only will not be affected. Maximum Manual View IDs
This specifies how many network view IDs uLink will reserve for manual assignment, in the range from 1 to this number. Increase this value if there is a need to assign more than 1000 manual view IDs is the game. Manual view ID are assigned to a Network View either through the Manual View ID field in the Inspector view or by calling uLink.NetworkView.SetManualViewID(). Authoritative Server
Sets whether uLink should be in Authoritative Server mode. This is an important strategic choice when building a multiplayer game. By making the server authoritative, clients are prevented from performing dangerous operations such as sending RPCs to other players (through the server). Authoritative servers will not receive state-syncs from clients, and clients will not be allowed to instantiate network-aware objects. Most commercial game servers are authoritative for security reasons. Read more in the Authoritative Server chapter in the uLink manual. This setting enables a large number of warnings that are logged when the client tries to perform actions that are not coherent with the Authoritative Server paradigm. Minimum Allocatable View IDs
This value is interesting when creating a game with clients that make lots of Instantiate calls, thus being authoritative clients. A network view ID pool is given to each client when it connects. The size of the pool is dictated by this value plus the value of Minimum Used View IDs. The client starts to allocate these view IDs one by one for every Instantiate call. When the unused (free) number of view IDs reach this minimum in the client, uLink will make a call to the server to get more (unused) view IDs. The server and clients should be in sync regarding this value. Setting this higher only on the server has the effect that it sends more view ID numbers to clients, than they really want. Setting this higher only on clients means they request more view IDs more often, for example twice in a row, as the pools received from the server don't contain enough numbers. Minimum Used View IDs
This value is closely related to Minimum Allocatable View IDs. To make the view ID pool size in the client bigger by default, just increase this number. The motive for increasing this number is that the clients making many Instantiate calls want to get bigger "chunks" of unused viewIDs when the client connects and also whenever the client reaches its Minimum Allocatable View IDs. This reduces the amount if uLink internal RPCs to the server to allocate more view IDs. Different State For Owner
This value is only meaningful in an authoritative server. When checked, the state-sync to an object's owner will be sent separate from that to a proxy object. The owner state is serialized and deserialized by implementing the callback uLink_OnSerializeNetworkViewOwner(), it will be called on the client that is the owner for the object and on the server sending the state-sync. State-sync to proxy objects will be handled the normal way, by implementing the callback uLink_OnSerializeNetworkView(). When this option is unchecked, the callback uLink_OnSerializeNetworkView() will be used for all state-syncs, regardless of ownership. Client/Require Security For Connecting
This value is only used in clients. If checked, the client can only connect to a server if the public key has been set through uLink.Network.publicKey. Read more about security in the Security and Encryption manual chapter. Client/AES Symmetric Key Size
The size of the AES symmetric key in bits, used for encryption of client-server communtication. Read more in the Security and Encryption manual chapter. Server/Incoming Password
This is the server password that clients must submit with the call to uLink.Network.Connect(), to be allowed to connect to the server. If you don't want this approval step, just leave this field empty. Server/Use Proxy
Indicates if the server requires that clients connect via a proxy server. Set this value to true in a game server before regestering the server in the master server. Read more about the master server and the proxy server in the Master Server manual chapter. Server/Use Redirect
Setting this value to true causes all future connection attempts to the server to be automatically redirected to another server specified by the Redirect IP/Host and Redirect Port fields. Cell/Track Rate
This setting is only used when the server is used as a cell server together with Pikko Server. It specifies the rate at which position tracking messages are sent from the cell server, in updates per second. Read more about Pikko Server for uLink in the Pikko Server MMO manual chapter. Cell/Track Max Delta
This setting is only used when the server is used as a cell server together with Pikko Server. It specifies the maximum distance a game object can move without triggering a new position tracking message from the cell server. Read more about Pikko Server for uLink in the Pikko Server MMO manual chapter. Master Server/Game Type
The game type is used to categorize games in the master server. This setting will be sent to the master server on server registration. Clients can only connect to a game with the correct game type, and only such games will be visible to the client. See the Master Server manual chapter. Master Server/Game Name
The game name uniquely identifies a single game. This setting will be sent to the master server on server registration. Clients will use the game name to tell different game instances apart. See the Master Server manual chapter. Master Server/Game Mode, Game Level, Comment
These three fields can be given any value to give various information to the player about the running game. These settings will be sent to the master server on server registration. See the Master Server manual chapter. Master Server/Dedicated Server
Specifies if this server as a dedicated server, i. e. it is not run by a human player. When running as a server, the connection count defines the player count and this is reported to the master server upon registration. By default the master server assumes this instance is not a dedicated server and increments the player count by one (to account for the "player" running on the game server). If this is not desired, this field can be checked before registingen this game server and then only the client connection count is reported by the master server as the player count. Master Server/Update Rate
Normally host updates are only sent if something in the host information has changed, like connected players. The update rate defines the minimum amount of time which must elapse between host updates, i. e. the maximum rate. The default value is 0.0125 (once every 80 seconds) maximum update rate, where a check is made for changes. So if one host update is sent and then some field changes 10 seconds later then the update will be sent 70 seconds after the change, at the next change check. If the rate is set to 0 then no updates are sent, only initial registration information. Master Server/Master Server IP/Host, Port, Password
The address and password used by the server to connect to the master server and register. Also used by the clients to request available game hosts. The password is set up as an agrument when starting the master server from the command line. The default is no password. Minimum Log Level
uLink log messages are tagged both by a category and by the level of severity of the message. The levels are Debug, Info, Warning and Error, from least to most serious. The logs are filtered by a level setting for each category, so that only messages that are equal or more serious are printed. You probably want more output during development than in the published game. This field gives the minimum log level to use for all categories, so that ti overrides all category levels with higher log level. For example, with a minimum level of Info, all messages tagged with Info, Warning and Error will be printed, whil Debug messages will only print for log categories explicitly set to Debug level. Detailed Log Levels
Here you can explicitly set the log level for each logging category. All of the pre-defined categories are used by uLink, and can also be used by the game developer. The uLink.NetworkLog class has several log printing functions, where the category can be specified. See the Server Operations manual chapter for more info about logging. Network Emulation
This gives you the ability to emulate various network characteristics for debugging and testing purposes. The settings you specify are carried with your external build so that you can test your whole client-server setup together. There are a number of pre-defined profiles that you can use, like DSL, Dial-Up and GPRS. The settings for each profile is shown in the Detailed Emulation fields. Detailed Emulation/Max Bandwidth
The maximum upstream bandwidth allowed/available, in kB/s. This is effectively the send rate. Set this to 0 for unlimited sending. Detailed Emulation/Chance Of Loss
The probability that a sent packet gets lost in transit. Values range from 1 (always lost) to 0 (never lost). Detailed Emulation/Chance Of Duplicates
The probability that a sent packet gets duplicated in transit. Values range from 1 (always duplicated) to 0 (never duplicated). Detailed Emulation/Minimum Latency, Maximum Latency
The minimum and maximum two-way latency, or round-trip-time, for packets that are sent. The actual latency vary within these bounds.






