|
ElectroServer 4 Features |
|
ElectroServer 4 has an extensive feature set that lets developers create advanced multiplayer applications easily. Continuing its excellence with standard features such as persistent rooms, zone support, and event handlers -- found in past ElectroServer generations -- ES4 leaps beyond this to give developers even more control! Written using the industry-standard, high-quality MINA framework – ES4 has evolved into a complete platform for interactive online applications.
An updated feature set makes ElectroServer 4 the most robust socket-server available to support a wide variety of multimedia applications. Streaming Audio/Video capabilities enable ES4 to support A/V conferencing and recording. Clients also benefit from the ability to stream live or archived events to thousands of users simultaneously. Load-tested to 200,000 concurrent players, ElectroServer 4 demonstrates unprecedented scalability compared to other Flash media servers. Because it is highly extensible, all of ES4's powerful server capabilities can be extended using either Java or server-side ActionScript.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Extreme Scalability |
ElectroServer 4 exhibits record-breaking scalability with its novel dual-mode operation. Using ElectroServer 4 Enterprise, the system distributes its user workload to multiple servers. While operating in distributed mode, ES4 Enterprise has been load-tested to support an astonishing 200,000 concurrent players without slowdown or deterioration. Players connect to one of many gateway servers which, in turn, connect to the registry. Players can see and interact with others connected to any gateway included in the “network.” ElectroServer 4's extreme scalability guarantees real-time, instantaneous massive multiplayer online gaming interaction without a slowdown or lag in user experiences!
Operating in distributed or standalone modes gives developers options and helps aligns their solutions for future server expansion. If needed. In standalone mode, ElectroServer 4 Professional uses a single server implementation and start-up process proven to support 30,000 concurrent users at incredible throughput rates. ElectroServer 4 Enterprise is required for distributed mode; this version also supports standalone mode for maximum developer flexibility.
 |
|
|
Enhanced Stability |
A stable server means that a game will be up-and-running for players when it matters. As the most stable socket-server available, ElectroServer 4 executes graceful error handling and useful logging for continuous game play during debugging.
If a server encounters a problem, error handling logs the error, but maintains server stability to avoid a system crash or slowdown. Developers can then troubleshoot the error using the Web administrator to view the message and quickly repair any issues. ES4's useful logging tool records enough information regarding an error message, allowing developers to locate problems faster than a typical trial-and-error debugging process.
 |
|
|
Streaming Audio/Video |
Streaming audio/video is vital to develop captivating, robust multimedia gaming experiences. ElectroServer 4 takes streaming audio/video to the next level by enabling developers to build scalable, Flash massive multiplayer online games, communities, and social networking sites that incorporate real-time Flash audio and video streaming. Players can engage in:
Webcam chatting – Microphones and web cameras can be used to participate in video chats, taking this platform to the next level of multiplayer online interaction.
Streaming live events – The live-event streaming option means that developers can use ElectroServer 4 to stream rich content, such as a TV show, concert, or other multimedia event out to thousands of players in real-time.
Audio/video recording – Any server-bound, real-time streaming event or audio file can be recorded and held in a file on the server for retrieval and future playback. The event can be viewed by multiple viewers, multiple times.
 |
|
|
Extensible Framework |
ElectroServer 4 is equipped with extensions, or hooks, that boost server capabilities and enhance development flexibility using Java or server-side ActionScript. Available extensions include plug-ins, managed object factories, and event handlers.
Plugins – Broaden servers by creating server or room custom logic. A server-side plugin can be assigned where it is most appropriate for each specific game -- at either the server level or room level. Plugins communicate with each other and the server on which they reside.
Managed object factories – Manage objects instantly and make them available for plugins and event handlers to utilize, as needed. These extensions are ideal for managing heavy resources such as connection pools or other heavy objects.
Event handers – Event handlers can be created to respond to various events using ActionScript or Java. A Login Event Handler uses a custom code that enables a developer to validate a user against a central database, or some other source and track login/logout activity, send private or public messages, and more. This ensures that a proper username/password is being used. Other event handlers provide access to events ranging from a user joining a room to public messages, and more.
 |
|
|
Rapid Message Aggregator™ |
ElectroServer 4 is the only socket-server that aggregates messages. This unique function involves code written specifically to alleviate performance problems that Flash clients may encounter when attempting to handle a high message packet rate. The Message Aggregator feature collects several messages from various users and holds them. It then sends them out to clients in a larger packet. By clustering messages and sending them out in larger, infrequent batches, the Message Aggregator limits message processing rates to protect Flash from becoming overwhelmed with the task of delivering and sending messages simultaneously. When programming real-time games, clients often receive 5, 10, or more than 20 inbound messages per second. Depending on the client used, this high message rate could degrade performance. Extensions executing custom game logic can “aggregate,” or immediately send, outbound messages to clients using a simple API call. Developers can create size limits on message “chunks,” and how often they are sent to clients. The developer can also simply disable the message aggregator when needed.
 |
|
|
Rich AS2 & AS3 Client API |
ES4 is equipped with the ActionScript 2 and ActionScript 3 client-side APIs, or the ElectroServer API. Any developer familiar with JavaScript can easily utilize the ActionScript programming language. The ElectroServer API acts as a liaison between the game developer and ElectroServer – formatting and initializing all transactions that occur between the client and the socket-server. This frees up development time, and permits a developer to execute logins, send messages, and publish or stream video.
 |
|
|
Secure Messaging |
ElectroServer's Secure Messaging feature ensures that the client and socket-server transfer relevant information to one another, and protects all subsequent client-server communications. Message encryption is enabled or disabled on a per-stream basis, depending on client requests. Once initialized, the server immediately launches into encryption mode, securing all messages. All subsequent messages transferred over that channel are then encrypted until the client requests that this feature be disabled. Message encryption is just one extremely effective means in which ElectroServer 4 secures client-server communications. ES4 also cryptographically hashes passwords used to log onto the system. This common security and authentication technique is used in many systems. In essence, ElectroServer and the client negotiate a dynamic key using the Diffie-Hellman Key Exchange algorithm, a well-established cryptographic protocol. Once the key has been established, the server and client securely communicate, while a DSA encryption algorithm encodes the messages. The Web-based administrator controls key strength and allows or disallows encryption.
 |
|
|
Game Manager™ |
Game developers often must repeatedly program specific functions into their projects every time they develop a new application, such as the ability to view a game list, or create or join a game. ElectroServer 4 is equipped with a built-in Game Manager that controls these tasks – giving developers flexibility and allowing them to effectively manage development time. Game Manager permits developers to allocate costly development efforts toward generating additional game content, instead of spending extra man hours on these repetitive tasks. Game Manager is also beneficial to new developers seeking a platform with off-the-shelf development solutions.
 |
|
|
Buddy List Support |
ElectroServer 4's Buddy List Support lets users/gamers register and track friends or “buddies” on the server. Much like a standard instant messenger (IM) platform, ES4's Event Handler extension enables users to acquire lists and portfolios of others on the network. The Event Handler uses a custom code to validate users against a central database and ensures that a user signed on with a correct and authorized username and password. Buddy List Support makes it easy for players to find friends, meet new friends, and obtain additional information about buddy activities and locations.
 |
|
|
Web-based Administration |
The Web-based Administration tool manages each configuration option for the server. When ElectroServer operates in distributed mode, Web-based Administration allows all remote gateways to be handled from one location.
 |
|
More Features |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EsObject |
EsObject supports a large number of data types. This object allows the server and client, or clients and other clients, to exchange simple or complex object structures that retain data types. This is useful for the client or the server to pass additional information along to extensions, user variables, room variables, or tagged onto standard messaging.
Another great aspect of EsObjects is that they allow data to be sent across languages cleanly and easily. A plugin written in ActionScript can create an EsObject and send it to a Java client, and both sides will treat it consistently. There is no need to perform any messy conversions.
 |
|
|
Binary, Text, & RTMP protocols |
ElectroServer supports communication via extremely lightweight text, binary, and RTMP protocols. Flash clients written using ActionScript 2 and ActionScript 3 use text and RTMP protocols. Flash clients written using ActionScript 3 gain even higher performance and reduce message size further by using the binary protocol. The text and binary protocols were designed from the ground up with a focus on reducing bandwidth and unnecessary overhead.
 |
|
Users |
When a client (Flash, Java, cell phone, etc.) connects to the server, it logs in. The server sees this client as a user and communicates with it as needed. The server has numerous ways in which custom-code can interact with a user. The server-side API even allows for data to be tied to a user and shared between other users and extensions seamlessly.
 |
|
User Permissions |
There are dozens of actions that a user can perform once connected to ElectroServer. Permission sets are created using the web-based Administration tool. A permission set allows or denies users access to each actionable item individually. During the login process the server assigns a default permission set to a user. By using a Login Event Handler the developer has control to assign custom user permissions to users based on custom logic. This provides exceptionally granular control of users activities and can be used to create a very secure environment.
 |
|
Rooms |
A room is a collection of users with a name and many useful properties. Rooms are used when playing games and chatting with a group of specific players. They are created as needed and automatically removed when empty. Persistent rooms are created using the Web-based Administrator and always exist.
Rooms have several configurable properties. A room can be hidden, password-protected, restricted to a certain number of users, and even contain hooks for creating video chat systems more easily. A room can be notified when a user in that space initiates or ends an A/V stream.
 |
|
Zones |
A zone is a group of rooms. A zone can be created for each supported language or game to help maintain server organization. Each zone is similar to a new instance of the server (with the exception of username uniqueness). They are kept separate. Zones are kept seperate; one zone does not receive updates about another zone unless a client requests it.
 |
|
Moderator Abilities |
The server supports a rich set of moderator abilities including kick and ban from a room, kick and ban from the server, add room operator, remove room operator, and more. The User Permission Set enables fine-grained control of exactly what a moderator can and cannot do.
 |
|
User Variables |
User variables allow the storage of user information on the server associated with that user in a name/value pair format. The value is an EsObject. As a user travels from room to room, other users see these user variables.
 |
|
Room Variables |
Dynamically create and modify variables in a room on the server. Room variables are an easy way to create information in a room that can stay there after the player who created it exits. Room variables are useful in games, and can be used for things like a whiteboard or scoreboard. The value of a room variable is an EsObject.
 |
|
Flooding Filter |
The flooding filter limits a flood messages and warns, kicks, or bans players automatically for flooding. The specific settings for the flooding filter are managed via the Web-based Administration tool, and can be set for the whole server as well as specific rooms. The system is flexible enough to support a different flooding filter for every room in the server, if needed.
 |
|
Language Filters |
By using the Web-based Administration tool language filter, lists can be created and named. Named language filters are used as directed by the developer. One filter can be used for usernames and one can be used for chatting. Each room is assigned a language filter, if required, when it is created. Every room can use a different language filter.
The language filter system is highly flexible and based upon the Trie data structure. Additionally, there are two distinct types of language filters: inclusive and exclusive. Inclusive filters are "white-list" filters, meaning that anything typed in must match a word in the list. Exclusive filters are "black-list" filters, which means that every word typed in by the user must not match a word in the list. To make the system more powerful, language filters support a series of options to strip out punctuation and white space, and perform sophisticated matching routines in an attempt to prevent vulgarity during chats.

|
|
Built-in Web Server |
ElectroServer has the ability to serve up files using Jetty, the built-in Web Server. Jetty is a full-power, commercial-caliber Web and application server. It can not only serve up static HTML pages, but it can also add Java Web applications to the server and access them online.
 |
|
Messaging |
ElectroServer supports public and private messaging. Public messages are sent from a player to a room. Everyone in that room receives the message. Private messages are sent from a player to one or more other players at once. Messages have an EsObject associated with them to allow simultaneous data exchange.
 |
|
User Server Variables |
User server variables are not seen by the client, but instead are convenience variables created by extensions on the server to maintain information on a user, such as a user's database ID. These variables are scoped to the user, but can be seen by any extension on the server. The value of a user server variable is an EsObject.
 |
|
User Extension Variables |
User extension variables are similar to user server variables, but they are scoped only to the extension that created them. The value of a user extension variable is an "object" of any type.
 |
|
User Plugin Variables |
User plugin variables are not seen by the client, but instead are convenience variables that can be tied to a user by a room-level plugin. They provide a simple way to associate data with a user without having to keep track of when users enter or leave a room. The server will clean up automatically for the developer..
 |
|
|