What iPhone APIs are available for internet-based matchmaking games? - iphone

I have a pretty basic challenge-based iPhone game, and I wanted to know what my options are for player discovery & matchmaking. I may end up rolling my own server, but if I don't have to, even better.
So far, I've found OpenFeint and Scoreloop, but I don't really care about the social part or discovering other games, I just want a simple system with matchmaking, win/loss, and global rankings. CocosLive has the global ranking part, but not the matchmaking.
Also just found RakNet.
Thanks.

Check out the Google App Engine for a free to cheap alternative to setting up your own server. It also has the added benefit of being Google, which to me spells reliability.
I expect that RakNet and similar companies will want a bunch of money for this solution - one of their clients is Sony Online Entertainment which to me spells money.
Also as you search around for solutions I would focus more on searching for open source code to put on your Google App Engine rather than a service. Online services require bandwith, which costs money. Information is free.
Good luck!

Related

Roll your own Multiplayer iPhone setup?

I've been looking into the various options for implementing multiplayer (internet) in iPhone games. Game Center, OpenFeint etc are obviously very good, stable and feature-rich. But I can't help thinking my needs are a lot simpler than what they provide.
If I wanted to put together a simple 2d tank game, could I not just..
setup a mysql server on the web, with some get/set php scripts to actas 'web services'.
when you open the game, a call is made to the server, to log that you're 'available'.
when you select Play, a call is made to retrieve a list of 'available' IP's.
you select an opponent, remote IP is stored locally.
game starts, UDP handles the data between your IP and your opponent's IP.
..or would that never work? apologies, I'm very much a n00b at gaming/networking dev!
thanks in advance!
In addition to the complexities that dtuckernet points out, there are few other things to consider:
You need to think about the cost of running and supporting the web server. Can you maintain the same or better uptime than Apple and OpenFeint?
GameCentre promotes games that support it. The App Store adds an icon, and Game Centre itself lists games that your friends own. Don't underestimate the effect of free advertising!
Even if the code it easy (which I suspect isn't true), why take the risk of developing your own when there is well-tested code available for free?
Incidentally, depending on your requirements, you may want to use a hybrid approach. For example, Game Centre has a maximum of four players per game when Apple hosts it. You can find players using GC and then run the games itself on your own server.
That would certainly work, but implementing this can be a bit harder than it seems initially. You have to handle things like NAT/Firewall traversal and if you are using UDP you need to implement some type of a heartbeat to ensure you know when devices have disconnected (and handle it accordingly).
In most all cases, you would be better off working with a solution that already has these problems solved.

How the game will search for other online users and will display the list of all users?

I am asking this question as a small part of my question series regarding game programming .
Refer this question as the main one .
Now suppose I want to develop one small board game on iphone that is multiplayer . so how it will handle how many users are online and displaying them .
Suppose it is an online multiplayer casino game .
Then suppose it have to show currently playing tables and users on them .
So what can we do in iphone to do this sort of thing .
Thanks .
You're essentially asking what is referred to as 'matchmaking' in PC and console games.
The notion of displaying all currently online players or active matches is an early one in online multiplayer gaming, and I think it's seen its time. Instead, try and offer your players two options: Play with your friends or play against people of your skill level.
Showing someone a complete list of tens/hundreds or even thousands of games/players is just going to overwhelm them. People are much more comfortable knowing they're playing against people they know (and trust not to be unsportsmanlike) or at least that they're playing against someone of comparable skill level. These 2 concepts are often called 'buddy based matchmaking' (or friend lists) and 'automatch' or skill based matchmaking.
Unfortunately, from what I've seen in the GameKit framework, neither are fully supported, at least as far as playing on non LAN connections. You're going to have to either develop that yourself (and very few iPhone developers are going to have the resources to create and host it), or see if someone like OpenFeint, ngmoco (plusplus), Chillingo (Crystal) etc match your needs. OpenFeint seem to be talking about matchmaking on their site and plusplus offer buddy based challenges. The OpenFeint signup process is the easiest and you get access to their SDK right away for development without prior approval.
Now here's one final thing to consider: smaller games aren't going to have the player base to have enough concurrent players around so that everyone will always find a suitable match at any time of the day/week. Unless you have promotion and publisher backing, or a breakaway hit, picking an automatch based solution is not your best bet and shouldn't be your only mode of matchmaking. Ideally your game should allow for some turn based form of game play, so you can play asynchronously. That model has worked great for games like Words With Friends.
You need a server, you gameclient will contact it to get assigned to a partner. This is call matchmaking (google it to learn more).
I think there are OpenSource solutions (or at least frameworks) for this. But I don't know them. I know however Exit Games Neutron and Photon and I think there are free licenses for private / educational use.

mobile application analytics

HI all,
so we all know "pinch media" - the "spyware" software ;)
i'm searching for some really cool analytics softwares for my iphone application.
pinch media, is the one i know, it looks really great, but we all know, the reputation of this piece of software is very bad.
i'd like to know if i can use it, or if my app then is one of this spyware apps, for users (it isnt really, i know, but users might think it is, when i use this).
are there some alternatives? other programms, with the same good analysis?
I found admob and motally.com, but pinch media/Flurry is the best one atm.
Here is a good pdf that compares some of the main iPhone/iPod touch analytics providers
Try Google Analytics
Any analytics package which reports usage statistics back to a central server (Flurry, Google Analytics, etc.) will be considered "spyware" by some users, not just Pinch Media's offering. The really paranoid users will sniff data traffic out of your application and detect traffic from any service, no matter who provides it.
If you really care about those users who will be upset by this, give them the option to opt-out of data collection in your application's settings or when the application first starts.
If you are looking for more inside on your app, you should try heatma.ps. They let you view heatmaps for your app, and other interaction data.
Example heatmap:
I suggest you to take a look at Appsee
Appsee provides visual in-app analytics, including heatmaps, real user recording and user bahavior reprots. And you can create a free account there.
Flurry, Google Analytics, etc are central server to store the user's data.
If you want to build your private data center. you can visit this url
http://www.github.com/cobub
And the web site is: http://dev.cobub.com
to get the open source system (both server and client sides)
There are two kinds of analytics: business analytics and app performance analytics. Google Analtyics, Flurry etc are good for business analytics but app developers are mostly interested in knowing when app crashes, being able to capture app logs, impact of network speeds and carriers on performance of their apps. For app performance analytics, take a look at http://apigee.com/about/mobile-analytics . You not only get real time performance anlaytics but also ability to do some configuration changes in real time.

What do you want an iPhone library to do for you?

I'm an undergraduate university student who also writes iPhone applications. Next year I'm expected to do a final project, something that lasts the full year and involves a fair bit of software engineering.
My original plan was to write an object-relational wrapper around SQLite for the iPhone (or rather, to massively clean up and extend one I already have) and ultimately release it as open source. Unfortunately, with Core Data being added to iPhone OS 3.0, that's no longer really necessary. (At least, that's how it seems to me; any opinions on this?)
However, I'd still like to do a useful, technically interesting iPhone-related project next year. So here's my question: what do developers need? What sort of problems do you encounter in your apps which seem like they could be handled by some sort of library or framework? My focus is generally more on utility, productivity, and communication apps than games. And since I'm proposing this to a university, something that's either theoretically interesting or attractive to potential students would be preferred. And of course, it'll need to be something that they haven't added to the new version of iPhone OS.
It's in the early stages, but a bunch of scientifically-minded Cocoa developers (headed by Drew McCormack) have joined together to start a BSD-licensed data charting / plotting / visualization framework called Core Plot (mailing list here). This framework is cross-platform between Mac and iPhone, relying on Core Animation for rendering.
While you wouldn't be starting your own project fresh, contributing to this open source framework would be technically challenging and I believe that the framework will have far-reaching applications. I'm sure that the university would be impressed by the potential scientific and educational uses of such a framework.
A library that provides a very simple API that would enable any app to act as an OAuth consumer would be incredible! It could be used to enable data access against hundreds of OAuth-enabled data APIs all over the web, including those of Google, MySpace, Twitter, Yahoo, Flickr, etc. Imagine how many thousands of additional applications you could enable other developers to build with ease.
Your code could be included in pretty much every worthwhile iPhone app that any future developer writes!
I'd like to see a framework that abstracts the interface to various social networking sites. Having a standard API to send updates and post pictures to MySpace, Facebook, Flickr, Picassa, Blogger, Twitter, and other services would be very useful.
A general purpose framework to communicate with a particular iphone from any application with internet connectivity. iphone apps are great, but so much more can be delivered with serivces from the web - so some sort of communications would be nice.
Make some sort of API that can be used to talk to iphone from other connected applications - either web services or desktop, etc.
I ended up having to go in a different direction due to the rules of the project, but I'll keep these in mind as possibilities for future, non-university work. Thanks, everyone!

Porting a flash game to the iPhone

I have a Flash game that I'd like to port over to the iPhone but I don't have the time nor the patience to do it myself, I also have a limited budget.
Can anyone recommend a place to put out a tender for an iPhone developer to port my game?
You could wait for the beta of Flash CS 5, and use that to compile your Flash straight to iPhone....
If your game has an existing community and content around it, try to partner with an experienced iPhone developer. They would port the game, you would provide the content and the community, and the revenue gets split. I am in the middle of this process with my online game (http://robozzle.com).
Alternatively, you could try to contract the job to a developer you found on a site like http://elance.com/ or http://rentacoder.com/. But, iPhone games aren't quick to develop, so you'll be looking to spend a considerable amount of money that way.
I would recommend trying one of the many freelancer sites out there such as http://www.ifreelance.com/
They tend to be able to hook you up with relatively low cost developers. A google search for 'freelance software' will give you numerous good results.
You can post job offers right here on SO: http://jobs.stackoverflow.com/
Furthermore, you could take a look at http://www.mobileorchard.com (free)
You might want to try Game Salad, a game construction kit. It looks similar to Flash game creation.