|
Jump to: Software All product reviews |
|
It seems like ever since Disney bought Club Penguin for an amount considered slightly above pocket change, canned easily configurable persistent world servers have started appearing on the market. Suddenly it seemed like small-time developers could develop large-scale multiplayer environments without large budgets or development teams. Of course, development of large-scale multiplayer environments has to occur on two fronts: client and server. And if you have a team that's just not big enough to support full teams on two fronts, you might be better off getting a "canned" server that'll offload some (hopefully most) of the time necessary for server development by taking care of some of the low-level details, abstracting the server-side into something simpler and more script-driven than the traditional server tasks of coding at the socket level.
And there are a few tools out there that'll do that job. One of the most established players in the market is ElectroServer by Electrotank, Inc. It's a product that was originally built to support their own game development, but it's now come into its own as a server that can be configured for all kinds of persistent-world uses.
Installation
ElectroServer is available for Windows, as well as Linux and an OS-agnostic version that'll install on anything that supports JRE 1.6. The codebase for the different versions is presumably the same, the real difference being that the Linux & Windows versions have nice install programs that set everything up so all you have to do is double-click an icon to get started.
As for the preferred OS, the manual states that Unix-based systems are preferable to Windows. While this is certainly the clear choice price-wise, the manual also states that Java server performance is quite a bit better on Unix (Linux, Solaris) machines than on Windows. Frankly, unless there's a really compelling reason to run under Windows (i.e. your bandwidth provider uses Windows or you need to talk to somesuch database or device that only runs on Windows), I don't see much reason to run ElectroServer under it.
But since Linux in my house exists only on my daughter's XO laptop (as well as my router, and my cable-box, and probably my toaster), I figured Windows is going to have to be my testing environment.

Figure 1: What you see when you start ElectroServer. Looks like everything's happy and it's waiting for someone to talk to.
Thankfully ElectroServer's installation is pretty effortless, which is important for a server-noob like myself. Under Windows there's a single EXE file that installs the server software. When installing, there were only two decisions I had to make. One was whether or not I wanted to run ElectroServer as a Windows service (i.e. at a lower OS-ring than applications) or as a standard application. The next was whether or not I wanted ElectroServer to run in "Professional" or "Enterprise" mode. The difference is that "Enterprise" mode allows ElectroServer to be distributed over multiple machines. If you're building something that can potentially scale up to tens, then hundreds, then hojillions of clients, then you'd better have something with distributed underpinnings. Distributed mode's topology has a single "Registry Server" that maintains the actual persistent world and any number of "Gateway Servers" that actually talk to the clients.
ElectroServer is a standalone Java application that talks to the outside world via sockets. You administer it via a web interface (defaulting to localhost:8080). One problem I had was trying to talk to the server via Firefox (version 3rc1). It stated that the security certificate was not trusted and it flat-out refused to talk to the server. Opera similarly brought up the certificate problem and then showed a 404 error. The only browser (ironically) that could display the admin interface was IE7. It complained about the certificate problem, but begrudgingly displayed the content after I clicked a button that acknowledged that I was taking my life in my hands.
I presume that if I ran this software on an actual server machine and not just my review-box that I could fiddle with things and make it not quite so upset. Even if I couldn't, it's not that big of a problem. The admin interface isn't something that end-users are going to see anyway, so the occasional browser-complaint when talking to the admin-interface shouldn't affect them.
![]()
Figure 2: The ElectroServer admin interface, complete with red address bar and certificate warning (click for full size)
ElectroServer isn't just an script-language abstraction for the network socket layer. It works at a higher level than that. Understanding the concept of persistent "rooms" which don't really need to be chatrooms per-se but are more like a way to group up users, and messaging and chat is already built-in. That means that things like language and flooding filters are already in-place and just need to be activated and configured. You can also write hooks into the messaging itself, so you can do things like kill messages before they are broadcast.
Rooms can be temporary (created on the fly) or permanent (exist forever), and the creation and removal of rooms can be done with plugin code, so rooms can be dynamically created by users that have permission to do so or by anyone. Actually, the admin console you see above doesn't have much control over the persistent world itself. It just gives you a little control over the server's environment, the admin-logins, and the plugin code. Just about all of the code that makes your online world a real online world is done with plugins. So the server is very customizable and it's not something that you can install then assume that your server needs are handled. Server-side plugins are written in Java or ActionScript. ElectroServer apparently supports some kind of server-side ActionScript compiler/interpreter, and this is basically so you don't have to teach yourself yet another language. If you're used to writing client-side code in Flash using ActionScript, then you don't need to learn Java on the server-side. You can just install ElectroServer and script up your persistent world in ActionScript on the server-side.
ElectroServer also supports audio and video streaming via the RTMP protocol if you want to add streaming audio or video to your client. As a pretty cool example that they've had up for quite a while is a little movie-streamer on their home page (www.electro-server.com) that streams a selection of public-domain movies as FLV files.
As for clients, ElectroServer directly supports (i.e. has documented objects for) Flash MX and later. If you're planning to write a client in Flash for ElectroServer, then you pretty-much have everything you need. Just include the AS2 or AS3 server objects that they provide, and start talking to the server via the objects. The ElectroTank server Flash-objects are nicely abstracted into rooms and messages, so your client-side program won't have to know any low-level details of the server communication. According to ElectroServer's FAQ, ElectroServer can support all kinds of clients, as it operates as a standard socket server. Unfortunately, I couldn't find any documentation of low-level communication details or their protocols for messaging. If you plan to use ElectroServer with a non-Flash client, then you should probably expect to work with the ElectroServer team on getting your client-side code written. Looking at their support page, they seem to have built much of their business model around working closely with the client developers, and some of their pricing includes a level of one-on-one support.
My biggest (apart from the browser-certificate problem I mentioned above) complaint with ElectroServer lies with the documentation. ElectroServer installs with a little 37-page manual and some automatically-generated Javadoc-style documentation. And while the software did install with about 20 examples of doing everything in ElectroServer from text-filtering to live webcam-chat, I had a very hard time getting a handle on where to start. Of course, this works into their aforementioned support structure, so I imagine a tutorial would exist somewhere along the line of "describe your project to us and we'll hold your hand on putting it together". Still, a few pages of step-by-step tutorials showing which tutorials I should use first and some line-by-line description of what exactly is going on in each example would be most welcome.
The pricing is a single product but you pay for the number of clients you'll need. The base "demo license" product as downloaded supports up to 25 concurrent users. Licenses are purchased not as new installable "deluxe version" products but as license files that unlock more features. While they used to have more pricing tiers, they seem to now have settled on just two (or three if you include the 25 user demo license). For $700, you get up to 5,000 concurrent players on a single server. For $4,400, you get up to 200,000 players on a distributed server, which I mentioned before is the version where communication is actually broken up over several machines with a single machine controlling the persistent world.
Looking at their list of partners, I see that they're the back-end for Webkinz. If you're not a little kid or you don't have a kid of your own, WebKinz is a pretty big web phenomenon. It's an MMORPG-of-sorts for kids. You actually sign up by purchasing a plush toy which comes with a serial number. Entering that number at the web-side puts a cartoon version of your toy in "Webkinz World", granting you a year of access to Webkinz' games and chat and opportunities to earn Webkinz cash that you can spend on items for your little virtual-pet.
And it's huge. Most likely it's much bigger than anything you're planning. So if you need evidence that ElectroServer is capable of scaling up to the project you're building, go buy yourself a Webkinz toy and see for yourself.