Web games, Flash and Actionscript.

Sanguine Server

/* Edit

I realize I type-ramble in this article and some of the concepts are probably way over people’s heads who haven’t tried doing multiplayer games yet, so here’s the basic point of this post. We are making a kick-ass multiplayer server and will be providing affordable hosting services for people who want to do some cool multiplayer games. Because we want to make something developers will enjoy using, I’m hoping to get some discussion going. Ask questions about what we are doing… let us know what features you want… etc….

End Edit */

Any followers of my work, probably already know I have been working with my partner, Brendon, on developing a developer-driven multiuser communication system.

Our proof of concept server has been done for a while now, and has addressed several issues that are lacking in commercial servers like SmartFox, ranging from good multi-room support, and efficient packet management.

While version 1 of the server has had a good run, it’s also a bit of a frankenstein. It started nearly 3 years ago with simple features, and as we flushed out what we expected from a good communication server, we kept adding more and more until a monster was born.

With any monster, you get awesome power, and a lot of unpredictable results. Version 1 was no different. Random bugs, memory leaks and poor management tools have made it a bit of a hassle to work with, in spite the superior feature set.

With the version 1 features designed and tested, we realized we still had a lot more room for improvement, and some of our concepts still needed to be fleshed out better, and so we have started work on Version 2.

Sanguine Server is being designed with 2 goals. The server itself is being designed to be superior to any other socket server currently available, and the platform as a whole is being designed as an affordable solution for independent developers who may not have the resources to verge into the realm of multi-user applications and games otherwise.

Developers who have played with solutions like SmartFox Server and Electroserver are probably familiar with the limitations of xml-based communication systems. The packets are large, use a lot of bandwidth, and take more time to transmit and process. These kinds of systems make it difficult to self host while keeping within your monthly bandwidth quota. While we certainly have more bandwidth at our disposal than many other developer, that is still an issue that looms over our work.

Sangune Server 2 will use a combination of JSON serialization and command/variable indexing to compress commands as low as possible, and allow for even further compression using custom strings for higher frequency events. These options should make it possible to develop fast, high-speed multi-user applications that use minimal bandwidth.

The feature set of the server will provide a level of flexibility unseen by other solutions. Developers will have top level namespaces for each application they plug in to the system with fully configurable options, ranging from admin/moderation access control, to limiting command access and building custom event subscriptions and command filters.

You will be able to communicate with any user in the namespace, regardless of what area they are in, you will be able to receive real-time updates on other users and areas by subscribing to their events, and be able to stop these subscriptions at will.

You will be able to configure a variety of variables for users and areas and not be limited to simple numbers and strings. We will support unlimited array and object trees and provide a familiar dot syntax format for utilizing these variables.

You will also be able to define any number of custom parameters on users, areas and variables that can be used for custom retrievals and filtering out unneccesary variables and parameters.

The system will be treated as a hosted service with a variety of need-based plans, hopefully starting as low as $5 a month and going up from there. Each server plan will allow you to use a custom, secure gateway to authenticate users from your own website, and send information to custom scripts for full site integration.

Our security model protects you from other developers using insecure applications as each developer is limited to their own sandbox and all have unique security keys. Additional security is added by locking all commands until a user is identified, and using unique sessions and RC4 encryption.

To make our platform even better, we also will provide a flash API that handles all the communication logic and data serialization. Not only that, but extended classes will be available for more advanced techniques, and sample files will be provided that not only teach you how to use the platform, but how to use it efficiently to get the most out of your account.

If that’s not enough, we are also exploring the ability to create server-side clients for things like game hosts and chat bots using javascript. These clients would be able to add additional power to your applications by offloading certain duties from the user clients and performing functions to sync your applications and enforce rules. This option is being explored on the premise that we will be able to police these scripts for cpu usage and infinite loops, and be able to terminate them without any effects on other users.

Because I am a flash developer, I feel I have a certain insight into what features and functionality this platform should have, because these are things I want to be able to do so I don’t have to hack my own programming to fake things. I also know that just because I don’t think of something, doesn’t mean there is no demand for it. With that in mind, Sanguine Server 2 will be completely open for developer discussion, and we will be constructing it in a modular fashion to allow for server extentions should the need arise for them.

If these are common requests, we will expand the server to meet the need. For more specific extentions we will also provide development services for anyone who wants to pay for more custom expansion on their account.

we hope to provide a solution unlike anything available, and any thoughts you readers may have are certainly welcomed. I know my ramblings are probably over some of your heads, so if you would like anything explained a little better, I’d be happy to do that as well.

10 Comments so far

  1. Rax @ May 23rd, 2007

    Looking forward to it. Will there be any database support?

  2. Josh @ May 23rd, 2007

    probably no direct database support, however there is really no limit to what you can do using the http gateway.

  3. Rax @ May 24th, 2007

    For the server hosting, will pricing be based off number of users allowed to connect, or bandwidth, or both?

    Also, will there be a version available to download that I could run off my server for a onetime fee or something?

  4. Josh @ May 24th, 2007

    The pricing will be based on both, though the number of connections will really be what keeps your bandwidth within a certain range.

    For the time being we won’t be selling the actual software, but we may work with some bigger sites who want to host access points and do reseller deals of some kind.

  5. Psycho Ninja @ May 29th, 2007

    I don’t really understand XML is there any place were i can get a tutorial on it because i was thinking of doing an MMORPG….

  6. Josh @ May 29th, 2007

    XML isn’t really as complicated as you would think… it’s just a markup language for structured data. Think of it as a text based database. If you google around for an xml tutorial you will find a ton of them.

    Sanguine Server doesn’t use xml though. We use a JSON based protocol for converting objects to packets…. the nice thing is this is all handled by the flash API, so if you want to make games, you never need to learn anything about JSON or XML. You just use native flash variables, arrays, objects etc…

  7. Psycho Ninja @ May 30th, 2007

    Okay, that’s cool, could you possibly do a small tutorial on this?

  8. Lunatic Bob @ June 1st, 2007

    Hey, i don’t know if you made the Pico Roullete Game on Newgrounds, but how long do you think a game like that could take for one person?

  9. cksachdev @ October 8th, 2007

    Hi Josh,
    Could you provide me with a comparison table of Sanguine Server and Smartfox Server and what are the additional functionalities and by what time you are ready with a release. :)

  10. Nick @ October 8th, 2007

    Have you checked out oregano or electroserver? As far as I know they both have APIs for actionscript and can be tweaked to handle what you’re describing…and oregano is open-source (free)

Leave a reply