Last post I outlined a couple major updates to both the Game Fabric framework and my first game built on the platform, Euchre. In my quest to add these features I am adding another feature that allows users not in a game to ‘watch’. This I hope will allow for more interactivity between players even when they are not playing each other and could help new users unfamiliar with the game get up to speed.
An added side effect is the UI testing this will enable for me as I try to improve the sluggish performance of the game. I have already made a pretty massive overhaul of the event mechanism for the game which should reduce unnecessary chattiness. This is both good for the user and good for my pocketbook as every little storage transaction adds up!
In the local testing I am doing I have also found that a game averages about 350 actions. I send actions for the following events:
1. User decides whether or not to pick up the card and call trump
2. User drops a card (if they are the dealer and somebody told them to pick it up)
3. User calls trump (after the pick it up phase)
4. User plays card
5. Match is over (all 4 players play a card) culminating in a trick for the winner.
6. Round is over (all 4 players play all 5 of their cards) culminating in point(s) for the winner.
7. Game is over (one team has reached 10 points).
So how many storage transactions does that translate to?
- 350 tx for storing actions in table storage
- 350 tx for storing actions in blob storage
- 600 tx for polling actions from blob storage (10 min * 60 s / min * 1tx / s)
- 25 tx for getting list of players at start of each round
This means for every single player game I am seeing 1325 transactions. This is 0.1325 units of storage transactions or $0.019875 per game. Of course, in order to get total cost I would have to also look at outbound traffic, compute and storage. I am planning on moving my web services to Azure Web Sites to take advantage of the free tier hosting. That should help. But my workers are going to have to stay on in dedicated Extra Small compute instances. I’m not too worried about outbound traffic but if I want to squeeze more pennies out of my architecture I could replace my SOAP based web services with JSON based REST services. Naturally, JSON is much smaller serialization strategy than XML.
The real question is, how many impressions can I get in a game that lasts 10 minutes?
I think that if I can get this next release out with push messaging alerts, multiple simultaneous sessions, watch capability, and improved user experience I could get back on the rails from a customer satisfaction stand point.
Microsoft FINALLY approved the 1.1 updated I made to ‘Euchre with Friends’. The 1.1 version of Euchre is already seeing 3k impressions this month. That is half of last month’s total and we are just 7 days into the month. Hopefully this trend continues. I’m hoping to delight my customers with a 1.2 release by the end of September. Hopefully, they will come back after I get the kinks worked out!