Getting Started Guide

This guide will get you up and running on Hydra in minutes. You may find the Glossary a useful companion.

Sign Up

Go to our dashboard and sign up for a Developer Account. Each developer account can act as its own organization, and you can later provide access to other developers for any given project or environment.

Projects

The first thing you’ll need to do is create a new project for your game, which you can do from the Dashboard. Name your project and click the Create button to create it. This name is private to your organization and does not have to be globally unique. It is recommended that you name the project after the code name of your game. After creating your project, a Development environment will be created automatically, and you can navigate to this environment listed under the project name.

Each project should correspond to a single game. If you have many different platforms on which your game is deployed, even if the platforms vary considerably, it is recommended that you use a single project in Hydra to manage all of them. You should also use the same project in cases where you have expansion packs for your game.

A project will provide you with basic statistics and management features, such as profiles, achievements, broadcasts, and leaderboards.

Environments

The environment is the core unit in Hydra and can be thought of as a combination of the utilities provided by branches in code versioning tools and an associated data store. Each environment is completely isolated and so can be used for keeping platforms separated in production or keeping developers and testers isolated from each other.

When working within a project, you will see a list of the named environments and a form to create a new environment. The environment name is private to your organization and the project, and though it does not have to be unique, it is strongly recommended that it be unique within the project.

In addition to the data stored by services, each environment also has the following unique attributes:

  • API keys
  • Configuration
  • Usage statistics

Typical use cases for environments include:

  • Separate configurations and data for each developer
  • Seeding a data set and cloning it for tests
  • Separating production data between 1st party platforms

When your environment is created, it will automatically create your first API key. You can choose to use this or delete it and create your own.

API Keys

API keys are used to allow access to API clients, whether they’re games, community web sites, companion applications, or other consumers. Take care as to who you share them with, and always err on the side of caution by issuing separate keys to 3rd parties. Each key will have visibility to all of the data within an environment, but you have control over whether a key can write or change data. In cases where a game is running on a platform that supports 1st party authentication (e.g. Steam), you can configure the API key with your Steam credentials which Hydra will use to validate all requests. An API key can be configured for a platform, which in turn will be used to tag all data with the type of device on which a game was played. You’re free to use a single API key for all platforms, though it is recommended that you issue one for each platform. [1]

Updating Data

For many features in Hydra Studio, you’ll want to access and update data, whether it be account data, profile data, match data, etc... Here we’ll show you why utilizing our Commands Object and Map Helper Object will make accessing and updating data much easier. The full documentation for the Commands Object feature can be found on the Data Updates page.

The Commands Object

Updating Hydra Studio data is done through the Commands Object. You can use the Commands Object to increment, decrement, set, or unset a data field (or push/pop data, if the data type is an array). Updating multiple data fields with a single Commands Object is also possible. Full documentation on working with the Commands Object can be found here.

As an example, let’s say you made a multiplayer fps game, and you wanted to keep track of a player’s kills, deaths, and assists. After each match, you could create a Commands Object to update the user’s stats, and then send it off to Hydra to update all three stats with a single Hydra Call. Here’s an example of a profile update, after a match in which a player had 8 kills, 4 deaths, and 2 assists:

  • //Documentation coming soon.
    
  • Commands commands = new Commands();
    
    commands.IncValue("data.stats.kills", 8);
    commands.IncValue("data.stats.deaths", 4);
    commands.IncValue("data.stats.assists", 2);
    
    client.MyProfile.Update(commands, delegate(Request request)
    {
        // ...
    });
    
  • //Documentation coming soon.
    
  • //Documentation coming soon.
    
  • Documentation coming soon.

The Map Helper Object

The Map Helper object allows you to easily query into a map and access nested values. The full documentation for the Map Helper object can be found here. Accessing map data can be done without the Map Helper class, but using the Map Helper object is definitely a simpler option. Here’s an example of us making a fluid matchmaking request, both with and without the Map Helper object:

  • Documentation coming soon.
    
  • //With MapHelper Object
    Dictionary<object,object> data = new Dictionary<object,object>();
    MapHelper tempMap = new MapHelper (data);
    tempMap.SetValue ("data.stats.onJunglelevel.onTuesdays.score", score);
    Client.Instance.Profile.FindMatch(criteria_id, data, delegate(System.Collections.Generic.List<Profile> obj, Request request) {
    
    //VS.
    
    //Without MapHelper Object
    Dictionary<object,object> data = new Dictionary<object,object>();
    data["data"] = new Dictionary<object,object>();
    data["data"]["stats"] = new Dictionary<object,object>();
    data["data"]["stats"]["onJungleLevel"] = new Dictionary<object,object>();
    data["data"]["stats"]["onJungleLevel"]["onTuesdays"] = new Dictionary<object,object>();
    data["data"]["stats"]["onJungleLevel"]["onTuesdays"] = score;
    Client.Instance.Profile.FindMatch(criteria_id, data, delegate(System.Collections.Generic.List<Profile> obj, Request request) {
    
  • Documentation coming soon.
    
  • Documentation coming soon.
    
  • Documentation coming soon.

Next Steps

You may wish to continue on from here to our platform-specific documentation:

Alternatively, browse through our features.

Footnotes

[1]As of 2/11/2013, API keys are all read-write and not yet configurable. Advanced features coming soon.

Table Of Contents