Experimental Game Dev Interviews — The First Game Dev Podcast Ever
RSS icon Home icon
  • SmartFoxServer E-mail Interview…

    Posted on February 15th, 2010 IndieGamePod 7 comments

    Hey folks,

    To balance out the interview with Electroserver…SmartFoxServer was contacted for an interview…and they were nice to agree to an e-mail interview…

    Most developers know about SmartFoxServer…the one thing that immediately stands about them is their very active developer forums here… http://www.smartfoxserver.com/forums/

    Marco, project manager from SmartFoxServer, answered the following questions…

    a) What is SmartFoxServer and how is it used?

    We usually define SmartFoxServer as a “Massive Multiplayer Platform” or MMP for those who like acronyms 🙂
    The project was started in 2003 as a highly scalable game server for Flash which at that time was difficult to find.

    The project has then evolved into a larger platform that today supports all popular clients including Flash, Unity3D, iPhone, Java, Android and recently we have added MS Silverlight. On the server side SmartFoxServer is fully extandable with custom code that can be written in Java, Actionscript/Javascript or Python.

    The typical uses of SmartFoxServer are multiplayer games (both real-time and turn based), virtual worlds and MMO communities. Projects like Disney’s Club Penguin, Zynga’s Yoville and Build-a-Bear’s Build-a-Bearville are a good example of successful communities running on SmartFox, but if you are curious you can take a look at our showcase where we have dozens of examples of how SmartFox is being used.

    SmartFoxServer is also used for multiplayer educational projects and we have several museums around the world as customers although we don’t know exactly how they are using it. The most unconventional usage we know about is controlling a remote paintball gun and firing to a target using audio/video streaming for aiming.

    b) What do most indie game developers use SmartFox for?

    Multlplayer Flash games are certainly on top of the list but we are also seeing a growing interest for Unity 3D and for the iPhone which we support via native Objective-C API and Unity 3D for iPhone.

    c) Is your server able to scale easily? How can your server scale compared to the competition?

    This is a vast topic, we could write a book on this subject, probably an hefty one 🙂

    Scalability has been our main concern since the beginning. Back in the days when we started working on the first prototypes (2003) there were few multiplayer servers to choose (especially for Flash) and none of them would scale decently. Most of the commercial and open source solutions were able to handle a few thousands clients on high end machines, if you were lucky. We invested over one year in prototypes and research using non-blocking socket Java API, and finally came out with our own lightweight socket engine, finely tuned for multiplayer and capable of handling tens of thousands of clients on regular hardware.

    To give you an idea, the first tests of the socket engine were run on an Pentium2 at 350Mhz with 256Mb of RAM.
    Of course that was a pretty slow hardware even back then, but we wanted to see what we could squeeze out of such low-spec box. We had it running for two weeks with peaks of over 500 concurrent users. Not bad for a machine that is even slower than a today’s iPhone 🙂

    Back to the present times we have MMOs like Club Penguin, probably one of the largest SmartFox deployments, handling millions of players every day and many others running in the hundreds of thousands. With a well designed server architecture (http, game servers and databases) there’s virtually no limit to the amount of scale achievable.

    We also offer highly available and scalable clustering via the integration of Terracotta, a powerful clustering engine available for the Java platform. For those interested we have detailed white papers and case studies at this address:
    http://www.smartfoxserver.com/clustering/

    The advantage of this solution is that it is extremely economical (Terracotta comes with a free, open-source license) and brings enterprise-level clustering at prices that are affordable even for very small companies. We think that gone are the days in which you had to spend millions for a highly scalable game server and we believe to have given a contribution to make this happen.

    You also asked for a comparison with other products in terms of scalability. This is not easy task because there are various solutions out there, each with its own pros and cons.
    In general we have observed that most competitors have resorted to use an all-purpose socket engine as their server core. The difference between a generic engine such as Apache Mina (used by Wowza, Union and ES4) and the SmartFox engine (code name BitSwarm) is that the former is usually not finely tuned for multiplayer, and when you put them side by side you will notice remarkable differences in performance and scalability.

    A few milliseconds of extra lag or an additional bit of CPU usage at this core level might seem negligible, but when you reach the tens or hundreds of thousands of connections they start making an exceptional difference.
    In the end that’s what scalability is all about, delivering consistent performance at different scales of traffic and usage.

    SmartFoxServer uses a lot of low-latency optimizations, zero-copy buffers and specific threading architecture to deliver the best performance possible under all conditions. To give you an idea (and hopefully without boring the reader with too technical stuff) I can show the visual results of the same test running on the generic engine and SmartFox.

    Take a simple broadcast test were we generate 10 000 messages/sec over a 1Gbit connection.
    Both servers are sustaining the same the same network throughput, which is great, but you can certainly notice the difference in performance.

    This is the Apache Mina engine (used by 90% of the competition):
    mina-test

    And this is SmarFox:
    bswarm-test

    (graphs are taken from a VisualVM session monitoring the JVM)

    SmartFox takes less than 10% of the CPU and hits the garbage collector very lightly, whereas MINA goes well past 50% and causes frequent garbage collection. If we push the test at 40K messages/sec. MINA crashes after having pushed both CPU cores to 100% with incessant garbage collection, while SmartFox takes around 40% and never crashes. In other words SmartFox results 5 times more efficient under the same conditions and with the same throughput.

    (For the record the tests where run on a Intel Core Duo 2@2.0Ghz, 2GB Ram, Linux Ubuntu 9.04, JDK 6)

    For technical people who wants to learn more they can consult more benchmarks here.

    d) What are the things that most developers like about SmartFox?

    I think that developers appreciate the fact that they can test the full product without any limitation in features or time.
    Our trial comes with 100% of the features and a free 20-users license which allows anyone to start experimenting, prototyping and building a complete application without spending a penny.

    Together they find a rich set of documentation, with well over 50 examples with source code, step-by-step tutorials and technical white papers. The package also includes free, skinnable UI components like login box, chat window, room list, user list which allow developers to quickly create their interfaces with minimal coding.

    Also we have a very active support board where we get a lot of feedback from users and provide quick and free help to anyone using SmartFox. In the board we also exchange ideas for future features and provide a meeting point between companies and developers looking for SmartFox based jobs.

    e) What is next in store for SmartFoxServer?

    Recently we have been working on various interesting new things.
    The next incoming release will be OpenSpace 2. It is a Flash-based MMO engine which provides a powerful 2.5D (isometric) renderer and high level framework for rapid development of multiplayer virtual communities.

    The product allows very rapid development, offering a visual editor to create the maps that compose the virtual world and offering tons of customizable features. The engine takes care of the complexities of rendering the environments, including scrolling, panning, zooming, avatar management, multi-terrain pathfinding, runtime room editing and lots more. All this is integrated out-of-the-box with SmartFoxServer making it very easy to get started and being immediately productive.

    Here you can find a sneak preview of the next version which is coming the next month and the beta2 is already available for anyone wishing to test it -> http://www.smartfoxserver.com/forums/viewtopic.php?t=6734

    In 2010 we are also launching the next major update of SmartFoxServer which will bring the platform to the next level. Thanks to our customer’s feedback and to the experience gathered in the past years in this field, we have vastly improved the flexibility of the framework and redesigned some of the components in the server architecture to provide even better extensibility and refined development tools.
    Improvements will include a new ultra-efficient binary protocol, version 3 of the BitSwarm engine (which alone has dozens of new features), extended configuring and monitoring tools, new security functions, simplified workflow, UDP support (for UDP enabled clients), largely extended API, and the list goes on…

    Actually these are just a few of the many new things that are coming. I am afraid I am not yet able to reveal the really “hot stuff” as we’ll keep those “secret” until the release of the first public beta. I’ll be very happy to share them with you as soon as we enter that phase.

    f) What is the pricing structure for SmartFox?
    We have two main editions of SmartFoxServer: Basic and PRO.
    The former is great for chatting applications, whiteboards, turn based games etc, while the latter is the fully featured edition used by MMOs and large scale projects.

    The pricing structure is based on the number of concurrent users.

    Customers can buy a small license such as SmartFoxServer BASIC 100-user which costs 200 euros and gradually upgrade to higher licenses by paying the difference. The price of the license is a one time fee, there are no other costs involved and we provide free and frequent updates which includ bug fixes and new features.

    People interested in learning more can consult this quick f.a.q.

    g) Where can people go to test out the server?

    The website is www.smartfoxserver.com and the direct link to download the SmartFoxServer PRO trial is this -> http://www.smartfoxserver.com/products/pro.php

    Thanks again for the interview 🙂