Yesterday Jobe Makar (Electrotank) told me that they just announced ElectoServer 4 – the newest update of their popular socket server. The release is scheduled for September 2007. You can check the details here: http://www.electro-server.com/es4.aspx.
For those who don’t know, ElectroServer is a multiuser server geared toward Massively Multiplayer Online games (MMO) made in Flash.
It’s been a while since the release of ES3, and their main competitor – SmartFoxServer – looks to be ahead of he game. But the guys from Electrotank didn’t just sit on their hands: the new release is the result of a year of hard work.
The announcement page features a multiplayer tank battle game with bots and real users playing in real time. It looks very good, especially taking in consideration that Jobe put it together in ten hours, just a day before this announcement.
The list of new features is impressive. Video and audio streaming is something completely new. Check their homepage – http://www.electro-server.com/ – for an example of video streaming. ES4 is claimed to be tested on 200,000 concurrent players.
I contacted Mike Grundvig – one of the owners and the engineers behind the ES, who works remotely from Kansas City (Electrotank is based in North Carolina). He took his time and answered my question. Below is a compilation of this interview:
Dis: This “200000 gamers” test, can you tell me more about it?
Mike: That was a huge amount of work. We actually had to create a rather sophisticated set of load generating tools that we could run on multiple machines. ES4 supports two modes currently, a “stand-alone” mode and a “distributed” mode. Standalone is just like ES3 or our competitors. The server runs in a single VM on a single machine. Distributed mode uses multiple servers broken down into two types: a registry and many gateways. The registry manages and maintains state, while the gateways handle user connections. This is a LITTLE bit like the origin-edge approach Flash Media Server supports but not quite.
Dis: So how did you simulate the “200,000 gamers” test?
Mike: We used 10 gateways and 1 registry for the server-side of things. We are so confident in our performance results, we are giving away the source to the load generators and directions on how to use it to test in your own environment when you install the server. The load generation required something like 7 machines in the end. The tests were VERY accurate and realistic. When the server is released, we will release some charts showing the stats. The gateways were dual core blade servers. The registry was a quad-processor, dual core server. Everything running Linux.
Dis: Tell me more about new server API.
Mike: The server API for developing games is similar to the ES3 model, but very different in
implementation. For instance, I’m sure you are familiar with the problem of Flash recieving too many messages inbound per second. This can cause wierd lag-like behavior in the client. To combat this, developers usually have to write code that aggregates and queues messages
dynamically. In ES4, we have a very simple way that your plugin can automatically specify an outbound message to be queued for delivery and the server aggregates for you. The plugin can even specify the queue drain speed and the rest. If a message is named, then the server will only send a single instance of it. In ES4, we have a very simple way that your plugin can automatically specify an outbound message to be queued for delivery and the server aggregates for you. The plugin can even specify the queue drain speed and the rest. We always keep the message size as small as possible. The speed at which the queue drains is up to the game developer but can be changed on the fly and it is plugin specific. ES4 supports two basic protocols to keep message size down. A highly condensed text-based protocol and a tiny binary protocol for AS3 clients. Of course, we also have enough RTMP support in there for audio/video too.
Another cool feature you might be interested in, is the fact that we support strongly-typed objects spanning languages now. So clients written in java can send native data to an actonscipt plugin and vise-versa. We have this ability interspersed all throughout the server so that public/private messages, room/user variables, etc. can contain a payload of typed data. The data is sent over the wire in a neutral format but we convert it to the appropriate data type
on the recipient side. So a “long” sent from a java plugin becomes a “number” on the AS2 client.
Also, we built the server intending to support multiple languages easily and now we just need to add some.
There are lots of other kick-$$$ abilities in the server too ;). For instance, we are now a fully web-based administration. It’s rock solid and supports everything. Like we support the ability to upload extensions (groups of plugins/event handlers) via the web. So you create an extension, zip it up and you can upload it to the server from the admin and deploy it. Also extensions support hot reloading. We will have a big article on the exact behavior of reloading. I think people will understand what we are talking about when they see it.
Another huge plus: we now have multiple language filters/flooding filters and they can be
specified uniquely per room, and users can be in many rooms/zones at once. For instance, you have a MMO game where people need to be able to check with each other while running around the world.
There is a lot more under the covers and we are documenting it as fast as we can.
Mike also revealed that they will be launching a new redesigned website, so it looks like ElectroServer is up for some big breakthrough.
In light of this announcement it makes sense to mention their competitors – SmartFoxServer. Interestingly, the SFS is behind the major hit Club Penguin, while ES is powering Webkinz. Those two major MMO are going head to head, and the later one may even have the lead, according to compete.com – read our last blog port about it. This makes this competition even more interesting.
I contacted Marco Lapi from SFS team, asking about their latest plans, and got this reply:
“The next release will concentrate on firewall proxies, we’re releasing a new SFS module that will extend connectivity to all those clients who can’t establish a direct socket connection. This is probably the request that has been asked more frequently, so it was about time to focus on the issue. We have evaluated various “canonical” solutions but none of them offered a good-enough performance when compared to a speedy socket connection. Finally we seem to have solved the problem.
We’re currently in beta and results are really promising. A public beta should follow during September.”
So, with both major players announcing new releases in September, it looks like it’s going to be a busy month for MMO developers!
Ever wanted to build your own online world? Try our TheoAvatar SDK – a tool that helps you build multi-user 3D chats like TheoAvatar in Flash. It comes with Map Editor, source code and documentation. It runs on both ElectroServer and SmartFoxServer. Purchase it today and start digging into the exiting world of Massively Multiplayer Online games (MMO)!