Developing applications and games for FaceBook seems like an exciting opportunity and I have dozens of questions that pertain to doing it. Here are my questions, please feel free to post your own:
Q: What is the best language to develop in for FaceBook; Flash, Java, other?
Q: Many of the best FaceBook application allow you to share your progression with friends and even share content. Where can I learn more about how my app/game can integrate with the FaceBook network and existing tools?
It looks like the developer’s page has a guide on creating facebook apps:http://developers.facebook.com/docs/guides/canvas/
That talks about hooking into Facebook. (Your Q2) What the game itself should be written in…I defer to those who actually have done so.Thanks Goldie, we were sure to come across that eventually but thanks for linking it here for others to find!
Q: Has anyone here developed for FaceBook, and can you share any valuable experiences or is it pretty straight forward?I’ve developed for Facebook. Once you get the idea of FBML under your helmet, it’s pretty straightforward.
One of the big things you should think about is how “noisy” your game is. People hate Farmville because it’s so absolutely noisy to your friends that it quickly becomes spam. I’ve decided that if I build bridges between my next browser game and Facebook or Twitter, I’ll build in limits on how many times it can make broadcasts into those sites.
Developer here!
I would suggest PHP. Not because it’s a spectacularly awesome language, but it’s very common and the official PHP API seems to get updated more quickly than the others. You’ll also find more help in the more common languages.
The TOS for facebook is actually quite specific and ever-changing. The URL posted by@goldiekatsu is where I would also link you. It’s possible to write non-canvas apps, but canvas is the most common choice, and the documentation for a canvas app is the best.
While we are on the topic I was reading a write up of Raph Koster’s talk on social game design at GDC Online and one thing that struck me was that he mentioned that social games (like ones on facebook) give you very quick feedback as to whether your “good idea” is actually working out. Is there a good resource on what kinds of metrics you would use for such a thing or how to code them and the like?
@goldiekatsu – I read somewhere that Zynga uses Amazon EC2 instances to host their games, since it means you don’t have to buy tons of hardware to see if your game will work, AND it means that if your game doesn’t make a lot of money, you might be out a couple hundred bucks at most. EC2 is awesome for “shallow development” sorts of things like that.
Paul: you make excellent points, I would love to learn more about what is too noisy, what’s not enough and what feels right.
Daniel: I hadn’t even thought of PHP, shows you how much I really know about FaceBook development. Thank you too for you information.It’s pretty easy to built a simple app in FBML, but everyone I know who does this for real has spent significant time building out a framework that allows them to manage all the key components of a social app/game. You’ll ultimately want to be able to test/measure the effect of everything from wall posts, to notifications, to invite flows. Not to mention having a path to roll in more and more caching when your social app takes off. Of course, you don’t want to prematurely optimize anything (experiment cheaply!), but just know that there are lots of well worn practices that you can draw on when you’re ready.
Are there any statistics our there that state how much revenue FaceBook games typically produce? It seems after you pay for development costs and FaceBook gets their cut there isn’t a whole lot left, unless you have a bunch of games operating at once (points to Zynga).
One important decision you’ll need to make is to host your application somewhere. Amazon EC2 was mentioned by @rockstar as an option, and the new “micro-instance” type is something worth looking into as a “shallow development” option. In my limited FB dev experiences, I’ve had good times with Google App Engine (GAE) combined with the RestFB Java library. Especially for small prototypes, you can use GAE to test a number of things quickly and still stick within their free usage quotas. GAE supports Java and Python development, although it’s possible to set up support for languages if they run on the JRE (e.g. JRuby to do Ruby development). GAE has far more limitations than a pure virtual hosting solution like Amazon or Linode, but it’s very friendly if you just want to write code immediately and skip being a sysadmin. Also, the instrumentation that GAE gives you to track performance, logs, hits on your app, etc is quite impressive (and you can use this to project/guesstimate how much your operation costs would be in a real web deployment).
VERY interesting! Micro instances either weren’t available or I missed them the last time I took a good look at EC2. At those prices, EC2 starts to feel potentially useful even for my limited needs.
Thanks! I may have to give GAE another good look too, it’s been a LONG time.
Glad to help @argtechnologist ! Forgot to also mention that the “cheap/free/micro” options in the virtual hosting market are heating up – which means good times for devs who want to prototype designs on the cheap (or free). Other choices you might want to shop around for are Linode, Slicehost, Rackspace, and others (there’s a couple of discussions over at Stackoverflow and elsewhere about them). GAE has some interesting competition too from places like Heroku (if you want to do Ruby development). I’ve used Amazon and GAE – Amazon gives you lots of flexibility, but you do need to know what you’re doing, whereas GAE gives you a much more limited sandbox, but you can get started faster on small things for free, and they have some really good dashboards to see what’s working (or not). Here are a couple of discussion threads that go into detail about using GAE for games (although, not FB):http://gamedev.stackexchange.com/questions/3981/is-google-app-engin... and http://googleappengine.blogspot.com/2010/04/games-on-app-engine-int...
Great stuff all. Very informative for somebody who isn’t on the engineering side.
@argtechnologist – EC2 is becoming so prevalent that I do all my proof of concept work there now. You can start with a really cheap instance for “beta.” My biggest concern is that when you write and app, you REALLY need to write the app specifically for the cloud. I/O is a real commodity there. Just because you have large amounts of RAM and a large virtual processor doesn’t mean the bare metal is any faster. You’re still on a VM, so you need to keep those kinds of things in mind.
What’s great is that if you write for the cloud, you can easily port to a dedicated server should you decide to do that. Porting from a dedicated server to the cloud is much harder.
I like GAE, but it doesn’t give you the flexibility you’ll probably need. If you don’t want to use Google’s Big Table (maybe you want to use MySQL or something), you’re out of luck. More importantly, you need to be able to gather really specific usage statistics on a base proof of concept, and GAE doesn’t really provide that.
Rackspace’s cloud tech is all open source, so if you’re looking outside of EC2, Rackspace is great, and their management API is EC2 compatible, so all the EC2 tools you might have built (I tend to build them a lot) can carry over with no porting.
http://www.insidesocialgames.com/ This website (and its family of other social media blogs) discusses economics, statistics and other data related largely to FB games and apps. It might be useful! Hope it helps!