I'd like to have an android app that would allow a given number of users to be "logged in" either as a player or ref. The players would just be able to increment their score, while the ref would have a screen that shows all player scores and alerts the ref with a tone/vibration when a player reaches a target score.
I have no android dev experience and in a perfect world I would just find an app that does something similar to this that I can just tweak. I'm not sure if this kind of functionality would depend on having a server or at all where to begin on learning the knowledge that would be necessary to create such an app.
Kind of a vague question... you will however need a server to keep track of all the scores - for example you can have an SQL database that contains all the users/scores and all the Android app is tell the server which user's count to increment.
Another alternative would be to use the Google Drive APIs - you can probably use forms or something to increment counts while the "ref" would have full access to the document.
Related
I have a leaderboard with tamper protection ON since it's creation, but a player has added a hacked score of some millions of points (human reachable max of points is less than 1000)
How can I delete only that hacked score? It must be a way to do it... but can't find in documentation: https://developers.google.com/games/services/common/concepts/leaderboards
Check out the players.hide() call. This will hide a player and all of his/her scores from the public leaderboard so that nobody else can see them.
Note that this REST call is not built into the mobile libraries; you'll need to create your own mini web app (or make curl calls directly) to use this call, although there is a management tools sample app that you can use here which might make your life easier.
Oh, and if you know that the human reachable high score has to be 1000 max, specify a "Max score" of 1000 for that leaderboard in the Play Games Console.
What I do is some kind of obfuscation.
I mean, I do replace numbers with an string like
0 = #$%#&*52$*#
1 = #$%#&*84$*$
2 = #$%#&*58$*#
separated for another unique string like: %$$90&*
and so on.
so when I go to post the score, first I do a find and replace
the string for each number, as I am posting the score locally the
data would look like;
122 = #$%#&*84$*$%$$90&*#$%#&*58$*#%$$90&*#$%#&*58$*#
so its a little bit difficult (not impossible) to post a hacked score
You can use Google Developers OAuth 2.0 Playground to do the players.hide() as mentioned by #todd-kerpelman, following the instruction in this article, but it is still a very tedious process.
I used the management-tools before too, but it seems to be not working any more.
I'm developing a game using Android Multiplayer TurnBased api.
The game that I use as "example" of multiplayer approach is SuperStickman Golf2, even if game is absolutely different.
Like golf2 , I want to implement an invitation where the player indicate the own nickname and he can invite other nickname.
Obviously I dont want to use default UI from Google.
But how can I do that ?
In particular:
1) when I choose a nickname, where it will be stored?
2) when I want to play with another nickname, how/where do I perform the search?
The only way that I know to make an invitation is to use "playerId", but it seems not sufficient...
In my game I've done everything and this is the last thing to make! but I'm stucked in this problem!
As alternative, how can I obtain playerId from displayName (that is like nickname, even if this is not my real target...)?
i am currently developing a realtime multiplayer game for android and i got the example ButtonClicker working. I think the "quick game"(or maybe it´s called automatch) option is just what i need. But i need something like this: I would like to make the player play a match with a random player from his level. You see, on my game, every player will have a level and these levels and associated players will maybe be stored on a database. I want the player to have a quick game with only the players from his level. Is it possible to inform that criteria on quick game? What must i do?
I also want him to be able to choose his friends(the invite option) but only friends that are on his level.
In order to restrict automatching between players, you can use the variant option when building a room configuration, ie RoomConfig.Builder#setVariant(int).
In order to restrict invitations, I think you will have to create your own "invite player" activity, which I am less familiar with. You will presumably have to query for the player's friends, and then cross-correlate this list with each of their "levels" and filter it down to those of the same level before showing it in the activity. It looks like The Players API has some methods that you will be able to interact with, and hopefully would contain an Id that you use in your level-based DB.
Rob
When you create your RoomConfig for match making you can provide AutoMatchCriteria. The API just uses a bitmask, so it is up to you what data you put in that bit mask:
createAutoMatchCriteria
exclusiveBitMask: Exclusive bitmasks for the automatching request. The
logical AND of each pairing of automatching requests must equal zero
for auto-match. If there are no exclusivity requirements for the game,
this value should just be set to 0.
In your case this could contain a level range to match up with.
You can see it being used in the sample code here: Developing Real-Time Multiplayer Games.
I am planning on introducing Google play game services to my app. However I am not sure if i can provide the following capability. I need to be able to list the rooms available so the player can join any room he chooses rather than auto join.
Is there a way to do that? Thank you
In the current implementation of our API, there are no "open rooms" that you can voluntarily enter. You need an invitation to enter a room. So the method we have that's closest to what you're asking is the GamesClient.loadInvitations() method, which will list all the currently active invitations to rooms that the player has.
If the behavior you're trying to implement is "I want to join a room that's playing upside-down four-dimensional chess", without being specifically invited by a friend, then what you want is probably automatching. Automatching means you create a room and specify the number of players you want in your game and, optionally, a variant code (an integer) that indicates the game type. Then, the API will match together a set of players who is wanting to play that same variant at that moment, and will put them all in the same room.
You might need to use Leaderboards in Android
I can't see how you could do this in the current release of Game Services (at least not if you use the API in the way that Google wants you to).
However I just noticed this:
https://developers.google.com/games/services/web/api/rooms/join
Join a room. For internal use by the Games SDK only. Calling this
method directly is unsupported.
Maybe this sort of thing will be possible at a later date ?
I have finished and released my game and it contains a local highscore list for each phone. I would like to make it so that the scores are global..ie. send score to a server and server sends the highest scores to all the phones when they connect
Unfortunately I have no idea where to begin. So if somebody could point out a link or give me an explanation on how to proceed I'd be very appreciative, thanks!
You have the general idea. You have to:
Send the score to a server
Retrieve the high score table from the server
This means that you probably want to have some sort of web-based API for these two. The easiest way is to simply let someone else do it. There are free services out there that already provide global high scores. There are probably more, but for Android, OpenFeint and ScoreLoop are two big ones that I know of. You can look through their docs and see if you want to use them.
Alternatively, you can roll your own. This is a bit more work (though honestly not all that hard). If you go this route I'd recommend you build a web service that you can post scores to. The web service would save the score to a database and then when the client calls the web service to retrieve scores, the web service queries the score database and returns them.
That's a general outline, because frankly how to build that web service is a whole other question, and you'd have to decide on a language/platform etc. for that too.
Check out Swarm's Leaderboard system, which is similar to the others mentioned here (ScoreLoop/OpenFeint), just another alternative to consider :)
Have a look at Scoreloop 1.0 in NDK 2.0 release for BB.
https://bdsc.webapps.blackberry.com/native/beta/?CPID=TWDToolDL&Date=112311