GithubHelp home page GithubHelp logo

microsoftdx / nether Goto Github PK

View Code? Open in Web Editor NEW
80.0 80.0 47.0 55.87 MB

Building blocks for gaming on Azure

License: MIT License

C# 97.15% PowerShell 2.85%
analytics azure gaming nether player-management

nether's People

Contributors

amykatenicho avatar andycross avatar ankodu avatar avodovnik avatar brentstineman avatar catamykx avatar charlieoliver avatar deadlyfingers avatar dgkanatsios avatar jammybrand82 avatar krist00fer avatar liupeirong avatar navalev avatar oliviak avatar stuartleeks avatar vflorusso avatar vincentvanderwalt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nether's Issues

Setup server side analytics pipeline

Setup the basic infrastructure to support incoming game events in order to support #3

Important to accomplish:

  • Setup should be fully automatic and incorporated in the overall strategy for deployment of resources in Nether according to #7
  • Investigate and understand how authentication and discovery of this service endpoint should work from the client side

Merge projects in the short term

In the discussion with @krist00fer yesterday about project structure, my initial reaction was that we'd decided on the requirements and structure and should just "suck it up". I spent some time thinking about it afterwards, and now I think I've changed my mind!

A large part of the current project structure is driven by the desire to be able to run and scale each service independently. However, the split in the projects is also slowing the implementation and iteration of design, has added some extra challenges for the "clone, build, run" developer experience, adds complications for deployment (which also impacts integration testing), and potentially complicates authentication.

All of these are challenges that we will need to face, but after thinking about it last night I'm not sure whether they're challenges that we want to face now. My feeling is that we would be better of accelerating the initial implementation of the API, build & run, integration tests etc, as this will allow us to have something to share (both with other people interested in contributing and with people who we're targeting as users of nether). With a bit of thought, we should be able to set up a structure that helps to minimise the amount of code refactoring when we are ready to pick up the work of splitting the services out again.

Thoughts? :-)

Add extensibility

Enable extensions to be specified in configuration and registered with DI. (According to #134 )
E.g.

  • when loading data store implementations it is expected that there will be an interface for this, and implementations can be specified in configuration
  • if a service needs to talk to another service it is expected that this will be implemented as an extension (e.g. if leaderboard needs player info). Again, this is expected to be defined in an interface with the ability to specify the implementation in configuration

Create deployment solution

In order to support #6

Nether need to be super easy to deploy, hence deployment should be fully automated and documented. We need to figure out if using ARM Template(s) will be enough or if we even need to create some kind of configuration/deployment tool (that in the end might use ARM Templates) in order to fully automate deployment and configuration of the project.

Important things to accomplish:

  • Gamedev should be able to deploy fully setup solution with no or minimal knowledge of Azure
  • Gamedev should be able to select what building blocks to use in their solution and therefor only deploy necessary parts correctly configured to work with each other.

Setup RESTful API to support reporting of high score

In order to support #4

Setup and implement first API to support authenticated incoming requests from game clients to publish game scores. This is the first feature in a series of more features that will all support the full high score services in Nether.

Important things to accomplish:

  • Configurable authentication that should easily (and by default) integrate with Nether's built in user management, but should not force the use of such.
  • Setup and implement this one testable API with full support for automatic testing. This should serve as a foundation for all further testing that will be done.

Add Authentication

Add authentication - should cover:

  • local, offline development (#35)
  • enabling identity in module projects (e.g. Leaderboard) (#37)
  • work out how authn/z works for gamer vs publisher (#38)
  • Support first sign-in flow, i.e. no gamer tag yet
  • Support subsequent sign-in, and set gamer tag in claims
  • Enable non-temp certs (#257)
  • Enable persistent user store (#169)
  • Enable persistent user grant store (#230)
  • Enable interactive flow (#259)
  • Self sign-up with username and password? (#258)
  • Azure AD B2C (#36)
  • understand how authn works from Xamarin (#40)
  • understand how authn works from Unity (#41)

Steps to make it easier to broaden involvement

We've talked a few times about what we need to get in place before opening this up to broader involvement, so I've created this issue to discuss/track what those pieces of work are :-)

This is just a starting point for discussion ;-)

  • Instructions on how to clone, build and run the solution #99
  • Guidelines on contributing #100
  • Define the MVP #98
  • More complete API design to enable people to pick up a piece of a service and get started implementing (focus on the MVP)
  • Authentication - start with facebook auth #41
  • deployment?
  • Integration tests for the existing code

Agree/disagree?...

Setup flexible project solution

In order to support User Story #6

We need a flexible and configurable project solution that should:

  • Support working on from Windows and Mac
  • Have solid support for configuring different building blocks of Nether
  • Have a good foundation to build and maintain automatic testing
  • Have a fully automated build solution

As a player, I can sign up to the game

Players should be able to sing up to the game with their existing social accounts (Facebook, Google, Amazon, LinkedIn) or by creating new credentials (email address and password, or username and password); we call the latter "local accounts."

Define the MVP

As per #85, we need to figure out what the MVP is. This might be a scenario to demo, or the scenario for an interested partner. Having this will focus efforts on API design etc

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.