Forge Story: A #LD48 Post Mortem

Spamming soon, on a wall near you

I made a Facebook game in under 48 hours.

What’s the game about?

The theme for this quarter’s Ludum Dare was “It’s Dangerous to Go Alone, Take This”. So I immediately thought that it would be perfect for a facebook or social network game.

The original vision was a trading game between players. They can create items and sell them. Players aren’t allowed to use their own items. They should buy them from their friends. When players create an item, they give it a price which gets deducted to his coins. This way, players will have real investment on the items they make. When a player buys an item, its creator gets paid.

But players can also get items for free. Creators can publish their items as wall posts, and players who click through that link get the item for free. The creator still gets paid (by the system, for being a viral channel ;) ).

I originally planned on a battle system, Go Aloning!, so that the items will be more than decorative but I ran out of time.

I wanted to explore the gift giving and wall spamming mechanic of facebook games. If people share a personalized wall post, would his friends respond positively?

What went wrong?

My work desk

Software Crisis – I wasn’t really planning on making a facebook game, until the last minute. (Ok, maybe I did, but I wasn’t decided until I knew the theme). So most of the tools I used were downloaded as I needed it. I had to download XAMPP and SQLYog and had to look for my day job projects which was tucked away in my backup drive.

On the morning before the theme was announced, I discovered that it was my Photoshop trial’s final instance. The backup plan was to create procedural art, which is also fun.

Hardware Poverty -  I made this on a netbook. 1.6Ghz processor and 2GB of RAM and all my browser tabs and IDEs == frequent freezes. Also, my internet connection was a very unreliable Sun Broadband USB dongle. Disconnections and freezes were frequent. My brain took it as an opportunity to freeze as well.

Inaccurate Task Estimates – I still suffer from this. But I feel I’m getting better at it now. The more projects I make, failed or not, the easier it gets to guess my capabilities and limitations. That’s why I had to let go the battle system. Either that or miss the deadline.

What went right?

Simplified Concept – the game looked simple on paper. It required a simple database backend. And doesn’t require me to draw assets (no Photoshop needed).

wireframes is GDD for gangstahs

more wireframes

my database tables, just waiting to get hacked

Worked on a familiar platform - I make facebook games for a living. This means I’m not exactly a noob when it comes to making this sort of stuff.

One of the risks I was anticipating was the development to production deployment. My typical day job project takes careful setup in syncing the development and production servers. I didn’t have time for that, so I just made sure the folders, urls, database names are configurable and hoped that my local server was exactly like my webhost’s. It worked flawlessly — the webs didn’t notice I swapped servers.

What now?

The game is far from finished. But the vision is doable and seems like a good learning exercise for me. I’m keeping the app active and updates will come as soon as the judging is over. If anyone is interested in following the development of a true indie social network game, like this page: http://www.facebook.com/apps/application.php?id=189157287797834

Oh and here’s a timelapse video:

Timelapsssssseeee!

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.

Opensource what?

This week I officially got a raise for the first time in my corporate life. Yey!

All the chicken joy I ate for the last 6 months was worth it

With it came a few papers to sign and one of them was a patents and intellectual property agreement. I understand that companies need to protect their assets (I signed the standard NDA a few months back) but 2 particular clauses caught me uneasy.

3. The Employee shall promptly furnish the Company a complete record of any and all inventions, patents and improvements, whether patentable or not, which he solely or jointly may conceive, make, or first disclose during the period of his/her employment by the Company.

Does this mean I can’t just make other games and release it? Do I have to tell the Company every single time? Wait, it has to be conceived or made or first disclosed during the period of my employment. But what exactly is a “period of employment”. I asked the Admin about this and they defined “period of employment” = paid work hours. Fair enough, other companies like to define it as the day you got hired to the day they fired you.

4. The Employee agrees to and hereby grants and assign to the Company or its nominee the Employee’s entire right, title, and interest in and to inventions, patents and improvements that relate in any way to the actual or anticipated business or activities of the Company or its Affiliates, or that are anticipated by or result from any task or work for or on behalf of the Company together with any and all domestic and foreign patent rights in such inventions and improvements. To aid the Company or its nominee in securing full benefit and protection thereof, the Employees agrees promptly to do all lawful acts reasonably requested, at any time during and after the employment by the Company, without the additional compensation but at the Company’s expense.

I work for a social (read: Facebook) gaming  company. Does this mean the Company owns my Facebook game(s)? Does this cover all online/web based games? The scope of this clause is too big to be unambiguous so, again, I asked for clarification. This time they told me to STFU.

No, not really.

Actually, they told me that it’s specific to the games we are making. So if the Company is making a game about Cows and Aliens don’t make a Carabaos and Zombies rip off. If they can recognize their game in mine it’s officially theirs. Fair enough.

I signed the damn agreement already. Admin didn’t offer a rewording of the contract to reflect the clearer definitions. That’s ok. From the discussion, I understood that they are merely trying to protect the company’s assets and aren’t after my badly coded, unfinished crap. Besides, I’m not really litigious.

While we were discussing this, our HR girl asked me why I’m being too thorough on this.

“Do you have projects on the side?”

“Yes, I have plenty.”

“Oh. Then you must be earning a lot from these projects”

“Nope. Not a single centavo.”

“What? Why do it then?”

“Umm.. because I want to?”

Sextinction have peoples now

Now where will that guy sit?

Here’s a measly graphics update just so I can #screenshotsaturday something.

I finished cleaning up the mess I did on RPGAutomata and I’m thinking of writing some technical stuff about it. Making an infographic about it is actually hard.

Aside from Sextinction, I’m working on a commercial flash game — the type with blood and gore — this February.

Sextinction Art Update

Background

I joined the Global Game Jam and made a sex game called Sextinction. It features some of the improvements I made on RPGAutomata (aka my RPG Engine). I spent majority of the weekend getting a pretty kewl dialog tree system up and running. The game turned out crappy.

It was crap because of two things: bad graphics and bad writing. Really, in a game where there’s no ‘fun’ gameplay the worse that could happen is if it had graphics made in 30 minutes and the story less than that –which says a lot at how dynamic my dialog code works btw.

Before

The art is so bad it's worse than the writing.

The style is all over the place. The pixel art characters clash with the crayon drawn background. The font style is bland. The NPC characters are almost invisible.

Now

Srsly. This is so derivative.

Straight lines make everything look rigid and manly. But the uneven shades makes the office look worn and used. I also limited the view to be smaller than the canvas so everything will fit without having to pan the camera. The text is no longer in the way. The overall look might remind people of  photo negatives– those people are voyeurs.

If U R in it, CH side by side

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

Catholic?

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.

#LD19 Post Mortem (Very Lonely in a Spaceship)

I spent roughly 2 days of my life last weekend to participate in the most daring quest of the Ludum, #19′s theme being “Discovery”.

There are many reasons developers go to jams, I usually do it for the freedom but this time was different for me. Fresh from my Tron 3D experience the night before, I wanted to learn how to do all the neony stuff I saw, and given that the whole week I was studying rendering techniques I jammed for the learning opportunity.

Things That Are Bad

Unclear scope

While this isn’t my first jam experience, I still did a rookie mistake of trying to make too many things happen. I basically worked a couple of hours trying to make the game render in different screen sizes! Although experience worked for me when I used some code out of the box (like using PBE’s logging interface to create my own command line).

Too many distractions

I played CityVille too much. :) (The fact that I’m using my girlfriend’s company issued laptop, which meant her bugging me to check if her crops haven’t withered yet, didn’t help either)

"Come let us ruin his productivity!"

Plus 2 Christmas parties on Saturday and a hangover half Sunday. (Look at the brightside, I actually have a social life!)

Lack of motivation to finish

The moment I knew how to make the glowing text thingy — bloom effect, for those in the know — I knew I was done. That was the thing I sat out to do and now I can’t find any motivation to do anything more.

Things I Should Have Done

Commit to goals before doing anything

If I should do a jam game the way I do a day-job project, I would set out to write the main goals — stories if you are an Agile freak– that I should accomplish during the course of the jam. Having the goals written down makes it easy for me to pace myself and map out the game’s direction. Writing a design doc is a waste of time, but writing bullet points isn’t. Here’s what I should have written:

  • Learn how to make things glow
  • Learn how to do those radar blips
  • Create dynamic captain’s logs

I usually let the design grow organically but it really helps to have a direction. I played CaptainForever again and I must say, I was unconsciously or consciously leaning towards that.

Anyway..

I learned a lot of technical stuff during the jam so..  it’s all good. I might finish the game in the future or I may not, but I’ll certainly reuse some of the things I did for this game.

Play Here

I Q and A myself: About that new game

How this article should be visualized

How this article should be visualized

Q: Hi, how are you? What is your next game? I am not a very good interviewer.

I am ok. I am now making a social game. And by social I mean facebook. Old people still think all games involving more than one player is social, but apparently old people are wrong. Hence I am making a facebook game.

Q: Umm.. why?

Mainly because making facebook games is also my day job. And I often have these ideas that would be flat out rejected if I suggest them at work (I am not very convincing). So I try them out instead on the games I make during my free time.

Q: So like most of your games, this one is another experiment.

Yes. Wait a minute, I didn’t make as much games than I planned this year. In fact, I only released one game. The rest were spectacular failures. I also became a professional game developer and got involved in some commercial projects so I have an excuse in not releasing as many games as planned.

But yes, this is another experiment.

Q: Experiment on what, exactly?

Goal #1, this is a technical experiment. Basically poking and prodding on the technology to see what it can and can’t do.

Second, the Facebook landscape is changing. Some say the wild days of the cheap viral facebook game are over and, based on the current top games, content and gameplay are becoming benchmarks for success. I think in the coming months we are going to see the cheap facebook games flounder. Zynga was in the best position to start that trend and I commend them for doing just that. First FrontierVille and now with CityVille, their games are starting to get deeper/richer and most game companies are also doing the same.

I think Facebook itself has something to do with it — the platform now limiting viral channels and allowing non-obtrusive ways to enjoy Facebook apps.

As a web developer I always hated app spam and black hat viral tactics with a passion. Same way I hate SEO and social ‘marketers’.

But now with these changes in Facebook and the maturing taste of the gamers in it I feel that I can now dabble into social games without doing anything that would make me feel dirty or dishonest. Whether the game I made fails or succeed it did so because of the games merits and not because I failed to spam more friends.

To make a successful game with as little ‘spam’ as possible, that’s goal #2. Every ‘social’ aspect of the game should be connected to the game itself.

Q: But aren’t most of the new games in Facebook relying on organic means too? Like you said, Facebook is changing.

Dude, exactly my point. The new games that are coming out will rely on at least gameplay and production value. That’s the same criteria we judge PC and XBOX games with!

And I’m not that into competing with other games anyway. So yes, becoming the top 10 Facebook game isn’t my goal #3.

Q: So what is goal #3?

This interview is now risking tl:dr status so I’ll save that for part 2.

Click link to OMG This guy was killed using facebook!!

The Birth of a Spam App

This, my friends, is how I am planning to go viral and get rich. Make an easy game. Then have all the dialogs in the game tell you to “Share to your friends”. Meanwhile, you store the player’s user ids for selling to black market user id fetishists.

Next Game is a Facebook

that will make me rich

This is my next game ever. Will write about it soon. For now, this is just it.