Holy crap Jusint.. 10s of thousands of updates every day! That is sick! I want to make a game that gets a couple.. hundred or so updates a day. :D Sell your game for .99.. you'll be rich man! :D
On Wed, Mar 24, 2010 at 11:08 AM, Justin Giles <[email protected]> wrote: > I decided to pull the web page in just so I didn't have to format it > multiple times. All the paging, etc, is built-in to the webpage so I don't > have to worry about doing that inside Android. Anyway, if I were to pull > the information from a database on my server I'd still have some lag time to > pull the information in and process it. Really, when pulling in the info > into a webview, in my case, it's not much of a hit on performance. I have > my stuff hosted on appengine.google.com. The only lag that happens is if > the high scores page hasn't been hit in a while and thus, the appengine > doesn't have the page preloaded. In that case there is a few seconds of > lag, otherwise it's almost instantaneous. Low overhead as well. On average > I get about 1-2k high score page views a day and it uses very little > resources. That combined with the 10s of thousands of high score updates I > get a day, I have yet to go over (or even come close) to my free quota > limits. > > Justin > > > On Wed, Mar 24, 2010 at 12:48 PM, Kevin Duffey <[email protected]>wrote: > >> Hey Nikolay.. didn't realize you were the author of Bebbled. Great game. I >> play that one a lot too. I need your source tho.. I am stuck on a level and >> I want to modify it so I can beat it. :D >> >> As for sending game moves..that's interesting, but I agree with Justin >> that it seems quite overly complex/clunky for most games, to handle a high >> score. With encryption and SSL, why not just go that route? I don't know if >> you are selling Bebbled..I have a free version, but it's such a good game I >> can't imagine you're not making decent money from it. Is it the cost of the >> certificate and such that you decided to avoid using SSL, for example? I am >> not trying to be nosy.. I am trying to understand what/why you did what you >> did. I've not heard of anyone sending game moves and storing all of that to >> avoid a cheating high score. I would have thought with sha-1 salted hash or >> something, or SSL, you could avoid any cheating going on. As someone else >> posted, the chances of someone really trying to cheat are probably so >> limited.. I mean you're not giving out money for high scores or any sort of >> reward. >> >> As for social aspects, I've not looked, but I thought Facebook, twitter, >> and such had REST based APIs, where you basically get some developer key, >> and then can call the APIs to connect to them. Maybe I am wrong on this.. >> but I've seen a few posts about this fb-connect library, and wondering why, >> if there is a REST-like interface, you need a kit for it? Maybe there isn't >> a rest-like interface. I thought there was tho. >> >> Justin, the web view you mention, why not just make a call to the server >> to pull the high score data down, and format it directly into the game with >> a view? I am curious why you went that route? I think you said you have a >> website where players can check high scores, so you're reusing it.. but even >> so, I mean.. in my mind, if you're good enough with Android to make a game, >> making a server call to get some high scores and display it in a view would >> be easy to do. Just curious why you chose this method instead of what I am >> asking? >> >> OAuth.. it's quite interesting.. I've found it a bit difficult to figure >> out how to use it tho. I want to use it for services on the server side.. it >> seems I have to provide several keys or something to the client using the >> service with oauth. While it seems to be the new industry heavyweight for >> authentication and everyone is adopting it, I get confused with the >> two-legged and three-legged methods for service calls. I know the >> three-legged is great if I want my friend to access my stuff that otherwise >> they could not. But when I put up a web service and want to allow a client >> to access it, seems the two-legged approach is fine..yet I forget now but >> read that three-legged is better for this.. but it seems more complex to >> explain to clients on how to use it as well. Ugh! >> >> >> >> On Tue, Mar 23, 2010 at 10:55 AM, Nikolay Ananiev <[email protected]>wrote: >> >>> Well, it's more expensive to use the web view, because all the html that >>> you transmit over the network is redundant and the server traffic cost goes >>> up. >>> What I don't want to do is to pay to support a free game. That's why I >>> made my own binary protocol, which is very efficient - loads the data very >>> fast and the bandwidth cost is very low. >>> For example, last month I had only 4GB of traffic, which costs me $0.61 >>> with amazon aws. >>> >>> Implementing the social features in Bebbled was not hard. The hard part >>> was to make the current facebook-connect library ( >>> http://code.google.com/p/fbconnect-android/) work. It's not an official >>> one and it's a direct port of the iPhone version. It has many bugs and >>> issues with threading, but I managed somehow to make it work for me. I even >>> returned some patches to the maintainer, but he hasn't responded yet. >>> >>> As for twitter, I didn't find a "Sign in with Twitter" library for >>> android. There's even no such library for iPhone. I created this from >>> scratch using a great OAuth client implementation ( >>> http://code.google.com/p/oauth-signpost/). I'm thinking to release this >>> code as an opensource project as soon as I have the time. >>> >>> >>> On Tue, Mar 23, 2010 at 3:01 PM, Justin Giles <[email protected]> wrote: >>> >>>> Nikolay, >>>> >>>> First of all, kudos to a great game! It's one of the few that I go back >>>> to over and over again. >>>> >>>> Back to your post: >>>> Great ideas here! Your online scores idea is great for decreasing the >>>> amount of cheating to almost 0. However it seems like it has a lot of >>>> overhead to recreate someones game. Maybe not. I guess it just depends on >>>> how much logic you have to go through to recreate the game. And, in a lot >>>> of games, this approach wouldn't work very well, or could become clunky. >>>> But, for you game it seems to be working great. >>>> >>>> In regards to not showing the online scores in game, why not use a >>>> webview on your activity to pull in a "mobile" formatted webpage with the >>>> scores? That's how I pull in the online scores for my app and, sure, it >>>> takes a few seconds to load the webview into an activity, but it's >>>> something >>>> like 1 second for an activity to load versus 3-5 seconds for the activity >>>> with a webview to load. You also bypass having to dump out to the browser >>>> to do this. >>>> >>>> In regards to the social aspects you recently implemented (facebook, >>>> etc.)...was that much work to do? I've been thinking about adding these >>>> types of features into my app as well. I'm only at the exploratory phase >>>> currently though. I'm not entirely sure what all I'll be getting into >>>> there. >>>> >>>> Justin >>>> >>>> On Tue, Mar 23, 2010 at 2:39 AM, Nikolay Ananiev >>>> <[email protected]>wrote: >>>> >>>>> On Wed, Mar 17, 2010 at 2:08 AM, Kevin Duffey <[email protected]>wrote: >>>>> >>>>>> Hey all, >>>>>> >>>>>> I am curious how the various groups of game developers, primarily >>>>>> mobile (android in this case) and cross-platform >>>>>> (android/iPhone/facebook) >>>>>> handle storing high scores, achievements, and such as well as how multi >>>>>> player is done. >>>>>> >>>>> >>>>> How does your game(s) access high scores, update the list, remove them >>>>>> if need be? The same would apply for achievements, and to a lesser >>>>>> degree, >>>>>> leader boards. >>>>>> >>>>> >>>>> Are you using a service out there that you pay for... if so how much >>>>>> does it cost.. and do they provide some sort of java/objective-c SDK that >>>>>> you can just plug in to your code? >>>>>> >>>>>> How do you dispaly high scores, leader boards, achievements, etc in >>>>>> your game? Do you provide your own web site with the same info, perhaps >>>>>> jazzed up a bit more or with more detail than your mobile game (due to >>>>>> limited screen realestate for mobile devices)? Do you provide a link to a >>>>>> web site in your game if they want to see things like high scores, >>>>>> achievements and leader boards? >>>>>> >>>>>> >>>>> >>>>> >>>>> My game has a custom view to show the high scores in the game. I didn't >>>>> like the web browser approach, because it gets the player out of the game, >>>>> completely changes the UI he is used to and the loading time is terrible. >>>>> The user experience is really bad this way. I have two high scores in the >>>>> game - local and online. The local high scores are stored in a SQLite >>>>> database and the remote are in PostgresSQL. I also show the high scores on >>>>> the website and on a Facebook application. The difference between the 3 >>>>> types: The in-game high scores do not support searching (I just don't have >>>>> the visual space to put a search input field, which I want). The website >>>>> ranking supports searching, but otherwise is the same like the in-game >>>>> one. >>>>> The Facebook one is interesting. If you log-in the game using facebook >>>>> connect, your facebook id is saved and this allows me to show a specific >>>>> ranking based on you and your facebook friends, show their pictures, link >>>>> to >>>>> their profiles and so on. >>>>> >>>>> >>>>> How do I send the scores to the server? I don't. That's how I prevent >>>>> cheating. What I do is to send the player moves to the server and the >>>>> server >>>>> replays the game using the player moves. Checks if every move is according >>>>> to the game rules and validates the game. If the game is valid, the server >>>>> just extracts the scores out of its state and saves them. There are no >>>>> high >>>>> scores send over the network. >>>>> >>>>> >>>>> >>>>> I would also like to know what sort of things are most important for >>>>>> your games. High scores are so yesterday, so to speak. The latest craze >>>>>> in >>>>>> most games seems to be achievements and the ability to obtain extra items >>>>>> for your games, either by buying them, or earning them through >>>>>> achievements, >>>>>> etc. So what are some things you game developers would want to make use >>>>>> of >>>>>> in your game to add more appeal to your game, to draw in players for >>>>>> longer, >>>>>> especially long enough to pass the 48 hour refund time so that you can >>>>>> actually earn some money from your hard work. I look at games on Facebook >>>>>> like Farmville that are doing so well they are hiring more developers at >>>>>> good pay to work on it. I also look at games like World of Warcraft, >>>>>> which I >>>>>> play and got sucked into for a while, due to getting to that next level >>>>>> or >>>>>> getting that next awesome epic gear piece... those sorts of things seem >>>>>> to >>>>>> be what draws in players to otherwise simple games. A number of mobile >>>>>> games >>>>>> that seem to do very well often seem to be fairly simple games but offer >>>>>> that right mix of "I just got to get to that next...". I am curious what >>>>>> some of you developers have found work for games either those that you >>>>>> played, or are working on (or have written) that draw in players. This >>>>>> leads >>>>>> to the next paragraph.. making a living on game development ultimately >>>>>> requires that your game does well and that people pay for it in some >>>>>> manner >>>>>> and not refund it. Hence why I am trying to understand what it is that >>>>>> those >>>>>> otherwise simple games seem to do that draw in the masses. >>>>>> >>>>>> >>>>> >>>>> I'm currently working on a real-time multiplayer. You will be able to >>>>> play against other players from around the world. I will add an option for >>>>> bluetooth challenges later. I'd like to add achievements, but that would >>>>> be >>>>> after the multiplayer. >>>>> >>>>> >>>>> >>>>>> Which brings about another topic.. how do games like Farmville make so >>>>>> much money being free games, that they can have a company behind it? I >>>>>> can't >>>>>> believe ads on the stie alone make up for all their revenue. I've been >>>>>> considering looking at ads in the game as opposed to charging for it, and >>>>>> that seems like players might keep a game longer than if they pay for it >>>>>> and >>>>>> then refund it within 48 hours if they don't absolutely love the game... >>>>>> although I am not entirely sure how much it annoys players to have a >>>>>> small >>>>>> portion of the screen saved for ads as opposed to just buying it. >>>>>> >>>>>> >>>>> >>>>> Farmville makes little money from ads compared to the money they make >>>>> from selling virtual goods. Last thing I remember was that they released a >>>>> new flower and made $800,000 in a single day. And I personally hate ads. >>>>> My >>>>> game doesn't have ads and it's free. >>>>> >>>>> >>>>> >>>>>> Lastly, multi-player. I am curious how games work multi-player. The >>>>>> only way I can think of is the client (game) has to update a server of >>>>>> some >>>>>> data, a move, location of a sprite, etc, and at the same time has to poll >>>>>> the server often enough to update the game screen to keep things working. >>>>>> The first part of this, the game side, seems easy enough.. at least to >>>>>> some >>>>>> degree.. when your player makes a move, you send a server request to some >>>>>> server with the data, be it their new location, a weapon they selected, >>>>>> etc. >>>>>> The second part of this is the client polling the server often enough, >>>>>> fast >>>>>> enough, to keep things smoothly on the screen of all players. So how have >>>>>> some of you handled this and yet keep the game playing smooth as well? >>>>>> Probably more important is, the server side. Not necessarily the code >>>>>> bit of >>>>>> it, but how do you handle if your game takes off and you get 10s of >>>>>> thousands of players playing it... what sort of server side technology is >>>>>> used to handle that many requests, that fast, fast enough to allow all >>>>>> those >>>>>> game clients to provide a smooth game experience while keeping the >>>>>> multi-player working solid as well? >>>>>> >>>>>> Thank you. I look forward to learning more about how these things are >>>>>> done in games. >>>>>> >>>>>> >>>>> >>>>> Server polling is always a BAD idea for games, especially for real-time >>>>> games. You have to go lower in the newtwork stack and directly use >>>>> sockets. >>>>> If you use low-level sockets you can keep the connection to the server >>>>> opened all the time and this way you can push information and the server >>>>> can >>>>> push information back to you and there is no need for polling. That's how >>>>> multiplayer gaming usually works. >>>>> >>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Android Developers" group. >>>>> To post to this group, send email to >>>>> [email protected] >>>>> To unsubscribe from this group, send email to >>>>> [email protected]<android-developers%[email protected]> >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/android-developers?hl=en >>>>> >>>>> To unsubscribe from this group, send email to android-developers+ >>>>> unsubscribegooglegroups.com or reply to this email with the words >>>>> "REMOVE ME" as the subject. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Android Developers" group. >>>> To post to this group, send email to >>>> [email protected] >>>> To unsubscribe from this group, send email to >>>> [email protected]<android-developers%[email protected]> >>>> For more options, visit this group at >>>> http://groups.google.com/group/android-developers?hl=en >>>> >>>> To unsubscribe from this group, send email to android-developers+ >>>> unsubscribegooglegroups.com or reply to this email with the words >>>> "REMOVE ME" as the subject. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Android Developers" group. >>> To post to this group, send email to [email protected] >>> To unsubscribe from this group, send email to >>> [email protected]<android-developers%[email protected]> >>> For more options, visit this group at >>> http://groups.google.com/group/android-developers?hl=en >>> >>> To unsubscribe from this group, send email to android-developers+ >>> unsubscribegooglegroups.com or reply to this email with the words >>> "REMOVE ME" as the subject. >>> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected]<android-developers%[email protected]> >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en >> >> To unsubscribe from this group, send email to android-developers+ >> unsubscribegooglegroups.com or reply to this email with the words "REMOVE >> ME" as the subject. >> > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > > To unsubscribe from this group, send email to android-developers+ > unsubscribegooglegroups.com or reply to this email with the words "REMOVE > ME" as the subject. > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en To unsubscribe from this group, send email to android-developers+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.

