Coder Social home page Coder Social logo

krist00fer / appservicesdemo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from unity3dazure/appservicesdemo

0.0 1.0 0.0 282 KB

Azure App Services demos for Unity 5

Home Page: http://www.deadlyfingers.net/azure/azure-app-services-for-unity3d/

License: MIT License

C# 100.00%

appservicesdemo's Introduction

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

Highscore demo features

  • Client-directed login with Facebook
  • Insert Highscore
  • Update Highscore
  • Read list of Highscores using infinite scrolling (hall of fame)
  • Query for today's top ten highscores (daily leaderboard)
  • Query for username (user's scores)

App Services Highscores Unity demo video

Inventory demo features

  • Client-directed login with Facebook
  • Load User's inventory.
  • Save User's inventory. (Inserts if new or Updates existing record)

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

  • There is an issue with PATCH on Android using UnityWebRequest with Azure App Services. Android doesn't support PATCH requests made with UnityWebRequest needed to perform Azure App Service updates. One workaround is to enable the X-HTTP-Method-Override header. Here's the quick fix for App Services running node backend:
    1. Install the "method-override" package.
      npm install method-override --save
      
    2. In 'app.js' file insert:
      var methodOverride = require('method-override');  
      // after the line "var app = express();" add  
      app.use(methodOverride('X-HTTP-Method-Override'));
      

This will enable PATCH requests to be sent on Android.

Credits

Dependencies included

Questions or tweet #Azure #GameDev @deadlyfingers

appservicesdemo's People

Contributors

deadlyfingers avatar krist00fer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.