Forum PayVault Payvault and PlayerInsight Questions

Discussion and help relating to the PlayerIO payment solution, PayVault.

Payvault and PlayerInsight Questions

Postby RossD20Studios » March 12th, 2018, 10:25 pm

I've been reading through the plans, service descriptions and API and have come up with some general questions to better understand how I plan and build my game to work with PlayerIO.

Sessions: According to documentation: Session time is measured from the first connect to the last api request.

What counts as the last API request? I’d assume a call to any PlayerIO server/backend service would count. But, let’s say the player doesn’t use any of these, just the initial connection. They connect to PlayerIO when the game starts, play for 15 minutes, then close the app. Would the session length be zero if no other API’s are called? Or, does PlayerIO automatically ping the user on periodic intervals to check and see if they are still in the game?

If PlayerIO automatically pings, what are the intervals at which it does this? What about the case of a mobile game where the player plays for a few minutes, then minimizes the app, then returns? Are these multiple sessions or tracked as one long session?

PayVault:
1. Is the usage of PayVault required in order to track revenue with PlayerInsights, or can a custom event be added to track when purchases occur?
2. Does the usage of PayVault require a corresponding player object within BigDB, or is PayVault handled separately? Specifically, my concern boils down to BigDB object count representing the theoretical “max users” each PlayerIO plan can support. Let’s say I use another service to handle my user authentication/player data storage instead of BigDB. Can I still use PayVault?
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 12th, 2018, 11:12 pm

I have another question, related to PlayerInsight and tracking custom events.

Among the features that attracted me to PlayerIO was the advanced telemetry of PlayerInsights and the ability to track custom events. I'd like build my game with knowledge of where players are hitting bottlenecks, what levels they are dropping off, etc.

To help test and better understand how the custom event tracking would work so I can effectively develop it, I made a simple game that connects to the PlayerIO service, and then attempts to write a custom event. However, I received an error:
Error Type: Access is denied
Error Message: Tracking custom events is not supported on your current payment plan.

As you might imagine, this was quite disappointing as neither the API documentation nor the PlayerIO plans page mention anything about limited access to PlayerInsight features. I certainly don't mind paying for this feature, but I would like to know which plan(s) support it. Also, similar to the "external host" code, there should be an option to avoid having to pay for plans while I'm using test server and not in live service. I'd love to learn how to develop with the service before I commit to the type of plan I need to subscribe to.
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 12th, 2018, 11:41 pm

An important follow up question regarding custom events in my question above: I read on this forum post viewtopic.php?p=50658#p50658 that, while custom events can be tracked, there isn't a way to view analytics data from it. Is this statement still accurate or has support for this been added? I'm wondering what the use case would be for custom events if you can't access and analyze the data once it has been gathered.
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby robscherer123 » March 16th, 2018, 2:10 pm

Payvault - I believe that the Payvault would be required to track your revenue through PlayerInsight. However I have no experience with the TrackExternalPayment callback and I was always interested what that was all about. Perhaps that could be what you need maybe.

PlayerInsight custom stuff - I've never used the TrackEvent calls, however I have used the SetSegment calls. After you begin "setting segments" on your users, the stats should appear under the "Breakdown" tab just like they do for "Browser", "Clientapi", "Source", etc. It will show you the pie chart and the small graph. Users who don't have the segments set on them will be set as "unknown". Perhaps events show up similarly? I'm also not sure how TrackInvitedBy shows up either. =/

Kind of along with the Events you mentioned, I've never used OneScore stuff either, so I'd be curious as to where that stuff shows up (if anywhere).
robscherer123
Paid Member
 
Posts: 313
Joined: December 12th, 2012, 8:46 pm

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 16th, 2018, 6:37 pm

Thanks, Rob! I thought that might be the case, but the documentation is vague about it. What I'm most concerned about is the lack of clarity around BigDB and the number of objects assigned to each payment plan. For example, the Plus plan says it includes 250K objects. Is that total objects within the DB or total new objects per month?

Here's why it's a concern: 250K seems like a lot of objects, but, if at minimum you are only using 1 object per Player in the Player data table, that would mean the Plus plan supports a maximum of 250K players. Now, that in itself wouldn't be all that bad (250K is a high limit) but let's say a Player object is created for each unique install. For a typical game funnel, a strong game might retain 10% of its install audience overtime. But, each Player object would still exist in BigDB. This could result in paying for data that's 90% unused (although, still necessary to store in case any of these players ever comes back).

It's also unclear whether or not BigDB is required to use other features (such as the Error tracking API or PayVault). All of these features, PlayerInsight included, would need to be storing data somewhere - is that data part of what is tracked for billing purposes in BigDB or is this data separate?
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby robscherer123 » March 16th, 2018, 7:15 pm

I do have some answers for those questions. The bigdb objects it lists for each plan are overall totals, not how much you use per month. How much you create/destroy in a month doesn't matter, it's essentially whatever your max total was for the month. It does require you to be a little careful that you don't create an over abundance of dbobjects. And yes, your definitely right on the player data sitting around waiting space. A large portion of my db space is often filled with mostly useless accounts that are no longer used. To combat this, I run a script manually on the server every several months that will load database objects and delete them 1000 at a time based on different properties of the database object. For example, seeing if its an old level 1 account that was barely used, and if so deleting it.

I do not believe errors, payvault, or anything else except what is particularly marked as "bigdb" is counted as bigdb objects.
robscherer123
Paid Member
 
Posts: 313
Joined: December 12th, 2012, 8:46 pm

Re: Payvault and PlayerInsight Questions

Postby Henrik » March 17th, 2018, 4:13 am

PlayerInsight Sessions:

Yes, any method call that results in your game making a network request PlayerIO refreshes the player's session. Typically, every method in your client library that has an asynchronous callback does this. Methods which just manipulate data held locally by the client library doesn't do this, such as grabbing items from your Vault or modifying BigDB objects.

The client library does not automatically ping PlayerIO to keep the session alive.

However, having an active multiplayer connection to a game server keeps your session alive.

There's an activity timeout of about an hour, so if you play, minimize the game, and resume playing over an hour later, that will cause a new session to start, even though you're not making a new call to Authenticate to start the user session.


PayVault:

PlayerInsight allows you to track external payments, i.e. payments not done through PayVault. If you call that method with the currency "usd", PlayerInsight will track it as the currency "external_usd". If you setup a normalization currency and conversions to it, your tracked payments will be added to the ARPU and ARPPU stats in PlayerInsight, just like any other PayVault purchases.

PayVault and BigDB are completely separate, you have to explicitly create objects in BigDB before any are created that will count towards your usage bill.
Henrik
.IO
 
Posts: 1880
Joined: January 4th, 2010, 1:53 pm

Re: Payvault and PlayerInsight Questions

Postby Henrik » March 17th, 2018, 4:27 am

PlayerInsight Custom Events were originally made for a feature that fed data into some other Yahoo system, and never went any further than that. They aren't currently shown anywhere in the PlayerIO control panel, so I wouldn't advise you to use the feature. :-)
Henrik
.IO
 
Posts: 1880
Joined: January 4th, 2010, 1:53 pm

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 17th, 2018, 5:04 pm

Rob, Henrik - thank you both so much for the responses. I'm getting a much better handle on this thanks to you. I have a few follow-ups if you don't mind.

A few follow-up questions:

1)
Henrik wrote:The client library does not automatically ping PlayerIO to keep the session alive. There's an activity timeout of about an hour, so if you play, minimize the game, and resume playing over an hour later, that will cause a new session to start, even though you're not making a new call to Authenticate to start the user session.


A) What should I expect the session time to be if I never call any other PlayerIO methods beyond initial connection to service? (ex: zero seconds?)
B) Is there a particular low-traffic PlayerIO method you would recommend I call to use for purpose of keeping session alive for session tracking purposes?

2)
Henrik wrote:PayVault and BigDB are completely separate, you have to explicitly create objects in BigDB before any are created that will count towards your usage bill.


Thank you for clarifying. I was a bit puzzled as to how PayVault tracks transactions/vaults for a user if the user hadn't been defined in BigDB. After examining the PayVault tab of my game, I found a section for "users" where I can input "The connectUserId of the user". It looks like PayVault maps directly to connectUserId (vs. a DB object). The only potential issue I see here is that it's up to the developer to know what their connectUserIds are, as there does not appear to be a way to browse a list of all the vaults (you can only search per specific ids). Is this correct or is there a way to browse all PayVaults once transactions have been made?

3) Benefits of PayVault - If I understand correctly, PayVault does not handle the actual initiation of the transaction, I would still need to use an ANE for iOS/Android to initiate the transactions. It appears that the value of PayVault (aside from integrated revenue tracking) is the potential to verify a transaction on the server by validating the receipt sent by the client such that the client cannot user a hack to fake purchases. Is this correct?

4) Server API Calls - I see two primary use cases for PlayerIO - 1. Real-time multiplayer and 2. Server side security for purchases and database writing. Obviously, the first item requires a multiplayer connection, but I suspect that #2 also requires a multiplayer connection. At least, I don't see a way to write server side code that isn't done via a multiplayer room as the Server base class "Game" is an extension of room. Is it true that multiplayer connection is required to write server side code for non-multiplayer things (secure transactions, database writes)? If so, is there a general best practice I should use? For example, wait until the user desires to make a purchase, then, at that time, initiate a connection to a "Services" room, do their business, then, disconnect to optimize traffic and bandwidth?

5)
Henrik wrote:PlayerInsight Custom Events were originally made for a feature that fed data into some other Yahoo system, and never went any further than that. They aren't currently shown anywhere in the PlayerIO control panel, so I wouldn't advise you to use the feature. :-)


Thanks for clarifying. Do you have any plans for the future to add support for this?
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby Henrik » March 19th, 2018, 11:40 am

RossD20Studios wrote:What should I expect the session time to be if I never call any other PlayerIO methods beyond initial connection to service?

0 seconds.

RossD20Studios wrote:Is there a particular low-traffic PlayerIO method you would recommend I call to use for purpose of keeping session alive for session tracking purposes?

https://playerio.com/documentation/refe ... ht#Refresh

RossD20Studios wrote:Is this correct or is there a way to browse all PayVaults once transactions have been made?

Transactions show up under the Transactions tab, so you can do searches there for specific transactions. The PayVault Analytics section will also have a lot of statistics about coins and items and vaults that you can use to figure out what your users have in aggregate.

RossD20Studios wrote:It appears that the value of PayVault (aside from integrated revenue tracking) is the potential to verify a transaction on the server by validating the receipt sent by the client such that the client cannot user a hack to fake purchases. Is this correct?

Yes. :-)

RossD20Studios wrote:Server side security for purchases and database writing. Obviously, the first item requires a multiplayer connection, but I suspect that #2 also requires a multiplayer connection.

PayVault is completely secure through client-side code, as long as you stick to the connection defaults that disallow clients from giving items and coins. The normally allowed methods only let players exchange a valid purchase receipt for coins and items, and it lets them exchange coins for items, and you can then check a player's inventory for items, as well as consume them to give a boost in-game or something.

If you want to write things to BigDB based on the contents of a player's Vault, and you want it to be secure, then you have to disallow writes to that table from the clientside, and write to through server-side code. The best practice for just doing secure server-side processing is to connect players to a service room, and then accept messages that tells your server-side code to do whatever combination of reads from PayVault and writes to BigDB that you want to do. If you expect to run server-side commands very rarely, it makes sense to disconnect the user afterwards, otherwise you can let them remain in the room, it just consumes a tiny amount of keep-alive traffic.

RossD20Studios wrote:Do you have any plans for the future to add support for this?

No, we don't have any plans to expose the PlayerInsight custom events right now.
Henrik
.IO
 
Posts: 1880
Joined: January 4th, 2010, 1:53 pm

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 20th, 2018, 1:22 am

Henrik - Thank you so much for the replies! This has really helped my understanding of the PlayerIO platform. I'll keep you posted on my progress with my game and let you know if any more questions come up. So far, it's been very enjoyable platform to work with.
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 21st, 2018, 3:01 am

Here's a few more questions regarding PayVault/sessions:

1) What counts as transaction for billing purposes on the plans page? Are gifted currencies within the PayVault considered transactions for billing purposes, or just receipt validations?

2) What’s the best use case of PayVault for a CCG (collectible card game) where players can buy card packs directly with real money?

A) What should get stored in the vault after transaction: a consumable “pack” item that doesn’t produce cards until opened or a pack containing known cards (on the server - such that cards are generated on purchase, not on open)?

B) Would cards themselves be stored in the vault if they too can be consumed for other currencies (ex: dust) or should cards be stored in the Player’s BigDB object?

3) What happens if a PlayerIO authenticate method is called a second time on the same client? Is the original session terminated a new session started?
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am

Re: Payvault and PlayerInsight Questions

Postby Henrik » March 21st, 2018, 5:59 am

1) Anything that results in you getting money from a player through PayVault is considered a transaction. So failed transactions, credits, debits, gifts, and item consumption are not transactions. There's a small usage charge for games that go berserk and use a lot of those operations, that's the $ per 1000 history entries you see.

2) Setup the card pack as a PayVault Item. Have server-side code that consumes the card pack and gives the user X number of randomly picked cards, while you just let the client display a cool animation of the pack being opened. It's probably best to store the cards in BigDB, it's the most flexible solution. Just remember to make sure that that BigDB table can't be changed from client-side code.

3) Yes, a user can only have on session going at a time, and calling Authenticate will start a new session, which automatically kills the old one. But you have absolutely no reason whatsoever to call Authenticate if you already have a Client for the user, so that's a rather hypothetical scenario.
Henrik
.IO
 
Posts: 1880
Joined: January 4th, 2010, 1:53 pm

Re: Payvault and PlayerInsight Questions

Postby RossD20Studios » March 21st, 2018, 6:49 pm

Thanks again, Henrik. I've come across a development issue with regards to debugging my multiplayer game. When I'm running my game using Animate's debugger tool (which normally gives access to all of the active properties so I can inspect what is happening to fix the issue) the Call Stack is getting stopped at playerio::Connection/handleMessage (even though the stack trace goes all the way up to my own game code). It seems that the issue is that because the PlayerIO code is within a pre-compiled .SWC, the debugger prevents anything properties being stepped through as the source code is not available.

This is fairly problematic, as the issue I need to fix is within my client code, but it's getting blocked because the error stack trace begins with reception of a server message. I don't suppose there is a way developers could get access to the source files for the PlayerIO SWC file? If not, do you have any ideas for a work around?
RossD20Studios
 
Posts: 22
Joined: May 17th, 2017, 12:15 am


Return to PayVault



cron