Question to other developers

Naomi,

Thanks for sharing your experience.  I have been trying to figure the best way to do the multiplayer as well. I wonder if you could give your opinion on a few things i was wondering about; using your experiences with multiplayer servers.

I ask because, I have a digital ocean droplet, the lowest cost one, and once I get my app out there - using noobhub for multiplayer, I figure at least at first the cost should stay low.  If I place ads in the app, and it is used a lot, I am hoping the heavy use will result in more ad revenue and hope that offsets the cost of the server.  Did you find ads did/could not generate enough revenue to make the server cost-effective?

  1. What type of limitations do you run into when using a combination of using Game Center and GPGS to handle the multiplayer, instead a setup like I mention I am trying to use?  I understand the cost of (free) with the GC&GPGS, that is a good thing, but I was wondering what limitations you may have run into.  If there are no limitations and it is free, that does seem the way to go.

  2. As you noted, after the initial sales of the app, the developer has to maintain that monthly cost of the server activity.  Even if you sell a bunch, that likely means more activity and thus more cost for developer.  So maybe 8 months into the app, you are running a negative profit.  I was thinking, using the 8 month as an example, that maybe the app requires a 6 month ‘subscription’ to multi-player mode.  If indeed, after 6 months, anyone really wanting to use the multi-player, they will pay the subscription…  maybe then it becomes profitable.  What do you think?

Please fell free to ignore any part of this that is none of my business.  Just hoping to get some opinion from someone who has experienced these things.

Thanks

Bob

I’m going to chime in here, not as a Corona SDK employee.  We really have no official recommendations on how you should monitize your apps.

However, I worked for a company that produced online multi-player games for years.  Over 10 years of my experience is in that industry.  You can’t sell a one time price app and successfully support an online community.   As noted Online is an ongoing cost center.  Therefore you have to have an ongoing revenue stream.  There are primarily two options:

  1. Subscriptions.  Many games collect a monthly fee to play the game.  Look at World of Warcraft.  You have to pay for the game up front and then still cough up $15 a month to play.  There is a huge drawback with this.  You have to provide customer support.  They have to have a way to allow the customer to cancel.  They have to be able to dispute the charges and so on.  This might be mitigated using IAP subscriptions since that’s pushed off on the Apple and Google sales platform.   Ideally this should mirror your usage.  Subscribers are active players and that should balance with your usage fees.

  2. Advertising.  We produced many “free” games and monitized them with ads.  Back in the day, it was pretty profitable, but as CPM rates dropped, so did revenue.  People who play multi-player games really don’t click on banner ads.  They are too focused on the game play to want to make sure you’re getting paid.  Interstitial ads command a higher rate and can happen at times when game play doesn’t impact the player’s focus.  Ads also pace usage, but you have to have plenty of usage to made ads count.

We didn’t have IAP back in the day, but it’s the 3rd option.  IAP for in game items might work as long as you have a good economy system in place.  The Corona built game Throne Wars was funded with IAP.  While I played that game a lot and enjoyed it, I felt their economic model really hampered my ability to open my wallet to continue playing it.  Getting the game play vs. cash spend right is critical for these types of games if you want to continue to derive income from them.    It cant be a “Pay to Win” game.

Something to ponder.

Rob

Rob,

Thanks for your input.  I suspected that ad revenue now days just will not likely support the cost of the server, since I am fully in agreement, most players will not click on ads when in play … and that seems to be the only way to really get decent revenue from the ads.

I see your point, on ‘support’, when offering a subscription.

A lot to ponder. If I want to have multi-player on my app, and use server side code, I will have to have some revenue stream after the initial sale, to support my server cost.  

It seems to me, if I just code the app to use a simple Sub/Pub message type interaction for the clients, using something like noobhub, where I have server cost, seems like I am throwing money out the window; when apparently using the combo of Game Center and Google Play Game Service (free), does the same thing.

Thanks again for sharing your experience.

Rob replied so eloquently that I don’t have much to add.

About GC and GPGS limitations, GC enables turn based game play, while GPGS offers realtime game play.

With the word games I created, I was able to adopt GPGS for the turn based game play, because they need only a single turn to complete each game.

However, with my latest game, players can take hundreds of turns over a course of weeks and months, so GPGS will not do (unless they come up with this option.)  So, for now, I haven’t added multiplayer feature to my latest game.

Something to consider.

Naomi

Thank you both for your input, it’s very much appreciated. I feel like Multiplayer is a really big feature in the current gaming industry. People like to either co-op or compete against friends and strangers.

Another problem with using the native Apple or Google solutions is that it kind of defeats the purpose using a cross platform SDK. I know from personal experiences that my friends all have different OSs. 

I understand that Corona can’t support having a native multiplayer option, but what about a local connection? Even being able to add WIFI multiplayer would be very welcome since Autolan got abandoned (And no longer works). Rob, do you think that one of the Tutorial Tuesdays could be about using LUA sockets to create something to replace Autolan?

AppOwlDev,  

+1 +1 +1

I am with you on the wifi, local connection feature. There may already be something like that, I don;t know of, I haven’t had time to keep up on all the sdk updates. I cringe at having to use GC and GPGS. I am leaning strongly toward CoroniumGS (in alpha) for cross platform multi-player.

Naomi

Thanks for your input!

You may want to check out the CoroniumGS by Develephant. In alpha at this point.  Of course it will require server cost.  

I do wonder wether (even though Rob makes excellent points about support and server cost long term), that there might be a solution.

I am thinking if a developer wanting/needing to use a server based multi player setup, could setup in-app-purchase as a ‘consumable’ (not subscription) for say .99 cents to enable multi-player feature. Once purchased it would set a flag on your server which allows that user to use multiplayer feature for lets say 3 months. It expires after 3 months and then the user can ‘purchase again the consumable’ for another 3 months of multi-player feature.  Not really a subscription, but acting like a subscription, not some ‘auto-renewable’ type.  

I think the possible strength of this solution is, if there is activity and use of the server, the cost are more then covered with the in-app-purchase.   You could possibly update that cost with a app update if 99 cents fails to cover the cost. Then, if it seems in-effective, or for some reason you no longer want to bother/support that feature, possibly post a notice to the users that ‘3 months from then’ the multi-player will no longer be an available feature. The still get the product that they paid for till it expires.

If the user buys the app (or gets it free) and understands when buying the multiplayer feature, that their .99cents(or whatever you need to charge to be profitable) will last for 3 months… they are not charged for something they are not getting.  If the initial cost of the app was a small reasonable price, with notice that multi-player was additional cost thru in-app-purchase, I think reasonable users will accept that practice and be understanding.

I do think it important to follow ethical business practices, and in being honest to the users what they are paying for. Users should understand app developers, who have made every reasonable effort to provide a good product for a fair price, cannot be expected to carry on an expense that is cost prohibitive, and understand if a developer needs to drop the feature(with proper notice).

If it is deemed to be a bad business practice or un-ethical, I would not do it.  I personally, feel it is open/honest pricing, and if in anyway it would be unethical I would not consider it.

Bob

Bob, I like your approach with consumable purchase of multiplayer games for a certain period of time.  I think it’s fair, and it’s also flexible.  

Naomi

Edit:  BTW, whether or not the consumers/users would accept it would be another story.  This IAP model for multiplayer feature will need to be tested and validated in the real world.  If enough developers/publishers did this, perhaps it will become a norm, but since consumers/users are so used to getting mobile entertainment for free, I cannot predict how it will be received…

Thanks Naomi … I agree with you. I may give it a try.  Maybe not on the app I am doing now, but maybe the next one.  Want to be a little more sure on the specifics before I give it a try.

As always, your opinion is both appreciated and highly respected!

Thanks

Bob

Thank you, Bob, for your kind words.  I look forward to hearing the result.  Please do share your finding with us after you give it a try.

Naomi

I certainly will.

I wonder about that model and if Apple would go for it.  They might see that as a subscription and require you to do so.  Then again, they might pass it.

As for Autolan.  First it’s pure Lua, so any one in the community can take it and try to fix it.  You can also contact M.Y.Developers (they are busy putting out their IDE) and make sure you have their blessing to do so.  If it’s something to do with Graphics 2.0, it should be an easy fix.  If it’s something at the Socket level it may take more research and debugging.

As for a tutorial, this would be a very complex and hard tutorial to write.  Socket level communications isn’t for the feint of heart.

Rob

Some great ideas. Another way to offer a finite multi-user IAP could be to offer an X count game play package. This would be similar to people selling coins etc which get used and depleted. Apple is ok with that so selling (lets call them … ) ‘multi-user game tokens’ should be ok. Rather than allow the buyer to play multi-user for 3 months you allow the buyer to play X number of multi-user games. Say 1000 plays for .99 etc. This model would not be as definitive as the 3 month blocks of course as a person could buy a 1000 game play and then use it very slowly over 6 months… Anyways, just an idea. 

On a positive note though, either with Coronium GS or NoobHub running on DO your startup cost is $5 per month. if you have on average 10 new players buying a $.99 IAP each month you will be making enough to pay for your server. If you have a game that does not have that much interest then the game itself probably needs to be tweaked to get more interesting or get marketed differently etc. Just trying to put it in perspective.

Rob,

Yes, that is one of the specifics I was/am concerned with. How will Apple look at it. 

Ksan,

You make some very good points.  Thanks for your input.

I only see a small issue with the coins. If there are 3000 users out there all of who bought coins, and then they temporally lose interest in the app with half or so of their coins un-used. How many months am I obligated legally and ethically to continue to maintain the server cost, considering they may never use the app again, yet they paid for those coins.  I think at a minimum I would/should have a disclaimer or expiration date somewhere with the in-app-purchase description.

At $5 bucks a month (if that is the actual cost and there are no new users paying in) certainly a year $60 bucks is not a big hit, and in reality it is the cost of doing business as a developer.  I do understand that.   I just wonder what the legal/ethical rule of thumb of for how long a developer would be required/expected to maintain that service?  My intentions, not matter which way I go about this, should i need to discontinue providing the server at some time, is to update the app with a message that will inform the user with reasonable notice when the service will end.

What do you think?

Hi, 

I was looking at the Apple docs on this topic and noted the following : 

You can use In-App Purchase to sell content, app functionality, and services.

App functionality. Unlock behavior and expand features you’ve already delivered. Examples include a

free game that offers multiplayer mode as an in-app purchase…

The document I’m referring to can be seen at : https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/StoreKitGuide.pdf

so I guess that confirms we will not get in trouble with Apple for doing this.

As for the expiry of multiplayer game rights, the more I think about it the more I feel your idea of selling multiplayer access for x months is a better approach than what I suggested above as an alternative. Sell monthly, quarterly blocks and if there is no demand this approach will give you a clear cutoff date by which you can switch off the service. Nice and clean. 

You know, I set up my backend with a cloud service so that it can scale with usage (and shrink as the demand decreases.)  Theoretically, it sounded all good – and I thought perhaps no more than $50/month should cover the basic and grow massively when a sudden spurt/growth occur (say, by miraculous popularity of the game.)  However, what I learned immediately after I released my word game was that I need to pay more just to ensure my MySQL instance would work fast and smooth even when there are a tiny bit of spike in simultaneous hits (such as, say, 10 simultaneous hits – meaning 10 match games hit the server at the same time.)  The cost would’ve remained at the same level for a long time whether or not the user base grew – because realistically, even when there are 100 users playing match games at around the same time, not all of them would hit the server simultaneously – only a handful, if any.

I’m sure cost can be reduced by front-end experts and backend experts who know how to perfectly optimize and minimize the number of requests and database queries a game has to make.  (I did the best I can to reduce the number of network requests and number of queries each request had to make, but still…)

I think shared server/service is great (because the minimum cost can be divided amongst many apps/games.)  If lots and lots of apps/games pay for the bandwidth with a tiny margin on top of what, say, AWS charges, such shared server/service business model would very well succeed – it’s just that, shared server/service will need to eat costs until there are enough apps/games until this tiny margin would amount to substantial enough to cover the cost (and eventually pay for the time and efforts that go into running such shared server/service.)  Or, such service would have to charge more than just a tiny margin to breakeven.  And if they are not using the cloud servers that can scale rapidly, then I think apps/games that use such server/service are setting themselves up for possible failure when sudden miracle of a success comes to the app/game.

Anyhow, this is just based on my own personal experience.  Who knows, things could’ve been different if I took another path – and I might have entirely different perspective on this.

For now, I’m happy I’m using GC & GPGS – at the very least, they won’t be going away anytime soon, and I know I don’t need to worry about spikes or spurts in the usage…

Naomi

@ksan, thanks for sharing your finding about the permissive use of the IAP for multiplayer feature.  That’s great to know.  

Even when we use GC, charging for multiplayer feature via IAP would really help – especially after users pay a few dollars to remove ads, if there are ways to receive some $ from avid players (even if the $ amount per game played is so tiny it’s almost a joke.)  All devs need ongoing stream of revenue to keep going after all.

Naomi

@Naomi, thanks much for sharing your experience with a cloud service. I’m guessing this was something like Parse and indeed the scalability offered is very reassuring.

If one chooses to go the other way, say running a NoobHub or Coronium GS instance on DigitalOcean then the cost per API call is fixed but you are pretty much on your own to handle the scalability issues when and if your game goes ballistic. DigitalOcean offers easy upgrades through the server capacity offerings so you can take your $5 server and go to a $10 or $20 or even $40 a month server but at some point you will run out of capacity even in that top tier server.

Then you will need to go to a multi-server setup with load balancing etc and this is where you will find that the cost vs benefits equation would tip over had you been on a cloud service like Parse that does all that for you… Not saying it can’t be done on the DigitalOcean path as there are numerous load balancing and scalability solutions but it just becomes something you need to build and run and it is very time and resource consuming… 

So not knowing your success rate its a good option to go with low fixed cost path on a single server etc but at some point you may need to find an alternative to handle massive success. The way I look at it, if I ever have a game like that then I can afford to bring in some expert paid support and keep the wheel turning. At the end of the day, building and running the backend is not rocket science and there are people you can enlist to get you through the growth pain. The harder thing to do is to make a game that takes you there… At least for me that has been the case so far.

Best of luck! 

Hi Rob,

Yeah I thought it might be too complicated. As for Autolan, I have tried to contact the developers through this forum and they have ignored my PM. Another person and I have a thread going where they found it was an issue with the Sockets: http://forums.coronalabs.com/topic/48123-autolan-local-multiplayer-issue/ We have put in a bug report, but got no response.

As for charging for limited time use multiplayer. I wonder if in the end that might hurt the app as a whole. I feel today’s users are quite entitled when it comes to spending money on apps. I think it might be hard to sell a limited time use IAP for anything in a game. In the end, it really comes down to how popular your app becomes.

I was looking at CoroniumGS as well and was very interested. But for those of us that would have to still pay for a server on AWS or w/e does it still amount to the same issue of a snowballing monthly cost? I’m feeling there is no easy solution to this as a single/small indie developer.

[quote name=“AppOwlDev” post=“264686” timestamp=“1410544868”]I feel today’s users are quite entitled when it comes to spending money on apps. I think it might be hard to sell a limited time use IAP for anything in a game.[/quote] So true. I think the approach to sell this might be to give a free install a set period of free multiplayer. Say, one week free after which you turn off multiplayer and offer IAP to restore functionality. A free trial period per se.

I struggled for months about what do for a multiplayer solution because I wanted to do cross-platform multiplayer. In the end, I decided to avoid the 3rd party multiplayer solutions that would allow me to do cross-platform because of the cost. I’m currently developing a solution that uses GameCenter on iOS devices and Google Play Game Services on Android devices, though this isn’t easy since Corona uses turn-based on GC and real-time on GPGS.

This problem would be moot if we could get Corona Labs to implement GPGS for iOS, and also support turn-based on GPGS. Earlier this year, Google announced that GPGS is now available on iOS, which will allow for free cross-platform multiplayer play. Check out this thread for more info:

http://forums.coronalabs.com/topic/45644-google-play-games-gets-cross-platform-multiplayer-for-ios-and-android/

I would encourage you to throw some votes behind this issue in Corona Labs’ feedback system. Below is the applicable feedback case:

Turn-based Multiplayer and iOS support for Google Play Game Services

 

If you have the votes available, I would also encourage you take a look at these two:

 

Real-Time Multiplayer support over Game Center on iOS

 

Support all GameCenter features