Power Great Gaming with New Analytics from Play Games

By Ben Frenkel, Google Play Games team

A few weeks ago at the Game Developers Conference (GDC), we announced Play Games Player Analytics, a new set of free reports to help you manage your games business and understand in-game player behavior. Today, we’re excited to make these new tools available to you in the Google Play Developer Console.

Analytics is a key component of running a game as a service, which is increasingly becoming a necessity for running a successful mobile gaming business. When you take a closer look at large developers that do this successfully, you find that they do three things really well:

  • Manage their business to revenue targets
  • Identify hot spots in their business metrics so they can continuously focus on the game updates that will drive the most impact
  • Use analytics to understand how players are progressing, spending, and churning

“With player engagement and revenue data living under one roof, developers get a level of data quality that is simply not available to smaller teams without dedicated staff. As the tools evolve, I think Google Play Games Player Analytics will finally allow indie devs to confidently make data-driven changes that actually improve revenue.”

Kevin Pazirandeh
Developer of Zombie Highway 2

With Player Analytics, we wanted to make these capabilities available to the entire developer ecosystem on Google Play in a frictionless, easy-to-use way, freeing up your precious time to create great gaming experiences. Small studios, including the makers of Zombie Highway 2 and Bombsquad, have already started to see the benefits and impact of Player Analytics on their business.

Further, if you integrate with Google Play game services, you get this set of analytics with no incremental effort. But, for a little extra work, you can also unlock another set of high impact reports by integrating Google Play game services Events, starting with the Sources and Sinks report, a report to help you balance your in-game economy.

If you already have a game integrated with Google Play game services, go check out the new reports in the Google Play Developer Console today. For everyone else, enabling Player Analytics is as simple as adding a handful of lines of code to your game to integrate Google Play game services.

Manage your business to revenue targets

Set your spend target in Player Analytics by choosing a daily goal

To help assess the health of your games business, Player Analytics enables you to select a daily in-app purchase revenue target and then assess how you’re doing against that goal through the Target vs Actual report depicted below. Learn more.

Identify hot spots using benchmarks with the Business Drivers report

Ever wonder how your game’s performance stacks up against other games? Player Analytics tells you exactly how well you are doing compared to similar games in your category.

Metrics highlighted in red are below the benchmark. Arrows indicate whether a metric is trending up or down, and any cell with the icon can be clicked to see more details about the underlying drivers of the change. Learn more.

Track player retention by new user cohort

In the Retention report, you can see the percentage of players that continued to play your game on the following seven days after installing your game.

Learn more.

See where players are spending their time, struggling, and churning with the Player Progression report

Measured by the number of achievements players have earned, the Player Progression funnel helps you identify where your players are struggling and churning to help you refine your game and, ultimately, improve retention. Add more achievements to make progression tracking more precise.

Learn more.

Manage your in-game economy with the Sources and Sinks report

The Sources and Sinks report helps you balance your in-game economy by showing the relationship between how quickly players are earning or buying and using resources.

For example, Eric Froemling, one man developer of BombSquad, used the Sources & Sinks report to help balance the rate at which players earned and spent tickets.

Read more about Eric’s experience with Player Analytics in his recent blog post.

To enable the Sources and Sinks report you will need to create and integrate Play game services Events that track sources of premium currency (e.g., gold coins earned), and sinks of premium currency (e.g., gold coins spent to buy in-app items).

Introducing Project Spartan: The New Browser Built for Windows 10

Today I’m excited to share more details about “Project Spartan,” the new browser we are introducing in Windows 10. Project Spartan will be available across the Windows 10 device family. It is fast, compatible, and built for the modern Web. Project Spartan is designed to work the way you do, with features enabling you to do cool things like write or type on a webpage. It’s a browser that is made for easy sharing, reading, discovery and getting things done online.

Project Spartan:  Inking up your websites!

We first shared details about Project Spartan on January 21, and it’s been really gratifying to see so much interest and excitement for our new browser. Today, we’re excited to announce that Project Spartan is available for the first time for Windows Insiders to try out as part of the latest Windows 10 Technical Preview build for PCs. You can read more about the new Windows 10 Technical Preview build here, or check it out by joining the Windows Insider Program.

What to expect

In this preview, you will see a bold new design for Project Spartan – one that is streamlined and puts the focus on the page, not the browser. This is part of our vision for a browser that doesn’t visually interfere with your life on the Web, but supports it.  You will also see some of the features that we demo’ed back in January and we hope you’ll love them.

Here’s a quick snapshot of what’s in this build—though keep in mind all these features are still in an early, incomplete state:

  • Cortana is built-in and ready to assist: Cortana in Project Spartan is a personal assistant that helps make Web browsing easier for you, with whatever you’re trying to get done. Cortana offers help at just the right moment, based on what she knows about the Web, about you and what you might be trying to do. She remains in the background but provides additional information when you need it, making browsing easier and more efficient. Cortana in Spartan will be available in the US versions of this build, and available more broadly later.
  • Inking and sharing so you can capture and communicate your thoughts: Everyone uses the Web routinely to share questions, thoughts, info and comments with friends and colleagues. Now with new inking capabilities, Project Spartan enables you to write or type directly on the page, comment on what’s interesting or clip what you want – then easily share this “Web Note” via mail, or a social network. Researching and collecting information from the Web is just as easy, as you can save your notes directly to OneNote.
  • Distraction-free reading with Reading List and Reading View: Keeping up with information overload on the Web is one of the challenges that we all have to manage.  Project Spartan helps with a beautiful new Reading List to collect everything you want to read, including the ability to save any webpage or PDF for convenient access later, and an integrated, distraction-free Reading View that keeps you focused on the content.
  • A new engine for the modern Web: Project Spartan’s new rendering engine is built around the idea that the Web “just works,” while being fast, more secure and more reliable. As we shared in our recent developer workshop, we made some changes to the rendering engine that you will see in this build.

It’s important to note we’ll have more features and many improvements coming to Project Spartan before we make it broadly available. This preview is NOT a polished, ready-for-everyone release. For Windows Insiders, we’re excited to make Project Spartan available for your feedback, only a short time after we made it available for use internally at Microsoft.

Why “Project Spartan”

As we started building Project Spartan, we took a hard look at everything we were doing with the browser – from the way we engineered it, to the way we designed the user experience, to the way we approached compatibility and interoperability, to the way we interacted with our customers and Web developers, to the way we released it.

This led us to believe we needed to step forward into a new era of browsing at Microsoft. To build a browser that is designed for the modern Web – a browser for people that have grown up with the Web; who have integrated the Web into their lives in incredible and unexpected ways; who are no longer just exploring a new frontier, but are using the Web to get things done. After all, the world we live in is evolving, the Web is evolving, and our needs are evolving.

This led us to embrace the following design tenets, which you will see come to life in the product, both now and in the months ahead:

  • First, be an amazing browser – Browsers have been part of our computing experience long enough that core ideas about what a browser does and doesn’t do are fairly well-defined. Project Spartan has to deliver on what you expect from a browser – fast, more secure, reliable, power efficient – in the ways that you expect it (tabs, address bar, and so on).
  • Be bold and forward-looking –we recently talked about how we reexamined our assumptions about compatibility and interoperability, and how we made the decision to build a new rendering engine designed for the modern Web. You will see this tenet come to life in many ways in Project Spartan.
  • Ship fast, try new things, learn and always get better – Along with the rest of Windows 10, Project Spartan will be regularly updated, and the team is engaging with customers and partners closely to tune and update plans.

At the same time, we recognize that for some of our enterprise customers, it’s important they have the support they need and can continue to use Internet Explorer when and where they need it. This is why we will continue to make it easy for our enterprise customers to make Internet Explorer 11 the default browser via group policy. Internet Explorer 11 is supported on Windows 7, Windows 8.1, and Windows 10 for all customers, also providing a consistent platform that’s great for enterprise Web apps.

Just as we’ve seen this emergence of a more personal computing era reshape the way we think about computing, we’re seeing that extend to the concept of browsing and what it means in this modern world. Today’s a new day, and we’re proud to be part of this shift in thinking, where you will ultimately define the browsing experience—as it becomes more personal, more natural, more intuitive and more interactive.

Keep the Feedback Coming

This is just the beginning for Project Spartan. We can’t wait to get more and more of you trying it out and to get your feedback. This is a journey we’re on together and we look forward to working with you to shape the future of browsing. You’ll find us particularly easy to reach. Right on the Project Spartan toolbar is a smiley face you can use to send us feedback quickly and easily. You can also use the Windows Feedback tool right on the Start Menu to see and vote on feedback that others have submitted (as well as submit your own comments).

You can also find us on the new Project Spartan uservoice forum for desktop.

Thanks for reading and checking out Project Spartan!

A quick update on Windows 10 builds for phones for Windows Insiders

Hi everyone,

When we sent out the first build of Windows 10 Technical Preview for phones on February 12th, the list of phones was very limited. As I wrote in the accompanying blog post, the reason for this is that we had to select from the set of phones that had sufficient system partition sizes configured by the manufacturer. This was necessary for us to be able to in-place upgrade the phones. I also talked about a feature we were working on called “partition stitching” that would allow us to re-size the system partition dynamically, allowing us to do the upgrade on a larger set of phones.

Also in the last month we heard feedback on build frequency, and adjusted how we are sending builds out as a result. The latest build for PCs is the first build that we’ve delivered on that new cadence. We expect the same principles to hold for phones as well as PCs, but the first step for us was to get partition stitching done so that we could unlock a much larger set of phones for you to use for Windows 10 technical previews.

Here’s a quick update on where we are:

  • The partition stitching feature code came into our main code branch late last week. The Storage and Filesystems Team had been working on this in their branch and it passed all of their quality evaluations.
  • We spent this week testing on individual devices, as well as providing the builds with this feature to our internal rings so that we all could test it on our own phones which had been previously not usable. I’ve been thrilled to get my beloved Lumia 1020 on Windows 10!
  • This testing will allow us to support A LOT more phones for the next flight. I get a ton of questions every day on Twitter about when your favorite phones will be usable, and I’m happy to report that the vast majority will be supported with the next flight (full list below.)
  • We’ll also have support for phones that didn’t have China Mobile Operator support in the last build, so that’s great news too for our Windows Insiders in China.
  • We still have some work to do to validate individual phones, as well as the builds that we’re flighting through our internal rings. As I said in the post on frequency I cannot guarantee a date for a new build. What I CAN tell you is that we feel great here about the partition stitching code and current builds, but we likely still have at least one more week of engineering to do to ensure we get a great build for the expanded list of devices.

Here is the current list of phones we expect to support with the next flight.

  • If, during our testing, we find a device specific bug it MAY be pulled from the list.
  • If a phone isn’t listed here it is likely because we have found such a bug, but it MAY get fixed before the next flight.

Bottom line is that this is a preliminary list, but as Windows Insiders I wanted to give you the visibility even though it’s not 100% locked:

  • Lumia 1020
  • Lumia 1320
  • Lumia 1520
  • Lumia 520
  • Lumia 525
  • Lumia 526
  • Lumia 530
  • Lumia 530 Dual Sim
  • Lumia 535
  • Lumia 620
  • Lumia 625
  • Lumia 630
  • Lumia 630 Dual Sim
  • Lumia 635
  • Lumia 636
  • Lumia 638
  • Lumia 720
  • Lumia 730
  • Lumia 730 Dual SIM
  • Lumia 735
  • Lumia 810
  • Lumia 820
  • Lumia 822
  • Lumia 830
  • Lumia 920
  • Lumia 925
  • Lumia 928
  • Lumia ICON
  • Microsoft Lumia 430
  • Microsoft Lumia 435
  • Microsoft Lumia 435 Dual SIM
  • Microsoft Lumia 435 Dual SIM DTV
  • Microsoft Lumia 532
  • Microsoft Lumia 532 Dual SIM
  • Microsoft Lumia 640 Dual SIM
  • Microsoft Lumia 535 Dual SIM

Thanks,
g

Introducing the all-new ESPN app for Windows Phone

Beginning today the all new ESPN app is available for Windows Phone, free to download from the Windows Phone Store.

ESPN 2 ESPN 1

The ESPN app – an automatic update to the ESPN Hub – delivers more personalization than ever before. The app allows fans to quickly access live scores, breaking news, and video highlights.

New features include:

  • Instant scores and updates on the biggest games of the day as well as your favorite teams.
  • Breaking news and analysis across leagues and teams, all powered by ESPN’s authoritative newsroom.
  • Add, edit and remove favorite teams quickly and easily for a customized experience throughout.
  • The new ESPN Now section delivers real-time updates and commentary with the freshest photos, videos and social media content.
  • On-Air tab features the latest live content from WatchESPN and ESPN Radio.

Download the ESPN app for Windows Phone for free from the Windows Phone Store today!

Rebels wanted! Star Wars Rebels™: Recon Missions available for Windows and Windows Phone

Are you ready to stand up against the Empire? Become an intergalactic hero in Star Wars Rebels™: Recon Missions, the new action-platformer mobile game, available to download from the Windows and Windows Phone Store!

Take on four free levels of battle against the Empire as Ezra Bridger, dodge TIE fighters, blast Stormtroopers, and drive an Imperial AT-MP. With in-app purchases, wield a Lightsaber™, fight Star Wars™ bosses, drive an AT-DP, and unlock 30 more levels and 50+ unique challenges. Customize and expand a secret Rebel Haven where heroes can hide out and rescue citizens. And, interact with characters like Zeb the muscle of the Ghost team, Hera the pilot, and even Chopper the grumpy Droid™.

Leap into combat and help the Rebellion.

Leap into combat and help the Rebellion.

Star Wars Rebels™: Recon Missions is available now in the Windows Store for Windows and Windows Phone.

Game Performance: Layout Qualifiers

Today, we want to share some best practices on using the OpenGL Shading Language (GLSL) that can optimize the performance of your game and simplify your workflow. Specifically, Layout qualifiers make your code more deterministic and increase performance by reducing your work.

Let’s start with a simple vertex shader and change it as we go along.

This basic vertex shader takes position and texture coordinates, transforms the position and outputs the data to the fragment shader:

attribute vec4 vertexPosition;
attribute vec2 vertexUV;

uniform mat4 matWorldViewProjection;

varying vec2 outTexCoord;

void main()
{
  outTexCoord = vertexUV;
  gl_Position = matWorldViewProjection * vertexPosition;
}

Vertex Attribute Index

To draw a mesh on to the screen, you need to create a vertex buffer and fill it with vertex data, including positions and texture coordinates for this example.

In our sample shader, the vertex data may be laid out like this:

struct Vertex
{
  Vector4 Position;
  Vector2 TexCoords;
};

Therefore, we defined our vertex shader attributes like this:

attribute vec4 vertexPosition;
attribute vec2  vertexUV;

To associate the vertex data with the shader attributes, a call to glGetAttribLocation will get the handle of the named attribute. The attribute format is then detailed with a call to glVertexAttribPointer.

GLint handleVertexPos = glGetAttribLocation( myShaderProgram, "vertexPosition" );
glVertexAttribPointer( handleVertexPos, 4, GL_FLOAT, GL_FALSE, 0, 0 );

GLint handleVertexUV = glGetAttribLocation( myShaderProgram, "vertexUV" );
glVertexAttribPointer( handleVertexUV, 2, GL_FLOAT, GL_FALSE, 0, 0 );

But you may have multiple shaders with the vertexPosition attribute and calling glGetAttribLocation for every shader is a waste of performance which increases the loading time of your game.

Using layout qualifiers you can change your vertex shader attributes declaration like this:

layout(location = 0) in vec4 vertexPosition;
layout(location = 1) in vec2 vertexUV;

To do so you also need to tell the shader compiler that your shader is aimed at GL ES version 3.1. This is done by adding a version declaration:

#version 300 es

Let’s see how this affects our shader, changes are marked in bold:

#version 300 es

layout(location = 0) in vec4 vertexPosition;
layout(location = 1) in vec2 vertexUV;

uniform mat4 matWorldViewProjection;

out vec2 outTexCoord;

void main()
{
  outTexCoord = vertexUV;
  gl_Position = matWorldViewProjection * vertexPosition;
}

Note that we also changed outTexCoord from varying to out. The varying keyword is deprecated from version 300 es and requires changing for the shader to work.

Note that Vertex Attribute qualifiers and #version 300 es are supported from OpenGL ES 3.0. The desktop equivalent is supported on OpenGL 3.3 and using #version 330.

Now you know your position attributes always at 0 and your texture coordinates will be at 1 and you can now bind your shader format without using glGetAttribLocation:

const int ATTRIB_POS = 0;
const int ATTRIB_UV   = 1;

glVertexAttribPointer( ATTRIB_POS, 4, GL_FLOAT, GL_FALSE, 0, 0 );
glVertexAttribPointer( ATTRIB_UV, 2, GL_FLOAT, GL_FALSE, 0, 0 );

This simple change leads to a cleaner pipeline, simpler code and saved performance during loading time.

To learn more about performance on Android, check out the Android Performance Patterns series.

Posted by Shanee Nishry, Games Developer Advocate

Developing audio apps for Android Auto

Posted by Joshua Gordon, Developer Advocate

Have you ever wanted to develop apps for the car, but found the variety of OEMs and proprietary platforms too big of a hurdle? Now with Android Auto, you can target a single platform supported by vehicles coming soon from 28 manufacturers.

Using familiar Android APIs, you can easily add a great in-car user experience to your existing audio apps, with just a small amount of code. If you’re new to developing for Auto, watch this DevByte for an overview of the APIs, and check out the training docs for an end-to-end tutorial.


Playback and custom controls

Custom playback controls on NPR One and iHeartRadio.

The first thing to understand about developing audio apps on Auto is that you don’t draw your user interface directly. Instead, the framework has two well-defined UIs (one for playback, one for browsing) that are created automatically. This ensures consistent behavior across audio apps for drivers, and frees you from dealing with any car specific functionalities or layouts. Although the layout is predefined, you can customize it with artwork, color themes, and custom controls.

Both NPR One and iHeartRadio customize their UI. NPR One adds controls to mark a story as interesting, to view a list of upcoming stories, and to skip to the next story. iHeartRadio adds controls to favorite stations and to like songs. Both apps store user preferences across form factors.

Because the UI is drawn by the framework, playback commands need to be relayed to your app. This is accomplished with the MediaSession callback, which has methods like onPlay() and onPause(). All car specific functionality is handled behind the scenes. For example, you don’t need to be aware if a command came from the touch screen, the steering wheel buttons, or the user’s voice.

Browsing and recommendations

Browsing content on NPR One and iHeartRadio.

The browsing UI is likewise drawn by the framework. You implement the MediaBrowserService to share your content hierarchy with the framework. A content hierarchy is a collection of MediaItems that are either playable (e.g., a song, audio book, or radio station) or browsable (e.g., a favorites folder). Together, these form a tree used to display a browsable menu of your content.

With both apps, recommendations are key. NPR One recommends a short list of in-depth stories that can be selected from the browsing menu. These improve over time based on user feedback. iHeartRadio’s browsing menu lets you pick from favorites and recommended stations, and their “For You” feature gives recommendations based on user location. The app also provides the ability create custom stations, from the browsing menu. Doing so is efficient and requires only three taps (“Create Station” -> “Rock” -> “Foo Fighters”).

When developing for the car, it’s important to quickly connect users with content to minimize distractions while driving. It’s important to note that design considerations on Android Auto are different than on a mobile device. If you imagine a typical media player on a phone, you may picture a browsable menus of “all tracks” or “all artists”. These are not ideal in the car, where the primary focus should be on the road. Both NPR One and iHeartRadio provide good examples of this, because they avoid deep menu hierarchies and lengthy browsable lists.

Voice actions for hands free operation

Voice actions (e.g., “Play KQED”) are an important part of Android Auto. You can support voice actions in your app by implementing onPlayFromSearch() in the MediaSession.Callback. Voice actions may also be used to start your app from the home screen (e.g., “Play KQED on iHeartRadio”). To enable this functionality, declare the MEDIA_PLAY_FROM_SEARCH intent filter in your manifest. For an example, see this sample app.

Next steps

NPR One and iHeartRadio are just two examples of great apps for Android Auto today. They feel like a part of the car, and look and sound great. You can extend your apps to the car today, too, and developing for Auto is easy. The framework handles the car specific functionalities for you, so you’re free to focus on making your app special. Join the discussion at http://g.co/androidautodev if you have questions or ideas to share. To get started on your app, visit developer.android.com/auto.