The goal of this site is to put relevant and applicable tools and information at the fingertips
With this blog we want to inform you on our latest initiatives.
Enjoy reading and stay tuned!
The architecture has a logical layout (below). It looks complex, but the blog will hopefully explain it.
When architecting our game your need to consider what the components, described below. Some are apps (the clients), and the rest are cloud services.
The clients are the apps that game players download to their devices. Each app must be developed for the particular device, but they must all have behave the same. The game is the same, just the UI changes.
When building a game today you want it to be played on the most number of devices so, ideally it should be capable of being played on Windows Phone 7 and 8, Windows 8.0 and 8.1, iOS, Android, and Kindle.
To enable maximum platform support communication is enabled using REST APIs. The experience of playing the game should be smooth and seamless. A key factor is to ensure that the client app makes the minimal number of calls (after authentication).
When developing your client its key to ensure that each of the client has a thin hardware abstraction layer (HAL). the HAL must contains the code necessary to display and process the UI controls, along with the code that initiates contact with the Visitor Center and the code that interacts with a Game Room.
The first stop for a player is the Visitor Center. So think of the Visitor Center as the landing page for your game i,e. you’ll find the leaderboard results and a directory of the gamer IDs. You can also find a friend on the system through the leaderboard.
When the player starts the game, the client app authenticates the player with either Facebook or another authentication services (using a username and password). The client app then sends the Visitor Center the identity of the player (via a token). The Visitor center confirms the identity by contacting Facebook or other authentication services to verify the token (and thus the player). Once confirmed, the Visitor Center sends the client app a new URL that goes to the Game Room where the user will be playing.
Note that if the user does not sign I, you may want them to allow them to play as a Guest (guests may be simply unranked or wouldn't be issued persistent stats or friends).
The Game Room consists of 3 APIs that interact with the client.
1) Game: Sends the current puzzle to the client.
2) Post: Receives the user’s individual results from the client.
3) Results: Sends the leader scores and relative ranking of user to the client, along with the next puzzle.
You may want to geo locate each of your games rooms, best practice is to locate each Game Room on the continent with the greatest player base – so European languages are housed in European data centers, for example. The hard cases are English, Spanish, and Portuguese, which have broad, world-wide audiences. English is played from everywhere, but is most concentrated in the US, UK, India, and Australia. Spanish is split between Spain and Latin America. Portuguese is most heavily played from Brazil, but there are still plenty of players from Portugal and other parts of the world.
When a game ends, each client sends the player’s results to the Game Room. The Game Room has an Azure load balancer in front of it that distributes the results to one of its three web roles. Because the results are randomly scattered, they must be gathered into one central spot—the aggregator.
The inner working of the aggregator is an Azure Cache. Caches are used in computing because they take the pressure off a system by holding recently stored data in memory and letting many operations access the data. Because the data is in memory, it can be instantaneously returned to any operation. The cache operates instead of a database engine that would otherwise query for a particular result. Multiply the queries and the database quickly reaches its capacity to respond. Caches are tried and true time savers.
Here’s what happens between the GR and the aggregator.
After a game ends, each Game Room web role receives the individual client results. The web role then sends all of its accumulated results to the aggregator. Note that due to retries, there may be duplicate client results received by the Game Room and received by the aggregator. (Two people sharing the same Gamertag while simultaneously playing using different devices also causes duplicate client results to be received.) Then, the aggregator sends all of the Game Room web role results back to each Game Room web role, as shown in Panel 3 of the diagram above.
Each Game Room web role removes duplicates and sorts the results, and sends the top results and individual results with peer ranking back to the client. After the next round starts, each Game Room writes its buffer of unsorted results to blob storage. Each blob is named in the form <puzzle language id>-<game id>-<instance number>.txt, and consists of Comma Separated Values (CSV) data.
Leader Board Orchestrator (LBO)
The LBO does the heavy lifting for the app. It works in close partnership with the two database stores that conceptually flank it to create the “best of” lists (best of right now, best of the hour, best of the day, best of the week).
When the Game Room and the aggregator have finished the results reporting work, the LOB starts.
It first gets the results of the game from the newly written blob storage. It then processes the data to create in-memory tables that are inserted into an instance of Azure SQL Database. Once the data is inserted into the database, a large number of queries, in the form of stored procedures can be run against the data. To preserve the integrity of the data, stored procedures are the only way used to determine stats. The integrity of the data can also be checked during the process. The LBO can use more than one worker role to process the data. The results can also be compared. If any discrepancies arise, then the worker can be immediately stopped, and a new worker started to retry the processing.
There is another component, although it is more of an infrastructure piece. The “Headquarters” service is used to run tests against the various other parts of the game. For example, it runs the test-bot that makes sure the game rooms (in all languages) are working. It also checks the integrity of the database operations. If a worker role running an operation creates a result that is different from others, the worker is terminated and a new one started. The headquarters handles those administrative and quality assurance duties.
And finally, a server that is on-premises builds and deploys the whole system, every night. The build system is automated, and Azure REST APIs enable deployment. The function is key in protecting the integrity of the system by only allowing only the build scripts to perform the tasks. No one physically should have the permission rights to build and deploy manually.
Azure Blob Storage
How to use the Windows Azure Blob Storage Service in .NET
Azure Cloud Services
Windows Azure PowerShell
Azure table storage
What is a Storage Account?
Azure SQL Database
Visual Studio Online
Batching Techniques for SQL Database Applications in Windows Azure
Cloud Services are just one of Azure’s compute models. Think of a ‘compute model’ as the motor of a vehicle. Every type of powered transportation needs an engine to roll, fly, or sail. In the same way, every Azure app needs an engine to process data and perform tasks. But the motor is specialized to the vehicle’s demands. A compute model serves computing power in one way or another, but is optimized for different service types.
Azure has four compute models, each optimized for different uses:
· Websites: these are designed for only one purpose—to serve websites by executing server-side code such as PHP, ASP.NET, Python, and node.js (along with SQL for databases). You only worry about the website code—not the system that it runs on.
· Virtual Machines: Virtual Machines include nearly everything that a hardware-based system contains—an operating system and virtual disk space, in addition to the virtualized processing power. Like a real machine, you are responsible for installing software and keeping the system patched.
· Mobile Services: a mobile service is a turnkey backend for a mobile or other connected client app. It provides infrastructure for server-side storage, user authentication, and handles push notifications. A single mobile service is often used to coordinate app activities across client platforms like Windows, Android, iOS, and HTML.
· Cloud Services: Cloud services are made of “roles” which are like VMs, in having a system and small virtual hard disk. They have one bonus: you do not have to maintain the operating system. The downside is that any role can go down without warning. Therefore, it is best to code these as stateless entities—with no knowledge of what happened before or what will happen later. Roles should be autonomous and ready to immediately resume the task at hand whenever they start. They are called ‘roles’ because they are adapted to specific kinds of tasks. A web role is built to communicate on the web using IIS to serve websites or web services. In contrast, a worker role only runs the methods of the application—it is a VM dedicated to computing without the overhead of IIS.
Understanding the Opportunity of Cloud
Sign up for a Free One Month Trial via http://azure.microsoft.com/en-us/pricing/free-trial/
Check our Architecture BluePrints of Cloud Based gaming
One of the most successful word games on phones and tables is Wordament. The game is played by thousands of players, every day. It’s played on Windows phones, tablets, and PC, phones and tablets from Apple, and devices built on Android—including Kindle devices. It’s played around the world in over a dozen languages. And it’s all run on Azure.
Here are some interesting facts:
· It’s been downloaded and enjoyed by millions
· They have about 500 million game results stored
· Every puzzle is unique
· Over 7000 concurrent players have participated at a single instant in time
· After a game ends, the leaderboard for the worldwide session is shown
· During a game, everyone using the same puzzle language plays the same game for two minutes at time—everyone is connected at the same time
· The bits are located in four datacenters around the world
· They roll out a new build every night using “a ton of PowerShell scripts and TFS”
· They log everything. Data is so cheap, their data costs $45 a month
· C# is the only language used to code all parts of the game
So how does the game actually work?
1. Wordament is a game that presents a grid of 16 random, different, letters in a four by four grid. Each letter is on a tile. Each letter has a score. None of the letters are duplicates.
2. To score, you must start at a letter, and connect to an adjoining letter. You can go left, right, up, down, or diagonally. You cannot reuse the same tile.
3. The goal is to spell as many words as you can. Only words that are spelled correctly are accepted. Longer words have higher scores.
4. Every two minutes, a new game starts. Players from all over the world are playing the same game (the same four by four grid). (Different languages have their own grids and games—so people playing the English board only play against each other—not Spanish or Finnish.)
5. When the game ends, results from all players are collected, and the highest scores (and the user names of the player) are shown on the leader board.
6. After 45 seconds, the leader board disappears, and a new game begins.
7. The total playing/scoring cycle is 2 minutes and 45 seconds (165 seconds).
One factor contributes to the success of the game: its smooth playing experience—and this is also a result of the architecture. When playing the game, new games start and stop without missing a beat, and instantly leaderboards are shown. So around the world, such as playing on a train in Africa, you can still get a reasonable response and keep playing. That feeling of effortless response is key to keeping the game going—and that is also a product of the architecture.
So what is the Architecture behind Wordament
see the following 3 part blog at http://msdn.microsoft.com/dn774975
In partnership with Studica, Unity3d has discounted costs. Here’s a link to the page.
Also, Autodesk, creators of Maya, 3DS Max, etc., also have FREE versions of their tools for students.
Microsoft offers DreamSpark to Students and FREE developer accounts to get your apps and games published on Windows 8, Windows Phone and Xbox 360 for FREE
Microsoft offers BizSpark to startups, and night time project devs working on their own thing.
Get up to speed by undertaking the follow Microsoft Virtual Academy intro to Developing 2D & 3D Games with Unity. This training was delivered by Adam Tuliper, David Crook, Dave Voyles, Tobiah Marks, Jason Fox, Carl Callewaert (Unity) and Matt Newman.
Get up to speed by undertaking the following Microsoft Virtual Academy hosted a Porting Unity games to Windows Store and Windows Phone training event.. This training was delivered by Mickey MaDonald and Jaime Rodriguez.
Porting to Windows is easy and profitable check out the following videos..
· http://channel9.msdn.com/Blogs/The-Game-Blog/Inside-Unity3d-for-Windows-Phone -- is an interview with Tautvydas (one of the Unity devs for Windows Phone)
· http://channel9.msdn.com/Blogs/The-Game-Blog/The-Bridge -- is the winner of our Unity contest and also the Unite 2014 award for best 2D game.. You gotta get this inside story (especially if you were an XNA fan before)..
· http://channel9.msdn.com/Blogs/The-Game-Blog/The-Veil -- is the winner of 3rd place on our Unity contest..
· http://channel9.msdn.com/Blogs/The-Game-Blog/Owlchemy-Labs -- Alex Schwartz is a creative whiz.. super cool, super eloquent.. and a one to watch
· http://channel9.msdn.com/Blogs/The-Game-Blog/Zoo-Tycoons-Friends -- is a solid story on our own Microsoft Studios Zoo Tycoon friends game.. Matt Roberts from the Zoo Tycoon team show how they reused their C# logic on Unity and Azure..
· http://channel9.msdn.com/Blogs/The-Game-Blog/Luc-Bealieu-of-Frima-Studio -- these folks are super creative.. they are the publisher for the Nun Attack series of games, and Zombie Tyccoon
· http://channel9.msdn.com/Blogs/The-Game-Blog/The-People-Behind-the-Unite-Conference -- has an interview with our dear friends at Unity Carl and JC
The new D instances have solid-state disk (SSD)-based local drives and faster processors relative to many of the A-series instances.
The D-series instances can be used as VMs, as well as web or worker roles in Cloud Services, and are well suited for applications that demand faster CPU performance, local disk performance, or higher memories. Please note that the SSD drives in the D-series are non-persistent.
For more information, visit the Virtual Machines webpage.
To get a comprehensive look at pricing, visit the Virtual Machines Pricing Details webpage
If you are new to Cloud and Azure try Azure with a Free one month trial* Sign-up for free and get €150 to spend on all Azure services http://azure.microsoft.com/en-us/pricing/free-trial/
Want to learn more about Cloud Services undertake one of our FREE Microsoft Virtual Academy Session http://www.microsoftvirtualacademy.com
Free on a Tuesday attend one of our UK specific, learning Webinar http://blogs.msdn.com/b/uk_faculty_connection/archive/2014/09/19/getting-started-with-azure-webinar-every-tuesday-lunchtime-live-demos-of-websites-cloud-services-vms-and-mobile-services.aspx
If your a educator or researcher you apply for a FREE Azure academic pass from www.windowsazure.com/education
The Microsoft UK team are spending every Tuesday to teach you how to use free cloud computing resources from Microsoft Azure cloud and cloud computing concepts.
So why not learn how to develop beautiful, interactive and fast websites using Microsoft web tools and platform!
You also have the option of attending our physical Camp so here is a list of our events for Sept and Oct.
At this Web Camp, you’ll learn how to develop beautiful, interactive and fast web sites using Microsoft’s web tools and platform. You will also learn how to deploy and scale your web sites with the cloud.
Getting Started With Azure
The Azure Weekly runs every Tuesday from 12:30 – 13:30 (UK timezone) and is aimed at the techie who has not yet had any/much exposure to Azure but who just wants a leg-up to get started.
Getting Started With Azure
Getting Started With Azure & Guest Speaker Richard Conway from Elasta Cloud – Big Data
The Azure Weekly runs every Tuesday from 12:30 – 13:30 (UK timezone) and is aimed at the techie who has not yet had any/much exposure to Azure but who just wants a leg-up to get started. We have invited Richard Conway, MVP for Azure, to show you how to get started with Machine Learning on Azure
Getting Started With Azure & Game Development Guest Speaker L.Deane Gateway Interactive
The Azure Weekly runs every Tuesday from 12:30 – 13:30 (UK timezone) and is aimed at the Game Developer who has not yet had any/much exposure to Azure Cloud Services
Getting Started With Azure & Guest Speaker P.Norris from Madfellows
The Azure Weekly runs every Tuesday from 12:30 – 13:30 (UK timezone) and is aimed at Game Developers who just wants a leg-up to get started. Madfellows use Azure cloud for game data storage and content distribution. Speaker soon!
Building Websites With Azure
New to Azure? Are you a web developer? Find out how you can use tools in Visual Studio to deploy websites into Azure. This introductory webinar will teach you everything you need to know about getting up and running and developing web applications in Azure
So if your looking for the Windows Phone Emulator to test your apps or games please follow the links below.
Windows Phone 8.1
Windows Phone 8.1 development tools
The Windows Phone 8.1 development tools are installed with Visual Studio Express 2013 for Windows with Update 2 or later and Visual Studio 2013 Update 2 or later. New features include universal Windows app development for all Windows devices—universal app templates, a full-featured code editor, a powerful debugger, emulators, rich language support, and more, all ready to use in production.
Get Visual Studio Express 2013 for WindowsGet Visual Studio 2013 Update 3
Windows Phone 8.1 Emulators
The Windows Phone 8.1 Emulators package adds six emulator images to an existing installation of Visual Studio. With these emulators installed, developers can test how apps will run on phones running Windows Phone 8.1. This package requires Visual Studio 2013 with Update 2 or later, Windows 8.1 (x64) Professional edition or higher, and a processor that supports Client Hyper-V and Second Level Address Translation (SLAT).
Download now (1.14 MB, English)
Windows Phone 8.1 Update 1 Emulators
Add six emulator images to Visual Studio 2013 so you can test how your app will run on phones running Windows Phone 8.1 Update 1. (Requires Visual Studio 2013 Update 2 or later.) Learn more about Windows Phone 8.1 Update 1 Emulators.
Download the Windows Phone 8.1 Update 1 Emulators
Windows Phone 8
Windows Phone SDK 8.0
Tools for developing apps for Windows Phone 8 and Windows Phone 7.5 devices. Get details and additional languages
Download now (1.02 MB, English)
Windows Phone SDK 8.0 Update 3 Emulators
Adds five new emulator images to an existing installation of Windows Phone SDK 8.0. With this update installed, you can test how your app will run on devices that have Update 3 (version 8.0.10492 or later) of Windows Phone 8. This update requires either Visual Studio 2012 with Windows Phone SDK 8.0 and Update 4 or later, or Visual Studio 2013 with the optional Windows Phone SDK 8.0 option selected during setup. Get details and additional languages
Download now (942 MB, English)
Windows Phone SDK 8.0 Update for Windows Phone 8.0.10322
Adds four new emulator images to an existing installation of Windows Phone SDK 8.0. This update requires either Visual Studio 2012 with Windows Phone SDK 8.0 and Update 4 or later, or Visual Studio 2013 with the optional Windows Phone SDK 8.0 option selected during setup. Get details and additional languages
Download now (920 MB, English)
Windows Phone 7
Windows Phone SDK 7.1
Tools to help you develop apps for Windows Phone 7.5 and Windows Phone 7.0 devices. Get details and additional languages
Download now (3.37 MB, English)
Windows Phone SDK 7.1.1 Update
Brings additional functionality to Windows Phone SDK 7.1. With this update, it’s easier to develop apps and games that are optimized to run on 256-MB devices. Get details and additional languages
Download now (290 MB, English)
Windows Phone SDK Update for Windows Phone 7.8
Adds two new emulator images to an existing Windows Phone SDK installation. This update supports Windows Phone SDK 7.1 and Windows Phone SDK 8.0. With this update, use Windows Phone 8 Start screen experience in your Windows Phone 7.5 apps. You also can test how your apps will run on Windows Phone 7.8 devices. Get details and additional languages
Download now (1.1 MB, English)
New Dev Center Lifetime Registration And Benefits Program
Starting today, Windows Dev Center requires only a one-time registration payment, which grants developers the ability to submit apps to both Windows and Windows Phone stores, with no annual renewal fee. Existing registered developers will no longer have to pay Dev Center renewal fees to maintain their account.
Today we also announced the Dev Center Benefits program, the program has been designed to increase your success on Microsoft platforms by helping develop, improve and market your apps with a variety of offers and tools.
The good new is the Dev Center benefits program will be available to all registered developers worldwide.
So what are you waiting for sign up Now! for the Dev Center and the Dev Center Benefits program.
For more details see http://bit.ly/1soCDeD
Performance tools and resources to help you get the best customer experience.
Unity Profiler for Windows Phone & Windows 8
You can connect Unity3d profiler to running Windows Store Application. Perform the following steps:
Note: Profiler doesn’t work on Master configuration
Note: Due Windows Store Apps restrictions, you won’t be able to connect the profiler if the application is running on the same machine. For ex., if you’re running Unity editor and Windows Store App on the same PC, you won’t able to connect. You have to run Unity editor on one machine, and Windows Store App on another machine.
Note: Also ensure that machine where Unity3D Editor is running and machine where Windows Store App is running - are on the same subnet.
One of the simplest ways to profile Windows Phone 8 app is over WiFi. Build your app with Development Build enabled in Build Settings (or choose Debug or Release configuration if you’re building from Visual Studio). Deploy and run the app. Open Profiler window in Unity and select WP8Player from Active Profiler menu. Incoming data will appear on the screen. Please keep in mind that GPU profiling is not yet support on Windows Phone 8 platform.
If WP8Player option doesn’t appear in Active Profiler menu you can try connecting directly to the phone by manually specifying IP address. Also make sure that Unity Editor is not blocked by the firewall. Profiler might also not work if connected to the public network.
The Graphics Diagnostics tools in Visual Studio are designed to help you locate rendering problems by starting with the visual artifacts that indicate the problem and then tracing back to the source of the problem by focusing only on relevant shader code, pipeline stages, draw calls, resources, and device state in the app's own source code.
Here are some of the kinds of rendering problems that Visual Studio can help you solve.
Correct configuration of the graphics device is important because it determines how the graphics pipeline interprets the data associated with each draw call, and how draw call outputs are merged. For example, if the device state specifies the clockwise vertex winding order, then any model that specifies vertices in a counter-clockwise order will not be rendered correctly. Device state problems can be difficult to diagnose because the root of the problem in the source code is often far removed from the affected objects. By using Graphics Diagnostics, you can view the current device state at any time during rendering.
Graphics apps use constant buffers and parameters to pass additional data to a draw call or set of draw calls. For example, the data might specify different locations or appearances for different objects. When that data is not initialized or contains incorrect values, the corresponding object is rendered incorrectly, or perhaps not at all. This kind of problem can be difficult to diagnose because it's not always clear whether the problem is in the data or the shader code that consumes it. It can also be difficult to determine which shaders, constant buffers, and parameters correspond to the error. You can use Graphics Diagnostics to determine which shaders, constant buffers, and parameters apply to each draw call, and view their contents.
Making a mistake in app code is almost inevitable, whether the code is C++ or High Level Shader Language (HLSL). However, debugging HLSL code has traditionally been more difficult because it hasn't had the rich debugging support that C++ and other languages enjoy. Graphics Diagnostics brings traditional code debugging tools to HLSL so that you can step through code, set breakpoints, and examine the contents of variables, parameters, and constant buffers.
Windows Phone Developer Power Tools are three powerful testing and debugging tools for app developers packaged into a single user interface. Use the Power Tools to monitor your app's responsiveness and resource consumption and to debug its crashes. After you make fixes, run the tools again to verify the improved stability and performance of your app.
The Power Tools include the three following tools. These are existing tools that have been adapted and customized for use by Window Phone developers.
Application Verifier. Detect subtle programming errors in native code.
Performance Monitor. Capture real-time performance metrics and visualize them graphically.
Performance Recorder. Collect system-wide logs and analyze them on your computer.
Included in the Windows® Assessment and Deployment Kit (Windows ADK), Windows® Performance Recorder (WPR) is a performance recording tool that is based on Event Tracing for Windows (ETW). It records system events that you can then analyze by using Windows® Performance Analyzer (WPA).
Windows® Performance Recorder (WPR) is a tool that extends Event Tracing for Windows (ETW) and provides detailed recordings of system and application behavior and resource usage. You can use WPR together with Windows Performance Analyzer (WPA) to investigate particular areas of performance and to gain an overall understanding of resource consumption. WPR and WPA enable development and IT professionals to proactively identify and resolve performance issues.
You can download WPR by visiting http://go.microsoft.com/fwlink/?LinkID=293840.
Included in the Windows Assessment and Deployment Kit (Windows ADK) and the Windows software development kit (SDK), the Windows Performance Toolkit consists of performance monitoring tools that produce in-depth performance profiles of Windows operating systems and apps.
To learn more about how to use the Windows Performance Toolkit to help you improve the performance of your Windows Store app using C++, C#, or Visual Basic, see the Windows Performance Toolkit Technical Reference. This technical reference discusses both the Windows Performance Recorder (WPR) and the Windows Performance Analyzer (WPA).
How to Analyze Performance Issues in Your Windows and Windows Phone Apps http://channel9.msdn.com/Events/Build/2014/4-557