I was debating whether or not to comment on this, but now that I've seen that patio11 not only got sucked into this too, but also spent money on it, I feel a little more comfortable with detailing my addiction.

I should start by saying that I am prone to addiction. I don't smoke, and I rarely drink, but that doesn't mean that there aren't other really horrible habits I've found myself bound to. When I was in college, I started gambling. Online. Not good. I had the usual idea that so many naive idiots have: that I could beat roulette through sheer dogged determinism. I didn't play the usual tactic of betting only on the "50/50" spots (which are actually 47/53 spots, but casinos make a lot of money on people who don't notice that) and doubling my bet on each loss. Instead, I bet on a single number an ungodly amount of times. Essentially I would bet 1 chip for as long as hitting my number would be profitable, then 2 chips, then 5, then 10.. it was a terrible addiction. This is probably the same mechanism in play with FarmVille, where I'll repeat an action a truly stupid number of times to make an incredibly minuscule amount amount of progress.

FarmVille was released at a really unfortunate time for me. My girlfriend had just started playing the game and had a very slight addiction to it, when suddenly I lost my job. Faced with more free time than I knew what to do with, and since I'm prone to procrastination, I started playing too.

At the bottom of the FarmVille screen is a display of your "neighbours" - Facebook friends of yours who also play FarmVille - showing their respective levels and experience totals. Naturally, I was compelled to climb to the top of this list, but I already had friends who were very much out in front of me. Because I was just starting out, my farm was considerably smaller than other players (as mentioned in the article, you can expand the available space on your farm by having a certain number of neighbours or by paying real cash), which meant that I couldn't collect as many points as others could. I also didn't initially "hack" (in the PG "hacker" sense) the game, which left me receiving minor rewards compared to what I could have "accomplished" in the same time.

Once I learned how to optimize my game - I even had a spreadsheet at one time where I determined how to get the most FarmCoins or game experience depending on my current target - I started to blow past my friends. I eventually got to the point where I was the highest level player among my list of friends, and I started to slow my game. Then I set my sights on the highest value item in the game - a 1M FarmCoin Mansion. I told myself that I would just get that item (requiring several additional levels of gameplay, and the collection of a fair number of FarmCoins), then I would quit.

By the time I got my Mansion, one of my cousins - also unemployed - had started playing, and was way out in front of me because he had many more neighbours than I did and so he had a larger farm. We were both relatively close to reaching FarmVille's Level 70 - the highest level in the game - so I decided I had to beat him to it. So I obsessed, I optimized, I did everything I could to beat him. And I did. I won. I got there before him, but just barely.

So FarmVille decided that Level 90 was the new Level 70. This was just coincidental timing - they released it to everyone at once - but it hooked me again, because I had no longer beaten the game. I had got right to the line (which was rewarded by my completionist brain), and so now that the line has moved, I need to get their again. It's an incredibly vicious cycle.

Zynga is really impressive at finding the pain points in their game and removing them to optimize toward keeping users coming back. For the longest time, in order to farm your land, you had to click each plot individually three times - once to harvest your existing crop, once to plow the land, and once to plant a new crop. Eventually I got sick of this, and was ready to quit, but then they came out with vehicles. You had a harvester, a tractor, and a seeder - all of which would perform your click actions on four plots at a time, and instantly (before this, your click actions would make your character walk to each plot, taking forever). You had enough fuel for 150 actions, but could buy more if you needed. I'm happy to say I've never paid one cent to Zynga, so I just used my fuel and then walked the rest. Your 150-fuel tank would recharge over a period of about six hours, so there was always that initial optimization that could keep you coming back, since it wasn't as much work anymore.

Eventually they created crafting items - you can collect bushels of crops you've harvested to be used to create items which can then be traded for fuel. So now I can create all the fuel I need, but only by planting more and more. This creates another cycle of dependence wherein you plant more to get more fuel to plant more, it's an addiction feedback loop. It's even more insidious that the crafts-for-fuel that you make also have levels attached, so you get more fuel if you make more crafts, so you're compelled to craft more and more as well. I'm actually at the point where I have a single craft that is of a high enough value that I no longer have to walk to any crops - my vehicles are always fueled enough to do it for me. They've even come out with a "Combine" vehicle which harvests, plows, and seeds at once, so I can get my farming done even faster, and they've created expansions so you can perform these actions on more than just the original 2x2 plots. All of this means that I can get all my farming done in a matter of about two minutes, but since it now feels like I don't have to spend so much time on it, it's not a burden to keep coming back, so I do. Zynga wins again.

I will say that I don't fall into all of Zynga's traps:

I don't give them money because a) I can see that it's not rational to send money on such items, and b) I'm broke and don't have the money to spend anyway.

I don't collect new users for the game. I created a list on Facebook of the friends I have who play FarmVille, and when I post items to my Facebook wall from FarmVille, I set it so that only those people who are already trapped can see them.

I also don't send spammy "send me this item" or "here is an item for your farm" to people who don't already play. Contrary to the text of the article, Zynga doesn't make it that hard to tell which friends play. By default, the list of people to send items to is "Facebook friends", which includes non-FarmVille players, but includes a separate list of "FarmVille friends" which is a list of people who have the application installed. That way, I'm not spamming people who aren't already in the game. (I do have to be careful not to spam people who have stopped playing the game but who still have the app installed - I only have a handful of friends still playing so it's not that hard).

The number of micro-optimizations made to keep people coming back, or to spam their friends, is staggering. Zynga does an amazing job at reinforcing that feedback loop, but they have gone too far in the past. People do have a breaking point. Not long ago, they made a change so that certain messages to "post this on your friends wall" were non-optional - they removed the Windows-style "X" button in the top corner of the message, leaving only the "Share" button at the bottom. I was savvy enough to realize that I could just click out of the Facebook dialog that then appeared, but others were not, and they got pissed. So pissed, in fact, that the change was reverted within about a week. In retrospect, this could have been intentional. You piss off some of your long term, now disillusioned, users who don't/no longer pay you because they're fed up with the game, so they leave (lightening server load, perhaps), but do it by forcing them to spam their friends, creating new users with better potential to pay. After a brief period of time - enough to get some new users - you revert the offending change so it doesn't annoy the new folks.

Absolutely insidious, but Zynga knows exactly what it's doing.