A Poor Person’s Guide to Making a Facebook Game: A Intro

Dudes, here’s the thing. When I was first starting out on this Facebook game making business I had no idea how complicated things would get. It’s like no one told me about this side of flash programming. You can’t just google and forum lurk your way into wisdom. You have to go deep, like 5+ sub links deep. Is it because most social games are run by companies who don’t want to share their secret sauces? Yes, maybe. Companies are evil like that.

Not me. I’m a friend. And I want to share what I learned. Partly because I’m a good person and don’t want other people to suffer like I did, but mostly because I want to get other (read: smarter than me) people’s feedback. Disclaimer: I haven’t made a successful facebook game (yet) and some of the things I’ll write about are things I didn’t do but totally should have.

Making a social game is different from making ordinary for-flash-portal games. Way different. For a typical flash game to be profitable, it has to be distributed to as many portals as possible. So it is common wisdom that you should put everything on a single .swf file, otherwise the portal people are going to hate your guts for making their lives miserable. Try to do that for your social game, cram 250+ animations of houses and racially diverse avatar skins and “save this cute lost puppy” dialog popups and you have yourself a slightly less heavy MMO client. And look, databases! And server queries! And user metrics! And Facebook credits!

It’s more like making web apps really. You provide them a service: you free them from boredom. The customers/players pay you to keep tabs of the data they generated from your app/game. This is similarities are uncanny for spreadsheet style games.

This is my linkedIn if my contacts have really cool job titles. My real linkedIn sucks.

So I think I will be writing about how to make games as apps. And here is a list of random topics I might write about:

  • Optimizing loading time
  • Dynamic asset loading
  • Efficient asset pipelines
  • Vector caching
  • Continuous integration
  • Transacting with real money
  • Connecting to social graphs and APIs
  • Virtual spaces
  • Logging user metrics

Btw, I use flash (as3) and php because I don’t know other languages.

If U R in it, CH side by side

.. is a lame riddle I learned as a child. Oh look:


Is this even Catholic?

New updates to that RPG engine I’m making includes dynamically changing the tilesets and adding mouse controls. So I decided to make a game that features it. This game is about Catholics and their churches. It isn’t ready yet, hence the screenshot.

The code repo is right here: RPGAutomata . Follow it, if that’s your thing.

Self Assuring Status Update

A month ago, some business guy offered me a job — a senior game development position for their startup. Which I accepted. Given my anti game development company stance, some people might think that I’m selling out. Which I’m totally not. Here are my excuses justifications:

  1. It’s a startup. At my age, it’s the best time to join one. I learned applied software design, marketing and game industry in my previous companies. Startup 101 will be the last course and I will have finished a more practical Master’s degree in Software Making.
  2. I’m not making video games for kids. I don’t think my bosses even play Starcraft.

Also I’m broke. I tried the indie route for a while, but it was harder than I imagined. Games always take longer to develop. And elitist and artsy games don’t sell. (Note to self: I’ll make a full post about this if I find time)

People I previously worked with have seen the kind of dedication I can give given the right kind of project. I already sacrificed part of my personal life for this so this is totally hardcore.

With that I will be postponing further development of my current indie projects:

  • RPGEngine — last update was a cutscene parser. Was supposed to work on a quest parser next. Will opensource this after it gets stable.
  • BiomoddPlant — an update on the Biomodd-Makiling game I made a year ago. Last update is on simulating plant growth.
  • Jollibug, Love/Hate — games I already put on limbo. Might still work on it, if only for the awesome game titles.
  • Project GPAD (Game the Philippines of Association Development) — working title of a site I’m making about video game makings. Halted because I ran out of money.

There, I’m on full work mode the whole October. People I previously worked with also know that the only way to stop me is to mess with my salary, my work hours, or my girl.

To my team, if you read this, October is gameface on!

Quitz Quiz Post Mortem

I was commissioned to create an interactive quiz game in flash. “Quitz Quiz” is a quiz game for an anti-smoking campaign. The project was supposed to last for 1 week, it was delayed to 2, and finally got the pay 3 weeks after that.

What Went Wrong

Asking Price. Inexperienced at this kind of business, I offered a cheap price tag. $200 for “just” another quiz game is a sweet deal, I thought. Quizzes are the type of games they teach you when you were starting programming and $200 is already pretty big in the third world – my monthly salary is approximately $300. It was during the development phase itself that I realized my mistake. They are paying me for my expertise, besides the client wasn’t just some college friend who can’t make their homework, it was a company with a budget and my asking price wouldn’t have meant anything to them. Asking cheap made me think cheap, it was as if there was this very low ceiling that didn’t force me to expand the game or at least made the art a little better.

Assets. Although I got the quiz list the night after I took the job, the rest of the game assets took a pretty long time considering the game is supposed to be finished in a week. My lack of a decent internet connection limited our exchange of communication to SMS. I was only able to check my email once per day (after work), so if ever there were questions that lack answers or a missing art asset, I would get the response the next day. This delayed the project and pushed it to a total of two weeks (including play testing and QA).

Being too greedy. After realizing how cheap my asking price was I decided to hard code the questions–instead of putting them on a separate editable XML file or something. I could have just embedded an XML file or something, but being the greedy programmer that I was, opted to create a separate Factory class containing all the questions in an array. My evil plan backfired, when during the play testing process, they discovered a lot of spelling errors and I had to go back to the code and examine each question one by one with my IDE- FlashDevelop- lacking a spell checker. If I wrote the questions on a text file, I could have just run it on WordPad or something or better yet sent them that file so they can edit the questions themselves.

What Went Right

Modularity. This was my first completely AS3 flash game, and I have to say, I was very impressed at how my project structure turned out. The assets were completely separate from the code. I’d use Flash CS3, or Photoshop, or Painter, or Audacity for the assets and just use the embed tag to link them with the code. This way, if ever I had a separate artist working on the same project, we can go our own ways without relying on each other.

Experience. The project forced me to treat the game I was developing as work. There was a deadline, a paycheck, and a real client (not the hey-I-need-help-here-I-give-you-money friend but a real business client) involved. It helped me evaluate my “business model” and also expose my weaknesses. From now on, I’ll specialize on game development as a freelancer (I’ll only consider web dev/design jobs when I’m really desperate). I also realized that I can only go so far as a visual artist (I need training or better yet, I need a partner artiste.)