-
Notifications
You must be signed in to change notification settings - Fork 0
/
The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer..htm
345 lines (251 loc) · 32.4 KB
/
The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer..htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- saved from url=(0114)http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/ -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head profile="http://gmpg.org/xfn/11"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script type="text/javascript" async="" src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/ga.js"></script><script async="" src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/cloudflare.min.js"></script><script type="text/javascript">
//<![CDATA[
try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:0,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dokv=abba2f56bd/"},atok:"30869d70984bc68baa0a07184d8c2dab",petok:"5cababc0244d19767bf3b0c9717ad3dab22711c8-1404696160-1800",zone:"inventwithpython.com",rocket:"0",apps:{}}];CloudFlare.push({"apps":{"ape":"69f73d9f4a607de9a2ccd86602f72ca2"}});!function(a,b){a=document.createElement("script"),b=document.getElementsByTagName("script")[0],a.async=!0,a.src="//ajax.cloudflare.com/cdn-cgi/nexp/dokv=97fb4d042e/cloudflare.min.js",b.parentNode.insertBefore(a,b)}()}}catch(e){};
//]]>
</script>
<link rel="stylesheet" type="text/css" href="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/M9DPzEvLzC3N1S8uqcxJ1THUz8hMSdUtycgs1i1ILCqBCAMA.css" media="all">
<meta name="generator" content="WordPress 3.9.1">
<title>The “Invent with Python” Blog — Need a Game Idea? A List of Game Mechanics and a Random Mechanic Mixer.</title>
<link rel="alternate" type="application/rss+xml" title="The “Invent with Python” Blog RSS Feed" href="http://inventwithpython.com/blog/feed/">
<link rel="pingback" href="http://inventwithpython.com/blog/xmlrpc.php">
<script type="text/javascript">//<![CDATA[
// Google Analytics for WordPress by Yoast v4.3.5 | http://yoast.com/wordpress/google-analytics/
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-5459430-3']);
_gaq.push(['_trackPageview']);
(function () {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
//]]></script>
<link rel="alternate" type="application/rss+xml" title="The “Invent with Python” Blog » Need a Game Idea? A List of Game Mechanics and a Random Mechanic Mixer. Comments Feed" href="http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/feed/">
<script type="text/javascript" src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/S8rJT9cvL9DNzEvOKU1JLdbPAqLC0tSiSiilk0RIhW5uZnpRYkmqXm5mno6hfkZmSqpuSUZmsW5BYlEJUDUA.js"></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://inventwithpython.com/blog/xmlrpc.php?rsd">
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://inventwithpython.com/blog/wp-includes/wlwmanifest.xml">
<link rel="prev" title="Using Trigonometry to Animate Bounces, Draw Clocks, and Point Cannons at a Target" href="http://inventwithpython.com/blog/2012/07/18/using-trigonometry-to-animate-bounces-draw-clocks-and-point-cannons-at-a-target/">
<link rel="next" title="Source Code Makeover: Square Shooter, Part 1" href="http://inventwithpython.com/blog/2012/08/09/source-code-makeover-square-shooter-part-1/">
<meta name="generator" content="WordPress 3.9.1">
<link rel="canonical" href="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer..htm">
<link rel="shortlink" href="http://inventwithpython.com/blog/?p=710">
<script type="text/javascript"><!--
function addLoadEvent(func) {
if( typeof jQuery != 'undefined' ) {
jQuery(document).ready( func );
} else if( typeof Prototype != 'undefined' ) {
Event.observe( window, 'load', func );
} else {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload)
oldonload();
func();
}
}
}
}
function wphc(){
var wphc_data = [1081277396,1299441606,1265432978,1283445201,1466564319,1479911127,1449716672,389865664,372227974,389850258,372227974,389850514,338606219,56733321,1081409221,1316220397,1181285314,52930458];
for (var i=0; i<wphc_data.length; i++){
wphc_data[i]=wphc_data[i]^589074098;
}
var a = new Array(wphc_data.length);
for (var i=0; i<wphc_data.length; i++) {
a[i] = String.fromCharCode(wphc_data[i] & 0xFF, wphc_data[i]>>>8 & 0xFF, wphc_data[i]>>>16 & 0xFF, wphc_data[i]>>>24 & 0xFF);
}
return eval(a.join(''));
}
addLoadEvent(function(){var el=document.getElementById('wphc_value');if(el)el.value=wphc();});
//--></script>
<style type="text/css">.cf-hidden { display: none; } .cf-invisible { visibility: hidden; }</style></head>
<body>
<div id="page">
<div id="header">
<h1><a href="http://inventwithpython.com/blog/">The “Invent with Python” Blog</a></h1>
<div id="tagline">News about Al Sweigart’s programming books.</div>
</div>
<div id="content">
<h2 class="pagetitle">Need a Game Idea? A List of Game Mechanics and a Random Mechanic Mixer.</h2>
<div class="post" id="post-710">
<div class="entry">
<p>If you need an idea for a game, try this random game mechanic generator:</p>
<p><iframe src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/randommechanic.htm" width="100%" border="0" height="200"></iframe></p>
<p>A full list is at the bottom of this page. I wanted to get fairly low level with these game mechanics, so I don’t include things such as “first person shooter” or “puzzles” (since those are, in my opinion, more correctly called genres).</p>
<p>Just to prove to myself that this generator isn’t worthless, I decided to make some small Python/Pygame games based off of it. These games are fairly rough since I wanted to rapidly produce them as proof-of-concepts. The mechanics that got selected were:</p>
<p><span id="more-710"></span></p>
<ul>
<li><em>Hidden Image / Where’s Waldo?, Switch Modes, Avoiding Unkillable Objects</em> which resulted in “Flag Capture” – A game where you have a specific target flag to pick up out of a sea of red or blue flags. While in blue mode the red flags will hurt you and while in red mode the blue flags will hurt you. You must move your character close enough to the target flag to click on it with the mouse and pick it up.</li>
<li><em>Bouncing Objects, Bullet Hell, Teleports</em> which resulted in “Incoming!” – A game where you must survive shots being fired at you. Complicating matters is that there are several teleports that the bullets could enter, making it tricky to figure out where they’ll be coming from.</li>
</ul>
<p><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/flagcapture_screenshot.png" width="400"></p>
<p><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/incoming_screenshot.png" width="400"></p>
<p><a href="http://inventwithpython.com/randommechanic_games.zip?ce84c4">Download the games.</a> (Requires Python & Pygame installed to run.)</p>
<p>The full list of mechanics and their descriptions are below:</p>
<ul>
<li><strong>Avoiding Unkillable Objects</strong> – There are objects that the player cannot touch. These are different from normal enemies because they cannot be destroyed or moved.</li>
<li><strong>Instant Death</strong> – Something causes the player to instantly die, such as spikes or bottomless pits.</li>
<li><strong>Game Repeats Until You Die</strong> – There is no victory condition in the game, it just keeps going until the player dies. Or, especially with casual games, the game simply repeats after you beat it. (Example: Nibbles, Minefield, Solitare)</li>
<li><strong>Remember an Increasing Number of Things</strong> – Tests the short-term memory of a player. (Example: Simon)</li>
<li><strong>Repeat Pattern</strong> – The player must repeat a series of given steps. (Example: Simon, Dance Dance Revolution)</li>
<li><strong>Forced Constant Movement</strong> – The player cannot stand still at any point. (Example: Nibbles, Rail Shooters, Asteroids, <a href="http://www.ferryhalim.com/orisinal/g3/bells.htm" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.ferryhalim.com']);" rel="noreferrer">Winter Bells</a>)</li>
<li><strong>Block Puzzles</strong> – The game involves standard sized objects that must be moved around in a specific way. (Example: Tetris, Sokoban, Connect Four, Dr. Mario, Kirby’s Avalanche / Puyo Puyo)</li>
<li><strong>Game Keeps Gets Harder Until You Die</strong> – Like “Game Repeats Until You Die” except the difficulty level also keeps increasing. (Example: Tetris)</li>
<li><strong>Uncountable Number of Possible Paths</strong> – Most games have a few obvious places to go, but this mechanic means that the number of possible ways to order your movement quickly becomes thousands or millions of possible ways and it is not obvious which is the best. (Example: The Traveling Salesman Problem, Sokoban, Flood It, Bloxorz, Mazes)</li>
<li><strong>Big Gains for You Can Be Big Gains for Enemy</strong> – There is an obvious and easy way to score points, but the more points you take the better position your enemy will be in also. (Example: Othello, Risk)</li>
<li><strong>Block Path</strong> – You don’t directly fight your enemies but instead tried to block their movements. (Example: Tron, Quoridor, Minotaurus, Abalone, Chess (capturing the king))</li>
<li><strong>Information Overload</strong> – The game presents the player with lots of different variables and pieces of information, and the player must find patterns or make sense of it to make good (or even valid) moves. (Example: Quarto, Set, Bejeweled)</li>
<li><strong>Disinformation</strong> – The player must try to bluff the opponent into thinking they are stronger (for evasion) or weaker (for traps) than they really are. (Example: Poker, Stratego)</li>
<li><strong>Switch Modes</strong> – The player needs to constantly switch between two (or more) modes to effectively fight or move. (Example: Ikaruga, Marshie’s Malloween Mix-Up, Pacman (switching between running from ghosts to eating them))</li>
<li><strong>Push Mole Down, Mole Pops Up</strong> – The moves that the player make will also cause obstacles to appear. Many moves are obviously possible, but the move that does not have negative side effects is not obvious. (Example: Slide Puzzle, Traffic Jam, Lights Out)</li>
<li><strong>Cut Off One Head, Two Grow Back</strong> – Like “Push Mole Down, Mole Pops Up” except that making some necessary progress also causes the game to become more difficult. (Example: Asteroids)</li>
<li><strong>Bouncing Object</strong> – You cannot directly control an object’s movement, but can try to direct it so that the environment directs its path. (Example: Pong, Arkanoid)</li>
<li><strong>Gravity</strong> – Like “Forced Constant Movement” except objects are pulled either in a certain direction or are pulled towards certain objects. Also consider: zero gravity, reverse gravity, changeable gravity.</li>
<li><strong>Mouse Dexterity</strong> – The player must move the mouse in a specific way without making errors. Often combined with “Forced Constant Movement” or “Avoiding Unkillable Objects”. Keyboard or game controllers usually require this sort of dexterity, but the mouse is usually reserved for either looking around or menu selection (neither of which requires dexterity). (Example: Fruit Ninja, <a href="http://inventwithpython.com/blog/2011/09/17/new-game-source-code-simon-gesture-simon-clone-with-mouse-gestures/">Simon Gesture</a>)</li>
<li><strong>Spinning Plates</strong> – The player’s attention must be split between multiple simultaneous objectives. Often objects need “recharging” as they deplete at different rates. (Example: Rampart, Diner Dash)</li>
<li><strong>Teleports</strong> – Rather than moving conventionally, the player can teleport to different parts of the screen. The player may or may not be able to control where the teleport goes.</li>
<li><strong>Squad</strong> – Rather than a single character, the player controls multiple characters that must work together to achieve an objective. (Example: Syndicate, <a href="http://www.ferryhalim.com/orisinal/g3/tea.htm" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','http://www.ferryhalim.com']);" rel="noreferrer">A Daily Cup of Tea</a>)</li>
<li><strong>Scarce Resource</strong> – There is an easy way for the player to fight enemies/score points, but it is a scarce resource. The player needs to balance hoarding the resource vs. using them effectively. (Example: Lunar Lander, Many zombie games)</li>
<li><strong>Jumping</strong> – Almost always combined with gravity, the player must jump from one platform to another and not fall. (Example: Mario)</li>
<li><strong>Hidden Image / Where’s Waldo?</strong> – Like “Information Overload”, but the player is looking at a complex scene for a particular item, clue, or pattern. (Example: Many point-and-click adventure games)</li>
<li><strong>Timed</strong> – The player must achieve a task within a time limited. Some power ups or achievements can extend the time.</li>
<li><strong>Protect a Target</strong> – The player must not only stay alive themselves, but protect a target from enemies. The target may or may not be moving. (Example: Missile Command)</li>
<li><strong>Undirected Exploration</strong> – The player has a large map that they can wander freely around, although obtaining items or solving clues will help open up new areas. The player often backtracks through places. (Example: Cave Story, Metroid, Castlevania)</li>
<li><strong>Bullet Hell</strong> – The player is surrounded by a very large number of enemies or deadly objects. They are easy to handle individually but difficult in large numbers. (Example: “Bullet hell” games, many zombie games)</li>
<li><strong>Buy Low, Sell High</strong> – The game has different items that have changing value. The player must identify when it is good to acquire items when they are plentiful or cheap, and when it is good to sell them when they are scarce or valuable.</li>
<li><strong>Brawling</strong> – The player’s character has several different types of attacks (mostly melee, not ranged) to use against one or multiple enemies. (Example: Street Fighter 2, Double Dragon, River City Ransom)</li>
<li><strong>Dialogue Tree</strong> – When the player talks to other characters, they select one of many possible things to say. (Example: Many RPGs)</li>
<li><strong>Building</strong> – The player can place different types of building blocks anywhere in the world to construct objects. (Example: SimCity, Minecraft, Rampart)</li>
<li><strong>Race</strong> – The player must reach a place before the opponent does. Like “Timed” except the enemy as a “timer” can be slowed down by the player’s actions, or there may be multiple enemies being raced against.</li>
</ul>
</div>
<p class="postmetadata">Posted by <a href="http://inventwithpython.com/blog/author/admin/" title="Posts by Al Sweigart" rel="author">Al Sweigart</a> at 10:37 am on July 30th, 2012. <a href="http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/#comments" class="comments-link" title="Comment on Need a Game Idea? A List of Game Mechanics and a Random Mechanic Mixer.">3 comments... »</a><br>
Categories: <a href="http://inventwithpython.com/blog/category/uncategorized/" title="View all posts in Uncategorized" rel="category tag">Uncategorized</a>. </p>
</div>
<h3 id="comments">3 comments.</h3>
<ol class="commentlist">
<li id="comment-9152">
<img alt="" src="http://1.gravatar.com/avatar/b525bd392fda602f8ff8377e271cb662?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G" class="avatar avatar-32 photo" height="32" width="32"> <p>So this is basically the “Ludum Dare Construction Set”?</p>
<p class="commentmetadata">Posted by Tim Lesher on <a href="http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/#comment-9152" title="Permanent Link to this comment">July 30th, 2012</a>. </p>
</li>
<li id="comment-9645">
<p>[...] Hitting a wall with your game design? Try this random game mechanic generator. [...]</p>
<p class="commentmetadata">Posted by <a href="http://www.gamerwife.com/2012/08/03/friday-im-in-love-moon-intern/" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://www.gamerwife.com']);" rel="noreferrer" class="url">Friday I'm In Love: Moon Intern & Gaming With OCD - Gamerwife</a> on <a href="http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/#comment-9645" title="Permanent Link to this comment">August 3rd, 2012</a>. </p>
</li>
<li id="comment-10746">
<img alt="" src="http://0.gravatar.com/avatar/a912d18fd98fad7d153f81375fea6139?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G" class="avatar avatar-32 photo" height="32" width="32"> <p>Very nice. Now i wait for the game idea generator that also does the programming…</p>
<p class="commentmetadata">Posted by <a href="http://thepythongamebook.com/" onclick="javascript:_gaq.push(['_trackEvent','outbound-commentauthor','http://ThePythonGameBook.com']);" rel="noreferrer" class="url">Horst JENS</a> on <a href="http://inventwithpython.com/blog/2012/07/30/need-a-game-idea-a-list-of-game-mechanics-and-a-random-mechanic-mixer/#comment-10746" title="Permanent Link to this comment">August 19th, 2012</a>. </p>
</li>
</ol>
<h3 id="respond">Post a comment.</h3>
<form action="http://inventwithpython.com/blog/wp-comments-post.php" method="post" id="commentform">
<p><input type="text" name="author" id="author" value="" size="22" tabindex="1" style="background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVQ4EaVTO26DQBD1ohQWaS2lg9JybZ+AK7hNwx2oIoVf4UPQ0Lj1FdKktevIpel8AKNUkDcWMxpgSaIEaTVv3sx7uztiTdu2s/98DywOw3Dued4Who/M2aIx5lZV1aEsy0+qiwHELyi+Ytl0PQ69SxAxkWIA4RMRTdNsKE59juMcuZd6xIAFeZ6fGCdJ8kY4y7KAuTRNGd7jyEBXsdOPE3a0QGPsniOnnYMO67LgSQN9T41F2QGrQRRFCwyzoIF2qyBuKKbcOgPXdVeY9rMWgNsjf9ccYesJhk3f5dYT1HX9gR0LLQR30TnjkUEcx2uIuS4RnI+aj6sJR0AM8AaumPaM/rRehyWhXqbFAA9kh3/8/NvHxAYGAsZ/il8IalkCLBfNVAAAAABJRU5ErkJggg==); background-attachment: scroll; background-position: 100% 50%; background-repeat: no-repeat;">
<label for="author"><small>Name (required)</small></label></p>
<p><input type="text" name="email" id="email" value="" size="22" tabindex="2">
<label for="email"><small>Mail (will not be published) (required)</small></label></p>
<p><input type="text" name="url" id="url" value="" size="22" tabindex="3">
<label for="url"><small>Website</small></label></p>
<p><textarea name="comment" id="comment" cols="65" rows="10" tabindex="4"></textarea></p>
<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment">
<input type="hidden" name="comment_post_ID" value="710">
</p>
<p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="137a1323a9"></p><div><input type="hidden" id="wphc_value" name="wphc_value" value="1947947852"></div><noscript><div><small>Wordpress Hashcash needs javascript to work, but your browser has javascript disabled. Your comment will be queued in Akismet!</small></div></noscript><script type="text/javascript" src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/M9RPzM4szk0t0Y_PzEvWT8svygUA.js"></script>
<p style="display: none;"></p>
<input type="hidden" id="ak_js" name="ak_js" value="1404696192676"></form>
</div>
<div id="sidebar">
<ul>
<li>
<a href="http://inventwithpython.com/hacking/chapters"><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/cover_hackingciphers_thumb.png" style="width: 160px; border: solid black 1px;"></a>
</li>
<li><a href="http://www.amazon.com/gp/product/1482614375/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1482614375&linkCode=as2&tag=playwithpyth-20" onclick="javascript: pageTracker._trackPageview('/affiliate_program_hacking_blogsidbar.link');" style="color: #0000AA">Buy the Book on Amazon</a>
</li>
<li><a href="http://inventwithpython.com/hacking/chapters" style="color: #0000AA">Read It Online for Free</a></li>
<li><a href="http://inventwithpython.com/HackingSecretCiphersWithPython.pdf?ce84c4" onclick="javascript: pageTracker._trackPageview('/hackingciphers.pdf'); " style="color: #0000AA">Download the PDF for Free <img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/Icon_pdf.gif"></a></li>
<li>
<a href="http://inventwithpython.com/chapters"><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/cover_thumb2.jpg" style="width: 160px; border: solid black 1px;"></a>
</li>
<li><a href="http://www.amazon.com/gp/product/0982106017?ie=UTF8&tag=playwithpyth-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0982106017" onclick="javascript: pageTracker._trackPageview('/affiliate_program_invent_blogsidbar.link');" style="color: #00AA00">Buy the Book on Amazon</a>
</li>
<li><a href="http://inventwithpython.com/chapters" style="color: #00AA00">Read It Online for Free</a></li>
<li><a href="http://inventwithpython.com/IYOCGwP_book1.pdf?ce84c4" onclick="javascript: pageTracker._trackPageview('/IYOCGwP_book1.pdf'); " style="color: #00AA00">Download the PDF for Free <img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/Icon_pdf.gif"></a></li>
<li>
<a href="http://inventwithpython.com/pygame/chapters"><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/cover_makinggames_thumb.png" style="width: 160px; border: solid black 1px;"></a>
</li>
<li><a href="http://www.amazon.com/Making-Games-Python-Pygame-Sweigart/dp/1469901730?ie=UTF8&tag=playwithpyth-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0982106017" onclick="javascript: pageTracker._trackPageview('/affiliate_program_pygame_blogsidbar.link');" style="color: #ce0000">Buy the Book on Amazon</a>
</li>
<li><a href="http://inventwithpython.com/pygame/chapters" style="color: #ce0000">Read It Online for Free</a></li>
<li><a href="http://inventwithpython.com/makinggames.pdf?ce84c4" onclick="javascript: pageTracker._trackPageview('/makinggames.pdf'); " style="color: #ce0000">Download the PDF for Free <img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/Icon_pdf.gif"></a></li>
<li><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://inventwithpython.com" data-text="Learn programming by making games: "Invent Your Own Computer Games with Python"" data-count="horizontal" data-via="AlSweigart" rel="noreferrer" style="display: block;"><iframe style="width: 30px; height: 19px; border: 0px;"></iframe></a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></li>
<li>Like the free electronic versions? Click the "Donate" button!</li>
<li><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
<input type="image" src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/pixel.gif" width="1" height="1">
</form>
</li>
<li><a href="http://inventwithpython.com/blog/about-the-author-contact/"><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/glasses_pushup_sidebar.jpg" style="width: 160px;"><br>
Al Sweigart</a> is a software developer in San Francisco.</li>
<li id="search">
<form method="get" id="searchform" action="http://inventwithpython.com/blog/">
<div>
<input type="text" value="" name="s" id="s">
<input type="submit" id="searchsubmit" value="Search">
</div>
</form>
</li>
<li class="pagenav"><h2>Pages</h2><ul><li class="page_item page-item-513"><a href="http://inventwithpython.com/blog/about-the-author-contact/">About the Author – Contact</a></li>
</ul></li>
<li id="archives">
<h2>Archives</h2>
<ul>
<li><a href="http://inventwithpython.com/blog/2014/">2014</a></li>
<li><a href="http://inventwithpython.com/blog/2013/">2013</a></li>
<li><a href="http://inventwithpython.com/blog/2012/">2012</a></li>
<li><a href="http://inventwithpython.com/blog/2011/">2011</a></li>
<li><a href="http://inventwithpython.com/blog/2010/">2010</a></li>
<li><a href="http://inventwithpython.com/blog/2009/">2009</a></li>
</ul>
</li>
<li class="categories"><h2>Categories</h2><ul> <li class="cat-item cat-item-5"><a href="http://inventwithpython.com/blog/category/blog/" title="View all posts filed under Blog">Blog</a> (17)
</li>
<li class="cat-item cat-item-4"><a href="http://inventwithpython.com/blog/category/code-comments/" title="View all posts filed under Code Comments">Code Comments</a> (7)
</li>
<li class="cat-item cat-item-6"><a href="http://inventwithpython.com/blog/category/games/" title="View all posts filed under Games">Games</a> (16)
</li>
<li class="cat-item cat-item-10"><a href="http://inventwithpython.com/blog/category/lets-create-software/" title="View all posts filed under Let's Create Software">Let's Create Software</a> (1)
</li>
<li class="cat-item cat-item-3"><a href="http://inventwithpython.com/blog/category/news/" title="View all posts filed under News">News</a> (15)
</li>
<li class="cat-item cat-item-8"><a href="http://inventwithpython.com/blog/category/source-code-makeover/" title="View all posts filed under Source Code Makeover">Source Code Makeover</a> (5)
</li>
<li class="cat-item cat-item-7"><a href="http://inventwithpython.com/blog/category/tutorials/" title="View all posts filed under Tutorials">Tutorials</a> (9)
</li>
<li class="cat-item cat-item-1"><a href="http://inventwithpython.com/blog/category/uncategorized/" title="View all posts filed under Uncategorized">Uncategorized</a> (25)
</li>
<li class="cat-item cat-item-9"><a href="http://inventwithpython.com/blog/category/writing/" title="View all posts filed under Writing">Writing</a> (1)
</li>
</ul></li>
<li><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/rss.png"> <a href="http://inventwithpython.com/blog/feed/">RSS 2.0 Feed</a></li>
<li><img src="./The “Invent with Python” Blog — Need a Game Idea A List of Game Mechanics and a Random Mechanic Mixer._files/rss.png"> <a href="http://inventwithpython.com/blog/comments/feed/">RSS 2.0 Comments Feed</a></li>
</ul>
</div>
<div id="footer">
<p>The “Invent with Python” Blog is powered by <a href="http://wordpress.org/" rel="noreferrer">WordPress</a> and styled by <a href="http://www.acroyear2.org/infimum/" rel="noreferrer">Infimum</a>. <a href="http://validator.w3.org/check/referer" title="Validate the XHTML source for this page" rel="noreferrer">Valid <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a> and <a href="http://jigsaw.w3.org/css-validator/check/referer" title="Validate the CSS stylesheet for this page" rel="noreferrer">valid <abbr title="Cascading StyleSheets">CSS</abbr></a>. <a href="http://inventwithpython.com/blog/wp-login.php">Log in</a>. </p>
</div>
</div>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/
Minified using disk
Page Caching using disk: enhanced
Database Caching using disk
Object Caching 398/438 objects using disk
Served from: inventwithpython.com @ 2014-07-06 17:46:07 by W3 Total Cache --><script id="hiddenlpsubmitdiv" style="display: none;"></script><script>try{for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ d.innerText=i; } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }}catch(e){}</script></body></html>