SFS2X Docs / ExamplesUnity / introduction
» Unity/C# examples
In this section of the documentation we provide a series of brief tutorials on the C# examples for the Unity platform distributed as a specific package on the SmartFoxServer 2X download page. Specifically the tutorials refer to the Unity 5 examples, but the concepts and the code to interact with the SFS2X API are valid for any version of Unity (unless otherwise noted).
Most tutorials analyze a single example, describing its objectives, giving an insight into the SmartFoxServer features it wants to highlight and providing the direct link to download the source code, which includes all the assets required to compile and test it (both client and — if existing — server side). If necessary, code excerpts are provided in the tutorial itself, in order to better explain the approach that was followed to implement a specific feature. At the bottom of the tutorial, additional resources are linked if available.
The tutorials follow an increasingly complexity curve from basic server connections over chat messaging to full realtime games with authoritative server extension.
Specifically the examples will show:
- basic connection
- chat messaging and room management
- buddy list management
- game rooms and extension messaging
- simple client side 3d object movement
- server authoritative first person shooter
- demo of the MMO-related features
- clients synchronization in a space shooter game
- protocol encryption
» Usability on different Unity deployment targets
All examples run seamless and are interoperable on the following build targets:
- PC, Mac and Linux standalone
- Unity WebPlayer plugin
- WebGL-compatible browsers (except the First Person Shooter example)
- Windows Store
Other platforms might be compatible with the examples, but haven't been tested directly.
Due to the different requirements of the build targets, the SmartFoxServer C# API is distributed as four separate DLLs: a DLL specific for WebGL builds, a DLL for Windows Store builds (and native Windows / Windows Phone development), a DLL for all other Unity target platforms (including the Unity Editor itself) and a generic DLL for non-Unity development (see Usability on non-Unity platforms below).
Most examples use the first three DLLs in separate subfolders under the Plugins folder and are configured as described in this document.
The user interfaces have been developed primarily for desktop usage, so they might not fit 100% into mobile screensize without a little extra work. Also they are based on the new UI system available in Unity 4.6 and following releases.
» Usability on non-Unity platforms
The client API is fully usable on other .NET enabled platforms like ASP.NET or console applications and is thus not limited to Unity usage. The examples are not directly compilable on these platforms, but all relevant C# code is placed in the same Scripts folder and it's 99% usable via copy/paste in a different context.
When using the API on these targets you will have to either run the API in non-thread safe mode or process the callback events in a timer. Check this link for more information on non-thread safe mode.
Unless otherwise noted inside the tutorials:
- all examples are distributed in a single package and the same download link is provided in all the tutorials;
- client side of the examples is provided as a Unity project: just open its folder with Unity (when opening for the first time, it will take a few seconds to Unity to regenerate the required libraries for the project);
- the main folder of each example in the downloaded package is referenced in the related tutorial using this icon: ;
- all examples require Unity 5.6 or later, but the relevant multiplayer code is compatible with Unity 4 too (including UI, supported starting from Unity 4.6);
- some of the examples are based on a stripped down version of the Shader Calibration Scene provided by the Unity team on the Asset Store (all rights reserved);
- all examples are developed with C#; UnityScript can be used as well with the API, but this is not documented or supported directly;
- the server side Extensions of those examples which require one have been developed using Eclipse, but you should be able to use any Java IDE of your choice, provided you use the JDK 1.6 or later.
All the examples make use of the latest version of the SmartFoxServer 2X C# API available at the time of their development. As the API evolve in time (bug fixes, new features), we strongly recommend that, after downloading an example, you overwrite the included API DLL files with those provided in the latest SmartFoxServer C# API package available on our website.