<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2579857068237830056</atom:id><lastBuildDate>Sat, 11 Feb 2012 20:38:16 +0000</lastBuildDate><category>ethics</category><category>mobile</category><category>pubsub</category><category>SL</category><category>boss</category><category>data mining</category><category>SW archi</category><category>documentation</category><category>China</category><category>bugs</category><category>Everquest</category><category>avatar</category><category>death</category><category>strategy</category><category>UI</category><category>France</category><category>updates</category><category>EVE</category><category>F2P</category><category>audio</category><category>psychology</category><category>guilds</category><category>AI</category><category>society</category><category>rewards</category><category>video</category><category>pets</category><category>developer</category><category>balance</category><category>Uru</category><category>anthropology</category><category>story</category><category>RO</category><category>scalability</category><category>aesthetics</category><category>gameplay</category><category>WoW</category><category>maths</category><category>Vivox</category><category>graphics</category><category>brain</category><category>violence</category><category>development process</category><category>popular imagination</category><category>algorithm</category><category>difficulty</category><category>regulation</category><category>controller</category><category>heroism</category><category>social networks</category><category>pserv</category><category>monsters</category><category>marketing</category><category>game mechanics</category><category>network</category><category>statistics</category><category>exploit</category><category>grind</category><category>journalism</category><category>MMOSG</category><category>rules</category><category>consumer</category><category>challenge</category><category>moral panic</category><category>proxy</category><category>live events</category><category>gold farming</category><category>latency</category><category>cheat</category><category>playtesting</category><category>casual</category><category>console</category><category>emotions</category><category>virtual economy</category><category>survey</category><category>drops</category><category>retention</category><category>chat</category><category>NPC</category><category>NPC embodiment</category><category>learning</category><category>Facebook</category><category>hardware</category><category>database</category><category>friends</category><category>business model</category><category>key players</category><category>bot</category><category>RMT</category><category>patterns</category><category>politics</category><category>SW Eng</category><category>community management</category><category>indie</category><category>mapping</category><category>instance</category><category>UO</category><category>FPS</category><category>IRL</category><category>cinema</category><category>history</category><category>strangers</category><category>maps</category><category>UGC</category><category>level design</category><category>sociology</category><category>management</category><title>Bowling Bash</title><description /><link>http://bowling-bash.blogspot.com/</link><managingEditor>noreply@blogger.com (gentimouton)</managingEditor><generator>Blogger</generator><openSearch:totalResults>132</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BowlingBash" /><feedburner:info uri="bowlingbash" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-2364811921848412668</guid><pubDate>Sat, 11 Feb 2012 20:21:00 +0000</pubDate><atom:updated>2012-02-11T12:24:42.118-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">hardware</category><title>Graphics cards on Ubuntu</title><description>&lt;h2&gt;Problem&lt;/h2&gt;
&lt;p&gt;
My configuration: Lenovo T410, Ubuntu 11.10, Nvidia GT218.
&lt;/p&gt;
&lt;p&gt;
OpenGL does not seem supported by default. Running &lt;code&gt;nvidia-settings&lt;/code&gt; in a console says &lt;q&gt;You do not appear to be using the NVIDIA X driver.  Please edit your X configuration file (just run `nvidia-xconfig` as root), and restart the X server.&lt;/q&gt;.
&lt;/p&gt;
&lt;p&gt;
After following these steps, the environment does not show up anymore when rebooted - only a console-like frozen screen. An actual command-line console can be found using ctrl+alt+F1 to ctrl+alt+F6. Ctrl+alt+F7 goes back to the console-like frozen screen. The screen is frozen most likely because the &lt;a href="http://en.wikipedia.org/wiki/X_Window_System"&gt;x server&lt;/a&gt; did not start.
&lt;/p&gt;
&lt;img src="http://i.imgur.com/Vpeol.jpg" title="Bumblebee from Transformers" style="float:right"&gt;

&lt;p&gt;
It turns out the actual problem is the &lt;a href="http://en.wikipedia.org/wiki/Graphics_processing_unit#Hybrid_solutions"&gt;hybrid graphic card configuration&lt;/a&gt;. Hybrid cards configurations for laptops have 2 cards: one for performance (e.g. Nvidia GT218), and one for battery life (usually integrated graphics, e.g. from Intel). The switching is supposed to be done automatically by Nvidia's &lt;a href="http://www.nvidia.com/object/optimus_technology.html"&gt;Optimus&lt;/a&gt; software. But Ubuntu 11.10 does not support, by default, the switching between integrated graphics and Nvidia graphics.
&lt;/p&gt;   
&lt;p&gt;
Quick fix: to discard permanently the integrated graphics, in the BiOS (F1 at computer startup), pick &lt;code&gt;Config &gt; Graphics &gt; Discrete&lt;/code&gt;. Problem: heavier battery consumption, and Windows, which is has no problem using Optimus, will now be forced to use &lt;em&gt;only&lt;/em&gt; Nvidia. Not good.
&lt;/p&gt;




&lt;h2&gt;Fixing the problem: &lt;a href="https://wiki.ubuntu.com/Bumblebee"&gt;Bumblebee&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;
&lt;a href="https://github.com/Bumblebee-Project/Bumblebee/wiki/Install-and-usage"&gt;Bumblebee&lt;/a&gt; is a solution for Optimus on Ubuntu, and they have a &lt;a href="https://wiki.ubuntu.com/Bumblebee"&gt;tutorial&lt;/a&gt; to set it up. But in case it one day disappears, here are the steps.
&lt;/p&gt;

&lt;h3&gt;1) Check hybrid config and support&lt;/h3&gt;
&lt;p&gt;
Determine graphics card(s): &lt;code&gt;lspci | grep VGA&lt;/code&gt;
&lt;/p&gt;
&lt;code&gt;
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
&lt;br/&gt;01:00.0 VGA compatible controller: nVidia Corporation GT218 [NVS 3100M] (rev ff)
&lt;/code&gt;
&lt;p&gt;
So there's an Intel integrated card &lt;em&gt;and&lt;/em&gt; an Nvidia GT218 card: that's a hybrid configuration. Check &lt;a href="http://nouveau.freedesktop.org/wiki/FeatureMatrix"&gt;Nouveau's supported cards&lt;/a&gt; to see if the opensource driver supports your card. If it does not, maybe the proprietary Nvidia driver supports it?
&lt;br/&gt;Anyway, the next step is to check that the Nvidia card is not doing its part; run &lt;code&gt;glxspheres&lt;/code&gt;. This outputs:
&lt;/p&gt;
&lt;code&gt;
Polygons in scene: 62464
&lt;br/&gt;Visual ID of window: 0x97
&lt;br/&gt;Context is Direct
&lt;br/&gt;OpenGL Renderer: Mesa DRI Intel(R) Ironlake Mobile 
&lt;br/&gt;21.494593 frames/sec - 23.987966 Mpixels/sec
&lt;/code&gt;
&lt;p&gt;
21 frames/sec is quite lame, so Nvidia is most likely not picked.
&lt;/p&gt;


&lt;h3&gt;2) Installing Bumblebee 3.0 (as of February 2012)&lt;/h3&gt;

&lt;code&gt;
sudo add-apt-repository ppa:bumblebee/stable 
&lt;br/&gt;sudo apt-get update 
&lt;br/&gt;sudo apt-get install bumblebee bumblebee-nvidia 
&lt;br/&gt;sudo usermod -a -G bumblebee $USER
&lt;br/&gt;sudo reboot
&lt;/code&gt;


&lt;h3&gt;3) Testing&lt;/h3&gt;

&lt;p&gt;
Any program to be run with the Nvidia card should be prefixed by &lt;code&gt;optirun&lt;/code&gt;; for instance, &lt;code&gt;optirun glxspheres&lt;/code&gt; outputs:
&lt;/p&gt;
&lt;code&gt;
Polygons in scene: 62464
&lt;br/&gt;Visual ID of window: 0x21
&lt;br/&gt;Context is Direct
&lt;br/&gt;OpenGL Renderer: NVS 3100M/PCI/SSE2
&lt;br/&gt;101.341234 frames/sec - 113.096817 Mpixels/sec
&lt;/code&gt;
&lt;p&gt;
Although it takes a tiny bit of delay for the program to start, it's much better than the 21 fps of earlier. Running &lt;code&gt;optirun -c yuv glxspheres&lt;/code&gt; shows even better performance (145 FPS). But the CPU consumption remains high: Bumblebee only has the Nvidia card compute 60 frames per sec and send those frames to the Intel card anyway.
&lt;/p&gt;




&lt;h2&gt;References&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://askubuntu.com/questions/36471/unity-and-games-dont-work-on-new-thinkpad-t420"&gt;Unity and games don't work on new Thinkpad T420&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://askubuntu.com/questions/100206/thinkpad-t520-problem-detecting-nvidia-card-after-enabling-it-after-installati"&gt;Thinkpad T520 - problem detecting nvidia card after enabling it after installation&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/Bumblebee-Project/Bumblebee/wiki/FAQ"&gt;Bumblebee FAQ&lt;/a&gt; explains how the two cards share a frame buffer. 
&lt;/li&gt;&lt;li&gt;&lt;a href="http://askubuntu.com/questions/40931/where-are-the-unity-launcher-desktop-files"&gt;.desktop files&lt;/a&gt;: To launch an application using optirun without having to type it in a terminal, edit the .desktop file of that app, located globally at /usr/share/applications and locally at ~/.local/share/applications (make the folder if it does not exist).
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-2364811921848412668?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/vQc5K7f1blA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/vQc5K7f1blA/graphics-cards-on-ubuntu.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2012/02/graphics-cards-on-ubuntu.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-8686028604781276569</guid><pubDate>Wed, 08 Feb 2012 04:47:00 +0000</pubDate><atom:updated>2012-02-07T21:04:56.300-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">psychology</category><category domain="http://www.blogger.com/atom/ns#">society</category><category domain="http://www.blogger.com/atom/ns#">brain</category><title>Influence - Cialdini, 1993</title><description>&lt;h2&gt;Weapons of influence&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/Fixed_action_pattern"&gt;Fixed-action patterns&lt;/a&gt;: the response behavior always happens in the same way. We're interested in the trigger of that response. Most of the time, the trigger is valid, but sometimes it's misleading. This response is triggered because the load of information in our society is too big for our lazy brains, and we need shortcuts.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Give a reason/explanation&lt;/span&gt; when asking a favor; it increases its chances of being accepted. "Let me pass you &lt;em&gt;because&lt;/em&gt; I'm in a hurry."
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Expensive = good&lt;/span&gt;. Make the customer think "it's a bargain!". Pretend to discount an item from $100 to $50 while the actual price really is $40.  
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;&lt;a href="http://changingminds.org/principles/contrast.htm"&gt;Contrast principle&lt;/a&gt;&lt;/span&gt;: When buying a $30k car, a $1k radio does not seem like much. Show a $500 suit first, then a $50 shirt to make the shirt look cheap. Also works the other way: clients won't buy if you first show the cheap item and then the expensive item.
&lt;/p&gt;


&lt;img src="http://i.imgur.com/wkwkQ.jpg" style="float:right; width:250px" title="Book cover"&gt;

&lt;h2&gt;Reciprocation&lt;/h2&gt;
&lt;p&gt;
&lt;span style="font-weight:bold"&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Golden_Rule"&gt;Reciprocity rule&lt;/a&gt;&lt;/span&gt;: We feel obliged to return favors because society looks down on ingrates. You can increase compliance by &lt;q&gt;providing ... a small favor prior to a request&lt;/q&gt;. &lt;q&gt;Benefactor-before-beggar strategy&lt;/q&gt;. 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Why it works:&lt;/span&gt; The reciprocity rule promotes the initiation of trade without fear of loss.  It is too socially beneficial for us to want to violate it. It's also hard to reject gifts, even unwanted ones. Since society looks down on ingrates, feeling obliged is disagreeable, and that makes us ready to give a lot to get out of such a disagreeable situation. Examples: political favors, "you don't bite the hand that feeds you".
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Concessions&lt;/span&gt;: the basis of trade and negotiations. Example: Boy scout in the street sells expensive lottery tickets for $10 apiece. When we tell him no, he asks "what about a $1 lemonade then?". We're likely to say yes because we think he did a concession to us. Add the effect of the contrast principle: $1 is nothing compared to $10.
&lt;/p&gt;




&lt;h2&gt;Commitment and consistency&lt;/h2&gt;
&lt;p&gt;
Once we make a choice (e.g. bet on a horse, or pick one of two lovers), we stubbornly stick to it and back it up ("despite all his flaws, he has lots of qualities"). 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Why it works&lt;/span&gt;: Lazy brains use consistency so that they don't have to re-evaluate a decision all the time. We are under &lt;q&gt;pressure to bring our self-image into line with our past actions&lt;/q&gt;. Hence, any request that goes in that direction will be accepted.
Example:
Phone call and ask people how they're doing. They answer "Great!". They just made a commitment. Continue with "Glad to hear it, because I'm calling in support of a charity for Orphans in Hospitals during Christmas ...". 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;&lt;a href="http://en.wikipedia.org/wiki/Foot-in-the-door_technique"&gt;Foot-in-the-door&lt;/a&gt; strategy&lt;/span&gt;: sell an undervalued item to transform prospects into customers. When they realize that they are customers of yours, they will come back to buy any item, even overpriced ones, by self-commitment.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Active, public, and effortful&lt;/span&gt; commitment is the most effective at changing the self-image. &lt;q&gt;We accept responsibility for a behavior when we think we've chosen to perform it in the absence of strong outside pressures&lt;/q&gt; (ie rewards or threats did not justify the participation, yet you participated). Examples: Customers who write the sales contract down themselves are less likely to cancel orders or ask for refunds. Undergrads who choose to endure a fraternity hazing convince themselves it was worth it.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;&lt;a href="http://en.wikipedia.org/wiki/Low-ball"&gt;Low-balling&lt;/a&gt;&lt;/span&gt;: Promise people a reward (e.g. money or fame) if they do something repeatedly (e.g. save energy, take out the trash), and cancel that reward after a while. They are likely to keep doing it because in the meantime, they have built other reasons to support their new image (e.g. "I am the kind of person who saves the planet or helps someone"). 
&lt;/p&gt;





&lt;h2&gt;Social proof&lt;/h2&gt;
&lt;p&gt;
We find correct what people similar to us find correct (social evidence). Example: canned laughter in TV shows to signal that it's funny, or herd behavior. 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;&lt;a href="http://en.wikipedia.org/wiki/Pluralistic_ignorance"&gt;Pluralistic ignorance&lt;/a&gt;&lt;/span&gt;: Lots of people, none of them knowing what's going on, are all looking at each other for clues of what to do. Since they can't find any, nobody does anything because everyone wants to stay poised in public. Even more efficient when people are in unfamiliar contexts (e.g. abroad or in fancy receptions).
&lt;/p&gt;




&lt;h2&gt;Liking&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/Tupperware#Tupperware_parties"&gt;Tupperware parties&lt;/a&gt; and &lt;q&gt;obligation of friendship&lt;/q&gt;: people twice more likely to buy because from a friend than because the item is useful. Door-to-door marketing: simply mentioning "your friend X recommended you to us" is enough: &lt;q&gt;turning the sales person away ... is almost like rejecting the friend&lt;/q&gt;.
&lt;/p&gt;&lt;p&gt;
We like and are more likely to favor good-looking people and people similar to us. We generally believe compliments and those who give them. 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Cooperation&lt;/span&gt;: when cooperation is required to achieve common goals, and each party has a part of the solution, it can turn enemies into collaborators, and then friends. For example, Bad Cop puts pressure on the interviewee, so that Good Cop looks like he's cooperating with the interviewee, and makes him comply with his requests.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Association&lt;/span&gt;: we hate people who bring bad news, and we tend to prefer products who are advertised by good-looking people. The association does not have to be logical, just positive. See also Pavlov's dog. Similarly, when our national team the soccer world cup, we feel associated with their success: "we won!". But when the team loses, "&lt;em&gt;they&lt;/em&gt; lost!". We are particularly eager to &lt;a href="http://en.wikipedia.org/wiki/Basking_in_reflected_glory"&gt;bask in reflected glory&lt;/a&gt; when our image has been recently diminished.
&lt;/p&gt;


&lt;img src="http://i.imgur.com/kOOfj.png" title="Milgram's experiment: E (experimenter) is the authority, T (teacher) the subject, and L (learner) an actor simulating pain." style="float:right; width:250px"&gt;


&lt;h2&gt;Authority&lt;/h2&gt;
&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/Milgram_experiment"&gt;Milgram experiment&lt;/a&gt; and its addition: instead of a single authority figure asking to give shocks, have two authority figures giving conflicting orders (shock vs don't shock). The subject tries to see who is the boss of who. 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Clothes and titles&lt;/span&gt;: an actor disguised as a doctor in a TV ad gives more credibility to the medicine. Security guard uniform doubles the rate of people who give a dime to another person for parking. When jaywalker in business suit, people are more likely to mimic him. 
&lt;/p&gt;&lt;p&gt;
Important things and people are seen as taller. Yet the more a category of people is concerned by a mark of authority (e.g. students by teachers, or males by cars), the more that category underestimates the authority's impact on them.
&lt;/p&gt;




&lt;h2&gt;Scarcity&lt;/h2&gt;
&lt;p&gt;
We are more motivated by &lt;em&gt;not&lt;/em&gt; loosing something, than by gaining something of equal value. 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;&lt;a href="http://en.wikipedia.org/wiki/Reactance_%28psychology%29"&gt;Reactance&lt;/a&gt;&lt;/span&gt;: as we're losing opportunities, we feel like we're losing freedoms. Since we hate losing freedoms, &lt;em&gt;especially those most recently acquired&lt;/em&gt;, we'll fight to keep them. We'll also give those freedoms more importance or qualities than before. Example: 2-year-old kids discover they have a body of their own (a form of freedom newly acquired). They'll say no to everything to check their new boundaries. Same with teens realizing they can be independent of their parents: they fight parental authority.
&lt;/p&gt;&lt;p&gt;
Scarcity works on objects: ban phosphate use and people start finding it more useful. It also works on persons: cf the Romeo and Juliet effect: because their parents forbid it, their love is bigger. It also works on information: tell supermarkets that beef is scarce and that it's rare to know that beef is scarce increases sales by 6x. It also works on rights and ideas: forbid a book to minors and 1) they want to read it more, and 2) more of them think they're going to like it.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Temporal scarcity&lt;/span&gt;: examples include "available only this week" or pausing a face-to-face conversation to take a phone call because "he may not call again!". Being put in competition with other people (e.g. auctions) is even more efficient.
&lt;/p&gt;&lt;p&gt;
Scarcity creates a desire that has little to do with the merit of the commodity. &lt;q&gt;The joy is not in experiencing a scarce commodity, but in possessing it&lt;/q&gt;.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-8686028604781276569?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/V2SARPkTbBM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/V2SARPkTbBM/influence-cialdini-1993.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2012/02/influence-cialdini-1993.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-6086815534039103460</guid><pubDate>Fri, 03 Feb 2012 20:57:00 +0000</pubDate><atom:updated>2012-02-03T12:59:08.553-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">scalability</category><category domain="http://www.blogger.com/atom/ns#">SW archi</category><category domain="http://www.blogger.com/atom/ns#">hardware</category><category domain="http://www.blogger.com/atom/ns#">SW Eng</category><category domain="http://www.blogger.com/atom/ns#">database</category><category domain="http://www.blogger.com/atom/ns#">proxy</category><title>Scaling League of Legends</title><description>&lt;p&gt;
Notes from a 2011 &lt;a href="http://www.infoq.com/presentations/League-of-Legends"&gt;Qcon talk&lt;/a&gt; about scaling the non-gaming server side of League of Legends. They are not worried about persistence during a game, but rather in the match-making, lobby, or store. They have soft real-time requirements: not the order of 10ms, more the order of a few seconds. [Twitter and Facebook are soft RT too]
&lt;/p&gt;

&lt;img src="http://img51.imageshack.us/img51/8806/lolarchi.png" title="Overall architecture and stack; traditional Java stack for the lobby and match-making, secret sauce for the game server."&gt;



&lt;h2&gt;Scaling&lt;/h2&gt;
&lt;p&gt;
Scalability: it's easier to constrain what the logic developers are allowed to do, than to define what they are not allowed to do. Examples: Map/Reduce is a whole paradigm (you have to make your logic fit into a &lt;code&gt;map()&lt;/code&gt; and a &lt;code&gt;reduce()&lt;/code&gt;), NoSQL's unstructured data is a double-edge sword (you lose the ability to &lt;code&gt;join&lt;/code&gt;, but queries come back faster), and when you're partitioned, you pick to be &lt;a href="http://www.julianbrowne.com/article/viewer/brewers-cap-theorem"&gt;either atomic/consistent or available&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
46:50: Scaling should be dynamic/elastic; you need cluster recomposition and stateless growth patterns. Hence the system should be dynamically configurable. On the fly, you should be able to adjust the thread pool size, add/remove roles to machines, and switch logic or system algorithms.
&lt;/p&gt;
&lt;p&gt;
Food for thought: list all the benefits/tricks a load balancer can provide to your system.
&lt;/p&gt;


&lt;img src="http://img687.imageshack.us/img687/1271/lolcacheapi.png" title="Coherence as cache-through: if Coherence does not find the data, it goes to Hibernate to ask MySQL" style="float:right; width:200px"&gt;
&lt;h2&gt;Caching&lt;/h2&gt;
&lt;p&gt;
Caching provides flexibility: failovers, distribution of workload (hot code updates or restarts).
&lt;a href="http://www.oracle.com/technetwork/middleware/coherence/overview/index.html"&gt;Coherence&lt;/a&gt;
is a distributed cache used between Hibernate and the DAO layer as "cache-through". If the DAO asks Coherence and there's a cache miss, then Coherence asks Hibernate (itself using a Coherence cache, or calling MySQL over the network if cache miss).
&lt;/p&gt;
&lt;p&gt;
24:00: How to be sure that cache and DB are consistent? Do not cache! Query the DB directly, latency of few sec is OK for soft RT.
&lt;/p&gt;
&lt;p&gt;
11:30: Serialize the work, not the data. It's faster to serialize the work to the data, than to unserialize the data, work on it, then serialize the result. 
Avoid moving the data all over the network towards where the process is. It's also easier to distribute the work to all the DB nodes than to send to/receive from all the nodes. 
&lt;br/&gt;
The objects sent on network between server and DB should be small: if you have to edit only one field, you should not have to send a big object of 1MB.
&lt;/p&gt;



&lt;h2&gt;Logging and Testing&lt;/h2&gt;
&lt;p&gt;
42:30: They log each function call with how long it took; overhead of 1% performance, but huge value if able to graph/plot the logs. Compare the average call duration in the last few minutes to the usual average to detect problems.
&lt;/p&gt;
&lt;p&gt;
17:15: Keep in mind that the code will be used/executed in a data center, not on your laptop. 51:25: They use EC2 for load testing. 1000 threads per node, each thread simulating 1 user. Realistic because not all clients (threads) are same speed in real-life, and EC2 network is not always the best/reliable. It's not the most performant, but it looks like a quick-and-dirty way to load test. One of their scale testing environment has more than 50 machines.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-6086815534039103460?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/ebezjIc8vMY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/ebezjIc8vMY/scaling-league-of-legends.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>1</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2012/02/scaling-league-of-legends.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-1371339402739243637</guid><pubDate>Wed, 01 Feb 2012 06:47:00 +0000</pubDate><atom:updated>2012-01-31T22:49:16.065-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SW archi</category><category domain="http://www.blogger.com/atom/ns#">SW Eng</category><title>Event Manager and MVC</title><description>&lt;p&gt;
After mentioning MVC 
&lt;a href="http://bowling-bash.blogspot.com/2011/08/mvc-and-game-developers.html"&gt;a&lt;/a&gt;
&lt;a href="http://bowling-bash.blogspot.com/2011/09/mvc-for-games.html"&gt;few&lt;/a&gt;
&lt;a href="http://bowling-bash.blogspot.com/2011/12/mvc-and-modularity.html"&gt;times&lt;/a&gt;, 
I've stumbled, like 
&lt;a href="http://inventwithpython.com/blog/2010/09/01/the-top-10-pygame-tutorials/"&gt;many&lt;/a&gt;
&lt;a href="http://stackoverflow.com/questions/7249388/python-duck-typing-for-mvc-event-handling-in-pygame"&gt;others&lt;/a&gt;
on Sandy Brown's 
&lt;a href="http://ezide.com/games/writing-games.html"&gt;pygame guide&lt;/a&gt;.
The guide contains three parts: MVC for single-player games, using Twisted for multiplayer games, and GUI widgets. 
You can also find the code on 
&lt;a href="https://github.com/sjbrown/writing_games_tutorial"&gt;github&lt;/a&gt;.
&lt;/p&gt;


&lt;h2&gt;Event Manager&lt;/h2&gt;

&lt;p&gt;
The problem: Multiple heterogeneous components, say the network controller and the model, are interested in an event such as a user click from the input controller. The code in the input controller would look like this:
&lt;/p&gt;

&lt;code&gt;
nw_ctrler.send(click)
&lt;br/&gt;  
model.perform(click)
&lt;/code&gt;

&lt;p&gt;
If a new component, say the audio output, becomes interested in user click events, then the input controller code has to be modified. This is not ideal.
&lt;/p&gt;

&lt;p&gt;
Two design patterns exist to help us here: the 
&lt;a href="http://www.research.ibm.com/designpatterns/example.htm"&gt;observer&lt;/a&gt;
and the 
&lt;a href="http://sourcemaking.com/design_patterns/mediator"&gt;mediator&lt;/a&gt;.
The differences between the two are 
&lt;a href="http://www.coderanch.com/t/150364/java-Architect-SCEA/certification/Mediator-vs-Observer-difference"&gt;very subtle&lt;/a&gt;
, but combining the two allows 1) the possibility to add or remove components from the system without touching the other components, and 2) a component to notify all the others through an intermediate.
In our case, an Event Manager is the intermediate receiving events from all components, and notifying those interested in that event. See the diagrams below from 
&lt;a href="http://ezide.com/games/writing-games.html"&gt;Sandy Brown's guide&lt;/a&gt;.
&lt;/p&gt;


&lt;img src="http://img827.imageshack.us/img827/9306/diagramincoming.png" title="Incoming events, from Sandy Brown"&gt;
&lt;img src="http://img12.imageshack.us/img12/5998/diagramoutgoing.png" title="Outgoing events, from Sandy Brown"&gt;






&lt;h2&gt;Improvements&lt;/h2&gt;

&lt;p&gt;
A
&lt;a href="http://stackoverflow.com/questions/7249388/python-duck-typing-for-mvc-event-handling-in-pygame"&gt;stackoverflow post&lt;/a&gt;
remarked that  
&lt;a href="http://docs.python.org/library/functions.html#isinstance"&gt;&lt;code&gt;isinstance()&lt;/code&gt;&lt;/a&gt;
is not quite 
&lt;a href="http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0"&gt;Pythonic&lt;/a&gt;
: instead of using &lt;code&gt;isinstance()&lt;/code&gt;, one should appropriately use
&lt;a href="http://en.wikipedia.org/wiki/Duck_typing"&gt;duck-typing&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Moreover, listeners should tell the Event Manager which events they are interested in, so that they are not notified for all of the events.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-1371339402739243637?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/WPojcQmpaLs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/WPojcQmpaLs/event-manager-and-mvc.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2012/01/event-manager-and-mvc.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-5433372422810397615</guid><pubDate>Fri, 30 Dec 2011 02:11:00 +0000</pubDate><atom:updated>2011-12-31T15:49:31.760-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SW archi</category><title>MVC and modularity</title><description>&lt;p&gt;
More on the &lt;abbr title="Model View Controller"&gt;MVC&lt;/abbr&gt; pattern. 
&lt;br/&gt;I wrote in September 2011 about &lt;a href="http://bowling-bash.blogspot.com/2011/09/mvc-for-games.html"&gt;which type of MVC&lt;/a&gt; would be more appropriate to make games, but this was all quite abstract. Here are more concrete thoughts, after having had to implement it myself using &lt;a href="http://pygame.org/docs/ref/index.html"&gt;Pygame&lt;/a&gt;. But first: a diagram!
&lt;/p&gt;
&lt;img src="http://img440.imageshack.us/img440/5807/archijan2012.png" title="Implementation of MVC"&gt;


&lt;h2&gt;Main loop&lt;/h2&gt;
&lt;p&gt;
Pygame provides a &lt;a href="http://pygame.org/docs/ref/time.html#Clock.tick"&gt;ticker&lt;/a&gt; that regulates the game loop with a 10-ms precision. The elements that need to be awaken by the game loop are colored in pink on the diagram above. In more details, they are:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight:bold"&gt;Mechanics&lt;/span&gt;: Some events independent of the player have to be triggered at some points. For instance, the screen could turn red after 5 minutes in a scenario, the player's money could generate interest every 10 seconds, or monsters' AI needs to process the game state to determine what to do next every 50ms in fight mode but every second in idle mode. That's why your mechanics have to be called every loop iteration.
&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight:bold"&gt;Renderer&lt;/span&gt;: In Pygame, this corresponds to &lt;a href="http://pygame.org/docs/ref/surface.html#Surface.blit"&gt;blitting&lt;/a&gt; sprites onto the screen, and then &lt;a href="http://pygame.org/docs/ref/display.html#pygame.display.flip"&gt;flipping&lt;/a&gt; the screen, and/or playing sounds. With the architecture displayed above, the frame rendering rate (say, 60 &lt;abbr title="frames per second"&gt;FPS&lt;/abbr&gt;) is independent of the main loop frequency (say, 100 iterations per second). This is useful for machines with a decent CPU but a weak graphic card because the view could be configured to refresh the screen only 30 times per second, but the logic could still run at 60 or more iterations per second. But there's more! since the renderer accesses the game state, it can determine if the load is going to be too heavy with 30 fps, and decrease the frame rate gracefully without having to slow down the mechanics or input controller. 
&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight:bold"&gt;Input Controller&lt;/span&gt;: events such as clicks or keys pushed are processed one after another during each loop iteration. The input controller then sends a translated version of these events (e.g. 'Q' stands for stop the game) to the Main Controller (e.g. &lt;code&gt;MainController.stop_game()&lt;/code&gt;).
&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight:bold"&gt;Network Controller&lt;/span&gt;: events may be sent by the server at any time. The client may also need to send actions to the server at any time. Therefore, the network controller is called every loop iteration. This is done using &lt;a href="http://mccormick.cx/projects/PodSixNet/"&gt;PodSixNet&lt;/a&gt;: &lt;code&gt;ConnectionListener.Pump()&lt;/code&gt; for the pulling and &lt;code&gt;EndPoint.Pump()&lt;/code&gt; for the pushing. Under the hood, PodSixNet uses &lt;code&gt;&lt;a href="http://docs.python.org/library/asyncore.html"&gt;asyncore&lt;/a&gt;&lt;/code&gt; (which apparently calls a normal &lt;code&gt;poll&lt;/code&gt;).
&lt;br/&gt;Note: When the network controller needs to send a part of the game state on the network, it calls the Main Controller to return him the data from the game state itself.
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;Keys vs Clicks&lt;/h2&gt;
&lt;p&gt;
When the player pushes a key, the scenario is very easy to follow: 
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Input controller translates
&lt;/li&gt;&lt;li&gt;Main controller calls the appropriate mechanics
&lt;/li&gt;&lt;li&gt;Mechanics update the state
&lt;/li&gt;&lt;li&gt;Next frame, the renderer displays the state.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;
The scenario is slightly different for clicks. 
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Input controller receives click type (left/right/middle/both/...) and click position (x,y)
&lt;/li&gt;&lt;li&gt;Input controller gives the view controller the click type and the position. 
&lt;/li&gt;&lt;li&gt;From the click position, the view controller parses the list of sprite coordinates and dimensions to detect which sprite(s) has been clicked.
&lt;/li&gt;&lt;li&gt;For each click type, the clicked sprite has a callback to the main controller. This callback was set by the view controller when the view as a whole was created. Hence the solid arrow from view controller to main controller (true dependence), and the dotted arrow from sprites to main controller (blind callback set by another component).  
&lt;/li&gt;&lt;li&gt;Main controller calls the appropriate mechanics, etc.
&lt;/li&gt;&lt;/ol&gt;

&lt;h2&gt;How good is this?&lt;/h2&gt;
&lt;p&gt;
From the two scenarios above, I see at least two aspects of this architecture breaking the traditional MVC. First, the view is not selected by the controller. Rather, the view looks at the model to know what subview or view mode to switch to. For instance, if I push the escape key, my MainController will ask the model to store it, and the renderer itself will decide what to do with that new information stored, whatever it means for the model.
&lt;p&gt;&lt;p&gt;
Second, clicks require the controller to ask the view what those clicks mean. I was at first reluctant to affect the button behaviors dynamically because it decreases understandability. When you read the button code, you don't know what the button is doing at all. In fact, all you see in the code is a &lt;code&gt;raise(&lt;a href="http://docs.python.org/library/exceptions.html#exceptions.NotImplementedError"&gt;NotImplementedError&lt;/a&gt;)&lt;/code&gt;. You have to go look inside the view controller to see what is being affected to that button's &lt;code&gt;on_left_clicked()&lt;/code&gt;. On the other hand, the gain in modularity is pretty sweet: you can change the presentation of an object, whether in the &lt;a href="http://en.wikipedia.org/wiki/HUD_%28video_gaming%29"&gt;HUD&lt;/a&gt; or in the game world, independently of its logic. If you want to try another view (say 3d instead of the current top-down 2d), then that new view only needs to provide 2 "services": &lt;code&gt;render()&lt;/code&gt; for the main loop, and &lt;code&gt;process_click(pos,type)&lt;/code&gt; for the input controller.
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;&lt;br/&gt;Edit 31 Dec, 2011: Just saw this &lt;a href="http://ezide.com/games/writing-games.html"&gt;example&lt;/a&gt; from Shandy Brown on using the Mediator pattern as a middle-man that views and controllers pubsub to. I like the "loggers as views". However, I'm not sure the clock-triggered events should be in a controller; the model should have some game logic in it.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-5433372422810397615?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/H0SDYPYlqwU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/H0SDYPYlqwU/mvc-and-modularity.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/12/mvc-and-modularity.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-5951005762086991201</guid><pubDate>Wed, 21 Dec 2011 00:29:00 +0000</pubDate><atom:updated>2011-12-20T16:46:42.367-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">journalism</category><category domain="http://www.blogger.com/atom/ns#">regulation</category><category domain="http://www.blogger.com/atom/ns#">ethics</category><category domain="http://www.blogger.com/atom/ns#">China</category><category domain="http://www.blogger.com/atom/ns#">bot</category><category domain="http://www.blogger.com/atom/ns#">UO</category><category domain="http://www.blogger.com/atom/ns#">gold farming</category><category domain="http://www.blogger.com/atom/ns#">exploit</category><category domain="http://www.blogger.com/atom/ns#">cheat</category><category domain="http://www.blogger.com/atom/ns#">RMT</category><category domain="http://www.blogger.com/atom/ns#">consumer</category><category domain="http://www.blogger.com/atom/ns#">virtual economy</category><title>Play Money - Dibbell 2006</title><description>&lt;pre&gt;Play Money, Dibbell, 2006&lt;/pre&gt;


&lt;p&gt;
Notes from the book, re-organized in sections by myself for easier summarizing and reading. Below, UO stands for &lt;a href="http://en.wikipedia.org/wiki/Ultima_Online"&gt;Ultima Online&lt;/a&gt;, and OSI stands for &lt;a href="http://en.wikipedia.org/wiki/Origin_Systems"&gt;Origin Systems Inc&lt;/a&gt;, the game company who developed and ran UO. OSI was owned by EA.
&lt;/p&gt;


&lt;img src="http://img716.imageshack.us/img716/8716/37835764.jpg" style="float:right" title="Book cover of Play Money, by Dibbell, 2006"&gt;

&lt;h2&gt;Playing&lt;/h2&gt;

&lt;p&gt;
Players keep playing because they want to go up the player ladder the same way RL people want to go up the social ladder. At some point, you have to decide either to leave the game cold-turkey or to &lt;q&gt;give the game a point: make it productive&lt;/q&gt;. Giving the game a point is easier because the game is &lt;q&gt;addictive&lt;/q&gt;. Although &lt;a href="http://en.wikipedia.org/wiki/Flow_%28psychology%29"&gt;flow&lt;/a&gt; happens 3 times more often at work than during leisure times, play makes flow more enjoyable.
&lt;/p&gt;&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/Johan_Huizinga"&gt;Huizinga&lt;/a&gt;: play has always been part of society. &lt;a href="http://en.wikipedia.org/wiki/Alfred_Weber"&gt;Weber&lt;/a&gt;: the &lt;a href="http://en.wikipedia.org/wiki/Protestant_ethic_and_the_spirit_of_capitalism"&gt;Protestant Ethic&lt;/a&gt; of Puritans considers productive activities as recommended by God, and sports and leisure as wastes of time. Capitalism principles come from Ethic of Puritans, hence a capitalist society considers play shameful. Dibbell: Games are symptoms of post-modern rampant abstraction and transformation of wealth creation. Marx: &lt;q&gt;solidity melts into air&lt;/q&gt;. Dibbell about games: production is melting into play. 
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Troy Stolle&lt;/span&gt; is a RL carpenter who played a grandmaster blacksmith. When fired IRL, he decides to sell his 52-month old account on eBay for $500, when the account is going to be resold for $2k. He thinks &lt;q&gt;it's all fake anyway&lt;/q&gt; and does not realize there is demand for virtual items. 
&lt;/p&gt;







&lt;h2&gt;Being part of UO's virtual economy&lt;/h2&gt;

&lt;p&gt;
Virtual economies require and implement constraints and scarcity. Castronova: in MMOs, &lt;q&gt;scarcity breeds market&lt;/q&gt;, and markets cross realities at their onset. Dibbell realizes there's a complex supply chain of warriors who drop, artisans who craft, hagglers who buy/sell IG, brokers who buy/sell on eBay or on their own website, and finally the clients. Example of a client: a Mum buys a $25 virtual item for her kid's Christmas. Why people sell for so low is the mystery that lies at the center of market economics: it generates profits at all levels of the chain. 
&lt;br/&gt;&lt;span style="font-weight:bold"&gt;Lesson: Theory of &lt;q&gt;ludocapitalism&lt;/q&gt;, where play is a latent force waiting to be tamed the same way steam was the energy of the industrial revolution.&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Julian Dibbell&lt;/span&gt;: born 1963, starts playing UO in early 2003. Weekly play time: 20 hours per week. First step in the economy: farming and selling batches of leather suits to another player. He Starts a blog in March 2003 to track his business adventures. A journalist VIP pass grants him earlier access to maps of the next update; he uses it to avoid the rush on new houses and buy 2 houses. Why keeping an uber house worth $600? &lt;q&gt;I wanted to be envied&lt;/q&gt;. He accepts to share his house with a 17 year old kid, who sells IG some items for him and brings him a small profit. Unusual/weird "friendship". He plans to sell the other house for 30m gold, but a famous player on his shard asks for 20m and he accepts, honored and intimidated.
&lt;/p&gt;&lt;p&gt;
IG runebooks let players memorize places to teleport to them later on. Memorize all the mining spots in that book. Once the spots have been written in the first book, duplicating that book takes little time. Dibbell sells each book $3 on eBay. He quickly realizes this is too little profit for too much time spent. Some "rares", on the other hand, can sell on eBay for $75. Rares, along with other luxury items such as hair dyes or houses, are often only sold by NPCs to implement gold sinks.
&lt;/p&gt;&lt;p&gt;
Although virtual economies enable players to bond, when you get too deep into it, you're not a player anymore. The social aspects and the &lt;q&gt;fusion with fiction&lt;/q&gt; disappear. Yet vendors of virtual gold are still immersed in some ways: Dibbell has no idea what he's doing at DiGRA or State of Play, talking about virtual economies and law, because he's &lt;q&gt;more eager to live in [MMOs] than to understand them&lt;/q&gt;. He has &lt;q&gt;self-doubt&lt;/q&gt; and wonders if the study of virtual economies has an &lt;q&gt;intellectual substance about as substantive as pot smoke&lt;/q&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Scams and (lack of) protections&lt;/span&gt;: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Kids buy from their Mum's PayPal or credit card and receive the item within 15 mins. After a day or two, Mum reverts the transaction, but the player still has the item in his inventory, or even sold it to someone else.
&lt;/li&gt;&lt;li&gt;Scammer advertises selling an item for half its market value. When buyer comes, the scammer sends him a link to a Paypal-looking phishing website in an email, and then empties the buyer's Paypal account.
&lt;/li&gt;&lt;li&gt;A seller advertises a rare item. Using a thief character, another player goes to the seller's house, steals the item, and sells it IG or on eBay. Dibbell knowingly buys from the thief: in-game robbery is part of the game.
&lt;/li&gt;&lt;li&gt;eBay and Paypal do not provide insurance over "intangible" goods. They provide insurance for soccer match tickets, presumably "tangible". Still, they say they can't insure a real paper ticket with a code written in real ink for virtual gold.
&lt;/li&gt;&lt;/ul&gt;

&lt;img src="http://img805.imageshack.us/img805/1485/ultimaonlinecover.jpg" style="float:right" title="UO's cover, by OSI"&gt;


&lt;p&gt;
In 2004, the &lt;abbr title="Internal Revenue Service"&gt;IRS&lt;/abbr&gt; said: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Declare as income anything you receive IRL, be it work of art, real dollars, or virtual gold. &lt;q&gt;Illegal income such as stolen or embezzled funds must be included [...] if from your self-employment activity&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;For normal players, prizes won in &lt;q&gt;lucky number drawing must be included in your income at their fair market value&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;&lt;q&gt;Organizations that facilitate the trading of goods and services&lt;/q&gt;, such as OSI with virtual gold, should send tax forms to and withheld taxes from its players.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
In 2005, an IRS specialist on the phone said there's no legislation yet on Internet barters or virtual economies.
&lt;/p&gt;






&lt;h2&gt;UO vendors&lt;/h2&gt;

&lt;p&gt;
IRL, dozens of &lt;q&gt;monetary startups&lt;/q&gt; create "fake" money. &lt;a href="http://en.wikipedia.org/wiki/E-gold"&gt;E-gold&lt;/a&gt; backs their virtual currency with real gold stored in private vaults. An artist draws custom dollars and sells them, as art pieces, for more than their face value. Dibbell: &lt;q&gt;We live in an age of money hackers&lt;/q&gt;. &lt;q&gt;Make-believe [is] required to establish monetary value&lt;/q&gt;.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Blacksnow Interactive&lt;/span&gt; is located in Orange County. Business model: gold farm of 8 Mexicans in Tijuana, Mexico, paid $19/day, generate $30k profits per month. They play according to scripts &lt;q&gt;given to them daily by their on-site supervisor&lt;/q&gt;. $800k sitting in inventory. Blacksnow trialed Mythic after they asked eBay to shut down Blacksnow's DAoC's gold auctions. Too bad Blacksnow vanished after being trialed by another game company, because justice would have had to determine who owns the IG wealth: players who spend the time, or companies who make and own the games?
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Bob Kiblinger&lt;/span&gt; used to work as a chemist with decent pay. After playing UO nights and weekend, his wife divorced him. He bought and resold Troy Stolle's tower to Dibbell. Bob is a popular broker with 10k+ ratings on eBay. Has list of furnishers for each shard on IM. Spends 14 hours per day trading accounts and items. Belongs to the Markee Dragon conglomerate of the top 7 UO brokers. Markee Dragon provides server transfer, lets you pay your game time by gold instead of real dollars (they own the account and pay it for you), and brokers IG gold. Markee Dragon's ethics say: don't buy from bot farmers because they cheat. In 3 months of 2003, Dibbell bought $3700 of discounted gold from bot farmers, so he felt kind of unethical. Later, Rich the bot farmer gave him the list of his top 10 clients for 2003: Dibbell is 10th, all Markee Dragons belong to the top10, and number one is Bob who bought a total of $35k of gold in 2003. 
&lt;br/&gt;
&lt;span style="font-weight:bold"&gt;Lesson: you need to buy from bot farmers to make a living in the US as a gold broker.&lt;/span&gt;
&lt;/p&gt;


&lt;p&gt;
Using &lt;a href="https://secure.hammertap.com/deepanalysis/index.phtml/"&gt;DeepAnalysis&lt;/a&gt;, an eBay market research tool, gives the market state and the list of vendors in a particular eBay category:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Weekly sales of UO items and accounts: $160k 
&lt;/li&gt;&lt;li&gt;Yearly sales of UO items and accounts: $4.2M
&lt;/li&gt;&lt;li&gt;Change rate: $16 for 1M gold
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
And there are other sources of revenue for vendors that are not visible on eBay:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;buy whole accounts for $300 and sell all the items in them for a total of $1200 = 400% profit
&lt;/li&gt;&lt;li&gt;IG gold suppliers run big malls
&lt;/li&gt;&lt;li&gt;A Guild has the monopoly on mining spots in a shard. Its guild leader sells gold to his broker.
&lt;/li&gt;&lt;li&gt;Camp houses that will soon be re-opened for sale because their owner has not logged in for a long time. Can be done with a bot. Then resell houses for a lot of gold or dollars.
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Working for Bob, in a &lt;q&gt;solitary and obsessive interlude&lt;/q&gt; of 3 weeks in mid 2003, Dibbell made $1100 of sales by taking his share on buying and delivering suits on his shard. In the next 3 weeks, he only dedicated 2h/day selling packs of 100k or 1m gold and suits on eBay or to Bob. His sales remained around $850 per week. On average, brokers make 20% profit from their sales. After 3 months, Dibbell made $800 profits and ranked 65th out of 800 in terms of sales of eBay UO vendors. Bob is ranked first with $8k sales and $2k profits per week. Dibbell compiled those results thanks to the DeepAnalysis tool.
&lt;/p&gt;&lt;p&gt;
Gordon, a Cantonese exec, just opened a 10-man gold farm. He asks for partnership with Dibbell and Bob: his farmers would bring items that Dibbell and Bob sell to clients, and they all share profits. Predictions of $1600 sales per week. Gordon says he pays his farmers $1.5/hour and they can generate $5/hour. However, a &lt;a href="http://www.nytimes.com/2005/12/09/technology/09gaming.html?ex=1291784400&amp;en=48a72408592dffe6&amp;ei=5088"&gt;NYTimes article&lt;/a&gt; in 2005 revealed that Chinese farmers are usually paid $75/months in 12-hour shifts, ie less than 30 cents/hour. Anyway, Gordon never generated the profits he mentioned. However, Dibbell, on a road-trip from Indiana to California, reached a max of $1k/week of profit for 4 weeks, mostly only selling 1m gold packs. 
&lt;/p&gt;






&lt;img src="http://img683.imageshack.us/img683/18/goldfarm.jpg" style="float:right; width:300px" title="The 20-computer bot farm from Rich"&gt;

&lt;h2&gt;Bot Farmers&lt;/h2&gt;

&lt;p&gt;
The game allows the use of a macro API provided players stay in front of the screen. Bots use macros on exploits such as 1) buy clothes from NPC 2) tear down clothes into tissue using basic tailoring skill and macro 3) sell tissue for more than the clothes. This technique generates 350k gold per hour. A Georgia man used it and amassed 20b gold, ie $300k. The total wealth of UO on all English shards was estimated at 35b, hence huge inflation wave coming up and detected by GMs. OSI fixed the exploit and wiped the extra gold by banning the bots.
&lt;/p&gt;&lt;p&gt;
&lt;span style="font-weight:bold"&gt;Richard Thurman&lt;/span&gt;: 30 year-old software engineer. Leads the hacker group who developed &lt;a href="http://www.easyuo.com/"&gt;EasyUO&lt;/a&gt;, a UO bot program. Rich's bots on 20 machines brought him 60k gold per hour using cartography exploits. Competitors denounced him to GMs and he was banned. Came up with a more defensive strategy: 1) eBay is too risky, hence build network of IG wholesale gold buyers. They get gold for 40% less than the eBay price. 2) to check for bots, GM wear a colored stick and ask the player "what's the color?". The bots would IM or SMS Rich when they were faced with a GM, and receive text to say to the GM by IM or SMS from Rich. 3) Plug &lt;a href="http://en.wikipedia.org/wiki/A.L.I.C.E."&gt;A.L.I.C.E&lt;/a&gt; so that bots talk by themselves.
&lt;/p&gt;&lt;p&gt;
Blacksnow's leader and Rich meet in October 2003. Blacksnow proposes to agree on gold prices in return of receiving a &lt;a href="http://en.wikipedia.org/wiki/Dynamic-link_library"&gt;dll&lt;/a&gt; used by EasyUO. Rich says it belongs to his group and refuses. Blacksnow discovers the hacker group had been blackmailed in the past by a player and had had to give the dll to the blackmailer. Pissed, Blacksnow reports Rich's bots to GMs.
&lt;/p&gt;&lt;p&gt;
An updtate from OSI on the merchant NPCs implements an offer-and-demand scheme, but assumes that players won't buy more than 500 items. Rich and another bot farmer find the glitch: buy 2k items at a time, the NPC believes you only bought 500 so the price does not increase as much, then resell the 2k items for small profit. Bot farmers use the exploit for a while, making millions of gold per hour. Blacksnow finds out they're making a lot and blackmails them for their technique against not denouncing them to GMs. The 2 farmers decide to stop their scheme and tell OSI about the exploit so that no other benefits from it. They made a total of $150k profit from 20b gold.
&lt;/p&gt;



&lt;br/&gt;&lt;br/&gt;
&lt;p&gt;
PS: Dibbell thinks that designing a single-shard MMO for 100k players is an &lt;q&gt;impossible dream&lt;/q&gt;, and that's why MMOs stay sharded.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-5951005762086991201?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/8n0QXN6ZBIc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/8n0QXN6ZBIc/play-money.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/12/play-money.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-1557183720926843180</guid><pubDate>Fri, 02 Dec 2011 07:16:00 +0000</pubDate><atom:updated>2011-12-01T23:17:42.301-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">scalability</category><category domain="http://www.blogger.com/atom/ns#">latency</category><category domain="http://www.blogger.com/atom/ns#">SW archi</category><title>Netgames 2003</title><description>&lt;h2&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=963902"&gt;Modeling player session times of online games&lt;/a&gt;, by Chang and Feng&lt;/h2&gt;


&lt;img src="http://img689.imageshack.us/img689/9316/changweibulldist.png" title="Weibull distribution fits session time for Counter Strike"/&gt;
&lt;ul&gt;&lt;li&gt;network traces of a popular &lt;abbr title="Counter-Strike"&gt;CS&lt;/abbr&gt; server for a week in April 2002
&lt;/li&gt;&lt;li&gt;16k user sessions recorded
&lt;/li&gt;&lt;li&gt;99% of players play less than 2 hours
&lt;/li&gt;&lt;li&gt;play session follows a &lt;a href="http://en.wikipedia.org/wiki/Weibull_distribution"&gt;Weibull&lt;/a&gt; distribution with k = 0.5 and &amp;lambda; = 20 (shape similar to &lt;a href="http://www.wolframalpha.com/input/?i=plot+1%2Fx+exp%28-x%29+from+0+to+10"&gt;1/x exp(-x)&lt;/a&gt;)
&lt;/li&gt;&lt;li&gt;For play sessions from 10 to 100 minutes, the chance of disconnecting (ie &lt;q&gt;failure rate&lt;/q&gt;) remains constant at 2.5%. 
&lt;/li&gt;&lt;li&gt;For play sessions shorter than 10 minutes, 10% chance of disconnecting. Possible reasons: connection problems, kicked out or leave because of server rules (such as friendly fire allowed, but kicked out if you kill your team-mates too often)
&lt;/li&gt;&lt;/ul&gt;



&lt;h2&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=963903"&gt;A Fair Message Exchange Framework for Distributed Multi-Player Games&lt;/a&gt;, by Guo et al.&lt;/h2&gt;


&lt;img src="http://img18.imageshack.us/img18/8080/guoproxies.png" title="Architecture of Guo" style=""&gt;
&lt;img src="http://img828.imageshack.us/img828/1254/guofairorderdelivery.png" title="Fair-order delivery" style=""&gt;

&lt;ul&gt;&lt;li&gt;Assumptions: independent clocks with no synchronization mechanism, players &lt;em&gt;react&lt;/em&gt; to server updates, updates only consist of creation and/or removal of object(s) (and NOT object position updates)
&lt;/li&gt;&lt;li&gt;Users have reaction time to act in response to server update messages. Ignore latency induced by network and only compare user reaction times to determine which update to actually run on the world state. 
&lt;/li&gt;&lt;li&gt;&lt;q&gt;the Fair-Ordering Service [...] dynamically enforces a sufficient waiting period on each action message to guarantee the fair processing of all action messages.&lt;/q&gt; But practically, the waiting period is bounded to ensure a relative level of interactivity.
&lt;/li&gt;&lt;li&gt;Proxies are game-agnostic and located near players (ie low latency between a player and her proxy). Proxy receives action message from user, then forwards that action message with a message identification number (to deliver messages in order) and the reaction time to the game server.
&lt;/li&gt;&lt;/ul&gt;



&lt;h2&gt;&lt;A href="http://dl.acm.org/citation.cfm?id=963904"&gt;Causality and media synchronization control for networked multimedia games: centralized versus distributed&lt;/a&gt;, by Ishibashi et al.&lt;/h2&gt;



&lt;img src="http://img196.imageshack.us/img196/9513/ishibashiarchi.png" title="Architecture of the centralized control scheme" style=""&gt;
&lt;ul&gt;&lt;li&gt;Causality control preserves the order of events of game data (keyboard inputs). No need for causality in voice or video
&lt;/li&gt;&lt;li&gt;Media synchronization control = intra-stream (temporal relation between &lt;abbr title="media units"&gt;MU&lt;/abbr&gt; such as voice or video packets) + inter-stream (timing among multiple streams) + group (timing among multiple end-points to ensure fairness) synchronization controls
&lt;/li&gt;&lt;li&gt;Compare &lt;abbr title="client-server"&gt;C-S&lt;/abbr&gt; to &lt;abbr title="peer to peer"&gt;P2P&lt;/abbr&gt; architectures in terms of success of the 4 previously mentioned control schemes. Voice and video don't need to go through the server (they're sent in P2P mode in both scenarios).
&lt;/li&gt;&lt;li&gt;Adaptive &amp;Delta;-causality control used on game data in both scenarios: the recipient considers a packet still valid &amp;Delta; = 50 ms after its generation timestamp. [That means the latency automatically increases by &amp;Delta; ms for all packets]. &lt;q&gt;Adaptive&lt;/q&gt; means that the value of &amp;Delta; changes based on the network load. Smaller &amp;Delta; = game more interactive, large &amp;Delta; = less packets are discarded for being late/misordered. Unfairness appears when terminals have different &amp;Delta;, hence need group sync control.
&lt;/li&gt;&lt;li&gt;Piggy-back an MU on the succeeding k=4 MUs to recover from lost UDP packets
&lt;/li&gt;&lt;li&gt;Experiment: two terminals in both C-S and P2P scenarios [only two?!]. Terminal 1 is connected to an overloaded hub with delay jitter, Terminal 2 is connected to its own hub. Connections are 10 Mbps ethernet. Server connected to T2's hub. Additional delay of 100 ms introduced between the two terminals by a data link simulator between T1's hub and T2's hub. Game MUs = 20 Bytes, sent 10 times per second, while voice MUs = 400 Bytes, sent 20 times per sec, and video MUs = 5kB, sent 20 times per sec [hence most of the load on the network comes from voice and audio, not game data]. Experiment ran for 2 minutes.
 &lt;/li&gt;&lt;li&gt;For heavy loads (8Mbps), C-S is better for causality, but worse for consistency, fairness, and interactivity.
&lt;/li&gt;&lt;/ul&gt;




&lt;h2&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=963905"&gt;Bandwidth requirement and state consistency in three multiplayer game architectures&lt;/a&gt;, by Pellegrino and Dovrolis&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Compare C-S, P2P and &lt;abbr title="Peer to Peer with Central Arbiter"&gt;PP-CA&lt;/abbr&gt; (= P2P with central authority/arbiter receiving moves from all players and notifying them when it detects inconsistencies)
&lt;/li&gt;&lt;li&gt;Tu = Duration of client loop, Lu = size of update messages
&lt;/li&gt;&lt;li&gt;CS: client upstream = Lu/Tu, client downstream = N.Lu/Tu, server downstream = N.Lu/Tu, server upstream = N(N.Lu)/Tu
&lt;/li&gt;&lt;li&gt;P2P: client upstream = client downstream = (N-1)Lu/Tu
&lt;/li&gt;&lt;li&gt;PP-CA: client upstream = N.Lu/Tu, client downstream = (N-1).Lu/Tu + f.N.Lu/Tu with f = ratio of inconsistencies to be corrected, arbiter downstream = N.Lu/Tu, arbiter upstream = f.N(N.Lu)/Tu
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=963906"&gt;Access network delay in networked games&lt;/a&gt;, by Jehaes et al.&lt;/h2&gt;

&lt;img src="http://img444.imageshack.us/img444/9765/table1jehaes.png" title="Performance parameters of modem, ADSL and cable"&gt;
&lt;ul&gt;&lt;li&gt;Look at delays introduced from access networks (aka last mile links), not from back-bone. Goal: how to dimension the network to reach minimum delay possible. 
&lt;/li&gt;&lt;li&gt;Network delay can be caused by propagation (mostly only in the case of back-bones though: 5&amp;micro;s/km), serialization (putting all the bits of a packet on the link), packet processing (route and DNS lookups, error correction), and queuing (other packets have to be treated before; differs from packet to packet, hence jitter, defined as &lt;a href="http://en.wikipedia.org/wiki/Burstable_billing#95th_percentile"&gt;95% percentile&lt;/a&gt; RTT - 5% percentile RTT). &lt;abbr title="Access Network Delay"&gt;AND&lt;/abbr&gt; = minimal RTT (packet processing delay) + S (packet size) / Reff (effective link rate) + Tque (total queuing delay in up- and downstream, results in jitter)
&lt;/li&gt;&lt;li&gt;Experiment: for 5 different values of S, throw 100 pings. Get RTT and jitter (= Tque) from 100 pings. Obtain Reff from taking the inverse of the best-fitting trend-line through the 5 points (S, average RTT). Obtain min RTT from the intercept of the trend-line through the 5 points (S, top-1% RTT).
&lt;/li&gt;&lt;li&gt;&lt;abbr title="Quality of Service"&gt;QoS&lt;/abbr&gt; improves RTT by separating game traffic from other traffics
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=963907"&gt;A Zone-based Gaming Architecture for Ad-Hoc Networks&lt;/a&gt;, by Riera et al.&lt;/h2&gt;

&lt;img src="http://img7.imageshack.us/img7/7529/rieraflowofactions.png"&gt;
&lt;ul&gt;&lt;li&gt;Assumption: ad-hoc networks are going to multiply, but C-S and P2P architectures are not well-suited for them. Most interesting part of the job is to determine which device can/should be Zone server.
&lt;/li&gt;&lt;li&gt;&lt;q&gt;Even the nodes that do not play the game assist the other nodes in delivering data&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;Nodes are mobile: they do not always stay within reach of the same other nodes. Discovery of Zone servers is done through the &lt;abbr title="Service Location Protocol"&gt;SLP&lt;/abbr&gt; v2. When latency to a zone server gets too high, a client can pick another zone server, which in turn notifies all the other zone servers of its new connection. When a client does not reply for a while, a zone server can drop it.
&lt;/li&gt;&lt;/ul&gt;



&lt;h2&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=963917"&gt;A service platform for on-line games&lt;/a&gt;&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Middleware as transparent as possible to the game developer. This middleware sits on top of an existing grid infrastructure from IBM called &lt;a href="http://www.redbooks.ibm.com/abstracts/sg246895.html"&gt;Globus&lt;/a&gt;. Globus decides when to spawn a new game server instance based on current resources and demands.
&lt;/li&gt;&lt;li&gt;Player services are in charge of authentication, account handling, chat rooms, locating games/selecting a server taking into account player preferences (e.g. team or region), and actually playing the game.
&lt;/li&gt;&lt;li&gt;Publisher services deal with software deployment and updates, billing, monitoring server performance, service level agreement (e.g. no more than 5% of players suffer from more than 100ms delay)
&lt;/li&gt;&lt;li&gt;System services include resource management and directory services. These services are accessed by the grid provider.
&lt;/li&gt;&lt;li&gt;Clients submit jobs using a format containing the executable, its arguments, and resource requirements. Jobs can require spawning instances at different grid locations (e.g. different regions).
&lt;/li&gt;&lt;li&gt;Various services such as resource informations and information providers (CPU, OS, RAM, connectivity, ...) are indexed in an LDAP. Game-specific services (tracking player stats, server load, ...) could also be added on top of existing services.
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-1557183720926843180?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/kobCZIu_bDM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/kobCZIu_bDM/netgames-2003.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/12/netgames-2003.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-6873840356283804755</guid><pubDate>Fri, 25 Nov 2011 02:59:00 +0000</pubDate><atom:updated>2011-11-24T19:01:02.525-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gameplay</category><category domain="http://www.blogger.com/atom/ns#">emotions</category><category domain="http://www.blogger.com/atom/ns#">development process</category><category domain="http://www.blogger.com/atom/ns#">aesthetics</category><category domain="http://www.blogger.com/atom/ns#">game mechanics</category><title>Bottom-up game design</title><description>&lt;img src="http://img256.imageshack.us/img256/5639/cog2.jpg" title="Bottom-up gme design, from Lopes and Kuhnen's Gamasutra's article" style="float:right"/&gt;

&lt;h2&gt;Existing definitions&lt;/h2&gt;
&lt;p&gt;
Adams &lt;a href="http://www.gamasutra.com/view/feature/2150/the_designers_notebook_the_.php"&gt;defined&lt;/a&gt; bottom-up game design in 2004 as &lt;q&gt;turning a simulation or a real-life mechanism into a game&lt;/q&gt;. It assumes that &lt;q&gt;any process that is subtle or interesting to program is also going to be interesting to play with&lt;/q&gt;. If the simulation has too many variables, many of them end up being useless, and this results in possible dominant strategies and the game being dull.
&lt;/p&gt;&lt;p&gt;
Lopes and Kuhnen &lt;a href="http://www.gamasutra.com/view/feature/2129/game_design_cognition_the_.php?print=1"&gt;redefined&lt;/a&gt; &lt;q&gt;bottom-up game design in 2007, as applying a particularly fun gameplay verb or mechanic, complementing it with the appropriate setting, content and story&lt;/q&gt;. Developers think first about the elementary game actions, called verbs, that the player can execute (move, attack, ...) and then about the aesthetics (fantasy universe, ...). Examples are games in the Doom series, which were &lt;q&gt;built barely as excuses for the brutal, over-the-top shooting gameplay&lt;/q&gt;; the oppressing universe and mood simply fit well with the gameplay. 
&lt;/p&gt;&lt;p&gt;
In 2010, Deleon  &lt;a href="http://www.hobbygamedev.com/adv/bottom-up-vs-top-down-game-design/"&gt;focused&lt;/a&gt; more on the medium constraints with his definition: &lt;q&gt;concept inspired by or chosen partly by its form of representation&lt;/q&gt;. For instance, &lt;a href="http://www.nintendo8.com/game/90/bubble_bobble/"&gt;Bubble Bobble&lt;/a&gt; is about shooting a ball into balls of similar color, and the little dragons or fruits are merely decorations. Same for Bejewelled. Bottom-up designed games also include games made for particular platforms with limited hardware (like Bogost's games for the Atari 2600).
&lt;/p&gt;

&lt;h2&gt;More theory: ludemes&lt;/h2&gt;
&lt;p&gt;
Ludeme was a term &lt;a href="http://www.davidparlett.co.uk/gamester/ludemes.html"&gt;coined&lt;/a&gt; by Berloquin or Dawkins in the early 1970s, as a &lt;a href="http://en.wikipedia.org/wiki/Portmanteau"&gt;portmanteau&lt;/a&gt; of &lt;q&gt;ludic meme&lt;/q&gt;, because a ludeme can be found in many (classes of) games. Ludemes are &lt;a href="http://www.davidparlett.co.uk/gamester/ludemes.html"&gt;described&lt;/a&gt; by Parlett as &lt;q&gt;conceptual elements of the game, most typically equivalent to its "rules" of play. For example, whereas the material piece shaped like a horse and designated "knight" is a component of the game, the distinctively skewed move of a knight is a ludeme of the class "rule of movement". But other types of ludemes also exist. For example, the name, referend and associated connotations of "knight"  - those of a chivalric courtier - may be said to constitute a thematic ludeme.&lt;/q&gt; 
&lt;/p&gt;&lt;p&gt;
At GDC 2005, Koster &lt;a href="http://www.theoryoffun.com/grammar/gdc2005.htm"&gt;presented&lt;/a&gt; his vision of a grammar of gameplay, referring a lot to ludemes. For Koster, ludemes are atomic mechanics with at least 2 possible outcomes (e.g. moving a Checker piece to capture, prepare, or force the opponent to capture (which is actually a kind of preparation)), among which at least one is failure (even if failure only means closing some of the player's opportunity doors). Synonyms of ludemes are: verbs (Crawford), choices (Meier), or conflict. Each ludeme involves a UI action (e.g. pressing button). In terms of complexity, Chess is more complicated than Checkers because each of the 6 types of Chess pieces has its own movement and capture ludemes, while all Checker tokens have the same ludemes.
&lt;/p&gt;


&lt;h2&gt;Bottom-up game design in practice&lt;/h2&gt;
&lt;p&gt;
As Lopes and Kuhnen &lt;a href="http://www.gamasutra.com/view/feature/2129/game_design_cognition_the_.php?print=1"&gt;pointed out&lt;/a&gt;, designing games with a top-down approach is somewhat of a dark art when it's time for the designer to bridge the gap between the high-level concept (e.g. in terms of experience, emotions and feelings targeted to the player) and the routine tasks of the player (e.g. drawing a card, moving their avatar or attacking). Current game design textbooks such as &lt;a href="http://www.designersnotebook.com/Books/Fundamentals_of_Game_Design/fundamentals_of_game_design.htm"&gt;Adams' Fundamentals&lt;/a&gt; or &lt;a href="http://artofgamedesign.com/"&gt;Schell's Book of Lenses&lt;/a&gt;, putting forward player-centricity, suggest a top-down approach by focusing on the experience the &lt;em&gt;entire&lt;/em&gt; game should convey to the player. 
&lt;/p&gt;&lt;p&gt;
But a player-centric bottom-up approach is also possible. I'm trying here to provide &lt;abbr title="what to do"&gt;prescriptive&lt;/abbr&gt; rather than &lt;abbr title="what to NOT do"&gt;proscriptive&lt;/abbr&gt; steps. In the bottom-up process, the designer should ask the following questions:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;What are the elementary actions the player can do? (define the ludemes)
&lt;/li&gt;&lt;li&gt;How can these actions be fun? (feeling of latent power, fiero, &lt;a href="http://en.wikipedia.org/wiki/Schadenfreude"&gt;schadenfreude&lt;/a&gt;, aesthetic pleasure, ...)
&lt;/li&gt;&lt;li&gt;What are the transitions between these actions? (for the ludeme "roll a dice", it is when the dice is rolling)
&lt;/li&gt;&lt;li&gt;How fun are the transitions? (surprise, feeling of progression)
&lt;/li&gt;&lt;li&gt;Sanity checks: how do the actions fit together as a whole? (pointing to shoot in FPS should not be followed by a dice roll, the intense mechanical ludemes of Doom should be matched with horror-aesthetics ludemes such as the &lt;a href="http://doom.wikia.com/wiki/Light_amplification_visor"&gt;lack of light&lt;/a&gt;, ...) Does the overall feel of the game match the feeling of all the elementary actions put together? (ludemes should add up, not negate each other)
 &lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
This process is tentative, possibly flawed, and therefore feedback is most welcome.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-6873840356283804755?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/EpFZP44h3-Q" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/EpFZP44h3-Q/bottom-up-game-design.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/11/bottom-up-game-design.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-3144033255877342312</guid><pubDate>Tue, 22 Nov 2011 06:31:00 +0000</pubDate><atom:updated>2011-11-21T22:36:58.145-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">psychology</category><category domain="http://www.blogger.com/atom/ns#">gold farming</category><category domain="http://www.blogger.com/atom/ns#">virtual economy</category><category domain="http://www.blogger.com/atom/ns#">sociology</category><title>For the win - Doctorow 2010</title><description>&lt;pre&gt;
Doctorow C. 2010, For The Win
&lt;/pre&gt;

&lt;p&gt;
Notes from &lt;a href="http://craphound.com/ftw/Cory_Doctorow_-_For_the_Win.htm"&gt;For The Win&lt;/a&gt; from Doctorow. The book's license is Creative Commons &lt;abbr title="Non-Commercial Share-Alike"&gt;NC-SA&lt;/abbr&gt;. No spoiler here, only some interesting concepts mentioned throughout the book.
&lt;/p&gt;

&lt;img src="http://img687.imageshack.us/img687/3654/ftwusbig.jpg" title="Cover of For The Win, by Doctorow" style="float:right;"&gt;

&lt;h2&gt;Part I: The gamers and their games, the workers at their work&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Some players in developing countries like China or India farm gold or are paid to raid with richer solo players from the West to drop them gear or level them up. Western players want to keep up with their friends gear- and XP-wise. 
&lt;/li&gt;&lt;li&gt;The parents, whether Indians or Americans, don't understand how their kids can spend so much time playing online games. American parents talk about addiction whereas Indian parents about waste of time.
&lt;/li&gt;&lt;li&gt;&lt;q&gt;There are multiple, competing interworld exchanges: want to swap out your Zombie Mecha wealth for a fully loaded spaceship and a crew of jolly space-pirates to crew it? Ten different gangs want your business&lt;/q&gt;.  Even RL traders place money on the value of virtual gold, because virtual gold fluctuates a lot and can be exchanged against RL money &lt;q&gt;through the official in-game banks&lt;/q&gt;. RL criminal cartels also turn IG gold into real money.
&lt;/li&gt;&lt;li&gt;Big gold farming businesses hire hardcore gamers to kill other farmers. The biggest sellers of virtual gold are game companies themselves and they hire killers too.
&lt;/li&gt;&lt;li&gt;Dungeons are made so that farmers make less and less money: grinding gold gives 12k the first hour, 8k the second, 2k the third, and 100 at the end. Then, a GM appears and bans them, but they've already collected as much as they could for the night before going to sleep.
&lt;/li&gt;&lt;li&gt;Mechanical &lt;q&gt;Turks were an army of workers in gamespace. All you had to do was prove that you were a decent player -- the game had the stats to know it -- and sign up, and then log in whenever you wanted a shift. The game would ping you any time a player did something the game didn't know how to interpret -- talked too intensely to a non-player character, stuck a sword where it didn't belong, climbed a tree that no one had bothered to add any details too -- and you'd have to play spot-referee. You'd play the non-player character, choose a behavior for the stabbed object, or make a decision from a menu of possible things you might find in a tree.&lt;/q&gt;
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;Part II: Hard work at play&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Mushroom Kingdom is a Mario-based MMO from Nintendo-Sun. You can play on the side of Princess Peach, or on Bowser's.
&lt;/li&gt;&lt;li&gt;&lt;q&gt;Prikell equations&lt;/q&gt;: &lt;q&gt;a certain amount of difficulty plus a certain amount of your friends plus a certain amount of interesting strangers plus a certain amount of reward plus a certain amount of opportunity equalled fun &lt;/q&gt;
&lt;/li&gt;&lt;li&gt;&lt;q&gt;virtual currency tended to rest pretty close to its real value, plus or minus five percent&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;Socio-economics experiment about envy: lock 25 grad students in a room for 8 hours. Give each of them a poker chip and say "Every hour I'm going to give each of you $20 per chip you hold". At the beginning, each chip is worth 8*20=$160. After 2 hours, chips start being exchanged against dollars, and at the end of the 8th hour, some chips even get traded for $50, while they only bring $20 to their owner. Each of them started and kept trading because of &lt;q&gt;the fear that he was missing out on what the rest of them were getting&lt;/q&gt;: the sirens called &lt;q&gt;Someone else is getting richer, why aren't you?&lt;/q&gt;. Greed is "if 1 is good, then 10 is definitely better". Envy is about what other people think is good, and being part of the crowd.
&lt;/li&gt;&lt;li&gt;Gamerunners spend most of their time in the Command Room, watching the world through logs, screens, chat channels, or charts, to get a feeling of the game worlds - &lt;a href="http://en.wikipedia.org/wiki/Fingerspitzengef%C3%BChl"&gt;Fingerspitzengefuhl&lt;/a&gt;.
&lt;/li&gt;&lt;li&gt;the game soundtrack has &lt;q&gt;its own AI&lt;/q&gt; that creates more dramatic moments
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;Part III: Ponzi&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;Gold farmers used to login from Asian IP addresses, give all the gold from an account to a newbie without speaking a single word, who in turn would give it silently to a bunch of other newbies from guilds with names like "afasdsadssadsa289". Later, gold farmers logged in using American proxies, started speaking broken English, and became indistinguishable from profitable Western kids.
&lt;/li&gt;&lt;li&gt;After their 12-hour shift, some gold farmers relax by playing some more with a separate avatar that they only use to play, not to work with.
&lt;/li&gt;&lt;li&gt;Pacific protest: ask everyone to gather in downtown and eat ice-creams. Recruit people passing-by in giving them ice-creams.
&lt;/li&gt;&lt;li&gt;&lt;q&gt;If you nuked every account involved in a gold-farming buy, we'd depopulate the world by something like 80 percent.&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;&lt;q&gt;Coke ran games that turned over more money than Portugal, Poland or Peru.&lt;/q&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-3144033255877342312?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/FmsAmGN5IQw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/FmsAmGN5IQw/for-win-doctorow-2010.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/11/for-win-doctorow-2010.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-2223175579073904649</guid><pubDate>Thu, 17 Nov 2011 08:08:00 +0000</pubDate><atom:updated>2011-11-21T22:37:30.011-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">maps</category><category domain="http://www.blogger.com/atom/ns#">aesthetics</category><category domain="http://www.blogger.com/atom/ns#">game mechanics</category><category domain="http://www.blogger.com/atom/ns#">balance</category><title>Rules of Engagement - Pardo at GDC 2008</title><description>&lt;p&gt;
&lt;pre&gt;Pardo R. 2008, Rules of Engagement: Blizzard’s Approach to Multiplayer Game Design&lt;/pre&gt;
&lt;/p&gt;
&lt;img src="http://img31.imageshack.us/img31/7320/217pxrobpardogdc2010.jpg" title="Rob Pardo" style="float:right"&gt;

&lt;p&gt;
A talk from Rob Pardo which was actually first delivered at GDC 2008. The talk has already been covered &lt;a href="http://www.gamespot.com/news/gdc--6186416"&gt;elsewhere&lt;/a&gt;. You can also find &lt;a href="http://wow.joystiq.com/2008/02/20/gdc08-live-from-rob-pardo-talks-about-blizzards-approach-to-mm/"&gt;the slides with Q&amp;amp;A of GDC 2008&lt;/a&gt;. Anyway, here are my take-aways.
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Implement the multiplayer part of the game first, then the story and single-player components.
&lt;/li&gt;&lt;li&gt;In PVP, focus on balance, skill differentiation (e.g. reflexes for FPS, multitasking and strategic thinking for RTS, knowledge of the mechanics for both RTS and FPS, economic dominance), and ladders/ratings. For co-op games, focus on the communication between players and complementary classes. Ex: in Warcraft 3, a mine is considered 'full' when 5 peons work on it; the economic part is dumbed-down to encourage the players to focus on the micro-management of fighting units. 
&lt;/li&gt;&lt;li&gt;Avoid differentiation on map knowledge: it's not really a skill. Instead, reveal the map but keep a fog of war (like in Starcraft 2), so that players know the flow of the map and where the resources are, and can pick their strategy accordingly.
&lt;/li&gt;&lt;li&gt;Everything should feel overpowered, not mediocre. 
&lt;/li&gt;&lt;li&gt;Balance first for the expert, then for the novice.
&lt;/li&gt;&lt;li&gt;Balance is affected by the maths, but also by the UI (e.g. WoW's UI mods, or the possibility to select only up to 12 units in Starcraft 1 as opposed to an arbitrary large number of units in Starcraft 2), maps/level design, special effects (e.g. too much blurs the vision, cf the &lt;a href="http://irowiki.org/wiki/War_of_Emperium#Other_Gameplay_Changes"&gt;War of Emperium of RO&lt;/a&gt; set /mineffect by default to limit the visual flood of skill effects)
&lt;/li&gt;&lt;li&gt;Players hate loosing, hence make games shorter so that they can play more games per play session, and eventually win some.
&lt;/li&gt;&lt;li&gt;Reward the behaviors you want people to do/&lt;q&gt;make it a bonus&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;Tie art and game design together. The appearance of &lt;a href="http://wiki.teamfortress.com/wiki/Heavy"&gt;Heavy&lt;/a&gt; of Team Fortress is explicit: tough, lots of HP, and lots of damage.
&lt;/li&gt;&lt;li&gt;Spectatorship enables empathy with the players, cf Poker became more popular when &lt;a href="http://en.wikipedia.org/wiki/Hole_cam"&gt;hole cameras&lt;/a&gt; were introduced because the audience understands better what's going on.
&lt;/li&gt;&lt;li&gt;It does not make sense for warriors to cast spells, therefore they don't have mana but rather they have rage.
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-2223175579073904649?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/Dx_8eo3uugU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/Dx_8eo3uugU/rules-of-engagement-blizzards-approach.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/11/rules-of-engagement-blizzards-approach.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-2683573979217721570</guid><pubDate>Wed, 02 Nov 2011 06:44:00 +0000</pubDate><atom:updated>2011-11-02T00:10:18.091-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">statistics</category><category domain="http://www.blogger.com/atom/ns#">gameplay</category><category domain="http://www.blogger.com/atom/ns#">emotions</category><category domain="http://www.blogger.com/atom/ns#">development process</category><category domain="http://www.blogger.com/atom/ns#">patterns</category><category domain="http://www.blogger.com/atom/ns#">psychology</category><category domain="http://www.blogger.com/atom/ns#">casual</category><category domain="http://www.blogger.com/atom/ns#">marketing</category><category domain="http://www.blogger.com/atom/ns#">data mining</category><category domain="http://www.blogger.com/atom/ns#">consumer</category><category domain="http://www.blogger.com/atom/ns#">survey</category><title>21st Century Game Design - Part I</title><description>&lt;pre&gt;21st Century Game Design, by Chris Bateman and Richard Boon, 2005.&lt;/pre&gt;

&lt;p&gt;Part I - Games exist primarily to satisfy the needs of an audience&lt;/p&gt;

&lt;h2&gt;ch1 - Zen game design&lt;/h2&gt;

&lt;p&gt;
Zen Buddhism can not be learned, it can only be experienced. There is no objective perspective on anything. Hence zen game design's tenets: game design reflects needs + there's no single method to design + there exist methods to game design. These methods are:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;first principles: what you want to do -&gt; game world abstraction -&gt; design -&gt; implementation
&lt;/li&gt;&lt;li&gt;clone and tweak: most common method. existing design -&gt; tweak -&gt; implementation
&lt;/li&gt;&lt;li&gt;meta-rules: goal = provoking debate. meta-rules -&gt; design -&gt; implementation
&lt;/li&gt;&lt;li&gt;expressing technology: in teams without actual game designers. technology -&gt; game implementation
&lt;/li&gt;&lt;li&gt;Frankenstein: art or technical materials -&gt; design -&gt; implementation
&lt;/li&gt;&lt;li&gt;story-driven: narrative -&gt; design -&gt; implementation
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
Participants in the game project: audience, publisher, producer, programmers, artists, marketing/PR, license holder. Example: saving for causal audience is vital; for hardcore audience, it should not break gameplay; for programmers, it's a technical detail; for producer, it's looking at how other games do it.
&lt;/p&gt;



&lt;h2&gt;ch2 - Designing for the market&lt;/h2&gt;


&lt;p&gt;
&lt;q&gt;The commercial success for a medium clears the way for artistic expression, not the way around&lt;/q&gt;
&lt;/p&gt;&lt;p&gt;
A game design is successful when the target audience is satisfied. This justifies the need for an audience model. Existing models: simple distinction hardcore/casual, distinction by genre (but genres are too vague), EA's model, and ihobo's model.
&lt;/p&gt;
&lt;table style=""&gt;
&lt;caption&gt;Simple hardcore/casual distinction&lt;/caption&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;hardcore
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;casual
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;plays lots of games
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;plays few games
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;game literate
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;game illiterate
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;plays for the challenge
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;plays to relax, kill time, and just for fun
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;segment can be polarized: many can buy the same title
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;hard to polarize, diverse and disparate
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br/&gt;
&lt;p&gt;EA's model:&lt;/p&gt;
&lt;img src="http://img689.imageshack.us/img689/228/eamodel.png" title="EA's model" style=""&gt;
&lt;p&gt;
EA's model take-away: do not ignore hardcores because they are the ones pushing a game to broader segments. Corollary: no TV ads are needed if the game is not made for casuals.
&lt;/p&gt;
&lt;p&gt;iHobo's model:&lt;/p&gt;
&lt;img src="http://img851.imageshack.us/img851/2571/ihobomodel.png" title="iHobo's model" style=""&gt;
&lt;p&gt;
Evangelist clusters = gaming press, mainstream press, and the 3 million of hardcores in the world. Target clusters = Testosterone (9M players worldwide), lifestyle (30M), and family (90M) gamers. 
&lt;/p&gt;
&lt;p&gt;
Design tools for market penetration (aka &lt;q&gt;demographic game design&lt;/q&gt;):
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Looking for good gameplay (ie the game being &lt;q&gt;performance-oriented&lt;/q&gt;, with stats, clear goals and victory conditions) vs good toyplay (&lt;q&gt;unorganized&lt;/q&gt;). Hardcores are driven by gameplay, but lifestyle and family gamers are driven by both. 
&lt;/li&gt;&lt;li&gt;Controls should remain accessible for casuals.
&lt;/li&gt;&lt;li&gt;The &lt;span style="font-weight:bold"&gt;minimum play session length&lt;/span&gt; is usually expressed in terms of the duration of a level or the time between two save points. For casuals, it should be below 15 minutes, but hardcores do not mind core activities of a game taking at least an hour or two. Ex: a typical DotA match takes 45 to 60 minutes, whereas a (small size) Mine Sweeper can take less than a minute. Nintendo games are also famous for allowing the player to quit at any time and provide core activities of at most a few minutes. 
&lt;/li&gt;&lt;li&gt;The &lt;span style="font-weight:bold"&gt;average play session length&lt;/span&gt; is also lower for casuals: they may complete one level at a time, whereas hardcores can aim at 10 levels per play session.
&lt;/li&gt;&lt;li&gt;Play window: total time spent playing the game. The longer the play window, the longer hardcores will spend evangelizing the game. Therefore, despite most of the players not completing the game, content is crucial! The play window can also be extended by introducing hidden features, higher difficulty levels, variety in characters to play with (to increase replayability), and online PVP (although that only works for Testosterone and hardcore gamers). 
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Phases of penetration: taking the example of The Sims.&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Hardcore penetration: the game needs challenge, progress, and depth.
&lt;/li&gt;&lt;li&gt;Hardcore evangelism: the game needs to appeal to the Lifestyle gamer, easy to reach fun, strong marketing, and a strong license. 
&lt;/li&gt;&lt;li&gt;Casual penetration: the game needs fun, toys, short minimum play session.
&lt;/li&gt;&lt;li&gt;Casual evangelism: the game needs to get the attention of the mainstream press.
&lt;/li&gt;&lt;/ol&gt;

&lt;img src="http://img580.imageshack.us/img580/5721/simsvectors.png" title="The market vectors of the Sims" style=""&gt;



&lt;h2&gt;ch3 - Myers-Briggs typology of gamers&lt;/h2&gt;

&lt;p&gt;
Assumption: nature of games people enjoy and frequency of play vary with player personality and reaction to situations. The Myers-Briggs model was developed in the 1940s and indicates how an individual would prefer to react to situations in general. See the &lt;a href="http://www.capt.org/mbti-assessment/estimated-frequencies.htm"&gt;Myers-Briggs type frequencies in the US&lt;/a&gt;. Four pairs of traits:
&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Type
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Opposite type
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Game design
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Introversion (50% of pop) &lt;br/&gt;think then act, needs private time, 1-to-1 communication and relationships
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Extroversion (50% of pop)&lt;br/&gt;act then think, likes people, deprived when alone
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Most games are played by introverts. Extraverts can take long breaks from the game, so provide a todo list for them when they come back to play, otherwise they'll forget what they had to do in their previous play session. Extraverts like DDR because of its performance aspect.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Sensing (70% of pop)&lt;br/&gt;live in the present, apply common sense, based on prior experience, likes clear and concrete info
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;iNtuition (30% of pop)&lt;br/&gt;live in near future, new and imaginative approaches, based on theory, comfortable with fuzzy information, seek for patterns)
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Learning and problem solving are frequent gameplay elements in many genres. Learning: in tutorials, S will accept linear series of lessons, but N would rather guess by themselves. Problem solving: S will use trial and error, while N will like to use their lateral thinking skills. Therefore, make lateral thinking puzzles (at most) secondary objectives, or allow the player to progress without having completed all of them. Ex: Super Mario 64 only requires 30 stars to unlock new levels. S want simple and usual mechanics, while N won't mind having to guess the rules and a steep learning curve.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Thinking (30% of women, 60% of men)&lt;br/&gt;decide from facts and logic, objective, focus on task, think that conflicts are sometimes unavoidable
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Feeling (70% of women, 40% of men)&lt;br/&gt;decide from emotion, subjective, focus on consequences to people, wish to avoid conflicts
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Clear goals for T. Personal encouragement for F, but T may feel patronized. Solution: useful AND aesthetic/fun items are rewards that will satisfy both T and F. Gathering collectibles give goals to T, but should not be a grind. F are motivated and rewarded when they see their actions have impact on the world or other characters. T enjoy receiving critical feedback (a game over with tips), but F will take it personally. Ex: Zelda gives clear goals (good for T), falling or getting hit results in losing half a heart (and not instant death) and Link has an impact on the game world (good for F).
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Judging (55% of pop)&lt;br/&gt;plan then move, single task at a time, ahead of deadlines, targets and routines to manage life
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Perceiving (45% of pop)&lt;br/&gt; plan as you go, multitask, work better before deadline, avoid routine and commitment
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;J want to beat the game (get all the secret bonuses) and complete objectives. P want to improve their abilities, and enjoy the process. For P, goals completed = feedback that they're on track. Non-linear structure is good for P because if they don't like a level, they can try another and keep progressing. J needs to know what to do to progress. Ex: in Tony Hawk or GTA, players need to collect points (good for J) but they can collect them the way they want (various kinds of skate figures or driving/killing missions or sandbox play, good for P).
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;
TJ vs FP: TJ want challenges to overcome (what most current games provide), FP want easy fun (cf Sims or casual games).
&lt;/p&gt;
&lt;p&gt;
Study hypothesis: hardcore player is a 14-28 year old tech savvy male who plays up to 8 games per month. Supposedly, he plays on his own (hence I), is methodological, goal-oriented enjoys conflicts (T), plays games until completion and looks for perfect score/overachiever (J). Previous quantitative work from the &lt;a href="http://en.wikipedia.org/wiki/Bartle_Test"&gt;Bartle test&lt;/a&gt; by Andreasen showed the average hardcore MMO player is IST. Therefore, let's suppose hardcores are IT. Overall, 15% of women and 35% of men are of type IT. 
&lt;/p&gt;



&lt;h2&gt;ch4 - &lt;abbr title="Demographic Game Design 1"&gt;DGD1&lt;/abbr&gt;&lt;/h2&gt;

&lt;img src="http://img545.imageshack.us/img545/2570/dgd1clusters.png" title="Four clusters of DGD1" style="float:right"&gt;
&lt;p&gt;
DGD1 is intended as a &lt;q&gt;tool to aid in market-oriented game design&lt;/q&gt;. 
&lt;/p&gt;&lt;p&gt;
Methods: between 2002 and 2004, ask 408 participants (incl 122 women) to answer a 32-question Myers-Briggs personality test, as well as questions on purchasing and playing habits, and &lt;q&gt;do you consider yourself hardcore, casual, or no idea?&lt;/q&gt;. Only look at people who play at least one game per year. Survey advertised on hardcore and casual websites/game portals + university students. 
&lt;/p&gt;&lt;p&gt;
Results: clustering gave a &lt;q&gt;sketchy and incomplete result&lt;/q&gt;, and FE and SI dimensions did not help to cluster, but 4 clusters appeared anyway: conqueror (TJ), manager (TP), Wanderer (FP), and participant (FJ). Hypothesis rejected: hardcores are found in E and S (and not only I and T). Still, I and N are higher for hardcores and MMO players than casuals. For each of the four types, twice more respondents reported they were casuals than hardcores.
&lt;/p&gt;



&lt;a href="http://pastebin.com/3FShxgQN"&gt;&lt;img src="http://img507.imageshack.us/img507/5364/surveybartlecontrolperc.png" title="Proportions of play style and preference as implied by the DGD1 survey, Bartle survey data, and control data (click for R code and actual data)" style=""&gt;&lt;/a&gt;
&lt;a href="http://pastebin.com/zjAErVqt"&gt;&lt;img src="http://img607.imageshack.us/img607/3381/womenpercent.png" title="Percentages of women in hardcore and casual DGD1 data, and in control data (click for R code and data)" style=""&gt;&lt;/a&gt;

&lt;table&gt;
&lt;caption&gt;The DGD1 demographic model&lt;/caption&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Type
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Hardcores Desc
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Casuals Desc
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Progress
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Story
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Social
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(237,28,36); font-weight:bold; font-size:1.1em"&gt;Conqueror&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;ITJ&lt;/span&gt;. Want meaningful challenges, strategies and puzzles, want to complete the game. Want lots of content, try to beat themselves. The game is too easy if they don't die at least a few times. Anger, frustration, boredom, and fiero. 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;ISTJ&lt;/span&gt;. FPS and racing games, they play to compete and win. Rely on genre conventions and do not like deviations from the genre. Fiero (although it's oblivious to them) and &lt;a href="http://en.wikipedia.org/wiki/Schadenfreude"&gt;schadenfreude&lt;/a&gt; in PVP, or in GTA for &lt;a href="http://gta.wikia.com/Rampages"&gt;rampages&lt;/a&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Rapid advancement: stats in RPG, better gear in FPS
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Focus on plot twists/events, not on characters
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Online: vocal hardcores from forums and blogs. They also like to win discussions
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(255,201,14); font-weight:bold; font-size:1.1em"&gt;Manager&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;ITP&lt;/span&gt;. Strategy and tactics. Winning is less important than mastering the game systems: process-oriented, not goal oriented. Conquerors consider them rivals and targets. Patient. Look for challenging but not impossible. Don't look for hidden features but rather refine their current knowledge. Fiero. Civ series.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;ISTP&lt;/span&gt;. Want familiar settings and realism. Like construction and management games like SimCity. Hate being stuck even if they suck. Hate interruptions and like smooth difficulty curves.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Steady. Give up if no reliable strategy is found quickly. 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Plot, not characters.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;None?
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(63,72,204); font-weight:bold; font-size:1.1em"&gt;Wanderer&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;INFP&lt;/span&gt;. Easy fun and toyplay, not challenges. Variety keeps the fun going. Complete levels in aesthetically pleasing ways. Cf &lt;a href="http://en.wikipedia.org/wiki/Puzzle_Bobble"&gt;Puzzle Bobble/Bust-a-Move&lt;/a&gt;: simple controls, bright colors, and actions with direct and satisfying changes to the environment. See also Mario Party and Super Monkey Ball. Need to be able to give up the current task for another different task. May turn to Conqueror or Manager relatives for help. Emotions: finesse, aesthetics, wonder, awe and mystery, but no fiero.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;ENFP&lt;/span&gt;. Want to accomplish something in the game world without the need for challenges. Games = way to relax. Feeling of progression or else boredom. Lack of market vectors to reach them [although nowadays there's Facebook]
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;New toys, colorful and imaginative environments
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Emotions. Empathy to characters or investment in world/immersion.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Talk about what they like but avoid arguments
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(34,177,76); font-weight:bold; font-size:1.1em"&gt;Participant&lt;/span&gt;
&lt;/td&gt;&lt;td colspan="2" style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;FJ&lt;/span&gt;. Games as social entertainment. Cf DDR, The Sims. Little survey data about this group.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Narrative of group of players
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Characters and emotions, but in control of them, not just spectator.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Multiplayer, but must face other players in person, not just online (no MMO)
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;





&lt;h2&gt;ch5 - Player abilities&lt;/h2&gt;

&lt;p&gt;
Flow = subjects believe they can complete their activity. Subjects have clear goals and direct and clear feedback. Effortless involvement. Goals should be short-term for participant and conqueror, but long-term for Wanderer and manager because they like to figure out the short-term goals themselves.
&lt;/p&gt;
&lt;p&gt;
Caillois' table of the four categories of play helps understand how flow is related to toyplay. In the table, there really is a continuum between Paidia and Ludus. 
&lt;/p&gt;
&lt;table style="float:right; width:280px; margin-left:30px"&gt;
&lt;caption&gt;The relation between the four play styles of DGD1 and Caillois' categories of games&lt;/caption&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Conqueror&lt;/span&gt;&lt;br/&gt;Agon
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Manager&lt;/span&gt;&lt;br/&gt;Agon (Alea tolerated)
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Participant&lt;/span&gt;&lt;br/&gt;Mimicry
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Wanderer&lt;/span&gt;&lt;br/&gt;Mimicry (Alea tolerated)
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;table&gt;
&lt;caption&gt;Caillois' table of the four categories of play&lt;/caption&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;-
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Agon &lt;br/&gt;(competition)
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Alea &lt;br/&gt;(chance)
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Mimicry&lt;br/&gt;(simulation)
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Ilinx&lt;br/&gt;(vertigo)
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Paidia&lt;br/&gt;(spontaneous play)
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Spontaneous races
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Counting out rhymes, coin flipping
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Masks and disguisement
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Children whirling, swinging
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Ludus&lt;br/&gt;(structured play)
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Sports
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Betting, lotteries
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Theatre
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Skiing, mountain climbing
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;
People with high Myers-Briggs Feeling scores prefer avoiding conflicts, therefore they don't like Agon. They're also more likely to like Mimicry since they focus on people. For example, Wanderers appreciate finesse, which is a component of Mimicry. Ilinx resembles immersion, it appeals to everyone.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/Interaction_Styles"&gt;Temperament theory&lt;/a&gt; gives patterns of behaviors, while Myers-Briggs gives patterns of perception or judgement. 
&lt;/p&gt;
&lt;table&gt;
&lt;caption&gt;Temperament theory&lt;/caption&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Temperament
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Core needs
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Myers-Briggs traits
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Skills
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;% of pop
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Rational
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Knowledge, competence
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;NT
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Strategic&lt;/span&gt;: Think and plan ahead, identify the means to achieve a goal, coordinate actions strategically
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;10%
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Idealist
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Unique identity, search for meaning and significance
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;NF
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Diplomatic&lt;/span&gt;: Resolve conflicts while recognizing individuality, empathy, find similarities through abstraction
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;15%
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Artisan
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Freedom to act and ability to impact
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;SP
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Tactical&lt;/span&gt;: Read the current content and manage the situation, work out the next step and take action, improvise to overcome problems
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;25%
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Guardian
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Belonging and sense of responsibility/duty
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;SJ
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="font-weight:bold"&gt;Logistical&lt;/span&gt;: Organizing and meeting needs, optimizing and standardizing, protect and ensure safety
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;50%
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br/&gt;
&lt;table&gt;
&lt;caption&gt;Temperament, Myers-Briggs and DGD1&lt;/caption&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Type
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Myers-Briggs&lt;br/&gt;traits
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Hardcore &lt;br/&gt;temperament &lt;br/&gt;trait
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Casual &lt;br/&gt;temperament &lt;br/&gt;trait
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Flow provenance
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Examples
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(237,28,36); font-weight:bold; font-size:1.1em"&gt;Conqueror&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;TJ
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;strategic 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;logistical
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Capacity to see in advance how to address problems (strategic) and iterate/repeat to improve/optimize the solution (logistical). Willingness to fail and repeat
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Production of units in RTS, monsters or bosses with patterns (cf Doom monsters)
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(255,201,14); font-weight:bold; font-size:1.1em"&gt;Manager&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;TP
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;strategic 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;tactical
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Planning ahead (strategic) and reacting to rapidly changing situations (tactical). Hardcores like to get lost in their thoughts, ideally without time limitations. Casuals have flow in the action, and need short-term goals.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;RTS have both spontaneous maneuvers and long-term strategies. Civ, Chess or puzzles for hardcores. 
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(63,72,204); font-weight:bold; font-size:1.1em"&gt;Wanderer&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;FP
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;diplomatic 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;tactical
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Immersion, explicit short-term goals (tactical). Completion of goals is not a big thing, it happens almost as a side-effect of exploration. Give them time to explore. 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Platformers (goal is obvious and challenges relatively easy)
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;span style="color:rgb(34,177,76); font-weight:bold; font-size:1.1em"&gt;Participant&lt;/span&gt;
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;FJ
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;diplomatic 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;logistical
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Feeling of belonging, toyplay, optimize relationships (logistical) with other characters or players, immerse themselves in social situation
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;The Sims, Animal Crossing
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;q&gt;Casual audience is best approached with familiar settings and content, and with gameplay that revolves around optimization or thinking on your feet (tactical).&lt;/q&gt; Hardcores prefer original games that give them a sense of identity (diplomatic), and problems to solve (strategic), e.g. Final Fantasy focuses on story and strategic battles.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-2683573979217721570?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/HexcPqu0GG0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/HexcPqu0GG0/21st-century-game-design-part-i.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/11/21st-century-game-design-part-i.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-6541611086178871237</guid><pubDate>Wed, 19 Oct 2011 00:13:00 +0000</pubDate><atom:updated>2011-10-18T17:16:55.546-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">scalability</category><category domain="http://www.blogger.com/atom/ns#">SW archi</category><category domain="http://www.blogger.com/atom/ns#">SW Eng</category><title>Panel on MMOs from Netgames 2011</title><description>&lt;p&gt;Panel at &lt;a href="http://www.discover.uottawa.ca/netgames2011/"&gt;NetGames 2011&lt;/a&gt; about the future of MMO research.
&lt;/p&gt;&lt;p&gt;
Cheating (no control of the client-side) and performance (weakest node performance conditions the other nodes' performance) are issues in &lt;abbr title="peer-to-peer"&gt;p2p&lt;/abbr&gt; architectures. I could p2p when I play with friends, but not competitively. Even with friends, the developer has no control over the network, NAT traversal problem. Potential solutions: match-making on server, then one peer hosts the game. If host disconnects, the game migrates to another peer. Problem: how to partition and replicate the game world between peers?
&lt;/p&gt;&lt;p&gt;
How to integrate scaling into game mechanics?
&lt;/p&gt;&lt;p&gt;
Researchers can get data from companies if they show that it is worth the company's time (taken to fetch and anonymize data).
&lt;/p&gt;&lt;p&gt;
Problems shared across p2p, client-server and cloud architectures: scalability, cheating, latency, concurrency, synchronization, and replication. 
&lt;/p&gt;&lt;p&gt;
Using the cloud is cheap for small user bases, but very expensive for very large user bases.
&lt;/p&gt;&lt;p&gt;
Casual Connect and GDC Online are industry conferences that also deal with network and system support for MMOs. But they're expensive.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-6541611086178871237?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/pTcqF1A8NgI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/pTcqF1A8NgI/panel-on-mmos-from-netgames-2011.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/10/panel-on-mmos-from-netgames-2011.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-8347747444513087764</guid><pubDate>Sat, 08 Oct 2011 04:46:00 +0000</pubDate><atom:updated>2011-10-07T21:52:13.296-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">statistics</category><category domain="http://www.blogger.com/atom/ns#">data mining</category><category domain="http://www.blogger.com/atom/ns#">anthropology</category><category domain="http://www.blogger.com/atom/ns#">sociology</category><title>MMO player research methods</title><description>&lt;p&gt;
Types of data of interest in MMO player studies:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;demographic data: country, gender, age, job, psychological traits, tech-saviness, happiness, revenue
&lt;/li&gt;&lt;li&gt;marketing data: how much spent on games per month, how many games bought, 
&lt;/li&gt;&lt;li&gt;play data (applicable to all games and game genres): weekly play time, average play session duration, game and genre literacy, 
&lt;/li&gt;&lt;li&gt;genre-specific and game-specific data: for MMOs and WoW in particular: who you play with, guild position, achievement/immersion/social motivation scores
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Challenges of player studies: using tools and methods to convert data into useful information, and avoiding erroneous conclusions by crossing results obtained from various methods.
&lt;/p&gt;


&lt;a href="http://bowling-bash.blogspot.com/2010/12/quick-notes-about-qualitative-methods_15.html"&gt;List of qualitative tools&lt;/a&gt;.

&lt;table&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Methods
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Qualitative
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Quantitative
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Data collection tools
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Note taking or recording during open-ended interviews, lab studies, think aloud, or participant observation/&lt;a href="http://bowling-bash.blogspot.com/2010/09/ethnographic-play-on-25-rate-ro-private.html"&gt;ethnographic play&lt;/a&gt;. All methods gather all types of data - you just need to ask. &lt;a href="http://en.wikipedia.org/wiki/Snowball_sampling"&gt;Snowball sampling&lt;/a&gt; is useful to collect more people concerned by the same phenomenon (eg people from the same guild).
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Questionnaires can gather multiple types of data together, but beware: what people say they do differs from what they actually do. Non-obtrusive logging of game data has the advantage of being objective, and can be done using programmable game add-ons that players need to install. It's even possible to cross game and marketing data together from the developer/publisher side (cf the EverQuest dataset from SOE).
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Data analysis tools
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Note tagging and affinity diagrams are methods used during the note parsing phase. Stop interviewing when respondents do not say/show anything new anymore. Preferably, do not wait to start parsing the data; parsing as notes are taken gives an immediate feedback loop useful to detect useless interview questions, and to know when to stop accumulating data. 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;The most popular tools to use for stat analysis are SPSS, R, and Excel. Obtaining causal relationships is usually quite hard. On the other hand, simple comparisons and correlations are often successful. Regressions can work too. &lt;br/&gt;Data mining/machine learning using Weka or Matlab. Clustering (PCA, LDA, and even KPCA if small dataset) can identify patterns during exploratory phases. Feature selection or decision trees to identify the most important features. Poisson process or Markov chains for temporal evolutions. Bayes, neural network, SVM, random forests, and others for classification. 
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Pros and cons
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Deep, and useful to hint at the reasons explaining a particular phenomena, especially in MMOs, where the metagame (forums, blogs, chats) has a huge influence on the actual game. 
&lt;br/&gt;Snowball sampling in WoW brings lots of players from the same guild(s), or with similar opinions. Therefore (and also because of small sample size): poor ability to generalize. 
&lt;br/&gt;Qualitative methods can also be used as exploratory studies to help build a quantitative questionnaire with relevant questions.
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Broad and useful to detect surface trends. 
&lt;br/&gt;Sample bias/representativity: it's very hard to select a representative sample of the player population. For example, selecting players from wow.com brings a lot of hardcore players (since hardcore players read forums while the most casual players don't). 
&lt;br/&gt;Very hard to explain completely a phenomenon because there's always important features missing from the dataset. Machine learning is also difficult for that same reason.
&lt;br/&gt;It's very easy to get lost in post-hoc effects, or to simply not be able to explain a particular number because you've never played the game. Generally, demographic data can not be caused by game-specific data: it's not because people are hardcore that they're young, but rather the opposite.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Researchers
&lt;/th&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Bardzell, Bartle, Kow, Nardi, Pace, Pearce, TL Taylor
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;a href="http://www.gamerdna.com/quizzes/bartle-test-of-gamer-psychology"&gt;Andreasen&lt;/a&gt; (= quantitative Bartle test), Bateman, Ducheneaut, Seay (not working on that domain anymore?), Williams, Yee,
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-8347747444513087764?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/ExhiCxPS6n0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/ExhiCxPS6n0/mmo-player-research-methods.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/10/mmo-player-research-methods.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-963130670532971897</guid><pubDate>Thu, 15 Sep 2011 06:29:00 +0000</pubDate><atom:updated>2011-09-14T23:29:00.738-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">AI</category><category domain="http://www.blogger.com/atom/ns#">gameplay</category><category domain="http://www.blogger.com/atom/ns#">difficulty</category><category domain="http://www.blogger.com/atom/ns#">aesthetics</category><category domain="http://www.blogger.com/atom/ns#">consumer</category><title>The aesthetics of gameplay: a lexical approach</title><description>&lt;pre&gt;The aesthetics of gameplay: a lexical approach
Zagal and Tomuro
MindTrek'10
&lt;/pre&gt;
&lt;p&gt;
See the &lt;a href="http://facsrv.cs.depaul.edu/~jzagal/Papers/Zagal_and_Tomuro-Aesthetics_of_Gameplay.pdf"&gt;PDF&lt;/a&gt; or the &lt;a href="http://dl.acm.org/citation.cfm?id=1930492"&gt;ACM page&lt;/a&gt;.
&lt;/p&gt;


&lt;table style="width:400px; float:right"&gt;
&lt;caption&gt;Primary Elements of Gameplay Aesthetics&lt;/caption&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Aesthetics cluster
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Words in cluster
&lt;/th&gt;&lt;th style="border-bottom:1px solid; border-right:1px solid"&gt;Description
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Pacing
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;fast, stressful, dull, tedious
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;q&gt;The perception of how often game events occur.&lt;/q&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Scope
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;endless, vast, immense, minimal
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;q&gt;The size of the possibility space afforded by a game.&lt;/q&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Complexity
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;simple, short, complex, uncomplicated 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;q&gt;The measure, or sense, of the number of parts in a system and how they are interrelated.&lt;/q&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Demands
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;hardcore, experienced, retro, demanding
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;q&gt;The requirements imposed upon the player by the gameplay&lt;/q&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Cognitive Accessibility
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;deep, unusual, twisted, intricate, 
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;q&gt;The measure, or sense, of the opacity of a system and the challenges it poses in understanding it.&lt;/q&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;Impact
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;addictive, boring, overwhelming, visceral
&lt;/td&gt;&lt;td style="border-bottom:1px solid; border-right:1px solid"&gt;&lt;q&gt;What we feel games “do to us” when we play them, and how they make us feel.&lt;/q&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;ul&gt;&lt;li&gt;Analyzed nearly 400k user reviews posted before April 2009 on &lt;a href="http://gamespot.com"&gt;gamespot.com&lt;/a&gt;. 8k games covered by reviews from 112k users.
&lt;/li&gt;&lt;li&gt;40% of user reviews contain the word gameplay
&lt;/li&gt;&lt;li&gt;Method: &lt;a href="http://nlp.stanford.edu/software/lex-parser.shtml"&gt;Stanford Parser&lt;/a&gt; to perform &lt;a href="http://en.wikipedia.org/wiki/Part-of-speech_tagging"&gt;part-of-speech tagging&lt;/a&gt;. Matrix of (723 adjectives total that precede and modify the word gameplay) x (5000 most frequent words that occur before or after the adjective, ie context words, ie words that give a context to the adjective). Cells of the matrix contain number of occurrence of an adjective with a context word. Run &lt;a href="http://en.wikipedia.org/wiki/K-means_clustering"&gt;kmeans&lt;/a&gt; on the matrix to obtain k=30 adjective clusters. (Compared to k=10 or 20, k=30 generated better-looking clusters). Two adjectives are similar (and put in the same cluster) if their context word distributions are similar. Then, give a name to each cluster based on the adjectives it contains.
&lt;/li&gt;&lt;li&gt;Only 2 clusters about narrative elements. Therefore, players &lt;q&gt;have no difficulties separating the formal or mechanical aspects (game mechanics) from their narrative interpretations (representation)&lt;/q&gt;.
&lt;/li&gt;&lt;li&gt;AI does not emerge as a cluster. Possible reasons: no language to describe game AI, or games AI are not sophisticated enough, or a too recently marketed topic to feature in reviews.
&lt;/li&gt;&lt;li&gt;Genre does not emerge as a cluster.
&lt;/li&gt;&lt;li&gt;Limitations: Gamespot population = 95% males, lots of colloquial words disappeared in cleaning phases.
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;My remarks&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;A group like "fast FPS gameplay" may have been considered as "fast gameplay" because FPS is not an English adjective, and the Stanford parser only looks at English adjectives. Since genre adjectives are not English but rather specific of gamer communities (e.g. "FPS", "RTS", "JRPG", etc.), genre did not appear in clusters.
&lt;/li&gt;&lt;li&gt;It'd be interesting to know which game names occurred most often next to gameplay. For instance, "gameplay like Civilization" may be quite rare, but very meaningful when talking about a niche genre.
&lt;/li&gt;&lt;li&gt;If genre is a label of the dataset, then it could be interesting to cluster a matrix like adjectives x genre. Goal = see which adjectives are explaining most a genre. 
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-963130670532971897?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/-RI7h1BYOdc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/-RI7h1BYOdc/aesthetics-of-gameplay-lexical-approach.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/09/aesthetics-of-gameplay-lexical-approach.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-2426688965271703764</guid><pubDate>Tue, 13 Sep 2011 04:01:00 +0000</pubDate><atom:updated>2011-09-13T14:02:33.766-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">graphics</category><category domain="http://www.blogger.com/atom/ns#">SW archi</category><category domain="http://www.blogger.com/atom/ns#">SW Eng</category><title>MVC for games</title><description>&lt;p&gt;
Second thoughts on MVC (following a &lt;a href="http://bowling-bash.blogspot.com/2011/08/mvc-and-game-developers.html"&gt;first article&lt;/a&gt; about the use of MVC by game developers). Let's assume that the user inputs are first caught by a controller, and a view is displayed to the user at the end. What are the communication possibilities in-between?
&lt;/p&gt;

&lt;img src="http://img847.imageshack.us/img847/2295/mvcvanilla.png" title="Vanilla MVC" style="float:right"&gt;
&lt;h2&gt;Vanilla MVC&lt;/h2&gt;
&lt;p&gt;
As seen on &lt;a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller"&gt;Wikipedia&lt;/a&gt;, the theoretical 'vanilla' MVC refers to an architecture where the controller updates the model, then notifies the view, which in turn fetches the data to display from the model. 
&lt;/p&gt;&lt;p&gt;
Application for games: the system is event-based: it is only awakened by the actions of the user. If the world has NPCs, they can not act independently of the user. It may be OK for turn-based games like Chess, but not so much for games with living worlds like &lt;a href="http://en.wikipedia.org/wiki/The_Elder_Scrolls_III:_Morrowind"&gt;Morrowind&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Harvest_Moon_%28series%29"&gt;Harvest Moon&lt;/a&gt;.
&lt;/p&gt;



&lt;div style="clear:both"&gt;&lt;/div&gt;

&lt;h2&gt;Web MVC&lt;/h2&gt;
&lt;img src="http://img52.imageshack.us/img52/3947/mvcweb.png" title="Web MVC" style="float:right"&gt;
&lt;p&gt;
In web development, the "logic" is often split into multiple controllers. To determine which controller the user's action is targeted to, web frameworks such as &lt;a href="http://msdn.microsoft.com/en-us/library/dd381412%28VS.98%29.aspx"&gt;ASP.NET&lt;/a&gt; or &lt;a href="http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html"&gt;Spring&lt;/a&gt; use a &lt;a href="http://ferdychristant.com/blog//archive/DOMM-7GTPYA"&gt;front controller&lt;/a&gt; &lt;a hre="http://en.wikipedia.org/wiki/Front_Controller_pattern"&gt;pattern&lt;/a&gt;. The front controller maps URLs to actions to execute (and which controllers to call). I'm not entirely sure, but compared to the vanilla MVC, it seems that the (front) controller is now giving the model to the view, instead of having the view fetching the model by itself. Therefore, the model to be displayed is carried from M to C, and from C to V, twice more data going around than in vanilla MVC (where it used to be moved only from M to V). 
&lt;/p&gt;&lt;p&gt;
In games, the model can get quite large, and moving it around can get costly. It would not be so costly if only resulting differences to the model (instead of the whole model) were exchanged, but it depends on the modernity of the rendering. &lt;a href="http://en.wikipedia.org/wiki/Alpha_compositing"&gt;Alpha compositing&lt;/a&gt; makes it possible to render variations of the game state (ie the model) by layering image elements. Many games/game frameworks such as &lt;a href="http://pygame.org/docs/ref/surface.html#Surface.blit"&gt;pygame&lt;/a&gt; still use &lt;a href="http://en.wikipedia.org/wiki/Bit_blit"&gt;bit blitting&lt;/a&gt;, which requires to erase and reprint the whole screen.
&lt;/p&gt;

&lt;div style="clear:both"&gt;&lt;/div&gt;
&lt;h2&gt;Game MVC&lt;/h2&gt;
&lt;img src="http://img33.imageshack.us/img33/903/mvcgameloop.png" title="Game MVC" style="float:right"&gt;

&lt;p&gt;
This &lt;a href="http://www.doolwind.com/blog/model-view-controller-mvc-game-engine/"&gt;nice article about MVC for games&lt;/a&gt; explains:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The controller &lt;q&gt;handles the input and flow of the game logic. This is akin to the states your game can be in. My primary two controllers are main menu controller and an in-game controller.&lt;/q&gt; &lt;q&gt;They are responsible for converting input into something the game world (model) can understand. Eg "Create unit x at base y".&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;The model &lt;q&gt;handles all game logic. It has nothing to do with input, rendering or networking. It is a pure view into the game world. Designers need only worry about what’s in the model.&lt;/q&gt;
&lt;/li&gt;&lt;li&gt;The view &lt;q&gt;DOES know about the model. The [view] has read-only access to the model. This model can be anything. For my main menu it’s a list of UI controls the controller has built. For the in game view, it’s the game world&lt;/q&gt;. &lt;q&gt;Rather than "reusing views in different controllers" what is more important is "having multiple views on a single controller". For example there might be a 2D and a 3D view of the game world.&lt;/q&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
What is still missing from the picture is the game loop. In games, the model is rendered by the view 60 times per second, and the inputs of the user are processed at the same frequency. As mentioned in the quotes above, some component, be it a controller or something else, still has to determine which view should be active at any given frame, and which controller it is associated with.
&lt;/p&gt;



&lt;h2&gt;Links&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/555283/how-can-you-organize-the-code-for-a-game-to-fit-the-mvc-pattern"&gt;Organizing the game code to fit MVC&lt;/a&gt; (Stack Overflow)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/2210026/is-the-mvc-design-pattern-used-in-commercial-computer-games"&gt;Is MVC used in commercial games?&lt;/a&gt; (Stack Overflow)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.tigsource.com/index.php?topic=11029.0"&gt;MVC in game dev&lt;/a&gt; (TIG source)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mine-control.com/zack/patterns/gamepatterns.html"&gt;Design patterns for games&lt;/a&gt; from Zach Simpson's 1998 GDC talk
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-2426688965271703764?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/SJ17qFy7m2k" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/SJ17qFy7m2k/mvc-for-games.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/09/mvc-for-games.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-1923591394616298548</guid><pubDate>Sun, 11 Sep 2011 01:07:00 +0000</pubDate><atom:updated>2011-09-10T18:22:47.700-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rewards</category><category domain="http://www.blogger.com/atom/ns#">heroism</category><category domain="http://www.blogger.com/atom/ns#">game mechanics</category><title>Fundamentals of Game Design, ch 15: RPG</title><description>&lt;img src="http://img41.imageshack.us/img41/3891/isbn.jpg" title="Fundamentals of game design by Adams and Rollings" style="float:right; height:250px"&gt;
&lt;p&gt;
Inventory can be:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;a grid where player can position items in empty cells, like in &lt;a href="http://mavado.bplaced.net/tutorials/action_rpg_inventory_part_1"&gt;Diablo 1 or 2&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;one ore more simple list(s) of items, with an eventually limited number of slots, like &lt;a href="http://bulbapedia.bulbagarden.net/wiki/Bag"&gt;Pokemon's backpack&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;items have weight, and the inventory is limited to a certain weight, like in &lt;a href="http://www.mobygames.com/game/windows/baldurs-gate/screenshots/gameShotId,331013/"&gt;Baldur's Gate&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Functional character attributes = characterization attributes (stats: DEX, STR, INT, ... skills that change unfrequently, a class system pushes players to specialize) + status attributes (XP, different classes can have different amount of XP required per level (e.g. Baldur's Gate), but players should know it when they pick their character). 
&lt;/p&gt;&lt;p&gt;
Instead of having levels giving sudden bonus, we could have no levels and stats would increase directly proportionally to the XP. After all, levels harm immersion. However, levels add achievement goals and let players spend regularly newly-acquired points in skills they choose.
&lt;/p&gt;

&lt;h2&gt;Skills&lt;/h2&gt;
&lt;p&gt;
Spells can cost mana/SP, or they could just disappear from caster's memory until she sleeps (a la Baldur's Gate/DnD). Unpracticed skills could gradually decline in efficiency, while frequently used skills could get "mastery" bonuses (like for WoW's crafting skills). Or the opposite: frequently used skills could eventually wear out of power. 
&lt;/p&gt;&lt;p&gt;
Skills can be learned right away when levelling up, or when a skill point is spent in them, or the skill could be obtained from an NPC ("training" with masters), or from other players/NPC by watching them do the skill (e.g. the creature in Black and White learns spells after they have been performed a few times in front of it).
&lt;/p&gt;&lt;p&gt;
If a character has 10% chance to unlock a door independently of the previous tries, then the player will try until the lock eventually opens. Then the 10% chance only slows down and annoys the player. Instead, the better at unlocking doors the character is, the faster the door will be opened. If the lock is too complicated for the character's unlocking skills, then the door unlocking progression bar simply does not increase.
&lt;/p&gt;

&lt;h2&gt;Stories and quests&lt;/h2&gt;
&lt;p&gt;
If the overall story is "save the world", then give meaningful reasons why the character would be ready to do side-quests like delivery boy. Good example: helping a hermit to find his lost dog because the collar hides a key to an important door that the player needs to take. Bad example: helping a hermit simply to get XP, or just to help him out by pure generosity (but really, players are not solving NPC problems by pure generosity).
&lt;/p&gt;&lt;p&gt;
Anyway, stop writing stories about saving the world.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-1923591394616298548?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/sIbDkFpII9M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/sIbDkFpII9M/fundamentals-of-game-design-ch-15-rpg.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/09/fundamentals-of-game-design-ch-15-rpg.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-6624636421441644531</guid><pubDate>Fri, 09 Sep 2011 03:15:00 +0000</pubDate><atom:updated>2011-09-08T20:37:57.196-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rules</category><category domain="http://www.blogger.com/atom/ns#">AI</category><category domain="http://www.blogger.com/atom/ns#">maps</category><category domain="http://www.blogger.com/atom/ns#">gameplay</category><category domain="http://www.blogger.com/atom/ns#">difficulty</category><category domain="http://www.blogger.com/atom/ns#">patterns</category><category domain="http://www.blogger.com/atom/ns#">game mechanics</category><category domain="http://www.blogger.com/atom/ns#">algorithm</category><category domain="http://www.blogger.com/atom/ns#">virtual economy</category><title>Fundamentals of Game Design, ch 14: Strategy Games</title><description>&lt;img src="http://img41.imageshack.us/img41/3891/isbn.jpg" title="cover of Fundamentals of Game Design, by Adams and Rollings" style="height:250px;float:right"&gt;

&lt;p&gt;
Strategy = planning series of actions against the opponent(s). There's usually a large variety of potential actions. &lt;q&gt;Analysis paralysis&lt;/q&gt; happens when players have to wait for the other to be done thinking about his next move. In RTS, decisions have to be taken quickly.
The basic mechanics of strategy games involve units and the factories that produce them. There can be diplomacy if the scenario is long enough. The attributes of units can be: (max) health, (max) armor, atk, ammo, &lt;abbr title="attack speed"&gt;aspd&lt;/abbr&gt;, area of effect, range, and others ...
&lt;/p&gt;&lt;p&gt;
Melee unit's value (eg footman) = max HP * shot power * aspd * accuracy * range * walk speed&lt;br/&gt;
Ranged static unit's value (eg tower) = max HP * shot power * aspd * accuracy * range^2/2. Squared because the area defended increases quadratically. Halved because units can generally only cover one side/half, the one side towards the enemy.
&lt;/p&gt;&lt;p&gt;
Most RTS make little use of line of sight and terrain realism; a unit on top of a hill could see further, a unit behind a hill could be hidden from those behind it, units have atk/def/... bonus when they are in their favorite terrain.
&lt;/p&gt;&lt;p&gt;
Gold is too important for war for mines to be spread out randomly. Spreading randomly means randomly-chosen players get a random advantage from the start, which is unfair. Mines randomly spread also means that players will hunt for mines instead of fighting strategically against each other. Large mines should be positioned symmetrically if they are decisive. Random mines should be smaller and not be decisive for winning.
&lt;/p&gt;&lt;p&gt;
&lt;a href="http://en.wikipedia.org/wiki/Lanchester%27s_laws"&gt;Lanchester's laws&lt;/a&gt;: 1- In melee combat, army strength is proportional to number of units because each fighter can engage only one enemy at once. 2- In ranged combat, units can concentrate their power on a single enemy. When 1 unit is attacked by 3 archers, its life decreases 3 times faster, and it can only attack one of them, ie 1/3 of the enemies. Therefore, 3 ranged units are 3*3=9 times stronger than a single unit (whether ranged or not).
&lt;/p&gt;&lt;p&gt;
Imagine the tight and strong negative feedback loop: "wounded units attack weaker". Then players have to play sub-efficiently all the time, and they're going to wage attrition skirmishes, not big epic battles.
&lt;/p&gt;&lt;p&gt;
Do not block or forbid certain units or skills in a particular level. Instead, make the level so that this unit or skill is very inappropriate. Ex: to prevent the player to use air units, give the opponent lots of anti-air missiles. To prevent the use of iron, set the victory condition to "collect lots of iron".
&lt;/p&gt;

&lt;img src="http://img849.imageshack.us/img849/9350/expansionorctechtree.gif" style="float:right; width:400px;" title="Tech tree for the Orcs' buldings in Warcraft 3"&gt;
&lt;h3&gt;Upgrades&lt;/h3&gt;
&lt;p&gt;
Upgrades can apply to a single unit (veteran units have +1 dmg), all units of a particular kind (grunts get +2 atk), all units of all kinds (Iron Age = +2 def to everyone), or even the whole mechanics (production speed divided by 2). Upgrades can be unlocked by spending resources, time, achievement, ... The tech tree can be:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;totally open: player spends point in any tree she wants, like in WoW
&lt;/li&gt;&lt;li&gt;constrained: finish one branch to start another
&lt;/li&gt;&lt;li&gt;fixed: once player starts in a tree, only this tree is available for the rest of the game
&lt;/li&gt;&lt;/ul&gt;


&lt;h3&gt;Production and distribution&lt;/h3&gt;
&lt;p&gt;
Production process should be concrete and visible, while the distribution process should be abstracted. Ex: plant farms for food = concrete food production. No supply lines as long as there are roads = abstract supply distribution. There are different shades and techniques for supply lines: troop caravans between cities in &lt;a href="http://www.eliteinfotech.info/heroes-of-might-and-magic-4/creating-a-caravan.html"&gt;Heroes of Might and Magic IV&lt;/a&gt;, trade caravans between cities in &lt;a href="http://civilization.wikia.com/wiki/Caravan"&gt;Civilization series&lt;/a&gt; or &lt;a href="http://ageofempires.wikia.com/wiki/Caravan"&gt;Age of Empires&lt;/a&gt;, or &lt;a href="http://advancewars.wikia.com/wiki/Armored_Personnel_Carrier"&gt;Armored Personnel Carrier&lt;/a&gt; that transports troops and fuel in Advance Wars. Another approach is to have cities within a zone of influence to be supplied: cf the influence zone mechanics of Populous (you can only build in your area of influence), Civilization, and Black and White (you can only exert your god powers within your zone of influence).
&lt;/p&gt;

&lt;h3&gt;AI techniques&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Game tree search, as used in games where there is a finite number of possible moves, such as Chess or Checkers. Problem: the search space increases exponentially, which is a problem for games like Go which have too many possible moves. 
&lt;/li&gt;&lt;li&gt;Neural networks: patterns are identified after repeated exposure. Problem: training takes time, the system can hardly be tweaked, and adding new patterns means re-training the whole system.
&lt;/li&gt;&lt;li&gt;&lt;abbr title="Finite State Machine"&gt;FSM&lt;/abbr&gt;: units transition from one state (walking) to another (shooting) because of events (enemy appeared in sight). Problem: the unit can only be in one state at once.
&lt;/li&gt;&lt;li&gt;Hierarchical FSM: FSM of the commander gives orders such as "take this hill" to captains. Captains have an FSM that gives orders to soldiers in the squad, such as "cover fire" or "make diversion". Each soldier has its own FSM as well: "if I see an enemy, run for cover". hFSM can create emergent behavior.
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-6624636421441644531?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/uHaA81Tp7Ag" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/uHaA81Tp7Ag/fundamentals-of-game-design-ch-14.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/09/fundamentals-of-game-design-ch-14.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-1990405700657805851</guid><pubDate>Fri, 26 Aug 2011 17:36:00 +0000</pubDate><atom:updated>2011-08-26T18:20:21.391-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">China</category><category domain="http://www.blogger.com/atom/ns#">IRL</category><category domain="http://www.blogger.com/atom/ns#">balance</category><category domain="http://www.blogger.com/atom/ns#">RMT</category><category domain="http://www.blogger.com/atom/ns#">consumer</category><category domain="http://www.blogger.com/atom/ns#">anthropology</category><title>Human-Currency Interaction: Learning from Virtual Currency Use in China</title><description>&lt;pre&gt;
Yang Wang and Scott Mainwaring, 
“Human-Currency Interaction”: Learning from Virtual Currency Use in China, 
CHI 2008
&lt;/pre&gt;

&lt;a href="http://en.wikipedia.org/wiki/Tencent_QQ"&gt;&lt;img src="http://img828.imageshack.us/img828/8813/tencentqq.png" style="float:right; width:200px" title="Tencent's QQ symbol"&gt;&lt;/a&gt;

&lt;ul&gt;&lt;li&gt;50 semi-structured interviews on the use of RMT in China during Summer 2007. Respondents of all ages, playing WoW, Mir2, MapleStory ,Second Life and others.
&lt;/li&gt;&lt;li&gt;Gateway currency = legally convert real money into IG time or currency: Q coin, WoW 66-hour play card. Game-specific currency = in-game gold.
&lt;/li&gt;&lt;li&gt;&lt;em&gt;Realness&lt;/em&gt;: students and young professionals consider gateway and game-specific currencies as both virtual and real. For older adults, the currencies are purely and solely virtual. Virtual currencies are dishonest, they are &lt;q&gt;masquerading as an innocuous, too-easy-to-spend plaything&lt;/q&gt;, while in fact they represent a lot.
&lt;/li&gt;&lt;li&gt;&lt;em&gt;Trust&lt;/em&gt;: face-to-face cash transactions. Need to meet sellers/buyers in person to be sure they are doing their part =&gt; meet in a wang ba, both avatars and human beings face each other. Online trusted third-parties require credit card =&gt; not for kids. Face-to-face = hassle, but it's also fun to meet IRL other players.
&lt;/li&gt;&lt;li&gt;&lt;em&gt;Account sharing&lt;/em&gt;: Pros = with friends, try other characters. Cons = they can steal your stuff, you give them the password you use in many other applications, including RL ones (e.g. email). How to allow account sharing without compromising player security and privacy?
&lt;/li&gt;&lt;li&gt;&lt;em&gt;Fairness&lt;/em&gt;: small buyers ($10/month in RMT) find unfair that some players can spend 10-100 times more than them. Buying from other players is felt as less unfair, and seems to alter the game balance less, than buying from the game company.
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-1990405700657805851?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/bjCJ1WAJybQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/bjCJ1WAJybQ/human-currency-interaction-learning.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/08/human-currency-interaction-learning.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-8682299689353029291</guid><pubDate>Fri, 26 Aug 2011 02:22:00 +0000</pubDate><atom:updated>2011-08-25T19:35:27.105-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">China</category><category domain="http://www.blogger.com/atom/ns#">gold farming</category><category domain="http://www.blogger.com/atom/ns#">RMT</category><category domain="http://www.blogger.com/atom/ns#">consumer</category><category domain="http://www.blogger.com/atom/ns#">virtual economy</category><category domain="http://www.blogger.com/atom/ns#">WoW</category><title>The life of the Chinese gold farmer</title><description>&lt;p&gt;
Notes from a June 2007 New York Times &lt;a href="http://www.nytimes.com/2007/06/17/magazine/17lootfarmers-t.html"&gt;article&lt;/a&gt; about gold farming by Dibbell.
&lt;/p&gt;
&lt;pre&gt;
Julian Dibbell, June 2007, The Life of the Chinese Gold Farmer, 
&lt;/pre&gt;
&lt;a href="http://video.nytimes.com/video/2007/06/14/magazine/1194817114277/the-wizards-of-warcraft.html"&gt;&lt;img src="http://img193.imageshack.us/img193/9498/farmt.png" style="float:right; width:400px" title="Image from a video accompanying the article"/&gt;&lt;/a&gt;

&lt;ul&gt;&lt;li&gt;100k Chinese workers are involved in RMT. RMT market = $1.8 billion worldwide
&lt;/li&gt;&lt;li&gt;80 MMOs and 30M players worldwide. WoW brings $1bn/year to Blizzard.
&lt;/li&gt;&lt;li&gt;The Gross Domestic Product of the MMO player population is between $7bn and $12bn. 
&lt;/li&gt;&lt;li&gt;The gold farming wang ba given as an example has 10 employees and generate $80k/year. 12-hour day/night shifts. Dormitories are in the second floor of the wang ba.
&lt;/li&gt;&lt;li&gt;Farmers collect 25 gold/hour. For 100 golds, the farmer receives $1.25 by his boss, and the boss receives $3+ by the gold selling website which sells those 100 gold for up to $20. 
&lt;/li&gt;&lt;li&gt;After Blizzard banned 50k gold farmers, the exchange rate went from 6c/gold in Spring 2006 to 35c/gold in January 2007.
&lt;/li&gt;&lt;li&gt;Differences between power levellers and gold farmers: bigger teams (25 per 12-hour shift), less sweat-shop-like, have a company tee-shirt/polo, team spirit, less ban (because they use the customer's account and act nearly like actual players). Some leave gold farming to power levelling to have &lt;q&gt;more room to play&lt;/q&gt; for themselves. They like the game/work because playing WoW = learning. Some even buy gold because they don't have time to grind. 
&lt;/li&gt;&lt;li&gt;Raids have drops bound when picked. Therefore, gold farming/power levelling for high-end content is hard. Solution: make a guild, invite the customer in it, raid with him, and have him pick the loots when a boss is downed. Problem: too few customers buy it =&gt; cancelled.
&lt;/li&gt;&lt;li&gt;Gold farmers too want to play.
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-8682299689353029291?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/5hJhbYI9jPs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/5hJhbYI9jPs/life-of-chinese-gold-farmer.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/08/life-of-chinese-gold-farmer.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-4333294326764843971</guid><pubDate>Mon, 22 Aug 2011 23:24:00 +0000</pubDate><atom:updated>2011-08-22T16:24:02.069-07:00</atom:updated><title>Blogroll v3</title><description>&lt;p&gt;
Below, the feeds currently in my Google Reader. There were 200+ feeds in &lt;a href="http://bowling-bash.blogspot.com/2010/01/sources-of-information.html"&gt;January 2010&lt;/a&gt; (around 150 items posted every day) and 99 feeds in &lt;a href="http://bowling-bash.blogspot.com/2010/09/feeds-i-follow-v2.html"&gt;September 2010&lt;/a&gt; (40 items posted per day). I am now down to 77 feeds, and a total of 25 items to read every day.
&lt;/p&gt;
&lt;p&gt;
I obtained this list by using a series of &lt;a href="http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Regular_Expressions"&gt;Notepad++ regexp&lt;/a&gt; on &lt;a href="http://www.google.com/reader/public/subscriptions/user/-/label/"&gt;Reader's ODML list of feeds&lt;/a&gt; (this link will redirect to your own ODML, if you are using Reader).
&lt;/p&gt;



&lt;div&gt;
&lt;div style="display:inline; float:left; margin-right: 20px"&gt;
&lt;h2&gt;Game Dev Blogs&lt;/h2&gt;
&lt;a href="http://doublebuffered.com/feed/"&gt;Double Buffered&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://gafferongames.com/feed/"&gt;Gaffer on Games&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/GamasutraFeatureArticles/"&gt;Gamasutra Feature Articles&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.aigamedev.com/AiGameDev"&gt;Game AI for Developers&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.gamedev.net/latestarticles.rss"&gt;GameDev.net - Latest Articles and Columns&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.jakeworld.org/JakeWorld/rss/jakeworld.xml"&gt;JakeWorld!&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://playnoevil.com/feed/"&gt;PlayNoEvil&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;MMO Gamers&lt;/h2&gt;
&lt;a href="http://blessingofkings.blogspot.com/feeds/posts/default"&gt;Blessing of Kings&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/StroppsWorld"&gt;Stropp's World&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.thatsaterribleidea.com/feeds/posts/default?alt=rss"&gt;That's a Terrible Idea&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://gdata.youtube.com/feeds/base/users/TheDoddler/uploads?alt=rss&amp;amp;v=2&amp;amp;orderby=published&amp;amp;client=ytapi-youtube-profile"&gt;Uploads by TheDoddler&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;MMO Devs&lt;/h2&gt;
&lt;a href="http://www.antipwn.com/blog/?feed=rss2"&gt;Antipwn&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds2.feedburner.com/BrokenToys"&gt;Broken Toys&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://livingworlds.blogspot.com/feeds/posts/default"&gt;Creating Living Online Worlds&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://blogs.elysianonline.com/blogs/derek/rss.aspx"&gt;Derek's Blog on Games, Home Theater and Programming&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.eldergame.com/feed/"&gt;Elder Game&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/MeasuringGameplay"&gt;Measuring Gameplay - article&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.mobhunter.com/?feed=rss2"&gt;Mobhunter.com&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://ofcourseillplayit.com/?feed=rss2"&gt;Of Course I'll Play It!&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://onlinegametechniques.blogspot.com/feeds/posts/default"&gt;Online Game Techniques&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.psychochild.org/?feed=rss2"&gt;Psychochild's Blog&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.hartsman.com/feed/"&gt;Scott Hartsman - Off the Record&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://t-machine.org/index.php/category/mmog-dev/feed/"&gt;T=Machine - MMOG development&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/WolfsheadOnline"&gt;Wolfshead Online&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;MMO Community Mgmt&lt;/h2&gt;
&lt;a href="http://bifftheunderstudy.wordpress.com/feed/"&gt;BIFF THE UNDERSTUDY&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://eatingbees.brokentoys.org/feed/"&gt;Eating Bees&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.emergentfuture.com/feed/"&gt;Emergent Future&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.nerfbat.com/feed/"&gt;Nerfbat&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Game Industry&lt;/h2&gt;
&lt;a href="http://flux.jeuxonline.info/actualites-business.rss"&gt;Dernieres actualites business - JeuxOnLine&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.next-gen.biz/keynotes/feed"&gt;edge online keynotes&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.gamesindustry.biz/rss/gamesindustry_news_feed.rss"&gt;GamesIndustry.biz - News&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Mess&lt;/h2&gt;
&lt;a href="http://feeds.feedburner.com/InformationIsBeautiful"&gt;Information Is Beautiful&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.boston.com/boston/bigpicture/index"&gt;The Big Picture&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Mgmt and Marketing Games&lt;/h2&gt;
&lt;a href="http://www.edery.org/feed/"&gt;Game Tycoon&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://mmotidbits.com/feed/"&gt;MMO Tidbits&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://virtualgoodsinsider.com/feed/"&gt;Virtual Goods Insider&lt;/a&gt;&lt;br/&gt;
&lt;/div&gt;





&lt;div style="display:inline"&gt;
&lt;h2&gt;Video Game Design Blogs&lt;/h2&gt;
&lt;a href="http://bbrathwaite.wordpress.com/feed/"&gt;Applied Game Design&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.sirlin.net/blog/rss.xml"&gt;Blog&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/ClickNothing"&gt;Click Nothing&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://critical-gaming.squarespace.com/blog/rss.xml"&gt;Critical Gaming&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.designer-notes.com/?feed=rss2"&gt;DESIGNER NOTES&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/fullbright"&gt;Fullbright&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://gamedesignaspect.blogspot.com/feeds/posts/default"&gt;Game Design Aspect of the Month&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://dankline.wordpress.com/feed/"&gt;Game of Design&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://blog.ihobo.com/rss.xml"&gt;ihobo&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://lostgarden.com/rss.xml"&gt;Lost Garden&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.magicalwasteland.com/atom.xml"&gt;Magical Wasteland&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds2.feedburner.com/MikeDargaGameDesign"&gt;Mike Darga's Game Design Blog&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://onlinealchemy.wordpress.com/feed/"&gt;Online Alchemy&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.pixelpoppers.com/feeds/posts/default?alt=rss"&gt;Pixel Poppers&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://post-hype.blogspot.com/feeds/posts/default"&gt;post-hype&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.raphkoster.com/category/gametalk/feed/"&gt;Raph's Website - Game talk&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://jeff-vogel.blogspot.com/feeds/posts/default?alt=rss"&gt;The Bottom Feeder&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Academia CS and Game Design&lt;/h2&gt;
&lt;a href="http://cgvw.ics.uci.edu/?feed=rss2"&gt;Center for Computer Games &amp;amp; Virtual Worlds&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://gamebalanceconcepts.wordpress.com/feed/"&gt;Game Balance Concepts&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.ai-blog.net/index.xml"&gt;Game/AI&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.cs.northwestern.edu/~hunicke/blog/?feed=rss2"&gt;gewgaw&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/IeeeSpectrumGaming"&gt;IEEE Spectrum: Consumer Electronics&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://teachingdesign.blogspot.com/feeds/posts/default"&gt;Teaching Game Design&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.jesperjuul.net/ludologist/?feed=rss2"&gt;The Ludologist&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.virtualworldeconomics.com/feeds/posts/default"&gt;Virtual World Economics&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Academia Psycho Socio&lt;/h2&gt;
&lt;a href="http://www.gameinsociety.com/feed/atom"&gt;Game in Society&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://gac.sagepub.com/rss/ahead.xml"&gt;Games and Culture OnlineFirst Articles&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://gac.sagepub.com/rss/recent.xml"&gt;Games and Culture recent issues&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/playon"&gt;PARC PlayOn 2.0&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.psyetgeek.com/feed"&gt;Psy et Geek ;-)&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://terranova.blogs.com/terra_nova/atom.xml"&gt;Terra Nova&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds.feedburner.com/ThePsychologyofGames"&gt;The Psychology of Video Games&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://virtualcultures.typepad.com/virtualcultures/atom.xml"&gt;Virtual Cultures&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Academia Mess&lt;/h2&gt;
&lt;a href="http://gamedesignadvance.com/?feed=rss2"&gt;Game Design Advance&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.lookintheair.com/feeds/posts/default"&gt;Look In The Air&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://metaverselaw.blogspot.com/feeds/posts/default?alt=rss"&gt;Metaverse Law&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.sciencedaily.com/rss/computers_math/video_games.xml"&gt;ScienceDaily: Video Game News&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://www.sciencedaily.com/rss/computers_math/virtual_reality.xml"&gt;ScienceDaily: Virtual Reality News&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://virtual-economy.org/rss.xml"&gt;Virtual Economy Research Network&lt;/a&gt;&lt;br/&gt;
&lt;h2&gt;Cartoons&lt;/h2&gt;
&lt;a href="http://feeds.penny-arcade.com/pa-mainsite"&gt;Penny Arcade&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feeds2.feedburner.com/virtualshackles"&gt;Virtual Shackles&lt;/a&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/2579857068237830056-4333294326764843971?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/Kd-8G55xHsM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/Kd-8G55xHsM/blogroll-v3.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/08/blogroll-v3.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-9116395367396281212</guid><pubDate>Mon, 22 Aug 2011 00:07:00 +0000</pubDate><atom:updated>2011-08-21T17:08:37.180-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">developer</category><category domain="http://www.blogger.com/atom/ns#">SW archi</category><category domain="http://www.blogger.com/atom/ns#">SW Eng</category><title>MVC and game developers</title><description>&lt;img src="http://img194.imageshack.us/img194/5191/mvcd.png" title="MVC, theoretically, in software engineering"/ style="float:right"&gt;

&lt;h2&gt;MVC in software engineering&lt;/h2&gt;

&lt;p&gt;
The model stores data, and runs domain-specific logic. An example of domain-specific logic in the banking domain is &lt;q&gt;if customer's account is below zero, refuse withdrawals&lt;/q&gt;. 
The view gets data to display from the model. Some MVC have the view pull data from the model itself, others have the view notified by the model, and others have the controller tell the view to update itself.
The controller receives and converts user inputs in actions understandable by the model. In web development, such as &lt;a href="http://msdn.microsoft.com/en-us/library/dd381412%28VS.98%29.aspx"&gt;ASP.net&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Java_Servlet"&gt;Java servlets&lt;/a&gt;, the controller picks which view is going to be displayed, and then the selected view is actually in charge of displaying information on the screen. 
If this description is not clear enough, the &lt;a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller#Overview"&gt;wikipedia page about MVC&lt;/a&gt; has a scenario that helps explain how the model, view and controller fit together.
&lt;/p&gt;


&lt;h2&gt;MVC in games&lt;/h2&gt;

&lt;p&gt;
Many amateur game developers &lt;a href="http://www.allegro.cc/forums/thread/592964"&gt;say&lt;/a&gt; &lt;q&gt;ideas from MVC can be applied to games but in general it is just a waste of time&lt;/q&gt;. For many, there is no such thing as game architecture: &lt;q&gt;The only difference with classic MVC is that in a game, the graphics data, logic and game algorithm is fused together.&lt;/q&gt; &lt;a href="http://gamesfromwithin.com/prototyping-youre-probably-doing-it-wrong"&gt;Others&lt;/a&gt; &lt;a href="http://gamedev.stackexchange.com/questions/3426/why-are-mvc-tdd-not-employed-more-in-game-architecture"&gt;argue&lt;/a&gt; that in a rapid prototyping context, where iterating is key, one should not waste time conceiving a modular/maintainable system, but rather focus on testing the game as fast as possible.
&lt;/p&gt;
&lt;p&gt;
Many non-indie games are &lt;a href="http://www.gamasutra.com/view/feature/2280/the_guerrilla_guide_to_game_code.php?print=1"&gt;made with MVC in mind&lt;/a&gt;. Splitting data from presentation induces extra work on the code and managing slightly more objects in memory. However, this is exactly what allows an easier testing and debugging of mechanics, UI, and network components. In fact, MVC has been applied to game programming since &lt;a href="http://www.mine-control.com/zack/patterns/gamepatterns.html"&gt;at least 1998&lt;/a&gt;. &lt;a href="http://forums.tigsource.com/index.php?PHPSESSID=d518ffef0230827dc911d320c0078e44&amp;topic=11029.msg338455#msg338455"&gt;A blogger at TigSource&lt;/a&gt; states that MVC can be applied in any part of a game. Taking the example of a network connection: &lt;q&gt;The input view in this case is a network receiver running in it's own thread and listening for data from a socket. When the view receives data, it's translated into an internal class and sent to a controller for processing&lt;/q&gt;.
&lt;/p&gt;

&lt;h2&gt;Middle ground&lt;/h2&gt;
&lt;p&gt;
I find that explicitly implementing an MVC pattern for the network connection is a bit of an exaggeration. Heads-up displays and other UI input perfectly fit as controllers, and are naturally decoupled from the model. On the other hand, there is a strong tendency by many game developers to ignore software engineering practices. Some even put forward the Extreme Programming side of rapid prototyping to justify their ignorance of any architecture. Agile methods do not contradict the use of any architectural pattern.
&lt;br/&gt;
That may explain why so many of &lt;a href="http://pygame.org/tags/"&gt;pygame's projects&lt;/a&gt; contain a single file with thousands of lines of code ...
&lt;/p&gt; 

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-9116395367396281212?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/P8r9pJJ_HiM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/P8r9pJJ_HiM/mvc-and-game-developers.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/08/mvc-and-game-developers.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-4228171472938196973</guid><pubDate>Thu, 11 Aug 2011 03:48:00 +0000</pubDate><atom:updated>2011-08-21T20:56:23.683-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">maps</category><category domain="http://www.blogger.com/atom/ns#">development process</category><category domain="http://www.blogger.com/atom/ns#">aesthetics</category><category domain="http://www.blogger.com/atom/ns#">level design</category><category domain="http://www.blogger.com/atom/ns#">story</category><title>[Literature] Fundamentals of Game Design, ch 12: Level Design</title><description>&lt;p&gt;
Level design = determine level's initial conditions, pacing (stressful or calm, genre-dependent) challenges, win/loss conditions, cut scene locations, aesthetics and mood (lighting, color palette, weather, special visual and audio effects, music, ambient audio), through tools.
&lt;/p&gt;
&lt;p&gt;


&lt;h2&gt;Level design process&lt;/h2&gt;
&lt;ol&gt;&lt;li&gt;Determine level features: events, objects, NPC
&lt;/li&gt;&lt;li&gt;Plan the gameplay: layout, challenge areas, win/lose conditions. Plan also the art: textures, styles, moods, ...
&lt;/li&gt;&lt;li&gt;Prototype: requires that the game engine is at least partially working. Use mockups to place triggers and document what sets triggers off (= rigging).
&lt;/li&gt;&lt;li&gt;Keep reviewing (with other people) and refining the level's size, pacing, objects, triggers, NPCs, and aesthetics.
&lt;/li&gt;&lt;li&gt;Hand off the level to the art team with requirements and documentation.
&lt;/li&gt;&lt;li&gt;Integrate visual and audio art assets, bug fix, and tune.
&lt;/li&gt;&lt;/ol&gt;


&lt;h2&gt;Guidelines&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;tutorial = included in the first levels of the actual game (not as a side) = hands-on learning. Start explaining the most used features one by one. Disable unused features to avoid confusing the player. Explain UI elements and point at them visually (blinking or glowing). Let player go back and try the tutorial examples again. Allow the tutorial to be skipped.
&lt;/li&gt;&lt;li&gt;vary pacing within a level
&lt;/li&gt;&lt;li&gt;after player surmounts resource-consuming challenges, player should be given resources to come back
&lt;/li&gt;&lt;li&gt;avoid things that do not make sense/inconsistencies
&lt;/li&gt;&lt;li&gt;scope: do not get too big, adapt levels to team's capacity
&lt;/li&gt;&lt;li&gt;do not show all the challenges to in one level - introduce features gradually
&lt;/li&gt;&lt;li&gt;know your audience
&lt;/li&gt;&lt;li&gt;atypical levels should be optional: either they break suspension of disbelief or the challenges are foreign to the genre, and are therefore not exciting for players who like the genre. Atypical levels should be unlockable, hidden levels, or side missions, but not in the main progression.
&lt;/li&gt;&lt;li&gt;inform player of short-term goals
&lt;/li&gt;&lt;li&gt;be clear about risks, rewards, and consequences of decisions
&lt;/li&gt;&lt;li&gt;reward for skill, imagination, intelligence and dedication
&lt;/li&gt;&lt;li&gt;reward a lot, punish a little
&lt;/li&gt;&lt;li&gt;The AI is here to lose
&lt;/li&gt;&lt;li&gt;provide multiple difficulty settings
&lt;/li&gt;&lt;li&gt;action games: vary the pace/players must be able to rest
&lt;/li&gt;&lt;li&gt;strategy games: reward planning, give advantageous locations but let the player find them
&lt;/li&gt;&lt;li&gt;RPG: allow character growth and player self-expression
&lt;/li&gt;&lt;li&gt;sports: verisimilitude
&lt;/li&gt;&lt;li&gt;vehicle: reward skillful maneuvers
&lt;/li&gt;&lt;li&gt;construction and management sims: provide interesting variety of scenarios (= initial conditions and goals)
&lt;/li&gt;&lt;li&gt;adventure: challenges consistent with their location and the story
&lt;/li&gt;&lt;li&gt;artificial life: offer a lot of interactions between creature and environment
&lt;/li&gt;&lt;li&gt;puzzle: give time to think
&lt;/li&gt;&lt;/ul&gt;


&lt;img src="http://img696.imageshack.us/img696/6944/levelsa.png" title="Various level patterns"/&gt;

&lt;h2&gt;Layout patterns&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th style="border-bottom:1px solid;border-right:1px solid"&gt;Pattern
&lt;/th&gt;&lt;th style="border-bottom:1px solid;border-right:1px solid"&gt;Indications
&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;open
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;player's movement has no constraints
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;linear
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;works well with linear stories
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;parallel
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;works well with foldback stories, shortcuts possible
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;ring
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;mostly only for racing games
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;network
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;maze, good for explorers, hard to tell a story because the path is quite free. If all major spaces are connected, then exploration is easy: it's good for FPS deathmatches.
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;hub and spoke/star
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;start at center, challenges and rewards in branches
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;combination
&lt;/td&gt;&lt;td style="border-bottom:1px solid;border-right:1px solid"&gt;many kinds of games!
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-4228171472938196973?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/VhcQU6xkWfw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/VhcQU6xkWfw/literature-fundamentals-of-game-design_10.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/08/literature-fundamentals-of-game-design_10.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-6792228781288877230</guid><pubDate>Mon, 01 Aug 2011 16:20:00 +0000</pubDate><atom:updated>2011-08-01T09:20:00.304-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">balance</category><title>[Literature] Fundamentals of Game Design, ch 11: Balance</title><description>&lt;img src="http://img41.imageshack.us/img41/3891/isbn.jpg" title="Cover of Fundamentals of Game design, by Adams and Rollings" style="float:right; width:300px"/&gt;

&lt;p&gt;
Balance deals with fairness as perceived by players, difficulty, and ensuring that skill (and not chance) is the main factor in player success. Players left-behind should be able to catch up. Stalemates should be avoided because they make some players feel like they played in vain (in other words, better players should always win). No sudden drops or peaks in difficulty. No sudden loss of the game without having previously given the player adequate information about his decisions. Respect genre: no logic puzzle inside a flight simulator.
&lt;/p&gt;

&lt;h2&gt;Avoid dominant strategies&lt;/h2&gt;
&lt;p&gt;
If entities are perfectly balanced and the player can see it obviously from the entities' external stats, then the game looks bland. Therefore, there should be shadow costs. Shadow costs are eventually learned by players after a while if they are not completely hidden. They should not be completely hidden, otherwise the player wonders why his performance fluctuates. More on shadow costs &lt;a href="http://bowling-bash.blogspot.com/2011/04/literature-game-balance-ch6-situational.html"&gt;from Ian Schreiber&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Transitive relationships (A&amp;gt;B and B&amp;gt;C implies A&amp;gt;C) are good for player upgrades (sword A gives more atk than sword B). Intransitive relationships (rock paper scissors) are better with unequal costs and gains because players may take risks (and be rewarded for the risks taken). In fact, ideally, all units should be orthogonally different: they should differ in at least 2 dimensions, or have at least one capability that no other unit in the game has. Orthogonally different units prevent dominant strategies because all units are needed to reach the goal. Ex: in Chess, using the Queen only because she's the strongest is a losing strategy.
&lt;/p&gt;


&lt;h2&gt;Chance&lt;/h2&gt;
&lt;p&gt;
Chance can be used in frequent low risk and low-reward challenges. 
Allow the player to choose how much to risk. Skill is taking the good risks with enough information given: Poker players can decide to lose very little if they have a bad hand this turn: they do not bet much. 
&lt;q&gt;Good luck cancels bad luck over time. In the end, skill makes the difference.&lt;/q&gt;
Do not use chance for large issues unless the player knowingly takes the risk.
&lt;/p&gt;

&lt;h2&gt;PvP&lt;/h2&gt;
&lt;p&gt;
Symmetric PvP games can get boring: players end up using the same strategy. 
It can be hard for some symmetric games (Go or RTS) to have a non-cheating AI better than humans. Players accept a cheating AI (able to see units in fog of war, faster production, ...) in very hard mode, not in easy. Basically, the game becomes asymmetric when players accept a handicap.
&lt;/p&gt;


&lt;img src="http://img847.imageshack.us/img847/8638/3diffcurves.png" title="Absolute, relative and perceived difficulty curves" style="float:right"&gt;


&lt;h2&gt;Difficulty&lt;/h2&gt;
&lt;p&gt;
See also &lt;a href="http://bowling-bash.blogspot.com/2011/04/literature-game-balance-ch7-advancement.html"&gt;Ian Schreiber's game balance class&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
At least two factors are outside designer's control. Players have a previous experience acquired by playing similar games of the genre. Players have also a native talent (hand-eye coordination, reasoning, ...). Other factors that the designer can control to adjust the perceived difficulty are: intrinsic skill, stress, power provided and IG experience.
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Absolute difficulty of a challenge = skill + stress required compared to the trivial case (static, harmless, one-shot-killed enemy in an FPS)
&lt;/li&gt;&lt;li&gt;power provided = avatar's strength, subject to feedback loops. Ex: spell, powerful sword, HP, ...
&lt;/li&gt;&lt;li&gt;relative difficulty = absolute difficulty - power provided. 
&lt;/li&gt;&lt;li&gt;IG experience = how often the player has been exposed to similar challenges throughout the game.
&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;perceived difficulty = absolute difficulty - power provided - IG experience.&lt;/blockquote&gt;

&lt;p&gt;
Problem with adaptive difficulty: player may learn to trick the AI in pretending to be bad throughout the game and play well at the very end to crush the AI. Moreover, finding a relevant success metric is sometimes hard. Adaptive difficulty should not be obvious to the player, otherwise it feels like patronizing. Adaptive difficulty can be used to make the game harder for players who choose it, though.
&lt;p&gt;



&lt;h2&gt;Positive feedback&lt;/h2&gt;
&lt;p&gt;
Discourages stalemate and rewards success usefully (not just cosmetically). To control positive feedback,
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Rewards should not be too big
&lt;/li&gt;&lt;li&gt;increase absolute difficulty as player gains rewards, so that relative difficulty stays in control
&lt;/li&gt;&lt;li&gt;allow players to team up against the leader
&lt;/li&gt;&lt;li&gt;make victory conditions unrelated to player power
&lt;/li&gt;&lt;li&gt;use chance to decrease player rewards (random loot, ...)
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;Tips&lt;/h2&gt;
&lt;p&gt;
Stagnation happens when the player does not know what to do because she does not have enough information. Ex: finding a secret exit door hidden somewhere in a Doom level. To avoid stagnation, give hints. 
&lt;/p&gt;
&lt;p&gt;
Players should not have to waste time on trivialities (micromanagement) when they want to take higher-level decisions (strategic positioning of armies), unless they ask for it. Ideally, the game should let the player decide the levels she wants to be in charge of. Experts can choose to micromanage. 
&lt;/p&gt;
&lt;p&gt;
How to tune easily: 
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Factorize mechanics shared by multiple entities, 
&lt;/li&gt;&lt;li&gt;Modify one parameter at a time to see its effect,
&lt;/li&gt;&lt;li&gt;To measure the effect of a parameter, double or halve it,
&lt;/li&gt;&lt;li&gt;Keep track of the tuning done so far, so that you do not do the same tweak twice (saves time)
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-6792228781288877230?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/oQ0slMkkXD8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/oQ0slMkkXD8/literature-fundamentals-of-game-design.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/08/literature-fundamentals-of-game-design.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-344390543354929774</guid><pubDate>Mon, 25 Jul 2011 15:58:00 +0000</pubDate><atom:updated>2011-07-31T09:29:36.030-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">game mechanics</category><category domain="http://www.blogger.com/atom/ns#">virtual economy</category><title>[Literature] Fundamentals of Game Design, ch 10: Mechanics</title><description>&lt;p&gt;
The mechanics are the data and algorithms that define the rules. Mechanics implement the internal economy inside the game engine and present challenges to the UI perspective. Mechanics are also in charge of the NPC AI, mode switching, and links to story engine. The mechanics define how resources can be created/deleted/exchanged, the state or attributes of entities, and the relationships between entities. 
&lt;/p&gt;


&lt;div style="float:right; text-align:center"&gt;
&lt;img src="http://img16.imageshack.us/img16/1923/monopolyu.png" title="Feedback loop in Monopoly: dollars buy ressources which give dollars back"/&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;img src="http://img837.imageshack.us/img837/9295/dependency.png" title="Mutual dependency: food is needed to obtain wood, and wood is needed to obtain food"/&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;img src="http://img717.imageshack.us/img717/9746/dynaeq.png" title="Dynamic equilibrium: the production cycle repeats itself over time"/&gt;
&lt;/div&gt;

&lt;h2&gt;Economy&lt;/h2&gt;
&lt;p&gt;
Quantifiable entities are produced by sources at spawn points (health pack in FPS or gold mine in RTS), consumed in drains (shooting consumes ammo, units cost resources), and exchanged through traders (exchange A against B, both A and B exist) or converters (A is consumed, B is produced). Players do not mind getting money for free, but they want to know why they lose some. Explain the drains. A resource is tangible if it takes physical space (space- and weight-limited inventory in Baldur's Gate vs potion stacking in RO vs limitless inventory in JRPG).
&lt;/p&gt;
&lt;p&gt;
If the player has no way to get into a feedback loop, there is a deadlock. Example: when player has no money in Monopoly, she can't buy properties, and can not get money. 
&lt;br/&gt;Mutual dependency happens when two production mechanisms require each each other's output as their input. 
&lt;br/&gt;Equilibriums relieve pressure from the player: she can just sit and watch what happens. Therefore, there should be a mechanism to break the equilibrium or require player's intervention (e.g. farms in Age of Empires produce food automatically but expire after 3 harvests). Static equilibrium happens when offer = demand. Players can see their impact instantly in static equilibrium. Dynamic equilibrium happens when the same production cycle repeats itself over time (offer and demand follow patterns). Players may have to wait to know if their actions disrupted the equilibrium.
&lt;/p&gt;



&lt;h2&gt;Mechanics and gameplay&lt;/h2&gt;
&lt;p&gt;
Passive challenges do not require the mechanics to operate (e.g. climbing over a wall). Active challenges (solving a puzzle) have the player progress between states to reach the solution state. However, the player often has the same actions to solve all challenges (jumping, shooting, running). 
&lt;/p&gt;

&lt;h2&gt;Guidelines for designing mechanics&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Strive for simplicity: do not make more mechanics than necessary. &lt;A href="http://en.wikipedia.org/wiki/Occam%27s_razor"&gt;Occam's razor&lt;/a&gt;.
&lt;/li&gt;&lt;li&gt;Do not try to get it perfect on paper. Playtest instead.
&lt;/li&gt;&lt;li&gt;Give enough details to programmers, but do not waste your time going too deep. Minor bugs and misconceptions can be fixed at tuning time.
&lt;/li&gt;&lt;li&gt;From higher-level game design documents, detail what the player is going to do, the flowboard of the game's modes, outline of the story, level ideas and progression, and victory and loss conditions.
&lt;/li&gt;&lt;li&gt;Do your entities: store resources? Are affected by processes? Have state and transitions? Have relationships with others? interact with or by the player (and how)? Also, find verbs these entities will enact.
&lt;/li&gt;&lt;li&gt;Resources: detail how sources, drains, and conversions work. 
&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Debugging tip: always use the same seed in random number generators.&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-344390543354929774?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/RBMfOMsKusk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/RBMfOMsKusk/literature-fundamentals-of-game-design_25.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/07/literature-fundamentals-of-game-design_25.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2579857068237830056.post-4455128062659189963</guid><pubDate>Sun, 24 Jul 2011 15:52:00 +0000</pubDate><atom:updated>2011-07-31T09:29:35.906-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gameplay</category><category domain="http://www.blogger.com/atom/ns#">challenge</category><category domain="http://www.blogger.com/atom/ns#">patterns</category><title>[Literature] Fundamentals of Game Design, ch 9: Gameplay</title><description>&lt;h2&gt;What makes a game fun&lt;/h2&gt;
&lt;p&gt;
50% from quality assets, UI, and code.
35% tuning and polishing. 
10% imaginative level design.
5% innovation.
A pinch of luck.
&lt;br/&gt;Guidelines
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Gameplay before story and graphics
&lt;/li&gt;&lt;li&gt;get a feature right or leave it out
&lt;/li&gt;&lt;li&gt;player-centric, know your audience
&lt;/li&gt;&lt;li&gt;abstract or automate the boring parts
&lt;/li&gt;&lt;li&gt;be true to your vision, do not add stuff for marketing or in hope of getting more players
&lt;/li&gt;&lt;li&gt;aesthetics matter
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;Challenges&lt;/h2&gt;

&lt;p&gt;
&lt;q&gt;Gameplay is in the challenges.&lt;/q&gt;
&lt;/p&gt;&lt;p&gt;
Challenge hierarchy: to complete the game, the player has to complete chapters, levels, missions, and atomic challenges. Atomic challenges are what player focuses on at the moment. The game victory condition should be explicit, as well as the atomic challenges. Intermediary challenges can and should be implicit: the fun comes from figuring out how to use the atomic tools to reach the end goal. That's why the player should be rewarded whatever path she took or means she used.
&lt;/p&gt;&lt;p&gt;
Many simultaneous atomic challenges put stress on the player (e.g. &lt;a href="http://www.youtube.com/watch?v=3C1BSbq5aB0"&gt;Impossible Super Mario levels&lt;/a&gt;). Difficulty = intrinsic skill + stress. Intrinsic skill = level of skill required to overcome a challenge without any time limit. Sudoku is pure skill. Stress = perception of time pressure for a given skill level. Tetris is pure stress. 
Therefore, to make the game easier, give more time to complete skill-based challenges.
&lt;/p&gt;


&lt;img src="http://img844.imageshack.us/img844/9980/stressskill.png" title="Intrinsic skill required vs stress in different tasks" style="float:right"/&gt;

&lt;p&gt;
Commonly used atomic challenges:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Physical coordination (hand-eye): speed, accuracy, timing and rhythm. 
&lt;/li&gt;&lt;li&gt;Logic and maths: challenges solved by reasoning power alone. Rubik's cube, puzzles
&lt;/li&gt;&lt;li&gt;Race: time pressure reduces strategic thinking.
&lt;/li&gt;&lt;li&gt;Factual knowledge: Trivial Pursuit, quizzes
&lt;/li&gt;&lt;li&gt;Memory: &lt;a href="http://en.wikipedia.org/wiki/French_tarot"&gt;French Tarot&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;Pattern recognition
&lt;/li&gt;&lt;li&gt;Exploration: spatial awareness, locked doors, traps, mazes, teleporters. Should still have challenges, otherwise it's sightseeing.
&lt;/li&gt;&lt;li&gt;Conflict: strategy, tactics, logistics, defend weak units, stealth. Checkers, chess, Heroes of Might and Magic.
&lt;/li&gt;&lt;li&gt;Economic: accumulate resources (RTS), balance a complex economy (SimCity), care for living things (Black and White)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Lateral_thinking"&gt;Lateral thinking&lt;/a&gt;: there is no obvious solution. 
&lt;/li&gt;&lt;/ul&gt;


&lt;h2&gt;Actions&lt;/h2&gt;
&lt;p&gt;
Actions are IG events directly and immediately influenced by player's input. Player spends most of her time using actions to overcome atomic challenges. Therefore, particular attention should be given to how actions can overcome basic challenges.
&lt;/p&gt;&lt;p&gt;
Some actions do not overcome challenges, but provide hooks for unstructured play (honking in a racing game), creation/expression (customizing your avatar), socialization (emotes), and story participation. There are also meta-actions: loading, saving, configurations, exit, ...
&lt;/p&gt;


&lt;h2&gt;Saving&lt;/h2&gt;
&lt;p&gt;
Save files are good for testing and debugging. In general, saving harms immersion and story flow/discovery (player can see different branches by reloading and taking different choices). Always allow the player to save and reload the game. Saving can be implemented through:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;level passwords (levels of Lucky Luke for Gameboy), 
&lt;/li&gt;&lt;li&gt;save slots (player can keep copies of his progression and try different things, Doom), 
&lt;/li&gt;&lt;li&gt;quick save when pushing a key (Baldur's Gate 2), 
&lt;/li&gt;&lt;li&gt;automatic save/checkpoints (mid-level checkpoints in Mario platformer series).
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2579857068237830056-4455128062659189963?l=bowling-bash.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BowlingBash/~4/tPah5hpMqXI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/BowlingBash/~3/tPah5hpMqXI/literature-fundamentals-of-game-design_24.html</link><author>noreply@blogger.com (gentimouton)</author><thr:total>0</thr:total><feedburner:origLink>http://bowling-bash.blogspot.com/2011/07/literature-fundamentals-of-game-design_24.html</feedburner:origLink></item></channel></rss>

