Dashboard

Stormancer

  • Build faster

    Our libraries and server infrastructure hide the low level logic required to run modern realtime multiplayer games. Focus on your game, we do the rest.

  • Deploy and manage easily

    Never again fear putting new features online. Get up to date information about your software. Stay confident: You are in charge.

  • Scale to millions of users

    Our cloud infrastructure is able to scale with your user requirements. Benefit from every opportunity as your user base grows.

1: Code your client

                            //Create a Stormancer client for the live platform (you have an emulator too!)
                            var client = $.stormancer(Stormancer.Configuration.forAccount("accountId", "app"));
                            
                            //Connect to a scene using custom user infos (server authoritative data is possible)
                            client.getPublicScene(  'scene_name', userInfos, 
                            function (scene) {                                
                                
                                //Subscribe to the 'move' realtime server events with the onMove callback.
                                scene.onMessage('move', onMove);
                                
                                //Connect to the scene
                                scene.connect();
                        
                                //Send player avatar position to the server.
                                scene.send('move', { X: x, Y: y });
                            });
                    
                            var client = new Stormancer.Client(ClientConfiguration.ForAccount("accountId", "app"));
                            //prepare a connection to a scene with custom user data. 
                            //It's also possible to provide server authoritative data.
                            var scene = await client.GetPublicScene("scene_name", userData);
                            
                            //Subscribe to the 'move' realtime server events with the OnMove method.
                            scene.OnMessage<PositionUpdate>("move").Subscribe(OnMove);
                             
                            //Connect to the scene and start listening to server messages.
                            await scene.Connect();
                            //Send player avatar position to the server.
                            scene.send('move', new PositionUpdate(x,y));
                    

2: Write some server code

                            private Task Move(RequestMessage<PositionUpdate> message)
                            {
                                //Retrieve the user data (as specified when calling getScene in the client application)
                                var user = message.Connection.GetUserData<User>();
                                var msg = message.Content;
                                msg.UserId = user.Id;
                                //Broadcast the position update to all connected players.
                                return AssociatedObject.Broadcast("move", msg);
                            }
                    

3: Publish on Stormancer.

>stormancer deploy

You are done.

Get more samples on Github
  • Fully customizable
    Stormancer servers and clients are fully customizable and modular. On the client, use the platform you prefer. On the server, our modular architecture enables you to use and mix turnkey components and your own code.
    No limitation on your server code.
  • Realtime multiplayer
    Low latency client server communication through websockets (TCP sockets).
    Soon UDP, for highly efficient communication.
  • Cross platform
    C# & javacript client libraries.
    iOS & Android support under development.
    You need another platform? Let us know!

Demos

Some javascript samples and components using Stormancer. Source code available on Github.

  • Chat
    A simple chat, easy to integrate in any web app.
  • 3D Isometric
    Built using pp3Diso. Special thanks to Prelude Prod for the base sample.
  • 3D webgl
    Built using Babylon.js & Game FX. Thanks a lot to the GameFX team for the original sample.

Pricing

Tools and libraries available free of charge.

  • Free
    Low performance mutualised hosting. Ideal for prototyping and testing.
  • Standard
    Billed per compute hours.
    20€/Month per compute unit.
    More information available soon
  • Custom
    Customized solution with dedicated servers
    Contact us and we will work a custom solution for you!

News

  • Creating a chat: javascript client

    In the last post, we saw how to put online the server logic of a simple chat. Now we will speak about the client.

    Stormancer offers cross platform development and compatibility, with currently javascript and .NET (WinRT, Windows, Mono, Unity) supported (more to come in the future).

    In this article, I will focus on javascript. I will omit the HTML part of the code, it is available on the full working sample and has nothing special anyway. The live demo is here.

    In order to create the server application running on the Stormancer platform, see this post.

    Let’s go, javascript!

     

    First, reference the required scripts in your HTML page:

    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://stormancer.blob.core.windows.net/libs/js/jquery.stormancer-0.3.min.js"></script>

     

    then create a stormancer client by providing an accountId and application name.

    var client = $.stormancer(Stormancer.Configuration.forAccount("accountId", "appName"));

     

    The client provides you with all the facilities to connect, send and receive messages from scenes.

     

    Now get the scene you want to connect to from the API:

    client.getPublicScene("room1", { Id: this.userId, Name: this.username })

    This will get connection informations for a public scene (accessible without authentication), and associate this connection with a session object containing an Id and a Name.

    Using a private scene, it is possible to provide this data from a trusted source (like your own webserver).

    getPublicScene returns a promise completed when Stormancer is ready to accept the connection.

    .then(function (scene) {
      _this.scene = scene;
      scene.onMessage('message', function (msg) {
         var el = document.createElement('p');
    
         _this.content.append($(el).text(msg.UserName + ' : ' + msg.Text));
       });
       scene.onMessage('user.Add', function (users) {
           for (var i = 0; i < users.length; i++) {
             var user = users[i];
             var el = document.createElement('li');
             _this.users.append($(el).html(user.Name).attr("id", "user-" + user.Id));
            }
      });
      scene.onMessage('user.Remove', function (id) {
          $("#user-" + id).remove();
      });
    

    Once the API returns the scene object, it’s time to bind your events to it. Use the onMessage method to register callback functions with the scene “routes” and be notified when the scene send data to your client app through these routes.

     

    You are now ready to connect to the scene and start sending and receiving messages.

    scene.connect()

    This function returns a promise you can use to perform actions when your app is finally connected to your Stormancer app, like for instance hide a loading screen.

    .then(OnReady);

     

    To send messages to your server scene, use the send method on the scene object:

    scene.send('message', this.textBox.val());

    the first parameter is the server route on which to send the message, the second a javascript object to serialize and send. Here we send a string, but you could use the method with any json object.

     

    You are now done. In this post, we covered the basics of Stormancer through building a chat in javascript. If you have any questions and remarks, feel free to comment!

  • 02/28: Pitch my game 4

    Next February the 28th, the first independent video game event in Paris will come back for a new edition.

    Last edition was a little crowded in a little pub, but this time the Isart Digital school  will host it. All the conditions for a successful event should be gathered, and if the speakers for this edition are half as good as the one from last time, it will be an event not to be missed.

    Among the speakers will be our team. We will proudly present the Stormancer product itself, and also a game we are currently creating ourselves to demonstrate the capabilities of our platform : Guardians of Kea.

    Stay tuned to learn more about Guardians of Kea soon !

  • New Website

    Our website is a fashion victim.

    There were sales across the street, so we decided to offer it a whole new look ! And also a new logo.

    The new website should be more beautiful, clearer and easier to read. And we believe it communicates the concept of our product better.

    Enjoy!

Team

We love technology, game development and good cooking (We are French after all). As a team, we are thriving passionately to build the product you really need, not the one we think you should (maybe) need.

Our motto: Make the developer's life easier
  • Jean-Michel
    Our enthousiastic cloud stirrer. However, 42 ideas per minute can sometimes be too much to bear. Thankfully we make him shut up by giving him even more work to do.
    Florie
    She can do almost anything, and what she can't, she learns fast (Maybe too fast, we fear she could get dangerous). And she makes sure everyone does what they have to. And do it RIGHT NOW.
    Jean-Noel
    Our big teddy bear. He codes, a lot, grumbles a little, but he also loves speaking passionately with game developers about their job, learning eagerly about what they need.