<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8045458225020293749</id><updated>2011-11-08T21:33:50.168-08:00</updated><category term='flash'/><category term='Brenda Brathwaite'/><category term='Vikram Adukia'/><category term='Game Design'/><category term='Introductions'/><category term='Lolapps'/><title type='text'>Lolapps Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lolapps</name><uri>http://www.blogger.com/profile/11710987183055202660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-2667767951672380472</id><published>2011-11-08T13:18:00.000-08:00</published><updated>2011-11-08T13:20:42.480-08:00</updated><title type='text'>What Makes Strategy Games Exciting?</title><content type='html'>&lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); "&gt;&lt;div&gt;&lt;p&gt;&lt;em&gt;The following is a rough recollection of a talk I gave at the San Francisco IGDA’s Pecha Kucha night on October 19, 2011. I don’t have a recording of the talk, so this is a composite of my notes and what I said, to the best of my memory. As a result, this piece is a bit more conversational than my typical writing style.&lt;/em&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;em&gt;Pecha Kucha is a format where the speaker presents twenty slides of twenty seconds each, and the slideshow automatically advances. The challenge to the speaker is to present his or her points in a concise manner. It’s a difficult but rewarding format!&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_01.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_01.jpg"&gt;&lt;img class="alignnone size-medium wp-image-124" title="Slide 1" src="http://www.chardish.com/wp/wp-content/uploads/jones_01-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_01-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Hi, I'm Evan Jones. I work for Lolapps, where I'm a gameplay programmer on Ravenskye City and a designer on an unannounced project. Today I want to talk about strategy games - particularly the difference between what's fun and what's exciting, and the threads in common between Chess, Starcraft, and League of Legends.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_02.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_02.jpg"&gt;&lt;img class="alignnone size-medium wp-image-125" title="Slide 2" src="http://www.chardish.com/wp/wp-content/uploads/jones_02-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_02-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;There are lots of games like go that are fun and deep, but they aren't really that exciting. And I feel like there's something that separates a game like go from a game like Starcraft. I don't think it's the graphics or the sounds or the fact that one’s in real time. I think it’s in the design of the game itself. &lt;em&gt;(In this talk, I’m not going to cover asymmetrical games or score-based games.)&lt;br /&gt;&lt;br /&gt; &lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_03.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_03.jpg"&gt;&lt;img class="alignnone size-medium wp-image-126" title="Slide 3" src="http://www.chardish.com/wp/wp-content/uploads/jones_03-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_03-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;So what do we mean when we say “exciting?” In short,&lt;em&gt; drama creates excitement.&lt;/em&gt; And in order for drama to work, you need there to be &lt;em&gt;active, sustained conflict with an uncertain outcome.&lt;/em&gt; Take Peggle, for example. It’s not the least bit exciting while you’re aiming a shot - it’s only when the ball is in motion, and the outcome is uncertain, that the drama happens.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_04.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_04.jpg"&gt;&lt;img class="alignnone size-medium wp-image-127" title="Slide 4" src="http://www.chardish.com/wp/wp-content/uploads/jones_04-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_04-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;So the first thing an exciting game needs is an &lt;strong&gt;incentive to conflict.&lt;/strong&gt; The game has to encourage the two sides to begin fighting as quickly as possible. Why? Waiting around for something to happen is boring. What’s important is that the game itself has to provide the reason for the conflict by having a disadvantage to standing still. It can’t expect the players to charge into each other just because.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;In chess, the opening moves of the game place players in direct, immediate conflict. All your good pieces start out behind a wall of pawns, so you have to move the wall forward. And you start the game close enough that you’re fighting the other player as soon as you move the pieces forward.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;In Starcraft, you have to scout your opponent as quickly as possible to find out whether you’re getting rushed or not. And then you have to destroy your opponent’s scouts as quickly as possible so you can get back to building in secret. Either way? You have to build a small army immediately. This jump-starts the conflict.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;In League of Legends, you’re weak in the beginning of the game and you need to gain experience to level up; otherwise you’re going to fall behind really fast. The game automatically sends units out to the middle of the map that provide experience points. So you have to go out to the middle of the map - and that’s exactly where your opponents are going to be.&lt;br /&gt;&lt;br /&gt;An antipattern to this rule is Final Fantasy Tactics. The reason why FFT is exciting is because the AI is aggressive for no good reason. It doesn’t need to be; it just is, because threats create drama. In a multiplayer match, players play much more conservatively, and it’s less interesting.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_09.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_09.jpg"&gt;&lt;img class="alignnone size-medium wp-image-139" title="Slide 9" src="http://www.chardish.com/wp/wp-content/uploads/jones_09-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_09-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;The second thing an exciting game needs is &lt;strong&gt;increasing entropy of game state.&lt;/strong&gt; In other words, the farther along the game gets, the more likely either side should be able to win. This works both ways: the player who is behind should have a higher chance of winning too the farther along the game goes. Why is this important? You want the game to end with an explosive finale, not a slow trickle - it creates more memorable endings.&lt;br /&gt;&lt;br /&gt;In chess’s early game, the king is totally protected and both players have lots of powerful pieces. But as the game goes on, it gets harder to protect your king because you have fewer pieces to defend it. But it’s likely the other player is in the same boat, so the odds of one of you being able to set up a checkmate increases.&lt;br /&gt;&lt;br /&gt;In an early game fight in Starcraft, both players might go into the battle with 10 units. If it’s a close fight, the winner might escape with 2 units: no big deal. But in a late game fight, where both players go in with 100 units, even if it’s a close match, an army of 20 units is enough to do serious damage, causing the end of the game.&lt;br /&gt;&lt;br /&gt;In League of Legends, the penalties for losing a team fight increase over time. In the early game, if one team gets wiped, the other team can push a bit in their favor, but they’re still weak and the wiped team will respawn soon. In the late game, both teams are nearly godlike, and if one of them gets wiped, not only are the respawn times longer, but the surviving team is strong enough to take out the main objective without any resistance.&lt;br /&gt;&lt;br /&gt;An antipattern to this rule is Civilization. Maybe it’s the nature of what it’s trying to mimic, but Civilization starts out in an unstable state and gets more stable over time. Near the end of the game, you really have a good idea of who has a decent shot of winning and how. It gets really difficult to change things.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_14.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_14.jpg"&gt;&lt;img class="alignnone size-medium wp-image-134" title="Slide 14" src="http://www.chardish.com/wp/wp-content/uploads/jones_14-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_14-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;The final rule is that an exciting game needs to be &lt;strong&gt;winnable from behind.&lt;/strong&gt; This means that the losing player needs to be able to win &lt;em&gt;without first becoming the winning player.&lt;/em&gt; At the moment both players know who is going to win, the drama ends, and the game becomes boring. How do you accomplish this in a game’s design? Detach your victory condition from your means of accumulating power.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/jones_15.jpg" _mce_href="http://www.chardish.com/wp/wp-content/uploads/jones_15.jpg"&gt;&lt;img class="alignnone size-medium wp-image-133" title="Slide 15" src="http://www.chardish.com/wp/wp-content/uploads/jones_15-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_15-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;This one’s so important that I’m dedicating two slides to it. Take Star Wars, for example. When it gets down to the final battle, the drama comes from the fact that both sides are getting closer to their victory conditions. By the end of it, each side is literally seconds away from winning! It would be boring if the rebels won by gradually whittling the Death Star down.&lt;br /&gt;&lt;br /&gt;In chess, even if you’re in a really powerful position, you never feel truly safe because one check can lead to a sequence of forced moves that cost you the game. Imagine if chess’s victory conition were eliminating all of the opponent’s pieces. This is actually harder to do than capturing only the king, and intuitively one might think that more capturing equals more drama. But it’d be boring, because the drama ends long before the game does! (Try it if you don’t believe me.)&lt;br /&gt;&lt;br /&gt;In Starcraft, there are plenty of tactics that allow players with small armies to inflict big damage. Getting invisible units before your enemy gains the ability to detect them. Building defensive cannons outside the enemy base and encroaching on their territory. The net result? Even if you have the stronger army, if you’re building up against the wrong kind of threat, you lose.&lt;br /&gt;&lt;br /&gt;In League of Legends, the losing team can backdoor their way to victory. The backdooring player says “I’m not going to fight the enemy team; I’m just going to march into their base and destroy it before they show up.” In this way the losing team can win even while controlling less power on the field.&lt;br /&gt;&lt;br /&gt;An antipattern to this rule is Risk. Like many games that follow a tug-of-war pattern, this game gets really boring near the end. The reason is that as both players develop a critical mass of units, neither player gets closer to winning because the cost of engagement is too high. So players have a tendency to turtle up and do fewer things.&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://twitter.com/chardish" _mce_href="http://twitter.com/chardish"&gt;&lt;img class="alignnone size-medium wp-image-128" title="Slide 20" src="http://www.chardish.com/wp/wp-content/uploads/jones_20-300x225.jpg" _mce_src="http://www.chardish.com/wp/wp-content/uploads/jones_20-300x225.jpg" alt="" width="300" height="225" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, thanks everyone for listening!&lt;em&gt; (And thank you for reading!) &lt;/em&gt;Make sure to follow me on Twitter &lt;a href="http://twitter.com/chardish" _mce_href="http://twitter.com/chardish"&gt;@chardish.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-2667767951672380472?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/2667767951672380472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2011/11/what-makes-strategy-games-exciting.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/2667767951672380472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/2667767951672380472'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2011/11/what-makes-strategy-games-exciting.html' title='What Makes Strategy Games Exciting?'/><author><name>Evan Jones</name><uri>http://www.blogger.com/profile/09275778812445451360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-3953705702194934955</id><published>2011-06-28T11:58:00.000-07:00</published><updated>2011-06-28T13:53:52.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Life (Cached)</title><content type='html'>&lt;p style="text-align: left;"&gt;&lt;a href="http://blog.seantcooper.com/"&gt;Sean Cooper&lt;/a&gt; recently ran a challenge at &lt;a href="http://www.lolapps.com/"&gt;Lolapps&lt;/a&gt; to create the fastest version of &lt;a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life"&gt;Conway's game of life&lt;/a&gt; in Flash that we could. Of course, he first showed us &lt;a href="http://blog.seantcooper.com/?p=73"&gt;his version&lt;/a&gt; which uses a convolution filter, but that's not what this challenge was about. The idea was to figure out how to make AS3 both perform and display as fast as possible. Of course I immediately found someone else's &lt;a href="http://wonderfl.net/c/3w0l"&gt;Pixel Bender version&lt;/a&gt; but after playing with that I went my own route to see what I could do in pure AS3.&lt;/p&gt;&lt;p style="text-align: left;"&gt;For the impatient, you can &lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf"&gt;view an animation which helps to explain the concept&lt;/a&gt; or &lt;a href="https://sites.google.com/site/papercranereversefold/Life.swf"&gt;jump straight to the result&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align: left;"&gt;Pretty quickly, the discussion I was a part of moved towards the possibility of caching. After getting the initial naive version of Life finished, I let the caching idea bounce around in my head and finally came up with an idea. Since (basic) life has only two states per pixel, alive or dead, these map trivially to bits. Taking an arbitrary rectangle of the map and reducing it to a simple integer then is easy. Additionally, operations on this section can be done via bitshifting and bitwise operations, which tend to be extremely fast. Unfortunately, the uint in AS3 is only 32 bits long, so this limits the size of the "chunk" we can put into a single uint, but then again 2^32 would be a lot of states to possibly store and/or calculate. I also found that if I try to make a Vector.&lt;uint&gt; 2^30 long, Flash hangs, then crashes.&lt;/uint&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Let's assume for now that we're going to deal with Life in 3x3 cell chunks. I'll explain why later on. We'll start with a 9x9 set of cells:&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 284px; height: 287px;" src="http://1.bp.blogspot.com/-_MBKm3QMn2Q/TgomxMdQkwI/AAAAAAAAAA8/ehfgsslfO04/s320/1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623349711324877570" /&gt;&lt;/a&gt;A 9x9 section of cells&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Then break that up into 3x3 chunks of cells.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 312px; height: 311px;" src="http://4.bp.blogspot.com/-MfcbAFfv_xU/Tgon4_Q83ZI/AAAAAAAAABE/pg177HH8nu4/s320/21.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623350944734174610" /&gt;&lt;/a&gt;3x3 chunks&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Let's look at the center chunk:&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 314px; height: 316px;" src="http://2.bp.blogspot.com/-6SCGgYD5_3A/Tgon4wOqg4I/AAAAAAAAABM/2eBnTQZtaXk/s320/31.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623350940698051458" /&gt;&lt;/a&gt;The center chunk&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;The simple life rules make each cell depend on its immediate neighbors in every direction.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If a cell has less than 2 live neighbors it dies (or stays dead) due to loneliness.&lt;/li&gt;&lt;li&gt;If a cell has 2 live neighbors it stays as it is, dead or alive.&lt;/li&gt;&lt;li&gt;If a cell has 3 live neighbors it is alive in the next iteration (dead cells come alive, live cells stay alive).&lt;/li&gt;&lt;li&gt;If a cell has 4 or more live neighbors it dies of overcrowding.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To run these rules for a single cell we need the ring of cells around it to calculate its next state. In the same way, to calculate the next state of a 3x3 set of cells we need the ring around it, making the chunk we need to look at a 5x5 chunk of cells.&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 160px; height: 161px;" src="http://2.bp.blogspot.com/-bdj7p8Ljb0k/Tgot_9LSgmI/AAAAAAAAABU/s2s_PYxLdSs/s320/61.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357661502407266" /&gt;&lt;/a&gt;5x5&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;This is what ultimately limits the size of the chunks we can easily cache. 5x5 cells mean we need 25 bits to make them into a uint. 5x6 would make 30 bits and a simple array that big crashes Flash.&lt;/p&gt;&lt;p style="text-align: left;"&gt;Now that we've established the basics of what we need it's just a matter of figuring out how to efficiently calculate, store, and retrieve the values.&lt;/p&gt;&lt;p style="text-align: left;"&gt;We'll store the state transitions in a simple vector of uints. The index will be the current state and the value is the next state. For the current state we take the 5x5 chunk, turn the pixels into bits, then put them together to make a uint.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 146px; height: 149px;" src="http://3.bp.blogspot.com/--6M6X16Jpf4/Tgot_wWbqeI/AAAAAAAAABc/dkw03X6x_Xw/s320/71.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357658059483618" /&gt;&lt;/a&gt;5x5 as bits, the top-left is the least significant bit (2^0)&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 12px;" src="http://1.bp.blogspot.com/-oW4hY1VBveI/TgouAFKAPxI/AAAAAAAAABk/o-HTN-Oo95w/s320/9.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357663644499730" /&gt;&lt;/a&gt; = 9870129&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Now we have the center chunk's current 5x5 state as a uint. 9870129 will be the index into the state transition map. Now we need the state that this will become after the rules are applied.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 158px; height: 160px;" src="http://4.bp.blogspot.com/-mxj3vrcaV0s/TgouAbMqNII/AAAAAAAAABs/q6XGk5thEck/s320/10.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357669561218178" /&gt;&lt;/a&gt;The next state&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Note that the ring around the 3x3 chunk is all empty. Since what we're calculating for is the 3x3, that's all we care about. We needed the 5x5 to be able to say what the 3x3 became and in the result we store the uint with only the 3x3 chunk filled out.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 140px; height: 145px;" src="http://1.bp.blogspot.com/-eAdhuxS6S6Q/TgouA9gdVoI/AAAAAAAAAB0/hRvjIiI-4kg/s320/11.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357678771066498" /&gt;&lt;/a&gt;Result bits&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 11px;" src="http://2.bp.blogspot.com/-EnLJjttl_yA/TgouHDbV0sI/AAAAAAAAAB8/THyX6CBSZIc/s320/12.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357783439430338" /&gt;&lt;/a&gt; = 4194688&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: left;"&gt;Once this is done for all of the 3x3 chunks, you run it all over again. In order to get the 5x5 you can mask out the bits needed in the neighbors, bitshift them, and bitwise-or them together to get the 5x5 uint to index back into the state transition map. To speed things up even more you can store those masked and bitshifted parts separately so all you need to do is bitwise-or them together to find out what the next state is.&lt;/p&gt;&lt;p style="text-align: left;"&gt;If you made it this far, thanks for reading. Here again is a link to &lt;a href="https://sites.google.com/site/papercranereversefold/LifeDemo.swf"&gt;the explanatory demo&lt;/a&gt;, which is where the screenshots above came from.&lt;/p&gt;&lt;p style="text-align: left;"&gt;And, finally, the result. The fastest Life implementation I've made thus far. :-) You can press 'r' to switch to another pattern (try resizing to 1440x599) and then again to get a random start state. 'p' pauses the animation. Enjoy!&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;a href="https://sites.google.com/site/papercranereversefold/Life.swf" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="http://4.bp.blogspot.com/-vWHghTW57vc/TgouHS2qGKI/AAAAAAAAACE/yKdHZK7JyAk/s320/life.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5623357787580536994" /&gt;&lt;/a&gt;Click to view the completed application&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://www.reversefold.com/blog/2011/06/22/life-cached/"&gt;View the original post.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-3953705702194934955?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/3953705702194934955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2011/06/life-cached.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/3953705702194934955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/3953705702194934955'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2011/06/life-cached.html' title='Life (Cached)'/><author><name>Justin Patrin</name><uri>http://www.blogger.com/profile/15922139491295061661</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='8' src='http://4.bp.blogspot.com/-wbAk4oF5WF8/TgokHwbMptI/AAAAAAAAAAY/HW9k3Xxlw1U/s220/49865_658423354_2896_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-_MBKm3QMn2Q/TgomxMdQkwI/AAAAAAAAAA8/ehfgsslfO04/s72-c/1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-5436488525666389014</id><published>2011-04-05T15:02:00.001-07:00</published><updated>2011-04-05T15:04:31.579-07:00</updated><title type='text'>Stop Debating "Games as Art"</title><content type='html'>&lt;div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: Times; font-size: medium; "&gt;&lt;p&gt;We ask the question "are video games art?" We ask it often, and we usually ask it so that we can immediately provide an answer to it. On first glance, it seems to be the pressing question of our medium. We tend to see it as a cry for validation, a question of quintessence, a search for deeper meaning, a desire to justify our existence, a hope for immortality.&lt;/p&gt;&lt;p&gt;It is none of these. The answer to the question is "yes." An explanation is not required.&lt;/p&gt;&lt;p&gt;Truth be told, I don't know when the games-as-art debate began in earnest. Google News shows the mainstream press beginning to discuss the issue around 2000 (no doubt the explosion of cinematically excellent games in the late 90s contributed to the interest in this topic.) Roger Ebert's public campaign against video games as art began in 2005, and his position as an eloquent student of the world's second-newest art medium certainly incensed advocates of the newest, and his ignorant cries that games can &lt;em&gt;never be art&lt;/em&gt; brought the discussion to the forefront of the gaming public's attention. The latest salvo comes from Brian Moriarty and his GDC lecture claiming that games are not art by spending much of his time talking about things that are not games, and this, too, sparked another outrage from the gaming community. The debate has raged for many years, and none may know when it will conclude.&lt;/p&gt;&lt;p&gt;What I do know is that if we believe that video games are art, &lt;em&gt;it is vitally important that we immediately cease discussion of this topic.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Games are art, and the sky is blue, and Austria is a country in Europe, and koalas have a vegetarian diet, and pi is the ratio of a circle's circumference to its diameter. To &lt;em&gt;debate&lt;/em&gt; games as art is to suggest that the question is worthy of debate. It is not. The people who claim that games are not art have not played games that have spoken to them as art. Their opinions stem from a lack of experience with games. It is &lt;em&gt;not&lt;/em&gt; our job to refute them! It is retarding to the critical development of our medium to spend our time defending its legitimacy. The worth of an experience cannot be judged by one who has not undergone it. To claim that games are not art is to judge countless experiences not experienced. To defend games as art is to say that such claims are worthwhile.&lt;/p&gt;&lt;p&gt;It is so very tempting to engage in this debate! I have a great amount of sympathy for those who do. After all, they are doing this because, like me, they love games and want others to love them too. They speak with eloquent words about the way that games have moved them, touched them, called them to examine their lives in different ways, asked them to think critically about topics they had taken for granted. Their words are honest, heartfelt, and true, but they will convince no one that games are art. After all, it was no one's words that convinced &lt;em&gt;them&lt;/em&gt; that games are art - that task fell to games, and games alone.&lt;/p&gt;&lt;div class="mceTemp" draggable=""&gt;&lt;dl id="attachment_107" class="wp-caption alignleft" _mce_style="width: 310px;" style="float: left; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(221, 221, 221); border-right-color: rgb(221, 221, 221); border-bottom-color: rgb(221, 221, 221); border-left-color: rgb(221, 221, 221); text-align: center; background-color: rgb(243, 243, 243); padding-top: 4px; margin-top: 10px; margin-right: 10px; margin-bottom: 10px; margin-left: 10px; border-top-left-radius: 3px 3px; border-top-right-radius: 3px 3px; border-bottom-right-radius: 3px 3px; border-bottom-left-radius: 3px 3px; width: 310px; "&gt;&lt;dt class="wp-caption-dt"&gt;&lt;a href="http://www.chardish.com/wp/wp-content/uploads/huge-game-collection.png" _mce_href="http://www.chardish.com/wp/wp-content/uploads/huge-game-collection.png"&gt;&lt;img class="size-medium wp-image-107" title="huge-game-collection" src="http://www.chardish.com/wp/wp-content/uploads/huge-game-collection-300x205.png" _mce_src="http://www.chardish.com/wp/wp-content/uploads/huge-game-collection-300x205.png" alt="When someone says &amp;quot;games are not art,&amp;quot; what they're telling you is &amp;quot;I know without a doubt that there is no art in this room,&amp;quot; and that's as ludicrous a claim as it sounds." width="300" height="205" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-color: initial; " /&gt;&lt;/a&gt;&lt;/dt&gt;&lt;dd class="wp-caption-dd" style="font-size: 11px; line-height: 17px; padding-top: 0px; padding-right: 4px; padding-bottom: 5px; padding-left: 4px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;When someone says "games are not art," what they're telling you is "I know without a doubt that there is no art in this room," and that's as ludicrous and baseless a claim as it sounds.&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;p&gt;Equally alluring is the desire to convince one's opponents that games are art by listing a canon of games that one believes qualify as art. This doesn't work, either, for the very reason that not everyone regards particular works of art in the same manner. Almost all works of art have their detractors, and resting the entire games-as-art issue on the shoulders of one game, or collection of games, practically invites the deconstruction of those games as a counterpoint suggesting that games are not art. Don't do it. The person who believes that games are not art has not played the right games. Neither you nor I know which games will reveal to them that games are art. I'm intentionally avoiding discussing games I feel are art and games I feel aren't, because my lists are different than yours, and I don't want to weaken my position on games as a whole by discussing specific games.&lt;/p&gt;&lt;p&gt;Keep making games! Keep playing them, and keep talking about them, and keep telling your friends about them. Keep sharing stories about the ones that made you laugh and cry, the ones that filled you with joy or happiness or panic or dread. Tell about the time a game made you think, or the time one made you feel a sense of true accomplishment, or the time you felt true pride in your lower-case-a-achievements. Speak about the ones that made you angry and the ones that inspired you. Lament the bad games and sing the praises of the good.&lt;/p&gt;&lt;p&gt;But stop acknowledging any claims that games are not art. Stop talking back to them, too. You don't have time for that. There are more good games to be played.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;a href="http://chardish.com/" _mce_href="http://chardish.com"&gt;Evan Jones&lt;/a&gt; is a game programmer at &lt;a href="http://www.lolapps.com/" _mce_href="http://www.lolapps.com"&gt;Lolapps&lt;/a&gt;, an independent game developer in his free time, and a game design enthusiast. You can email him at &lt;a href="mailto:EVANISMYFIRSTNAME@lolapps.com" _mce_href="mailto:EVANISMYFIRSTNAME@lolapps.com"&gt;his first name @lolapps.com.&lt;/a&gt; &lt;/em&gt;&lt;em&gt;It would make him very happy if you followed him on Twitter &lt;a href="http://twitter.com/chardish" _mce_href="http://twitter.com/chardish"&gt;@chardish&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-5436488525666389014?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/5436488525666389014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2011/04/stop-debating-games-as-art.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5436488525666389014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5436488525666389014'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2011/04/stop-debating-games-as-art.html' title='Stop Debating &quot;Games as Art&quot;'/><author><name>Evan Jones</name><uri>http://www.blogger.com/profile/09275778812445451360</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-3044996512126273739</id><published>2010-12-13T18:55:00.000-08:00</published><updated>2010-12-13T18:55:35.024-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lolapps'/><category scheme='http://www.blogger.com/atom/ns#' term='Brenda Brathwaite'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Design'/><title type='text'>Game Design Has Become a Game</title><content type='html'>The most exclusive game on Facebook is also the most lucrative and intense: the game design of the games themselves. For designers in the space, particularly those from the traditional game industry, game design has become its own game, complete with a leaderboard.&lt;br /&gt;&lt;br /&gt;“Every night at midnight, I check AppData,” says John Romero, a veteran video game designer, consultant and lead designer of Ravenwood Fair. The site has become a de facto leaderboard for many developers, backed up by weekly top games lists.&lt;br /&gt;&lt;br /&gt;Imbued by a deep love of game play, many designers view social game design, and the competition it creates with other designers, as a real-time strategy game, complete with in-depth stats and armies composed of coders, artists, animators and product managers. Indeed, our ability to respond to the current state of the game — both the actual game on Facebook and the larger meta game of game design — is critical.&lt;br /&gt;&lt;br /&gt;Don Daglow, another veteran game designer, watches the numbers like a general. “Social game design is unique,” he says, “because you get a score for every facet of your performance every day. It’s like SEO on speed. How many first-time players came back the next day after the latest tutorial tweaks? What’s our DAU? How is monetization changing since we adjusted item prices? Did the test players like the new gorilla suit costume? All of business is a game, but the social games business has 24-hour scoreboards on every corner.”&lt;br /&gt;&lt;br /&gt;As much as we respond to the player behavior in our games, game designers also must respond to the other “players” in the meta game of design, too. If one player makes a move, invents a particularly clever tactic or introduces a new mechanic or theme, the other “players” respond accordingly by trying out the move themselves, watching their ARPU or doing recon behind enemy lines. The mass proliferation of games about farming, cooking, and running resorts serve as perfect examples.&lt;br /&gt;&lt;br /&gt;The idea of game design as a game in itself first occurred to me in an active, front-of-the-brain kind of way when I was on stage at this year’s Game Developer’s Conference in San Francisco with fellow game designers Steve Meretzky, VP of game design at Playdom, Brian Reynolds, chief game designer at Zynga, and Noah Falstein, president of The Inspiracy. We were there to talk as video game veterans who had entered the social game space. As the room began to fill, we talked of the things we’ve talked of for the decades we’ve known one another, but there was something else there, too: a new gamestate between us.&lt;br /&gt;&lt;br /&gt;Brian was the obvious current leader at Zynga, and every day, his numbers just kept rising. As we talked of the games we were working on, our numbers and, in a veiled way, our future plans, it quickly became apparent that our conversation had all the earmarks of hardcore board game players yapping about their current gamestate while keeping their next move carefully guarded. That we four actually do regularly play board games together made the comparison all the more obvious, amusing and interesting. “Finally, game design is a game,” I said to the audience. It was promptly tweeted and retweeted dozens of times.&lt;br /&gt;&lt;br /&gt;Says Falstein, “I look at my design job partly as a social status issue with my fellow designers. I want to improve the best of their games’ features while adding my own innovations, thereby earning status points at our next board game party, as well as earning RMT equivalents for my client – and therefore, me too.” Meretzky even jokingly alluded to the resource management that happens behind closed doors. “I beg my co-workers for resources. After asking four or five times, I often have everything I need to complete a task!” The rush and instant feedback is particularly exciting for game designers entering the space after years in the traditional AAA console game industry.&lt;br /&gt;&lt;br /&gt;“Good games have regular feedback loops and social game development has these in spades,” says John Passfield, creative director at 3 Blokes Studios. “The majority of time in traditional game development is spent building a game behind closed doors which is more like training for the Olympics. Whereas social game development puts you smack in the middle of a full season where you’re constantly adjusting your game by listening to your coach (product manager), watching the other team and playing to the fans. It’s about being in the moment, not preparing for the moment.”&lt;br /&gt;&lt;br /&gt;That moment, that hour and that day, each allows for iteration and tweaking of the meta-game state and a hopeful resultant climb in DAU. Quick to compare it to his own game, Reynolds said, “Every week I  harvest my features and plant some more, and then we run around collecting all the doobers!”&lt;br /&gt;&lt;br /&gt;From a game designer’s perspective, it is a wonderful, exciting time to be a “player” in the game of game design. The play space feels wide open, like a game of Civilization Revolution only a few minutes in, with lots of room to explore and many things to discover. Games are being made with small teams about unique topics for new audiences, and in many ways, say the game industry vets, it feels like 1981 again. It is good, too, that we remember 1983, the year of the North American video game crash, and can adjust our strategy accordingly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-3044996512126273739?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/3044996512126273739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/12/game-design-has-become-game.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/3044996512126273739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/3044996512126273739'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/12/game-design-has-become-game.html' title='Game Design Has Become a Game'/><author><name>Lolapps</name><uri>http://www.blogger.com/profile/11710987183055202660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-1004710203186715964</id><published>2010-10-18T00:20:00.000-07:00</published><updated>2010-10-18T00:44:28.242-07:00</updated><title type='text'>We're back!</title><content type='html'>We wanted to share some great news: our applications and games are back up on Facebook.  Not only will our quiz and gift applications and games like Critter Island be back, but over the next few days we will be adding to our portfolio.  Be sure to keep an eye out for the news from tomorrow’s &lt;a href="http://events.venturebeat.com/discoverybeat2010/"&gt;DiscoveryBeat 2010&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It has been a big weekend in the news for privacy and Facebook applications.  As tonight’s &lt;a href="http://developers.facebook.com/blog/post/418"&gt;Facebook developer blog&lt;/a&gt; post states, “In most cases, developers did not intend to pass this information, but did so because of the technical details of how browsers work.”  This statement applies to Lolapps.&lt;br /&gt;&lt;br /&gt;When we were informed of the issue the relationship that put us into this category was immediately dissolved.  Since Lolapps was founded in 2008, we have always been committed to Facebook’s platform policies and will continue to be as we grow.&lt;br /&gt;&lt;br /&gt;The entire team here wants our 150 million users to know that we are sorry they had to go without their favorite Lolapps games and applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-1004710203186715964?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/1004710203186715964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/10/were-back.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/1004710203186715964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/1004710203186715964'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/10/were-back.html' title='We&apos;re back!'/><author><name>Arjun Sethi</name><uri>http://www.blogger.com/profile/07217160654540983281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-6083316235555651656</id><published>2010-08-24T12:12:00.000-07:00</published><updated>2010-08-24T13:51:14.900-07:00</updated><title type='text'>Tutorials in Social Games</title><content type='html'>If you've made games for a while, you have likely faced the frequently forced, painful and cramped narrative-on-rails that is the in-game tutorial. For reasons that aren't entirely clear to me, many game devs (including me) decided that we'd work as hard as we could to make the tutorial a part of the game story. The result is often garbage like this:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Grab that gun! Let's go! They're after us. Oh, and if you need me to give you ammo, press CTRL A.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;And if you are a player right then, and this is the first bit of tutorial-speak you hear in the game, you tolerate it, because you have grown accustomed to such weirdness. I vividly remember this one game experience where I was regularly jolted out of the game by these messages as the ramp progressed.&lt;/p&gt;&lt;p&gt;So, it's an interesting and refreshing change to see tutorials in social games.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;See that star? Click on it to increase your earnings. The more stars you collect, the more you'll earn!&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Or the deliciously simple:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Follow the yellow arrow to learn how to play.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Social games, casual games, board games and sports have all embraced this simple "tell it like it is" approach. There is the explicit understanding between designer and player: you need to learn how to play, and I'll tell you how to do it. Part of the reason social games do this is clear: we can't afford any potential disconnect between the player and the rules in the roughly 30 seconds (literally) that we have their attention before they decide to either keep playing or move on. This is compounded by the constraints of narrative exposition. Must I explain who I am, what I am, what I am doing here and the player's relationship to me? Must I set the stage in some weird way by first giving an explanation about why the player's here in the first place? In board games and social games, the angst is very much up front and the tutorial or the ruleset in board games delivers the goods straight:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Object: To acquire land through purchase, trading and takeover.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;So much of the fluff falls to the floor.&lt;/p&gt;&lt;p&gt;It's refreshing, I think, this simple and direct means of explaining play.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-6083316235555651656?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/6083316235555651656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/08/tutorials-in-social-games.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/6083316235555651656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/6083316235555651656'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/08/tutorials-in-social-games.html' title='Tutorials in Social Games'/><author><name>bbrathwaite</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-429919135933949957</id><published>2010-07-31T10:08:00.000-07:00</published><updated>2010-07-31T10:14:51.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lolapps'/><category scheme='http://www.blogger.com/atom/ns#' term='Brenda Brathwaite'/><category scheme='http://www.blogger.com/atom/ns#' term='Introductions'/><title type='text'>Meet the team: Brenda Brathwaite</title><content type='html'>Ever once in awhile we like to introduce an employee at Lolapps. We've only done a few of these, so look forward to more!&lt;br /&gt;&lt;br /&gt;This week we'd like to introduce Brenda Brathwaite, our Creative Director&lt;br /&gt;&lt;br /&gt;Brenda is a game industry veteran. She is an award-winning game designer and has worked on titles in the Wizardry®, Jagged Alliance®, Dungeons and Dragons® and Def Jam® series and has published on virtually every platform from tabletop to console to Facebook. Her non-digital game Train recently won the Vanguard award at IndieCade "for pushing the boundaries of game design and showing us what games can do." In addition to making games, Brenda is also a voracious game player, has her own d10s and plays well with others.&lt;br /&gt;&lt;br /&gt;Below is our own internal Q&amp;A with her:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What do you do at Loplapps?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am Lolapps Creative Director and a game designer here. It means that I am one of the luckiest people I know. Making games, playing games and setting general director for a company's products is an amazing opportunity.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How'd you get into gaming and game design?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I got into the game industry in 1981 when I was just 15 years old. It was a rather chance meeting between me and Linda Currie, a fellow classmate in high school. To be polite, she struck up a conversation which turned into a job interview:&lt;br /&gt;&lt;br /&gt;"You play games?"&lt;br /&gt;&lt;br /&gt;Yes, love them.&lt;br /&gt;&lt;br /&gt;"You hear of Sir-tech Software?"&lt;br /&gt;&lt;br /&gt;No.&lt;br /&gt;&lt;br /&gt;"Wizardry?"&lt;br /&gt;&lt;br /&gt;No.&lt;br /&gt;&lt;br /&gt;"Have you ever played D&amp;amp;D?"&lt;br /&gt;&lt;br /&gt;YES!&lt;br /&gt;&lt;br /&gt;I showed up at her house the following afternoon and played Wizardry for the first time. It was then and remains now and utterly magical moment in my life. I was with Sir-tech for 18 years, and consider that time in my life truly formative and wonderful. I was able to apprentice with great game designer and work on many award-winning games.&lt;br /&gt;&lt;br /&gt;As far as gaming goes, I don't remember a time when I didn't play games. I am always playing some game. Always.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What are your favorite applications on facebook?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This changes so rapidly. The answer I give you today will be different than the one I'd give you next week. I think what fascinates me most are particular mechanics and watching how they propagate from game to game. I really enjoy it when games do something that I haven't seen at all. I recall how Frontierville really upped the ante with the amount of activity per visit and how Nightclub City made your typical friend grind longer and more genuinely entertaining than many, many other games. I probably play three new Facebook games a day and return to maybe one a week for a regular sessions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What games have you played recently?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Apart from social games, I play WoW a lot as well as Civilization Revolution. I am also a voracious consumer of board games. Ticket to Ride, Family Business, Container and Dominion are my current favorites.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What do you do in your free time?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is going to sound tragically geeky, but I play games and work on building my board game series, The Mechanic is the Message. My partner is also a game designer, so it tends to occupy a lot of our time. When I'm not doing something with games, I really enjoy taking rides to wherever in my car (a convertible), visiting restaurants, exploring little towns and watching great films. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What you enjoy most about working at start-ups?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lolapps feels different to me than a great many start ups. The personality of the owners is infused in the business, and their sense of humor carries through the whole place. So, it's super fun to come to work, even when we're working hard to hit milestones. Overall, the space feels very competitive to me, and I like that I can directly talk to and influence the people making the big decisions here. I've worked for bigger companies as an employee or contractor, and I my prefer the feeling of family that comes with having direct access to the powers that be.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What new initiatives and games are you most excited to see at Lolapps?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am always excited to see a game release and see how people respond to it. I can't wait to get our current games out and focus on a brand new title. There's nothing like that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-429919135933949957?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/429919135933949957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/07/meet-team-brenda-brathwaite.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/429919135933949957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/429919135933949957'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/07/meet-team-brenda-brathwaite.html' title='Meet the team: Brenda Brathwaite'/><author><name>Arjun Sethi</name><uri>http://www.blogger.com/profile/07217160654540983281</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-5456349020405546834</id><published>2010-07-29T18:12:00.000-07:00</published><updated>2010-07-29T18:13:49.585-07:00</updated><title type='text'>Some Forming Social Game Theories</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', Times, serif; font-size: 13px; color: rgb(51, 51, 51); line-height: 22px; "&gt;&lt;p style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;I started this on twitter (&lt;a href="http://www.twitter.com/bbrathwaite" target="_blank" style="text-decoration: none; color: rgb(119, 33, 36); font-weight: bold; "&gt;@bbrathwaite&lt;/a&gt;), but moved it here. Feel free to add to this list, disagree or discuss. &lt;/p&gt;&lt;p style="font-size: 1em; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;The player should:&lt;/p&gt;&lt;ul style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Return to the game to good news (game progress, new content, visits from friends, mail, gifts).&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Return to the game with a problem to solve (wilted crops, empty supplies, shifts to start).&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Have short-term problems to solve (in a session) and long-term problems to solve (multiple sessions). Longer term problems/desires may be aspirational goals, collections or quests to complete.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Always be able to make progress on longer-term goals and complete short-term goals.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Always know precisely what they need to do to solve all problems in the game. These things should never be nested or “discoverable” if you’re clever. That’s not to say that there shouldn’t be discoverable things and surprises. There should be (Pocket God comes to mind). However, the player shouldn’t be confronted with a problem that has no obvious solution – that equals a block and goodbye.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Always have an aspirational goal on every screen, if possible (something they want – item/action gated by $, lvl, quest progress), and a clear understanding of what they need to do to reach it.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Have genuine motivation tied into the core of the game which makes them want those aspirational goals (if I get X, it will help me do Y faster or will earn me more $)&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Be rewarded for &lt;em&gt;every&lt;/em&gt; single click either visually, through XP, coins or some other measure of progress.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Clearly understand how and why every change state in the game occurs. If an NPC suddenly becomes happy, why did that happen? Is it visually obvious? Is the transition from normal state to happy state clear? Is it rewarding? Does the player know what they did (or something in the game did) to make that happen?&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Feel like they have agency in the game. Through their direct action, something happens. Without them, it doesn’t happen. If you never plant crops, you never get results.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Understand your UI instantly. If you need to explain it, you need to redo it.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Have a pre-existing mental model of the game before they even play it. I know how a farm, a nightclub, a bakery and a restaurant run, at least at an abstract level. The less you need to teach people about the game, the better. This information should be pre-grokked before they even enter the game.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Feel good about posting something in their feed. They believe what they’re posting will help them and help their friends playing the game, too.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Have a “feel good” endgame state for a session. This is appointment gaming, and people want to feel like they’ve tidied up this session before moving on to the next. That means that they can finish or, in some cases, optimize until it’s not really optimum to continue anymore. If they leave feeling like the game didn’t really let them leave (because there was always something new to do), they leave in a sub-optimal and unsatisfied state and thus are less likely to return.&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Have clear dailies including friend grind, playspace grind and bonus progression, if applicable. What do I do everyday when I come back to the game? Do I know that I have finished what I needed to do? How do I know that I need to do it (and no, your last play session isn’t enough).&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Be reminded of what they need to do. They’re playing for 2, 5 or 10 mins at a time, and are possibly playing &lt;em&gt;dozens&lt;/em&gt; of social games simultaneously. They need visual reminders of what they need to do to progress play in your game. Give them explicit and constantly visible goals, badges, or visual reminders of some kind.&lt;/li&gt;&lt;/ul&gt;&lt;ul style="list-style-type: none; list-style-position: initial; list-style-image: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;If you nerf their playstate or playfield, the player better understand why and feel like they could have prevented it (keeping their appointment, getting an item by x time or it expires, etc).&lt;/li&gt;&lt;li style="margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 17px; display: block; background-image: url(http://s1.wp.com/wp-content/themes/pub/vigilance/images/list-star.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 0.3em; background-repeat: no-repeat no-repeat; "&gt;Players want direction. Give it to them everywhere: tool tips, quests, pop ups, etc.&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-5456349020405546834?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/5456349020405546834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/07/some-forming-social-game-theories.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5456349020405546834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5456349020405546834'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/07/some-forming-social-game-theories.html' title='Some Forming Social Game Theories'/><author><name>bbrathwaite</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-1722367707804513696</id><published>2010-07-26T17:51:00.001-07:00</published><updated>2010-07-26T17:52:25.582-07:00</updated><title type='text'>Choosing a Restaurant 2.0</title><content type='html'>Everyone who has ever worked at a start-up knows that the most important decisions are always about food. Especially when the choice concerns more than just one person. After all how are going to survive all those all-hands meetings or special events such as python meet-ups without good food? Of course there is always the alternative: a golden nectar, commonly referred to as "Beer". After all, the world's largest software company was built with the fundamental knowledge of the Ballmer Peak. But since we can't rely on beer indefinitely, back to food:&lt;br /&gt;&lt;br /&gt;Most companies have one person who is responsible for picking the right stuff to order in and making sure that the majority is satisfied with the food. Most likely, that is the right decision from a management point of view. However, start-ups are here to innovate and that is precisely what we did. Since we are a social media start-up, we needed to make this process more social. However, we're also a tech start-up and nothing works without a proper Product Requirements Document. Enjoy!&lt;br /&gt;&lt;div style="width:425px" id="__ss_4800271"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/lolapps/choosing-a-restaurant" title="Choosing a restaurant"&gt;Choosing a restaurant&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse4800271" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=choosingarestaurant-100720210830-phpapp01&amp;amp;stripped_title=choosing-a-restaurant"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse4800271" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=choosingarestaurant-100720210830-phpapp01&amp;amp;stripped_title=choosing-a-restaurant" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-1722367707804513696?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/1722367707804513696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/07/choosing-restaurant-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/1722367707804513696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/1722367707804513696'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/07/choosing-restaurant-20.html' title='Choosing a Restaurant 2.0'/><author><name>Sergei</name><uri>http://www.blogger.com/profile/01202542230880649146</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-5707940535036781525</id><published>2010-06-28T13:25:00.000-07:00</published><updated>2010-06-28T18:22:24.630-07:00</updated><title type='text'>Monitoring and the Art of Sleeping Through the Night</title><content type='html'>One of my goals at Lolapps is to be as bored as possible. Not in the manner of ignoring site issues, but rather in creating automation to do my job for me. You've seen my earlier post on the load balancers we utilize so that we aren't rushing to fix up our webservers, but what about getting the system to repair the webservers for us.&lt;br /&gt;&lt;br /&gt;Here's where Nagios comes in.&lt;br /&gt;&lt;br /&gt;Nagios is a system that allows you to monitor and alert for site related issues. It's a highly flexible system that allows you to write code in any language for checking on the health of your site. But, for the purposes of this article, we're going to talk about a powerful feature of the system that probably doesn't get as much use as it should, support for event handlers.&lt;br /&gt;&lt;br /&gt;So, what exactly is an event handler? An event handler is a command that gets run whenever the state of a service changes. This change can mean that it switches between any of the following states, OK, WARNING, CRITICAL, UNKNOWN, as well as substates. By substate, I refer to SOFT and HARD problem states, as well as when there is an increment in the check attempt during one of the problem states.&lt;br /&gt;&lt;br /&gt;While this does add complexity to the options, it also gives you the ability to fine tune when your response commands get run. Let's look at an example of an event handler script:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# define nagios command as:&lt;br /&gt;# restart_service.sh $HOSTNAME$ $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $ARG1$&lt;br /&gt;&lt;br /&gt;case "$2" in&lt;br /&gt;WARNING)&lt;br /&gt;# Service is going warning&lt;br /&gt;# We only want to take action if it's the 20th attempt&lt;br /&gt;&lt;br /&gt;case "$4" in&lt;br /&gt;&lt;br /&gt;20)&lt;br /&gt;ssh $1 "/etc/init.d/$5 stop ; sleep 2 ; /etc/init.d/$5 start"&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;esac&lt;/blockquote&gt;&lt;br /&gt;As you can see, this command takes 5 arguments. They are:&lt;br /&gt;HOSTNAME - this is the hostname where the service is running&lt;br /&gt;SERVICESTATE - This can be one of OK, WARNING, CRITICAL, or UNKNOWN&lt;br /&gt;SERVICESTATETYPE - This can be one of the problem states of SOFT or HARD&lt;br /&gt;SERVICEATTEMPT - which check attempt we are on&lt;br /&gt;ARG1 - the name of the linux init.d service that we want to restart&lt;br /&gt;&lt;br /&gt;Go ahead and setup the event handler command as suggested in the comments:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;define command {&lt;br /&gt;command_name   restart_service&lt;br /&gt;command_line   $USER2$/restart_service.sh $HOSTNAME$ $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $ARG1$&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Then, all that's left is to hook it into your service definition:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;define service {&lt;br /&gt;... [your service definition go here]&lt;br /&gt;event_handler       restart_service!httpd&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;Done! You now have Nagios automatically restarting the httpd service after it shows problems 20 checks in a row. Admittedly, this example is far from complete and requires many more pieces, but I'll leave that as an exercise for the reader.&lt;br /&gt;&lt;br /&gt;For more information on Nagios, go to their website (&lt;a href="http://www.nagios.org/"&gt;http://www.nagios.org&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-5707940535036781525?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/5707940535036781525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/06/monitoring-and-art-of-sleeping-through.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5707940535036781525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5707940535036781525'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/06/monitoring-and-art-of-sleeping-through.html' title='Monitoring and the Art of Sleeping Through the Night'/><author><name>Vikram Adukia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-2955794231796206691</id><published>2010-06-08T10:57:00.000-07:00</published><updated>2010-06-08T11:28:46.044-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vikram Adukia'/><title type='text'>Visualizing the Lolapps Codebase</title><content type='html'>As Lolapps has grown and our products evolved, our code base has followed suit. So, I thought one of the more interesting things to do would be go visualize the changes that have taken place over time.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XSSxLp9jWmI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/XSSxLp9jWmI&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the video, each node represents files in our code repository. The  little dots zipping all around the map are engineers making changes and  working on the code. You can certainly see that we've grown over the  years and can only imagine what will come next. &lt;br /&gt;&lt;br /&gt;(btw, we're &lt;a href="http://www.lolapps.com/career/"&gt;hiring&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-2955794231796206691?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/2955794231796206691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/06/visualizing-lolapps-codebase.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/2955794231796206691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/2955794231796206691'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/06/visualizing-lolapps-codebase.html' title='Visualizing the Lolapps Codebase'/><author><name>Vikram Adukia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-8985848534202078631</id><published>2010-04-01T16:50:00.000-07:00</published><updated>2010-06-07T18:52:59.223-07:00</updated><title type='text'>Gender and our Games</title><content type='html'>Here at Lolapps, we try make our games appeal to both men and women, but some themes naturally attract one gender rather than another. Since women are from Venus and men are from Mars, it's not surprising that there are measurable differences to account for when comparing how genders approach game play and monetize in games. In our games, we noticed some particularly intriguing differences.&lt;br /&gt;&lt;br /&gt;Of our current titles, two are very gender-centered - Band of Heroes is a game where players assume the role of a soldier in World War II, while Diva Life allows the player to experience the life of a rich and multi-talented Diva. As we expected, the former appeals mostly to men, while the latter found its audience mostly with women. However, we were somewhat surprised to find that the fraction of men playing Diva Life is much smaller than the fraction of women playing Band of Heroes (see the figure below). This is a trend we have observed in other titles as well: men object heavily towards playing a female-focused game, much more than women object to playing a game traditionally thought of as "male."&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_y9tWRTDXfq4/TA2fEt6y6HI/AAAAAAAAAAM/eZXIxLRTO-k/s1600/Graph+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://4.bp.blogspot.com/_y9tWRTDXfq4/TA2fEt6y6HI/AAAAAAAAAAM/eZXIxLRTO-k/s400/Graph+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5480211224974256242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another gender-based aspect of game play we've been tracking relates to player performance within the various games; i.e., at what rate do players progress through the game content and how much content do they engage with. When considering Diva Life, about 2% of men "finish" the game - that is, unlock all realms and finish all missions. That is exactly the same percentage reflected for women who play this game. Fewer men play Diva Life, but those who do play, advance with the same rate of game completion as the women players. When considering Yakuza Lords or Band of Heroes, only half as many women finish the game as men: 3% of men finish the game, while less than 1.5% of women manage to finish it. &lt;br /&gt;&lt;br /&gt;This asymmetry is also present when considering the number of actions taken per user in each game, as in the figures below (we only consider two of the many actions that a player can make in the game). Actions taken are defined as: any feature or mechanic in the game that requires the player to actively engage with the content.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_y9tWRTDXfq4/TA2fP3AUR9I/AAAAAAAAAAU/Dlmm5KgKxUE/s1600/graph+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://3.bp.blogspot.com/_y9tWRTDXfq4/TA2fP3AUR9I/AAAAAAAAAAU/Dlmm5KgKxUE/s400/graph+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5480211416391894994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_y9tWRTDXfq4/TA2fawNA8-I/AAAAAAAAAAc/NBlx_VgrjBE/s1600/Graph+3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://3.bp.blogspot.com/_y9tWRTDXfq4/TA2fawNA8-I/AAAAAAAAAAc/NBlx_VgrjBE/s400/Graph+3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5480211603544667106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Diva Life, men take just as many actions as women on a per-player basis. In Band of Heroes, women take much less action than men - completing about half as many actions per player. Hence, even though the ratio of women /men in Band of Heroes is higher than the ratio of men/women in Diva Life, these women are less engaged. &lt;br /&gt;&lt;br /&gt;This is an interesting asymmetry - female-oriented games attract far less men, but those attracted to them are just as engaged as the women in them. On the other hand, male-oriented games are able to attract a fair share of women, but these women are much less engaged than male players. They will join the game and play, but are seemingly never as interested as men are.&lt;br /&gt;&lt;br /&gt;This means that, at least for our games, men are more selective towards which games they will play, but when they choose a game, they will put in more effort to do well in it. Women, on the other hand, are less selective and may play more diverse types of games, but will only excel in those that they are really interested in. Therefore, in an environment where there is an equal number of men and women, having a male-oriented game will attract more users in total, but engagement will be lower among women. &lt;br /&gt;&lt;br /&gt;We are still investigating how a gender-neutral game behaves. The recent Dante's Inferno is proving to be such game, with a very balanced number of men and women in it. Since it is very recent, very few users have actually finished the game and we'll leave this to another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-8985848534202078631?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/8985848534202078631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/06/gender-and-our-games.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/8985848534202078631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/8985848534202078631'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/06/gender-and-our-games.html' title='Gender and our Games'/><author><name>Lolapps</name><uri>http://www.blogger.com/profile/11710987183055202660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y9tWRTDXfq4/TA2fEt6y6HI/AAAAAAAAAAM/eZXIxLRTO-k/s72-c/Graph+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-6849380534311977008</id><published>2010-03-01T16:50:00.000-08:00</published><updated>2010-06-07T18:52:48.799-07:00</updated><title type='text'>The Avatar: A Powerful Feature in Social Games</title><content type='html'>The fact that a successful Facebook game (or any game for that matter) keeps players engaged and interested is an obvious one. What isn't so obvious is what exactly will keep the curious breed of Facebook gamers engaged. These players aren't your hardcore MMO-loving gamers. On the contrary, they are short on time and patience. Instead of playing a game continuously for many hours, an "engaged" user returns again and again, playing the game for only a short period each time. With so little time to devote to these "casual" games, most players want instant gratification. A successful game, therefore, is able to quickly snag a player's attention and keep them coming back for more. But what feature could possibly be compelling enough to capture the dedicated attention of this tough-to-please crowd? As Hui-Neng said, "Look within! The secret is inside you." What is more fascinating to the human being than oneself!&lt;br /&gt;&lt;br /&gt;With the Avatar, players are given an extension of the self within the game - they can see, not just imagine, themselves as the story's main character. In addition to giving players a stronger personal connection with the game, the Avatar gives players a freedom and control over identity that isn't possible in real life. Behind the guise of an Avatar, one's appearance is no longer permanent or all-defining. Whether the Avatar is an animal, a superhero or a more realistic representation of oneself, it is yours to change and customize at will. Our research has revealed that customization and Avatars are the two most frequent requests among RPG players on Facebook. The characters and stories players build around their Avatars are integral to a positive game-playing experience.&lt;br /&gt;&lt;br /&gt;Virtual goods, such as hair, skin color, clothes and gear, can all be used to customize one's Avatar. The more effort users spend in creating and customizing their Avatars, the more engaged they are in the game. Players gain access to cooler items as they progress in the game, which motivates them to keep playing. In addition, players seek out unique items that will differentiate their Avatars from other players'. This need for special rare items provides a huge opportunity for monetization. 62% of the users we surveyed said they would pay to customize their Avatar in an RPG game. Based on this knowledge, we've implemented Exclusive Items, or highly valuable limited-edition goods, that players can only obtain by paying real money. Just as a cool car or pair of sneakers can make a person feel special in real life, Exclusive Items give players' Avatars (and thus the players themselves) that same kind of elevated status within a game. Exclusive Items rotate in and out of the game, and a specific item may not be available for purchase more than once. This gives players the opportunity to acquire items that very few other players will own in the game.&lt;br /&gt;&lt;br /&gt;The need for customization and self representation within a game is widespread among Facebook game players. They are willing to invest time, energy and even money into making their Avatars the best they can possibly be. Thus, it is clear that Avatars are an extremely powerful feature in the world of Facebook games!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-6849380534311977008?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/6849380534311977008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/06/avatar-powerful-feature-in-social-games.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/6849380534311977008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/6849380534311977008'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/06/avatar-powerful-feature-in-social-games.html' title='The Avatar: A Powerful Feature in Social Games'/><author><name>Lolapps</name><uri>http://www.blogger.com/profile/11710987183055202660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-4596020566260831182</id><published>2010-02-07T18:51:00.000-08:00</published><updated>2010-06-07T19:10:23.215-07:00</updated><title type='text'>Meet the team:  Lauren Freeman</title><content type='html'>&lt;span style="font-weight:bold;"&gt;What was your initial reaction when you found out that you were assigned to write Dante's Inferno for Facebook?&lt;/span&gt;&lt;br /&gt;Excitement, a sense of humility and fear in the face of such an incredible task! Seriously though, I think anyone with a literary education thinks of Dante Alighieri's The Divine Comedy as possibly one of the greatest literary achievements of all time. To be assigned the task to adapt it was hugely humbling. Not to mention, it was a double honor because we were partnered with Electronic Arts, an indisputable leader of entertainment software. Fortunately, I worked with a co-writer, Brodie Jenkins, who alleviated some of the fear in knowing I could always blame her... just kidding! We worked really well together and played off each other's excitement for the piece. So, all in all, it was smooth sailing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Talk a little bit about your creative process? How did you tackle this adaptation?&lt;/span&gt;&lt;br /&gt;Well, first and foremost we reread Inferno in several different iterations. We had a rather colorful debate here at the office over which adaptation was the most valuable. I think John Ciardi and Robert and Jean Hollander's versions were the most dog-eared on my end. After I re-familiarized myself with Dante's version, we read EA's game scripts. From there, we discussed with EA which elements of the game we could use and which we should refrain from using.&lt;br /&gt;&lt;br /&gt;It was an interesting situation because EA had adapted some of the major bosses that Dante encounters such as Cerberus and Geryon, in very creative ways. However, given the fact that EA's game wasn't going to launch until after the Facebook game, we had to really make a judgement call as to what aspects of the adapted gameplay could be unveiled. For those elements that EA didn't want to become public knowledge yet, we returned to the original source material (Dante's poem) and used the original imagery. So there was quite a bit of back and forth between the various versions.&lt;br /&gt;&lt;br /&gt;All things considered, we had a good deal of creative freedom which as a writer is always appreciated. From the very beginning I decided that I wanted our missions to rhyme. It just seemed to be the most organic approach to the material. We generally only write 3-4 four succinct lines of text for our missions anyway, so why not have them mimic Dante's rhyming stanzas? Of course this made the writing process that much more challenging, but I'm really proud of the resulting mission text.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What is your favorite mission in the game?&lt;/span&gt;&lt;br /&gt;I love the depiction of Cleopatra because she is really just a BAD, bad, apple in this game. I don't want to ruin it for people who haven't played yet, but let's just say she's in the realm Lust and she gives Tiger Woods a run for his money in that department.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;You were the lead writer on Diva Life and Band of Heroes, two very different themes. Did you find it comparatively easier to descend to Hell with Dante or was this a difficult genre for you?&lt;/span&gt;&lt;br /&gt;Well, my nickname as a kid was Lucifer, so... I'll just let that fact speak for itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-4596020566260831182?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/4596020566260831182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/02/question-and-answer-with-writer-lauren.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/4596020566260831182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/4596020566260831182'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/02/question-and-answer-with-writer-lauren.html' title='Meet the team:  Lauren Freeman'/><author><name>Lolapps</name><uri>http://www.blogger.com/profile/11710987183055202660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-3295927657961908294</id><published>2010-01-01T16:45:00.000-08:00</published><updated>2010-06-08T11:59:39.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vikram Adukia'/><title type='text'>Load Balancing on the Cheap</title><content type='html'>A few months ago, we started to look at alternate load balancing methods for our site. At the time, we had a pretty basic setup using Nginx. While this worked for the most part, our setup lacked some of the nicer features of a traditional load balancer such as health checks and automated removal of poorly responding backend servers. This meant that every time a backend server went down, there would be some, however minor, user visible impact until we it could be removed from rotation.&lt;br /&gt;&lt;br /&gt;Thus, began the search for a new solution. Our requirements were fairly simple:&lt;br /&gt;- easy to setup and understand&lt;br /&gt;- ability to health check and automatically remove failing servers&lt;br /&gt;- low cost&lt;br /&gt;&lt;br /&gt;From here, additional features would be a bonus, but not required for our immediate goals. After looking at several solutions, we settled on using HAProxy, an opensource and free solution.&lt;br /&gt;&lt;br /&gt;The benefits were noticeable almost instantaneously. One of the first observations was that hosts behind HAProxy were able to serve the same amount of traffic, but with a lower load average. What we surmised is that there was less setup/teardown of tcp connections which freed up system resources to actually serve user requests. Once we finished our full migration, we actually saw the loads on our webservers drop nearly in half, which allowed for more growth on our existing infrastructure.&lt;br /&gt;&lt;br /&gt;In the weeks that followed, we started to take advantage of additional features provided by HAproxy. For example, the status page also has a csv output option. By parsing this and doing some small calculations, we are able to see the various states of our servers and get an overall percentage of our serving capacity. It's well known that computers go down, it's just the nature of things. By utilizing cluster wide checks, we don't have to get alerted for a single host down, but rather if a large amount of capacity is down.&lt;br /&gt;&lt;br /&gt;Enough of talking about some of the features, let's take a look at a configuration example.&lt;br /&gt;&lt;br /&gt;Let's say you have 5 web servers: web1, web2, web3, web4, web5. A basic HAproxy configuration would look like this:&lt;br /&gt;&lt;br /&gt;global&lt;br /&gt;   log 127.0.0.1    local0&lt;br /&gt;   log 127.0.0.1    local1 notice&lt;br /&gt;   maxconn 1024&lt;br /&gt;   chroot /var/lib/haproxy&lt;br /&gt;   user haproxy&lt;br /&gt;   group haproxy&lt;br /&gt;   daemon&lt;br /&gt;   #debug&lt;br /&gt;   #quiet&lt;br /&gt;&lt;br /&gt;defaults&lt;br /&gt;   log    global&lt;br /&gt;   mode    http&lt;br /&gt;   option   httplog&lt;br /&gt;&lt;br /&gt;listen webservers :80&lt;br /&gt; mode http&lt;br /&gt; server web1 web1:80 weight 1 check inter 15s&lt;br /&gt; server web2 web2:80 weight 1 check inter 15s&lt;br /&gt; server web3 web3:80 weight 1 check inter 15s&lt;br /&gt; server web4 web4:80 weight 1 check inter 15s&lt;br /&gt; server web5 web5:80 weight 1 check inter 15s&lt;br /&gt;&lt;br /&gt;All done! You now have a load balancer that distributes requests among 5 servers and checks every 15 seconds to see if their ports are responsive.&lt;br /&gt;&lt;br /&gt;For more information on HAProxy and configuration options, check out their website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-3295927657961908294?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/3295927657961908294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/01/load-balancing-on-cheap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/3295927657961908294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/3295927657961908294'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/01/load-balancing-on-cheap.html' title='Load Balancing on the Cheap'/><author><name>Vikram Adukia</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8045458225020293749.post-5318615195671483327</id><published>2009-12-01T16:49:00.000-08:00</published><updated>2010-06-07T18:52:36.272-07:00</updated><title type='text'>Lolapps Launches Champions Online for Facebook</title><content type='html'>If you're a fan of Inside Social Games, odds are you've heard about our Facebook version of the game, Champions Online, launching Wednesday, the 18th. We're very excited about the launch and the great feedback we've received so far! According to AppData, the game already has over 700,000 users and is ranked ninth on the top rising Facebook app list for today (as high as fifth). We're hoping these numbers are just a prelude of what's to come.&lt;br /&gt;&lt;br /&gt;To give you some background, this game is a result of a recent partnership between Lolapps andAtari's Cryptic Studios that was fostered to extend the Champions Online brand to the Facebook platform. We believe this partnership creates a win-win situation for users, Cryptic and Lolapps as it blends our expertise as one of the marquee social gaming companies along with Cryptic Studios and Atari, who have a long history of creating extremely successful gaming titles. Cryptic Studios is behind such acclaimed games as Star Trek Online, City of Heroes and City of Villains, while Lolapps is amongst the top five application companies on Facebook in terms of user reach. Between such excellent intellectual properties and prodigious distribution, Facebook users can look forward a new calibre of social gaming.&lt;br /&gt;&lt;br /&gt;If you are curious about what the game is like (and are unfamiliar with the original version of Champions Online) here is a quick look at the game's story line:&lt;br /&gt;&lt;br /&gt;"You are a brave superhero, aka a Champion, who helps protect the world from evil wrongdoers. The Sinister Syndicate, a gang of some of the world's most dastardly villains have come together to destroy the world! With the guidance of Socrates, the all-knowing supercomputer, you travel the Champions universe; from futuristic Millenium City, to frigid Canada, to Monster Island, Atlantis, and to many more fantastic locations, in an effort to put an end to the Sinister Syndicate's diabolical plan. Complete heroic tasks, acquire superpowers, and save the world one villain at a time... it's just a day in the life of a Champion!"&lt;br /&gt;&lt;br /&gt;Through this game, you can see that we've built an extremely robust platform that allows us to work collaboratively with our partners and introduce both existing and new brands to our users. We are bridging the gap between social networks and traditional game developers to open up the Facebook doors for players like Cryptic.&lt;br /&gt;&lt;br /&gt;Looking to expand your current audience and expose your game to millions of new users? Drop us a line at bizdev@lolapps.com!&lt;br /&gt;&lt;br /&gt;Check out more about the game on Inside Social Games or become a Champion yourself and start playing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8045458225020293749-5318615195671483327?l=lolapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lolapps.blogspot.com/feeds/5318615195671483327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lolapps.blogspot.com/2010/06/lolapps-launches-champions-online-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5318615195671483327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8045458225020293749/posts/default/5318615195671483327'/><link rel='alternate' type='text/html' href='http://lolapps.blogspot.com/2010/06/lolapps-launches-champions-online-for.html' title='Lolapps Launches Champions Online for Facebook'/><author><name>Lolapps</name><uri>http://www.blogger.com/profile/11710987183055202660</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
