Unity3dAzure / AppServicesDemo

Azure App Services demos for Unity
https://www.deadlyfingers.net/tutorial/azure-app-services-for-unity3d
MIT License
27 stars 13 forks source link
appservice azure unity

Azure App Services for Unity3d

Contains a Unity 5 project featuring two demo scenes for Azure App Services (previously Mobile Services).

  1. Highscores demo scene
  2. Inventory demo scene

:octocat: Download instructions

This project contains git submodule dependencies so use:
git clone --recursive https://github.com/Unity3dAzure/AppServicesDemo.git

Or if you've already done a git clone then use:
git submodule update --init --recursive

Highscore demo features

App Services Highscores Unity demo video

Inventory demo features

App Services Inventory Unity demo video

Developer blogs

Setup Azure App Services for Unity

  1. Create an Azure Mobile App
    • Create 'Highscores' and 'Inventory' table for storing app data using Easy Tables.
  2. In Unity open scene file(s) inside the Scenes folder:
    • HighscoresDemo.unity
    • InventoryDemo.unity
  3. Then select the AppServicesController gameobject in the Unity Hierarchy window and paste your Azure App Service URL into the Editor Inspector field.
    alt Unity Editor Mobile Services config

Setup Azure App Services with Authentication

This demo uses Facebook identity to save user's highscore or inventory items:

  1. Create Facebook app
  2. Fill in the Azure App Services Authentication settings with Facebook App Id & App Secret.
  3. Paste Facebook access user token into Unity access token field to enable Login button.
  4. Modify 'Highscores' and 'Inventory' table script (using 'Insert' snippet below) to save user.id

Easy Table Insert script (tables/Highscores.js, tables/Inventory.js)

var table = module.exports = require('azure-mobile-apps').table();
table.insert(function (context) {
    if (context.user) {
        context.item.userId = context.user.id;
    }
    return context.execute();
});

Setup Azure App Services custom APIs with Easy APIs

With Azure App Services you can create custom APIs using Easy APIs.

  1. Create a 'hello' api (using "get" method) to say hello! (Example Easy API message script below)
  2. Create a 'GenerateScores' api (using "post" method) to generate 10 random scores. (Example Easy API query script below)

Easy API 'hello' script (api/hello.js)

module.exports = {
    "get": function (req, res, next) {
        res.send(200, { message : "Hello Unity!" });
    }
}

Easy API 'GenerateScores' script (api/GenerateScores.js)

var util = require('util');
module.exports = {
    "post": function (req, res, next) {
        var insert = "INSERT INTO Highscores (username,score) VALUES ";
        var i = 10;
        while (i--) {
            var min = 1;
            var max = 1000;
            var rand = Math.floor(Math.random() * (max - min)) + min;
            var values = util.format("('%s',%d),", 'Zumo', rand);
            insert = insert + values;
        }
        insert = insert.slice(0, -1); // remove last ','
        var query = {
            sql: insert
        };
        req.azureMobile.data.execute(query).then(function(results){
            res.send(200, { message : "Zumo set some highscores!" });
        });
    }
}

Known issues

This will enable PATCH requests to be sent on Android.

Credits

Dependencies included

Dependencies installed as git submodules

Refer to the download instructions above to install these submodules.

Questions or tweet #Azure #GameDev @deadlyfingers