question

endragor avatar image
endragor asked

PlayFab Evaluation for Our Title

Greetings!

I am looking into a choice of a backend platform for our upcoming F2P mobile game. PlayFab looks promising, but there are several questions and concerns I'd like to express before we make the final decision. I'm not sure if forums is the right place for this, but I think others could find this discussion helpful.

One of the main fears with regards to using PlayFab is associated with the lack of control of what clients are allowed to do. According to Terms Of Service point 2.4, my account (meaning the game and its success) can be terminated for repeated exceeding of the hard or soft usage limit. However, PlayFab Client API is exposed to everyone and anyone can make all kinds of requests to the servers serving my title. I have no control over many Client APIs that write data to the server. Any person can create a script that infinitely registers new users for a PlayFab title and uploads various data for those users, disrupting the service for others and/or spoiling the title's analytics reports. This could potentially be resolved by allowing Admins to restrict several things about Client API usage for their titles:

1. Restrict allowed registration methods. For most mobile games it would work if only Admins are allowed to create new user/password accounts (for team members). Others should only be able to register via Google, Apple or Facebook services. To my knowledge, you cannot automate account creation on those services (due to captcha and other protection mechanisms), so it would resolve the concern with allowing people to spam new PlayFab accounts.

2. Restrict what write APIs can be used. Our game (at least for now) most likely is not going to use Shared Groups, Characters, Trading functionality. It would be nice to be able to disable those APIs completely so that clients cannot post something unexpected to the service.

3. For data/events/statistics APIs, restrict the set of keys that can be uploaded. The set of events or statistics a title wants to gather is usually fixed at each point of time. Admins could provide this set so that disruptive users could not post data that doesn't make sense.

Another concern is associated with development process. It seems PlayFab only allows changing things live, which is awesome for some use cases, but usually you have a dev/QA cycle before releasing the next version of the game to the public. How should this be handled with PlayFab? Dev/QA at least may require testing user accounts, content and data that should not yet be present on live servers.

Title's Secret Key is a very sensitive data. What action can I perform if I think it got compromised? It looks like there is no way to generate a new key.

There is no clear pricing for Orbital Fun Ray option for PlayStream. Can we expect the pricing to go up at a rate no higher than $99/50,000 MAU, $99/10 rules at that point? What are the other hidden costs a successful game can expect with PlayFab? Are there approximate costs of raising title's soft/hard limits? Will those costs be based on the title's revenue?

Lastly, there is a couple of missing features that our game requires and they are common for many other games out there, too:

1. Achievements. This is common for both mobile and PC games. It would be nice to get an achievement system integrated with Game Center, Google Play and Steam. The minimal functionality here is to be able to define list of achievements, rewards for obtaining them (virtual currency and/or items), and APIs to award achievements or their partial progress.

2. Inbox. This is common for the most of long-living F2P mobile games. Inbox is the place where you get notified about game events or get messages from dev team. These cases are usually handled differently. Game event messages have retention policy and are unique for each user. They can be simple text messages, but usually it's more convenient to store them as a structured data that can be rendered in a unique way depending on the message type. Dev announcements are global, are usually kept indefinitely, and sometimes contain items/currency inside, allowing each existing player to collect them once (e.g. "Sorry we had a maintenance, take few gems" or "Merry Christmas from devs, we've got some gifts for you").

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

brendan avatar image
brendan answered

Sure thing - going down your items:

> ToS and Client API usage

First, we do plan to provide a more generalized way to turn on/off all of the Client API methods (we did this for targeted ones previously, but we added a task recently to just generalize this, and open up all of them, with defaults based upon our current recommendations). However, I'm not sure what your point concerning "if only Admins are allowed to create new user/password accounts (for team member)" as our current model is exactly that, for developers. Only an admin on a title can add other developers to it. For client sign-ups we provide multiple authentication mechanisms. Some of those are designed to be zero-friction, such as Device ID or Custom ID sign-in. This is a common feature of mobile games, as it lets players start a game immediately, without sign-in friction (which can cause a huge loss in retention on first game start).

Of the other points you call out for this, the concept of restricting Keys and Statistics to those you specify is a good one, and I'll be adding that to our backlog.

However, we're in the business of partnering with developers to help make their titles successful, so we're not going to shut down a title or developer due to something which is clearly a hacker messing with you. We have multiple protections against this already in place, including AWS DDoS protections, as well as our own throttling/blocking systems for users that attempt to overload the service. If you're the target of a hack like that, we'll work with you to make sure we're all on the same page and that whatever can reasonably be done to resolve the issue (and block the offender) without taking the title offline is done.

> Live vs Dev/QA

Our recommendation is to use separate Title IDs for dev/test/live. You can use the Admin API methods to read/write the data for each. Many developers just make it part of their build process (writing Title Data, Catalog, etc.), so that they can switch Title IDs there, and have everything updated as part of that process.

> Secret Keys

If your Secret Key is ever compromised, please inform us immediately, so that we can generate a new one for you. We will be providing a way to "rotate" your Key in the Game Manager in a future update.

> PlayStream Orbital Fun Ray and other costs

At higher levels, we create a custom contract based on the specifics of the title, so there's no specific price I can name for this. But higher levels of use benefit from economy of scale (note how 10x the MAU from Plasma Rlfle, at $99, is $499 at BFG - not $990), so you can be assured that the per-MAU price decreases at scale.

The only costs for PlayFab should be the ones we spell out on the Pricing page - we're careful not to have any "hidden costs". Reviewing the page, the ones that may not be completely obvious are the Content and custom game server hosting services. Those are priced at the AWS cost (CloudFront and EC2) plus 10%, so it's easy to calculate those costs via the AWS pages. We'll review and update the site to make sure this is clear.

For the upgrade costs to go over the free service limits, we'll be updating shortly with an upgrades page which a) shows your current usage, and b) gives you the ability to upgrade where needed. This will also provide all the pricing info on those upgrades. We'll be rolling that out in the coming weeks, and we'll get all the pricing info in there as we update with the specific upgrade levels. We're aiming to make them as simple as possible, while keeping the prices as low as we can.

> Feature Requests

For your feature requests, I would always recommend reviewing the Feature Request forum posts. We prioritze in part based upon the feedback we get from developers, so the more people asking for a feature, the sooner it gets into our schedule. However, specific to your requests:

Achievements: In addition to the existing Feature Request forum post (https://community.playfab.com/hc/en-us/community/posts/205479178-Achievements), you can actually do this right now, via PlayStream. You can set up a segment for each achievement which checks when a specific Statistic goes over a certain value, and trigger the appropriate message/rewards either directly or via Cloud Script. Checking progress would then be done by checking the current value of the related statistic.

Inbox: Proposal 4 in this Feature Request forum post (https://community.playfab.com/hc/en-us/community/posts/205479628-Player-Messaging) is for a general-purpose messaging system. However, for the top-level messages you mentioned (game events, for example), I would actually handle those as Title News posts, as they're more "message of the day" type of notifications, which go to all users.

Both good features that are in our backlog, but which haven't bubbled up yet as there are other features more folks are asking for, so please do take a moment to head over to the Feature Requests forums and vote on the things you'd like to see. Thanks!

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

endragor avatar image
endragor answered

Thank you Brendan! Your answer clarifies most of the questions.

For creating new user/password accounts, I meant that RegisterPlayFabUser call is accessible by any client, but for mobile games you don't normally allow users to create user/password accounts. If I disable this API with the upcoming generalized Client API disabling feature, will Admin be able to add users separately?

I'm not sure if Player Messaging is the same FR I'm asking for. The description there is quite vague, but I think it refers to players exchanging messages between each other. In my case, it's about system (game) sending messages to players. Title News doesn't fit here, because it doesn't support attachments, marking as read, client-side deletion of the message. Do you think I should add elaborate description for Inbox to Player Messaging FR or create a new one?

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

brendan avatar image
brendan answered

User account creation is a Client API operation, so if any of those calls is blocked for the title, the effect would be that the authentication system in question simply wouldn't apply for the title. Perhaps you could explain the user flow for how you intend to do user registration? For context, many of the games for which we are the backend use a system similar to what we describe in our best practices blog post: https://playfab.com/first-impressions-count-best-practices-friction-free-player-authentication/. Others do, in fact, use username/password or email/password, as they use that info for other purposes. Bear in mind that the Username is unique across your titles, so that does provide one way for a user to have a consistent identifier they can see across multiple games from the same publisher.

For player messaging, I'm referring to a generic "inbox" for the user, which could receive messages either from other players or the developer/publisher. But then, it may be that I'm reading more into that Feature Request than was originally intended. So please feel free to add those clarifications.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.