Experimental Game Dev Interviews
RSS icon Email 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:

    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):

    And this is SmarFox:

    (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 ๐Ÿ™‚


    7 responses to “SmartFoxServer E-mail Interview…” RSS icon

    • Sadly SmartFox doesn’t think on small indies, even with the cheapest 200 euro edition you need to have your own dedicated server and pay the montly costs.

      A hosted solution have been asked by the community for ages, the only solution out there is shockwaveserver.com that costs $80 a month + $299 setup fee + the license of the server. is that an indie price?

      please take a look at playerio.com and compare, they have a basic plan for free that supports 500 concurrent users and you pay $100 for $5000 users, that sounds indie for me.

      I’m sorry to say this here, but i really love SmartFoxServer and i made several demos with it, but it’s simply not affordable for my budget and the size of my games.

    • Hi Israel,
      this is Marco from SmartFox. Thanks for the comment. I think you have a good point but you should also take in consideration that Shockwaveserver provides professional hosting which is targeted more at companies than indies.

      If you want to start easy and be able to grow as your game grows you can spend much less money. You can start with a VPS plan or a cloud based hosting (e.g. Rackspace) and spend between 10-50$/month which is definitely affordable. And you still get a root-access machine where you can install anything else, if you need it.

      Personally I like the Player.IO idea but I also find it lacking of many important aspects. You have no control over the server settings, persistence, security, threading, resource monitoring etc… Having to run server side code concurrently with anybody else’s code seems another major annoyance to me.

      I have seen the plan that you mention. $99 bucks for 100GB/month of data transfer or a maximum of 5K users. You should pay attention to these numbers because they say quite a lot.
      Suppose you are running an average of 100 users every day in your game. And suppose each play uses very little bandwidth, almost unreal: 512bytes/s incoming and outgoing.

      512 bytes x 100 users = 51.2Kb/s
      51.2Kb * 60 * 60 * 24 = 4423680 Kb in one day, which means 4.4 GB day

      Hmmm… 100Gb / 4.4 = 22.72
      You won’t even make it to the end of the month
      And those are 100 concurrent users
      consuming a ridiculously low amount of bandwidth.

      I don’t want to be the party pooper here, but what we propose is definitely different from that. A SmartFox license is a one time fee, never expires and you run your own dedicated server, configured as you wish and using all resource available in your hosting.

    • Well marcos, thanks for your answer.

      i’ll take that numbers into consideration.

      Still it seems to be more for mid-sized teams to big ones with some (at least minimal) budget.

      Most flash games generates under $200 a month with ads, of course with multiplayer you can make a lot more. I will definitely try with something multiplayer this year.


    • Have been using SFS for 4 years so far, and must say that it’s a really NOT EXPENSIVE at all gameserver, if you consider the houge amount of docs and samples coming with the free version, the support, and the performance that you can get for a really cheap price.

      Could stay here hours to explain all the good things coming with Smartfox, but I think that the showcase speaks better than any kind of word.

      If you need a professional software to start developing a serious business plan, than 2400 euros are nothing.

      Really nothing.

    • Hey,

      I’m Oliver from Player.IO. To really balance it out, you should do an interview with us also ๐Ÿ™‚

      Also, i’d like to address a few points:

      “Just rent a VPS” — Well, yes, that’s an option, but then you’re also doing operations and playing system administrator. You’ll also need to pay for bandwidth usage, which is ignored above.

      “You have no control over the server settings, persistence, security, threading, resource monitoring etc” — That’s the whole point! You don’t need to think about server settings, security and threading, because it’s already handled for you. You’ll never need to boot another server or anything; we’ll handle all the loading for you.

      You don’t need to think about how to handle load, because *true* (not just bigger-box=bigger-performance) scalability is builtin without having to do anything special as a developer.

      If you write a game that works for two players, it will scale to millions of online players without any additional work.

      I think that’s a really good value proposition for indie developers: Just focus on the gameplay.

      “Having to run server side code concurrently with anybody elseโ€™s code seems another major annoyance to me.”

      Think of Player.IO as a VPS for multiplayer games. Yes, other code might be running on the same physical machines, but we’ve ensured that it’s sandboxed away from you, so you’ll never even notice.

      It shouldn’t matter anyway, because with Player.IO you don’t have to think in units of machines. You don’t know (or care) if your game runs on a single or multiple machines across the cluster. It’s all handled by us.

      That plus: we’ve never had a single complaint about it.

      With regards to the pricing: I think we have a very generous free plan, and i think that the above analysis leaves out a lot of issues: bandwidth fees, time spent administrating servers that could be spent developing games, architecting to scale over multiple machines etc… If you factor in everything, i think we’re very competitive.

      In the end, it shouldn’t come down to only price — it should be a combination of ease of use, ease of deployment, ease of operations, price and required featureset.

      “SmartFox license is a one time fee, never expires and you run your own dedicated server”

      But you’ll still have to pay for the resources (bandwidth) used by the server and the server itself.

      It’s exactly like Player.IO, except we don’t have the one-time fee ๐Ÿ™‚

      Now, i don’t want to knock Smartfox, because i think it’s a very impressive piece of software.

      Player.IO is not a boxed piece of software though, it’s a service designed to make it easier-than-dirt to build games and get them running without having to think about all the hard stuff.

      Just build your game, deploy, and don’t think about it.

      – Oliver, Player.IO

    • “Iโ€™m Oliver from Player.IO. To really balance it out, you should do an interview with us also”
      It seems like you already did ๐Ÿ™‚

      “If you write a game that works for two players, it will scale to millions of online players without any additional work.”

      Me too I don’t want to knock your service and do think it’s got some remarkable features.
      Frankly, I also think that this not an argument but a sales pitch.

      I’d love to see examples of these scalable-in-the-millions games. Any links? ๐Ÿ™‚
      We all know that scalability doesn’t happen auto-magically. It requires well designed code, well thought server architecture and finely tuned setups. Most of the very large MMOs we have seen built with SmartFoxServer went through multiple optimization and redesign phases as their traffic was growing by orders of magnitude.

      I won’t comment on the other things because it’s quite clear that we are comparing apples with tomatoes.


    • Marco,
      you have some almost unimportant mistakes, but to clarify:

      512 bytes x 100 users = 50Kb/s

      50Kb * 60 * 60 * 24 = 4320000 Kb in one day, which means 4.12 GB day

      100Gb / 4.12 = 24.27

    Leave a reply