Tag Archives: sfs2x

Unity Asset Store

We just updated the SmartFoxServer 2X examples package in the Unity Asset Store:
http://u3d.as/content/goto-and-play-/smart-fox-server2x-multiplayer-sdk

All examples have been revamped with the new UI system introduced in Unity 4.6 and are now compatible with Unity 5’s WebGL build (except the FPS example, which requires UDP connection).
A new “Advanced Connector” example was added, showing how to deal with protocol encryption introduced in SmartFoxServer 2X v2.10.
All tutorials available on the website have been updated accordingly to the changes in the examples.

SmartFoxServer 2X v2.10.0 is out!

ssl-image

SmartFoxServer 2X v2.10.0 is out, providing protocol encryption for all TCP and UDP communications. The secure connection uses the standard TLS protocol with X.509 certificates for counterparty authentication and AES 128-bit symmetric encryption for data exchange.

The release comes as a cumulative patch (requires SFS2X 2.9.x) and also provides a series of fixes and additions as discussed in the past months in the support forums.

The update comes with new client API for ActionScript 3, C#/Unity and Java/Android (encryption support for C++ and Objective-C clients, will be available in the next few weeks).

You can read the full release notes and download the patch from this page.

The importance of ping times

In this brief article we will take a look at the simple concept of “ping times” and how we can use it in our multiplayer games to improve the user’s experience.

The connection speed is the single most important key element in an online game as it affects the whole experience. Being able to detect slow downs and “hiccups” could help removing some of the frustration when the client’s network is not behaving as expected. Also, being able to signal critical network issues could help the final user improve their game performance. Continue reading

Using the trace(…) command from anywhere in your Extension code

The trace(…) method is a useful little tool to log any information in the log files for debugging your Extension code.

It is available in the main Extension class and in every Request or Event handler. However, often times, developers need to log messages from other places in their code such as data classes, or any other object that doesn’t extend the Request/Event base classes.

How can we call trace(…) from somewhere else? Continue reading

Building a simple stress test tool

One of the questions that often pops up in our forums is “how do I run a stress test on my game”?

There are several ways in which this can be done. A simple way to stress test your server side Extension is to build a client application that acts as a player, essentially a “bot”, which can be replicated several hundreds or thousands of times to simulate a large amount of clients. Continue reading

The singleton solution

One of the questions that often gets asked in our support forums is something along the lines of “How do I create a singleton class where to store data that is global among all Extensions?”

singleton

This is a relatively complex subject in SmartFoxServer because each Extension is loaded in a separate Class Loader, thus making it more difficult to create a singleton that can be shared.

If you’re not entirely familiar with how Extension loading works you can consult this article for a quick overview. Part of these rules are essentially inherited from the Java Virtual Machine (JVM) architecture and, even if they might seem a bit convoluted, they help with reloading new code at runtime without stopping or restarting the server.

There is however a simple deployment trick that can be employed. Using the extensions/__lib__/ folder we can deploy a jar file with one or multiple classes that will be accessible from any Extension, even throughout multiple reloads.

In other words this will not change the way in which you deploy your Extension in SmartFoxServer 2X, however you will need to export the Singleton class(es) to a separate jar file that will be deployed to –> extensions/__lib__/

From a coding point of view nothing changes, which means that you don’t need to create a different project for your Singleton(s). You can keep them with your main Extension project and just deploy them differently, as described. Most Java IDEs will allow you to export a number of selected classes to a specific jar file, which can then be deployed as we have discussed.