tag:blogger.com,1999:blog-280477592024-03-19T10:50:25.112-07:00Game CreatorCovering topics including coding, getting into games, indie game development, and a bit of rand().Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.comBlogger140125tag:blogger.com,1999:blog-28047759.post-57660506502702559472020-05-25T11:23:00.004-07:002020-05-25T12:52:45.225-07:00Playing Music and Games over Zoom<div>
If you're presenting a music or a game over Zoom or a similar video conferencing application, you often want to mix your 'PC audio' with your microphone. However, you normally end up just sending the audio from your microphone, and others can't hear your PC audio. You can turn your PC up really loud, so your microphone picks it up, but that doesn't work well.</div>
<div>
<br /></div>
<div>
Here's how to mix your PC audio and microphone better on Windows 10...</div>
<div>
<ul>
<li>Enable 'Stereo Mix'</li>
<ul>
<li>'Stereo Mix' basically allows you to use your 'PC audio output' as a 'microphone' for others to listen to.</li>
<li>Right click the speaker icon near the clock</li>
<li>Select 'Open Sound Settings'</li>
<li>Under 'Input', click 'Manage Sound Devices'</li>
<li>Look for 'Stereo Mix', and if it's disabled, enable it</li>
<li>In Zoom, you will choose 'Stereo Mix' as your 'Microphone'</li>
<li>This means that the sound you send out over Zoom is the 'stereo mix' that your PC is putting out - i.e. what comes out of your PC speakers</li>
</ul>
<li>Enable 'Listen to this device'</li>
<ul>
<li>If you were to use Zoom now, and played music from your PC, the viewers would just hear your music, but wouldn't hear you speaking. What we need to do is tell Windows to output your mic to your PC speakers too, mixed together with the music.</li>
<li></li>
<li>Right click the speaker icon near the clock</li>
<li>Select 'Open Sound Settings'</li>
<li>Under 'Input', make sure your head mic is selected.</li>
<li>Click 'Device Properties'</li>
<li>Click 'Additional Device Properties'</li>
<li>Click on the 'Listen' tab</li>
<li>Check the 'Listen to this device' box</li>
<li>Click Apply</li>
<li>You should now hear an 'echo' from your PC speakers when you speak.</li>
</ul>
<li>Advanced Zoom Settings</li>
<ul>
<li>By default, Zoom does echo cancellation and background audio removal. These are great for avoiding some common problems with audio conferencing, but they can also introduce problems. I've found that turning on 'Original Audio' (i.e. turning off these features) improves the quality of music.</li>
<li>Bring up the Zoom Audio Settings</li>
<li>Click the Advanced button in the bottom right corner (I didn't see it at first)</li>
<li>Check 'Show in-meeting option to "Enable Original Sound" from microphone'</li>
<li>(You could also play with the other settings in here)</li>
<li>Close settings</li>
<li>Now, back in the main window there's a button to turn 'original sound' on or off. Try both settings and see if there's a difference.</li>
</ul>
<li>Tuning the volume</li>
<ul>
<li>Viewers on Zoom should now hear high quality music, mixed with your voice from your mic</li>
<li>One might be too loud. Changing the Windows volume would change both your music and your mic output together, which won't help. You probably want your Windows volume on high. </li>
<li>Instead you need to individually control how loud your music and your microphone are.</li>
<li></li>
<li>Right click the speaker icon near the clock</li>
<li>Select 'Open Volume Mixer'</li>
<li>Find your music program and your microphone, and use the sliders to adjust the volume of each, while asking your viewers which one needs to be louder/quieter</li>
<li>If you have your PC speakers too loud, you might get feedback and echo noises. I recommend having them just loud enough for you to hear, and also try wearing headphones to prevent the noise from going back into the mic.</li>
</ul>
</ul>
<div>
When your broadcast is over, you'll want to go through the 'Listen to this device' steps again, but turn off the 'Listen to this device' checkbox.</div>
</div>
Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-80839776969204063322017-03-07T05:51:00.000-08:002017-03-07T05:51:33.510-08:00TV Meltdown - Free Cable TVLike TV, and live in the US?
Please check out my new website <a href="http://tvmeltdown.com/">TVMeltdown.com</a>
You can watch 100+ high quality TV shows from major US networks.
Subscribe to shows, and they'll automatically add to your queue.
It’s free!
Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-17188339220906148652015-12-27T13:27:00.002-08:002015-12-27T13:27:48.340-08:00Learn to code with Minecraft and Star Wars<div class="separator" style="clear: both; text-align: center;">
<a href="http://cdn.collider.com/wp-content/uploads/2015/04/star-wars-7-force-awakens-r2d2-bb8-600x600.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://cdn.collider.com/wp-content/uploads/2015/04/star-wars-7-force-awakens-r2d2-bb8-600x600.jpeg" height="200" width="200" /></a></div>
There's a great set of 'Hour of Code' exercises at <a href="http://studio.code.org/">studio.code.org</a><br />
They're great for kids, or anyone looking to get started.<br />
Like Scratch, they work by dragging blocks together. The experience is delivered very well, with videos and lots of explanation.<br />
<br />
The <a href="https://code.org/api/hour/begin/mc" target="_blank">Minecraft</a> exercise is good for any kid who's interested in Minecraft. It teaches loops and 'if' statements.<br />
The <a href="https://code.org/starwars" target="_blank">Star Wars</a> exercise is great too. You control BB8 (the round droid from the new movie) and learn about events.<br />
I recommend doing both exercises, with Minecraft first.Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com2tag:blogger.com,1999:blog-28047759.post-71057783395796362142015-04-03T10:32:00.002-07:002015-05-02T10:06:57.151-07:00DMV Fast Lane<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal">
The DMV is ridiculous. </div>
<br />
<ul>
<li>Several DMVs in LA have closed</li>
<li>If
you schedule an appointment online you have to wait months</li>
<li>If you turn up
you can be waiting for 8 hours to be seen (not an exaggeration).</li>
</ul>
<br />
<div class="MsoNormal">
<b>The DMV should have a paid ‘fast lane’. </b></div>
<div class="MsoNormal">
<b>Using the Fast Lane might cost you $20, but you’re
in and out in 20 minutes.</b></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The money generated could be used to open more DMVs and
generally improve services for all DMV customers.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Like the freeway
fast lane, the cost of using the fast lane could vary based on demand.</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
Bonus idea:<span style="mso-spacerun: yes;"> </span>DMV staff
should be paid an monthly bonus based on customer satisfaction and customers
served.</div>
Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-73400518643495357442014-09-03T17:32:00.001-07:002014-09-03T17:33:51.073-07:00Weight Loss for Game ProgrammersWhen I started my first job after University, I got fat.<br />
Not crazy fat, but my trouser size went up 4 inches, and my friends were joking about it behind my back. (Thanks guys) <br />I wasn't aware of it until someone pointed it out. I then recognized that I didn't like the trajectory I was on, so...<br />
First I did some profiling:<br />
<ul>
<li>At University I walked about 90 minutes a day. Now I got the bus to work and walked about 10 minutes a day.</li>
<li>Due to the lack of funds at University, I used to eat less fatty food. The company I was at was next to a fantastic sandwich shop, where I would regularly buy colossal meat sandwiches which would make Vikings envious. Then I'd often get take out in the evening.</li>
<li>At work there was free soda, and I had a five cans a day Coke habit.</li>
</ul>
Then I made a few optimizations:<br />
<ul>
<li>I had to walk either to work or from work once per day. If I get the bus in the morning, I had to walk home at night.</li>
<li>Instead of Coke, I would learn to love the fizzy lemon water instead.</li>
<li>I could only have Viking style sandwiches on Friday, and the other days I'd have turkey or tuna.</li>
<li>I had to do boot camp class at the gym once per week.</li>
</ul>
A few months later I was back to my normal weight. I think this worked because:<br />
<ul>
<li>The 'If I don't walk in the morning, I walk at night' rule gave me options.</li>
<li>The alternative sandwiches and soda were pretty good in their own right. I wasn't too draconian.</li>
<li>The Viking Friday lunch gave me something to look forward to.</li>
<li>Going to the gym once a week was achievable and didn't get boring.</li>
</ul>
Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-19208586093364336922014-01-10T18:16:00.001-08:002014-01-10T18:16:30.920-08:00GPIO on PCRecently I've been thinking of starting to play with electronics.
Devices like the Raspberry Pi and Arduino have 'GPIO' (General Purpose Input Output) pins. You can write code on the device which sets each pin to be on or off. You then connect the pins to circuits of your creation. The simplest circuit would be something like using a GPIO pin to light an LED. I find this exciting, as it allows your code to reach out of the 'virtual world' inside the computer, and do things in the real world.<br />
<br />
After some thought and research, I found that Numato have GPIO boards which work with PC's. You plug their GPIO USB device into your PC and then can control the pins from your choice of many different languages (you need to use an API which can write to a serial bus).<br />
<br />
I'm excited by PC based GPIO programming because:<br />
<ul>
<li>The project I'm thinking of working on does not require a tiny portable computer.</li>
<li>I get to work in Visual Studio in a Windows environment, which is what I'm used to.</li>
<li>While Raspberry Pi and Arduino are not expensive, the $20 USB device is cheaper :)</li>
</ul>
Numato has four different GPIO devices (<a href="http://numato.com/8-channel-usb-gpio-module">1</a>, <a href="http://numato.com/16-channel-usb-gpio-module">2</a>, <a href="http://numato.com/32-channel-usb-gpio-module">3</a>, <a href="http://numato.com/8-channel-bluetooth-gpio-module">4</a>). This week they have a <a href="http://numato.cc/content/freebie-week-8-channel-bluetooth-gpio-module">giveaway to win the bluetooth version</a>.<br />
<br />Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-12747436763790782492013-11-06T12:10:00.001-08:002013-11-06T12:11:14.210-08:00Sorting AlgorithmsHere’s a great video, which visualizes different sorting algorithms.<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/kPRA0W1kECg" width="400"></iframe></div>
Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-73131617320599545032013-03-23T12:28:00.001-07:002013-03-23T12:29:14.410-07:00Project EulerSomething I constantly remind my students is to keep coding all the time, and working on <a href="http://gamecreator.blogspot.com/2006/06/getting-game-programming-job-tip-2.html">demos</a> in their spare time.<br />
<br />
If you have trouble thinking of demos to make, and want some programming challenges, you could try <a href="http://projecteuler.net/">Project Euler</a>.<br />
<br />
While it's not games specific, if you just want to exercise your grey cells and practice some coding, it's a good place to start.Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-16377668951230422432012-03-18T18:29:00.001-07:002012-03-18T18:29:56.860-07:00Your ass – please put it away<p><img src="http://fabiobossard.files.wordpress.com/2009/11/butt_crack_joe_the_plumber1.jpg" width="159" height="196" />Plumbers crack, it seems, is not just for plumbers. Somewhere between the free soda, trendy low cut jeans, and tightening T-shirts, it seems that game programmers are suffering from this too.</p> <p>Please, take a moment, without adjusting your clothes or how you are sitting, just reach your hand back and feel around. If you feel any exposed skin, or crack, then you need to put it away.</p> <p>Suggestions</p> <ul> <li>Don’t wear low cut jeans to work. Save them for going out.</li> <li>Get some T-shirts which are longer in the body.</li> <li>Wear a long shirt, sweater or jacket.</li> <li>Get a tattoo that looks like a pair of jeans.</li> </ul> <p>Thank you for making the world a better place.</p> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-40820494605230374222011-10-13T09:54:00.001-07:002011-10-13T09:55:42.036-07:00About my Career as a Games ProgrammerA student from a local college asked me some questions about my job. I thought I’d reprint my answers here.<br />
<strong>So, What is your position at Heavy Iron and what are your specific duties?</strong><br />
<ul>
<li>I am the ‘Studio Technical Director’. </li>
<li>I am the head of the programming department. </li>
<li>I spend some of my time programming the game, and tools we use to make the game. </li>
<li>I work with other senior programmers and other departments (e.g. art, animation, sound, design) to work out what new features we should implement in our game/tools, and how to implement them. </li>
<li>I spend a little time in management meetings, where we discuss future projects, hiring of staff and other studio management things. </li>
</ul>
<strong>What skills, education, experience, and knowledge are required to qualify for your position?</strong><br />
<ul>
<li>I’ll start by giving my history: <ul>
<li>I grew up in England. </li>
<li>I first got interested in programming when I was about 10 years old. I was given a computer which could run games, but you could also program ‘basic’ on. </li>
<li>Through school, I chose classes with computers in whenever I could. </li>
<li>I went to University and got a ‘Bachelors of Engineering in Computer Science’. </li>
<li>After University I got a job as a ‘junior programmer’ at a games company. </li>
<li>I’ve now been working for 15 years, at four different companies. The last 9 years, I’ve been at Heavy Iron. </li>
<li>I gradually became better and better at my job, and rose up to mid-level programmer, senior programmer, technical director and now studio technical director. At one point I was ‘lead programmer’ on a couple of games, and now the lead programmers report to me. (Lead programmers are the ones who do a lot of the decision making about how a game gets built – it’s a tough job, but fun too.) </li>
</ul>
</li>
<li>To get a job as a programmer, it’s best to have a college degree in computer programming – specifically in C/C++ for the kind of games we make (PS3, Xbox 360, Wii) and several platforms which we don’t currently make games for (PC, Mac, iOS/iPhone/iPad, PSP, 3DS, Wii U). </li>
<li>In terms of skills and experience for my current position, I’d say you need many years of experience of programming games, and also a tendency to organize people, a curiosity for how things work, and a drive to make things and do the best job you can. </li>
<li>I tend to think that students who like and do well at math and physics, tend to make good programmers. </li>
</ul>
<strong>What is your work environment like?</strong><br />
<ul>
<li>We work on one floor of an office building. Most people sit in ‘cubes’, and some people sit in one or two person offices. </li>
<li>Compared to a ‘normal office’, we tend to have more ‘tech’ sitting around – monitors, TV’s, game consoles. Also because the industry has quite a lot of young / creative types, there is a fair amount of decoration – game posters, character models from TV/Movies/Games. </li>
<li>The group of people are fun to work with, and are mainly in the 20..40 years of age range. It’s mainly guys, but there are a few gals around too. </li>
</ul>
<strong>Are you under contract?</strong><br />
<ul>
<li>Yes. I am a full time employee, and so are most of the other people here. </li>
<li>A few people are on shorter term contracts, but (so far at least) the industry tends to mainly consist of full time positions. </li>
</ul>
<strong>Do you get any benefits?</strong><br />
<ul>
<li>Yes. Health, dental, vision, life insurance, disability. The company pays most of it, but I also pay some. It’s automatically taken from my paycheck. </li>
</ul>
<strong>What do you like the most/least about your job?</strong><br />
<ul>
<li>Most <ul>
<li>I love programming. I do it at work, and then I go home and do it for my hobby / for fun. </li>
<li>I really like working with the nice people at work. Working as a team and making games is fun. </li>
<li>I like making cool tools (programs) which we use for making games. </li>
<li>I also teach programming at a local college one night a week. I like helping other programmers get into the industry, and spreading my passion for game coding. </li>
</ul>
</li>
<li>Least <ul>
<li>Being a manager comes with some dull tasks, like approving time-cards, sending out reminders to people that they need to keep the place clean, etc. </li>
<li>Again, as a manager, you sometimes need to tell people that there are problems with their work, or their behavior. It’s never fun to tell someone bad things like this. </li>
</ul>
</li>
</ul>
<strong>What future changes do you anticipate in this field?</strong><br />
<ul>
<li>There’s a current shift going on from consoles like Xbox 360 towards mobile devices like the iPhone, and web games. This means companies and workers need to ‘stay agile’ and change with consumer demand. </li>
<li>I still think that C/C++ is relevant and useful (e.g. it’s needed for iPhone), but we’ll probably see more game programmers transitioning over to web technologies like Flash and JavaScript. </li>
<li>That’s one fun thing about the game industry though – there’s always something new coming at you, to keep things fresh. </li>
</ul>
<strong>What are the general application procedures for positions such as the one I will be seeking?</strong><br />
<ul>
<li>Get a degree. </li>
<li>If you can, get a programming internship. Try and closely match what you want to do for a living – e.g. working in C++ at a games company.</li>
<li>Write your resume, cover letter, and optionally create a website which shows demos of your work. </li>
<li>Email it in to companies. </li>
<li>If they are interested, you will then go through their interview process. This might include a phone interview, a written test, and an in-house interview. </li>
</ul>
<strong>What do you think is important to show in a resume for a position such as yours?</strong><br />
<ul>
<li>For a junior programmer position, I expect to see a degree, that you’ve been programming in C/C++, and then hopefully some evidence that you’re really good and committed. </li>
<li>It’s also nice to see some game-centric skills like doing GPU shader work, physics simulation, writing games, and making personal projects.</li>
</ul>
<strong>What advice do you have for me about preparing and interviewing successfully?</strong><br />
<ul>
<li>Code all the time. Become an awesome C/C++ programmer, and you can’t go far wrong. </li>
<li>If there’s an area you know you are weak in, or don’t understand, make a point of learning that area and becoming strong in it. Don’t just ‘work around’ your weaknesses. E.g. if you don’t understand C pointers – make it a point to get good at them. </li>
<li>If you graduate and don’t yet have a job lined up, don’t stop coding. Code more than ever. Otherwise you quickly forget things, and your chances of getting a job decline over time.</li>
<li>I have many other tips on my blog <a href="http://gamecreator.blogspot.com/search/label/Getting%20a%20games%20job" target="_blank">here</a> (see the older posts with this tag first). </li>
</ul>
<strong>Bonus question: Have you or any of your coworkers thought about going indie?</strong><br />
<ul>
<li>Hah. I think we all do. Perhaps once a month :) </li>
<li>It’s a tough road though. No regular pay checks, no benefits, a lot of competition, and it can be harder than you might think to make a complete game and ship it. </li>
<li>It’s certainly possible, but I recommend getting a ‘proper job’ first to hone your skills and better appreciate the industry. </li>
</ul>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-27109243403747677352011-07-25T22:34:00.001-07:002011-07-25T22:34:33.334-07:00Tweaking Values In Game – AntTweakBar<p>A common problem when working on games and other programs is that you end up with some magic numbers in code which need lots of tuning. If you don’t have a good solution to the problem, you end up repeatedly making changes, recompiling, running, and then repeating.</p> <p>Wouldn’t it be great if someone made a drop-in system which gave a UI for tweaking values at run time? Well, Philippe Decaudin has done just that, and has written <a href="http://www.antisphere.com/Wiki/tools:anttweakbar">AntTweakBar</a>.</p> <p>I just used it. It dropped in with just a few lines of code, and looks/works great in game. Now it just takes one line of code for each variable I want to tweak in game. I’m very impressed. Check out this video of AntTweakBar in use.</p> <p>(This is for C/C++ by the way.)</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:fb11db0e-acf8-43dd-8aa4-0df70da9a57c" class="wlWriterEditableSmartContent"><div id="e1716ab4-042f-42bd-8f54-6924e4083fcd" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=OEpsG2PGi-s" target="_new"><img src="http://lh6.ggpht.com/-5Gbi6ybSjQI/Ti5R56pAmYI/AAAAAAAAEJU/JNGMYRug8EQ/video2802bb5f5cce%25255B9%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e1716ab4-042f-42bd-8f54-6924e4083fcd'); downlevelDiv.innerHTML = "<div><object width=\"448\" height=\"252\"><param name=\"movie\" value=\"http://www.youtube.com/v/OEpsG2PGi-s?hl=en&hd=1\"><\/param><embed src=\"http://www.youtube.com/v/OEpsG2PGi-s?hl=en&hd=1\" type=\"application/x-shockwave-flash\" width=\"448\" height=\"252\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-35157016074552949272011-05-24T08:50:00.001-07:002011-10-13T09:56:15.583-07:008 Hygiene Tips for Programmers<a href="http://goinglikesixty.com/wp-content/uploads/2009/09/Deodorant-Tester.jpg"><img alt="" border="0" src="http://goinglikesixty.com/wp-content/uploads/2009/09/Deodorant-Tester.jpg" style="cursor: hand; cursor: pointer; float: left; height: 167px; margin: 0 10px 10px 0; width: 249px;" /></a><br />
Being around programmers for a long time has shown me that some don’t smell so good. <br />
<div>
<br /></div>
<div>
Remember – by the time you can smell yourself, it’s already way too late for those around you.<br />
<br />
I invite you to check your habits against my minimum hygiene requirements:<br />
<ul>
<li>Shower daily. Use soap or body wash. <ul> <ul>
<li>Make sure your feet, pits, groin and ass get the brunt of the soap offensive. </li>
<li>Wash your hair too. At least every other day. </li>
</ul>
</ul>
</li>
<li>Socks, Underpants and T-Shirt – Change <em>daily</em>. (And by change, I mean do not wear again until washed.) </li>
<li>Jeans and Sweater are a bit tricky, but change a bare minimum of once a week. Twice would be ideal, or three times if you're the queen of England.</li>
<li>Coats can need washing too sometimes. It really depends on your relationship with your coat. If it gets sweaty when you do, then eye it with suspicion and wash it from time to time. </li>
<li>If you don’t wear socks or change them daily, your shoes smell. If they smell, give them the Viking burial, buy some new ones and wear socks this time. </li>
<li>If your finger or toe nails get 2..3mm long, cut them. </li>
<li>Brush your teeth well in the morning and night. Use floss to avoid losing teeth. Brush your tongue too, as this reduces bad breath. If you like coffee, then may I recommend adding some breath mints to this.</li>
<li>Put deodorant on each morning. If this is new to you, go and buy a can of Axe (or Lynx for UK folks). How do you pick the right one? What if the one you get doesn’t smell good? <ul> <ul>
<li>Remember that even the worst smelling can of Lynx smells ten times better than you do. </li>
<li>You can use the normal person approach of spraying each on a new body part, sniffing and choosing the right one. Though the reality is that this approach is frustrating and doesn’t work. </li>
<li>Instead either pick the left-most one, the one with the coolest name, the one with your favorite color, or buy one of each to save yourself from coming back (and also injecting some much needed variety into your life). </li>
</ul>
</ul>
</li>
</ul>
Bonus stylin’ tip – Hair styles:<br />
<ul>
<li>Side partings don’t look good and never did. Your mum likes them, and that’s it. </li>
<li>If you’ve had the same hair style since you were 15, it’s time to review it. </li>
<li>Girls like pony tails and mullets. Oh wait, no, nobody likes them. Time to change.</li>
<li>If you are going bald, do not hide it, and get your hair cut short. </li>
<li>If you think your hairstyle may not be contemporary / cool: <ul> <ul>
<li>Strike up a conversation with a female in the office who dresses fashionably. </li>
<li>Repeat after me “I’ve been thinking about changing how I get my hair cut. How do you think I should get it done?”. </li>
<li>And if that doesn’t work out, just sit down in the chair at Super Cuts or Fantastic Sam's and say that you want a new hair style that’s short, looks OK and requires zero maintenance. The hair dresser might as you a couple of questions, to which you answer “I have no idea. Just do what you think will look good.”. When they’re done, ask “So what do I ask for to get that hairstyle again?”, and give them a $10 tip because you feel giddy. (I say Super Cuts or Fantastic Sam's for American programmers – if not in America, just make sure your hairdresser is female or ‘rather flamboyant’) </li>
</ul>
</ul>
</li>
</ul>
There now. If you implement all of the above, you can hold your head and arms up high, with little fear of stinking up the place.</div>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-24642466949352078782011-03-23T10:06:00.001-07:002011-10-13T09:56:34.346-07:00How to get a job in videogamesOccasionally someone will ask ‘how can I get a job in videogames?’ and not know what specific type of work is available. Here’s a list of the main jobs.<br />
<strong>Programmer</strong><br />
Programmers write code (C/C++/Java/C# etc). To be a programmer you generally need to go to college and major in Software Engineering or a similar field. You should also program for fun in your spare time. Programmers tend to be good at math and physics.<br />
If you’ve never programmed before, and wonder what it’s like, install <a href="http://msdn.microsoft.com/en-us/beginner/ff384126.aspx" target="_blank">Small Basic</a> and work through the guide which comes with it. Don’t worry – it’s simple enough for kids, so an adult can do it with a little effort :)<br />
Game companies have a large staff of programmers. The high technical barrier to entry means that there are fewer qualified applicants and higher resulting pay than some of the other jobs below.<br />
The main reason I started this blog was to help programmers get into the game industry. <a href="http://gamecreator.blogspot.com/search/label/Getting%20a%20games%20job" target="_blank">See this tag</a> for my tips – read the oldest posts first.<br />
<strong>Designer</strong><br />
Designers use a level editor to build the levels of the game – placing monsters, ammo, and setting up ‘events’ which happen. They also design the game as a whole and work with the other departments to realize that vision.<br />
I’ve written before about <a href="http://gamecreator.blogspot.com/2006/11/whats-game-designer_24.html" target="_blank">what a designer does</a> and how to go about <a href="http://gamecreator.blogspot.com/2006/12/how-to-get-job-as-game-designer.html" target="_blank">getting a position</a>.<br />
<strong>Artist</strong><br />
Artists make 2D art in Photoshop, and 3D models in Max or Maya. To be an artist, you have to be good at art, and have gone to art school. It’s possible to teach yourself how to use art packages, but art school will teach other skills such as composition which are also needed. When artists apply for jobs, then include a link to an online portfolio of their work. Here’s a <a href="http://www.adambromell.com/" target="_blank">random example</a> I found online.<br />
Game companies have a large staff of artists (depending on the type of game). So there are more ‘slots’ to apply for, but competition can be high as there are many aspiring artists.<br />
<strong>Animator</strong><br />
Animators, similar to artists, work in Max or Maya. The create skeletons for characters (‘rigging’), and then animated them. Again, you need to go to art school to learn the skills involved. Animation used to be part of the artists job, but increasingly the jobs are specializing into two or more different roles.<br />
Animators are usually in smaller number than the artists, and again, competition can be high.<br />
<strong>Sound Designer</strong><br />
Sound designers place and configure sounds and music within the game. Sometimes this can include the original creation of the sounds, but often libraries of sounds are used, and music creation is outsourced to a third party.<br />
Sound designers are quite few in number. It is a relatively new field, which was originally lumped in with the role of the designer. Having gone to college to study music or audio production would be useful.<br />
<strong>Producer</strong><br />
A producer (job title my vary by company) ensures that the project is completed in a timely manner, and communicates with external companies (e.g. the publisher, IP license holder, music creation, language translation). The role is all about planning when things need to happen, communicating with people to make sure things will run smoothly, and then tracking progress to make sure things work out as planned.<br />
The production staff tends to be fairly small. Majoring in business administration would be a good choice for this type of position, but it’s not a requirement.<br />
<strong>Tester</strong><br />
Testing (A.K.A. Quality Assurance) consists of playing the game, to find bugs in it. The team then fix the bugs, and the testers check that the bug is gone.<br />
Testing isn’t as much fun as it may sound. You play the same game for months or years, repeatedly completing it, playing the game on the different consoles, playing it in each different language etc. Plus it’s a full time job – you don’t just play when you want to.<br />
As the job doesn’t require years of technical training, it can be easier to get a position, but the pay is not as good. This said, it is possible to work your way up through test into positions in design, production or IT, and can give you valuable experience in game development. So testing can be a good route into ‘better’ positions for people lacking qualifications and experience.<br />
<strong>Other Supporting Positions</strong><br />
Depending on the size of the company, there are also a number of supporting roles which are less directly related to the game side of things. These positions include Administrative Assistant, Human Resources, Recruiting, Accounting, Sales and Marketing, I.T. / Tech Support. As game studios tend to be quite ‘young’ and playful in nature, and you get to support the team who are working on the game, working in these roles can still contain the ‘fun’ of working in games.Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-65946999466729062142011-03-15T11:32:00.001-07:002011-03-15T11:32:56.404-07:00So You Want to Work in the Video Game Industry<p>Here’s a funny and depressing way of looking at working in games.</p> <p>There’s a lot of truth in there, but it’s not that bad :)</p> <p>I’ve worked a few different types of job, and working in games has proven the most fun for me.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3af4e042-a500-4f67-9027-d7a6c9085385" class="wlWriterEditableSmartContent"><div id="aa0627e4-f574-4552-930e-c431dea5cd34" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=lGar7KC6Wiw" target="_new"><img src="http://lh6.ggpht.com/_t3G6O0vkb1k/TX-w1mCoKtI/AAAAAAAAECc/wiNqsGIer-Q/videoa13c44a1b4af%5B9%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('aa0627e4-f574-4552-930e-c431dea5cd34'); downlevelDiv.innerHTML = "<div><object width=\"448\" height=\"252\"><param name=\"movie\" value=\"http://www.youtube.com/v/lGar7KC6Wiw?hl=en&hd=1\"><\/param><embed src=\"http://www.youtube.com/v/lGar7KC6Wiw?hl=en&hd=1\" type=\"application/x-shockwave-flash\" width=\"448\" height=\"252\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-82863425871133070232011-02-03T15:29:00.001-08:002011-02-03T15:29:37.829-08:00Counting lines of code in Visual Studio 2008 and 2010<p>Here’s a cool trick for counting the approximate number of lines of code.</p> <p><a href="http://blog.schuager.com/2009/01/line-count-in-visual-studio.html">http://blog.schuager.com/2009/01/line-count-in-visual-studio.html</a></p> <p>I got this from the awesome <a href="http://stackoverflow.com">Stack Overflow</a>.</p> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-46043915117592464602010-12-17T15:49:00.001-08:002010-12-17T15:56:23.713-08:00What is OpenMP? What does OpenMP code look like?<p><a href="http://openmp.org/wp/">OpenMP</a> is an easy cross platform way of making code multi-threaded. You just sprinkle in a <em>magic</em> pragma before a for loop, and presto, the cycles of the loop get spread across multiple cores.</p> <p>Here’s a simple example (written in Visual Studio 2008).</p> <p><font color="#0000ff" face="Courier New">#include "stdafx.h" <br /></font><font face="Courier New"><font color="#0000ff"><strong><font color="#ff0000">#include <omp.h> <br /></font></strong>#include <stdio.h> <br />#include <stdlib.h> <br />#include <conio.h></font></font></p> <p><font color="#0000ff" face="Courier New">int _tmain (int argc, char *argv[]) <br />{ <br /></font><font face="Courier New"><font color="#0000ff"><strong><font color="#ff0000">#pragma omp parallel for <br /></font></strong>    for (int i = 0; i < 20; i++) <br />    { <br />        int threadId = omp_get_thread_num(); <br />        printf("Hello World from thread %d\n", threadId); <br />        if ( threadId == 0 ) <br />        { <br />            printf("%d threads\n", omp_get_num_threads()); <br />            printf("In Parallel Region = %d\n", omp_in_parallel()); <br />        } <br />    }</font></font></p> <p><font color="#0000ff" face="Courier New">    _getch(); <br />    return EXIT_SUCCESS; <br />}</font></p> <p>Here’s the output on a machine with 12 cores:</p> <p><font color="#0000ff" face="Courier New">Hello World from thread 0 <br />There are 12 threads <br />In Parallel Region = 1 <br />Hello World from thread 0 <br />There are 12 threads <br />In Parallel Region = 1 <br />Hello World from thread 11 <br />Hello World from thread 3 <br />Hello World from thread 3 <br />Hello World from thread 9 <br />Hello World from thread 1 <br />Hello World from thread 1 <br />Hello World from thread 10 <br />Hello World from thread 7 <br />Hello World from thread 7 <br />Hello World from thread 8 <br />Hello World from thread 6 <br />Hello World from thread 6 <br />Hello World from thread 4 <br />Hello World from thread 4 <br />Hello World from thread 2 <br />Hello World from thread 2 <br />Hello World from thread 5 <br />Hello World from thread 5</font></p> <p>There’s some interesting things to see about this output:</p> <ul> <li>There are 12 threads – 0..11.</li> <li>Some threads run one cycle (e.g. #10) and others run multiple cycles (e.g. #5).</li> <li>You can see where thread 0 runs the conditional code.</li> </ul> <p><strong>Getting More Complicated</strong></p> <p>A simple loop like the one above is fine as it is. Once you start trying to do real work, you quickly bump into the problem that you need to think about whether variables are ‘shared between all threads’ or ‘private to each thread’.</p> <p>I first recommend adding the ‘clause’ of ‘default(none)’. This will force the compiler to make you explicitly define whether variables are shared or private. Shared and private variables are then specified in a comma separated list. Here’s an example of what the pragma line now looks like:</p> <p><font color="#0000ff" face="Courier New">#pragma omp parallel for default(none) private(myVar, foo) shared(someOtherVar, andAnother)</font></p> <p>I’m no expert on OpenMP, and there’s a lot more to it that’s not covered here. The <a href="http://en.wikipedia.org/wiki/OpenMP">wikipedia page</a> is pretty good for more info.</p> <p><strong>Some notes:</strong></p> <ul> <li>The omp.h header comes with Visual Studio. There’s no lib file needed.</li> <li>You need to enable OpenMP in the project settings (C/C++ –> Language –> OpenMP Support –> Yes).</li> </ul> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-23135731765276472282010-12-09T13:01:00.001-08:002010-12-09T13:01:52.994-08:00How do I make a videogame?<p>Someone recently mailed to ask “I’ve got an idea for a game – how do I get started making it?”</p> <p>The high level of the question, implies that the asker is completely new to making games.</p> <p>Games tend to require a lot of time spent programming, making artwork, and then putting it all together into a game.</p> <p>First, I recommend concentrating on learning how to build games in general – instead of focusing on building your dream game. In the early days of learning, it's great if you can just build 'Asteroids' - you can build your Quake-killer later on.</p> <p>If you’re ‘pretty good with computers’, then a fun and <em>free</em> way to get a taste of game development is to install <a href="https://store.unity3d.com/shop/">Unity</a> and follow <a href="http://unity3d.com/support/resources/tutorials/3d-platform-game.html">this tutorial</a>. Following the tutorial is kind of like getting an ‘Airfix’ model airplane and assembling it – most of the hard work has been done, but there’s still challenge in working through the instructions.</p> <p>Going through this will show you bits of program code, and how art and animations get combined to make a game.</p> <p>From there, you could go on building things with Unity, or explore the many other options available - C++, XNA, Flash, and many many more. Each of the options has a bunch of pro’s and con’s associated with it. Choosing the right one is a matter of knowing what you want to make (e.g. 2D, 3D, Networked, Web page based …), which technologies you want to use / learn (e.g. C++, Flash, Javascript …), and what platforms (e.g. Windows, iPhone, Xbox …) you are targeting.</p> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-60084099173469791242010-12-02T17:03:00.001-08:002012-08-28T09:39:30.574-07:00Developing iPhone apps in Windows, in regular C++<a href="http://lh3.ggpht.com/_t3G6O0vkb1k/TPhByFuCz8I/AAAAAAAAD_Y/gPnCJiq7wQo/s1600-h/apple_iphone_1%5B4%5D.jpg"><img align="left" alt="apple_iphone_1" border="0" height="311" src="http://lh4.ggpht.com/_t3G6O0vkb1k/TPhByiXNoaI/AAAAAAAAD_c/6GlaMXcvEvo/apple_iphone_1_thumb%5B2%5D.jpg?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="apple_iphone_1" width="197" /></a>When the iPhone development gold-rush started, I investigated a little but was soon put off by the need to buy an iPhone, a Mac, and work in Objective C++. It would have been a lot of money and time before I could even write a Hello World app.<br />
I just became aware of the Airplay SDK (Thanks Tim). It allows you to develop for iPhone in C++, in Visual Studio, on a PC, and comes with an emulator for PC. And it’s free!<br />
It’s an engine with a graphics pipeline, networking, user input, sound, and other things. The things which it might be considered lacking if you were comparing with (the somewhat similar) Unity3D are a 3D editor, and a more developed physics system (I’m only getting this from a quick glance at the website, so forgive me if I’m wrong…). I’m not knocking it though – Airplay appears very exciting.<br />
I currently lack the time to play around with it, but it looks pretty interesting to me. For a small fee, you can also target other mobile platforms like Android, without having to make changes to your code. Very cool!<br />
Check it out – <a href="http://www.airplaysdk.com/">www.airplaysdk.com</a><br />
<br />
<b>Update:</b><br />
<br />
<ul>
<li>I recently found this good <a href="http://maniacdev.com/2009/09/the-commercial-iphone-game-engine-comparison-3d-and-2d/">roundup</a> of many different iOS development options.</li>
</ul>
Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com1tag:blogger.com,1999:blog-28047759.post-9949782958319933762010-11-27T14:58:00.001-08:002010-11-27T16:46:41.250-08:00Windows DVD Maker Review<p>I recently needed to create a DVD of some camcorder footage.</p> <p>I used to use software which came with my camcorder to pull the video from the camera, then various tools to edit, and finally Nero (which came with my DVD drive) to build the DVD with menus etc. It was a lot of messing around – but that’s what it’s like on PC (if you’re a cheapskate).</p> <p>This time, I’m running on Windows 7, and my old Nero disc is incompatible. Never mind though – Windows 7 is all Mac-like and comes with ‘Windows Live Movie Maker’ and ‘Windows DVD Maker’. </p> <p><strong>Windows Live Movie Maker</strong></p> <p>Windows Live Movie Maker 2011 worked quite nicely. It imported my video from my camera (over firewire). It created a single AVI with several internal clips. Movie Maker has nice simple editing, though the location of the clips wasn’t highlighted. Movie Maker can ‘Save as -> Burn a DVD’. This first saves a WMV file, and then starts Windows DVD Maker.</p> <p><strong>Windows DVD Maker</strong></p> <p>DVD Maker takes one or more WMV files, allows you to configure the DVD menu, and then burns to DVD.</p> <p>Pros:</p> <ul> <li>Has some nice menu templates, with animation and fun transitions. It’s not out of this world, but enough to make your amateur DVD making look quite nice.</li> <li>Simple to use.</li> <li>Automatically takes your clips and creates scene selections from them.</li> </ul> <p>Cons:</p> <ul> <li>If you specify one WMV it will automatically create several ‘scene selection’ clips. However, if you specify more than one WMV it will just make each video its own selection. I didn’t like this either/or option – I’d prefer an options menu which allowed me to choose.</li> <li>For me it repeatedly failed to the burn DVD with no useful explanation. Looking online, it seems like a common problem, and driver related. It's disappointing that DVD Maker fails to burn when other programs can burn OK.<br /></li> <li>It only burns directly to disc, not ISO file. This is very annoying, as it failed to burn to DVD on my machine. I ended up using the trial version of ‘Virtual CD 10’ to act as a virtual DVD burner. (After trying many other virtual drive related products.)</li> <li>The scene selections didn’t match the clips in my video – they just seem arbitrary. Pressing ‘skip’ results in jumping over one whole clip, and landing part way through the next. Very odd. The DVD is only useful in ‘play’ mode – skipping and scene selection are inaccurate. This really detracts from the usefulness of the DVD.<br /></li><li>The number of scene selections is limited to a fixed maximum imposed by the menu style you choose. The highest number of clips available appears to be 18. While this is enough for most uses, it's not hard to hit the limit.<br /></li> </ul> <p>Overall I was very disappointed by the experience. The gloss of Windows 7 seems very thin in the area of DVD creation. DVD Maker was superficially pretty, but then took hours of time to work around its lack of obvious features, and ultimately produced a poor quality DVD.</p> <p>And finally, burning an ISO to a disc turned into another debacle of multiple programs being downloaded and tried. I eventually used ImgBurn to do it.</p> <p>I like Windows 7, but I’m disappointed that DVD authoring hasn’t improved since XP. This one facet of Windows makes me wish I was on a Mac.</p>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com2tag:blogger.com,1999:blog-28047759.post-90076344477545759762010-11-25T00:14:00.001-08:002010-11-25T00:15:35.091-08:003D Math Tutorials<p><a href="http://lh3.ggpht.com/_t3G6O0vkb1k/TO4a8LM0jEI/AAAAAAAAD_M/dXKIj0GmC-I/s1600-h/VectorMath%5B4%5D.png"><img style="background-image: none; border: 0px none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px;" title="VectorMath" alt="VectorMath" src="http://lh6.ggpht.com/_t3G6O0vkb1k/TO4a8zV4nhI/AAAAAAAAD_Q/4SD5onQ-csE/VectorMath_thumb%5B2%5D.png?imgmax=800" align="left" border="0" height="132" width="183" /></a>I teach a game programming class at the Art Institute of Los Angeles.</p> <p>I recently did a review of 3D Vector Math with my class, and thought that the slides would be good to share online. Vector math is one of those essential skills for game programmers, and a common topic in interviews.</p> <p>If you’re looking to practice your vector math and learn a few new applications, enjoy…</p> <ul> <li><a href="https://docs.google.com/present/edit?id=0Ae3a61nOhU6lZGZwMjhyZmtfMTE5ZnI5cXM3aGM&hl=en">Part 1</a></li> <li><a href="https://docs.google.com/present/edit?id=0Ae3a61nOhU6lZGZwMjhyZmtfMTIwZGdtbTMyY3M&hl=en">Part 2</a></li> <li><a href="https://docs.google.com/present/edit?id=0Ae3a61nOhU6lZGZwMjhyZmtfMTIxcGpidzI0bnc&hl=en">Part 3</a></li> <li><a href="https://docs.google.com/present/edit?id=0Ae3a61nOhU6lZGZwMjhyZmtfMTIzZmhuZjhtZ2s&hl=en">Part 4</a></li> <li><a href="https://docs.google.com/present/edit?id=0Ae3a61nOhU6lZGZwMjhyZmtfMTM1YzZ2N3pqY2I&hl=en">Part 5</a></li> </ul> <p>Note: I reserve the right to be inefficient and also down-right wrong. Feedback is welcome.</p>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-27890457416764217112010-07-29T14:12:00.000-07:002010-07-29T14:16:07.579-07:00Gnarcade VideoAnother fun game related video.<br />Gets better after first 30 seconds.<br />I like the Portal bit.<br /><br /><object width="400" height="250"><param name="movie" value="http://www.youtube.com/v/tVljiwwqwfc&hl=en_US&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tVljiwwqwfc&hl=en_US&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="250"></embed></object>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-69654046594162131582010-07-10T15:32:00.000-07:002010-07-10T15:39:00.621-07:003DPhotoSaverI recently wrote a screensaver, in part to learn more C#/XNA. <br />Here's a video of it in action. It shows your photos and videos as a floating slideshow. While I was making it, I would often get stuck just watching it, and forget that I was meant to be coding.<br />You can download a trial version on the its <a href="http://3dphotosaver.webs.com/">website</a>.<br /><br /><object width="480" height="270"><param name="movie" value="http://www.youtube.com/v/_PAFLxF_I24&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/_PAFLxF_I24&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="480" height="270"></embed></object>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-71173605898011057992010-04-08T17:25:00.000-07:002010-04-08T17:28:58.927-07:00Great Video - 'Pixels'Cool video. There's surely a 'major motion picture' which could be made in this vein.<br /><br /><object width="480" height="270"><param name="movie" value="http://www.dailymotion.com/swf/video/xcv6dv"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xcv6dv" width="480" height="270" allowfullscreen="true" allowscriptaccess="always"></embed></object><br /><b><a href="http://www.dailymotion.com/video/xcv6dv_pixels-by-patrick-jean_creation">PIXELS by PATRICK JEAN.</a></b><br /><i>Uploaded by <a href="http://www.dailymotion.com/onemoreprod">onemoreprod</a>. - <a href="http://www.dailymotion.com/us/channel/creation">Independent web videos.</a></i>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0tag:blogger.com,1999:blog-28047759.post-33879712411086965832010-02-22T12:47:00.001-08:002010-02-22T12:47:07.218-08:00Collision detection and physics in XNA<p>It’s like a Lego owner admitting that they prefer Duplo, but I’m fond of C# and XNA for game making. If you don’t need every ounce of performance, then C# can greatly cut down your coding time.</p> <p>One of the things which is lacking from XNA is a collision/physics system. There are some ‘wrapped’ unmanaged libraries, but if you want to leave the door open to running your game on 360 then you need a 100% unmanaged solution.</p> <p>I just came across <a href="http://www.codeplex.com/JigLibX">JibLibX</a> (via <a href="http://blogs.msdn.com/ireland/archive/2009/03/17/xna-questions-physics-engines-amp-a-new-xna-3-0-book.aspx">here</a>), which is a native port of JibLib (i.e. someone took the C++ code and rewrote it in C#). I’ve only run the sample so far, but it looks good.</p> <p>Here’s a video of someone having fun with JibLibX.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c14f8686-fd91-4f99-b7a9-7c6beac2ef1b" class="wlWriterEditableSmartContent"><div id="2f28df77-a496-4b66-b217-bf1aaeecc523" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://www.youtube.com/watch?v=Dh_JObRvyDw&hl=en_US&fs=1&" target="_new"><img src="http://lh5.ggpht.com/_t3G6O0vkb1k/S4LtStjsQJI/AAAAAAAADkE/tvicSImk_tU/video3010e1276b83%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('2f28df77-a496-4b66-b217-bf1aaeecc523'); downlevelDiv.innerHTML = "<div><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/Dh_JObRvyDw&hl=en_US&fs=1&&hl=en\"><\/param><embed src=\"http://www.youtube.com/v/Dh_JObRvyDw&hl=en_US&fs=1&&hl=en\" type=\"application/x-shockwave-flash\" width=\"425\" height=\"355\"><\/embed><\/object><\/div>";" alt=""></a></div></div></div> Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com1tag:blogger.com,1999:blog-28047759.post-65097526217354895812010-02-19T14:30:00.001-08:002010-02-19T22:21:55.355-08:00Why penny stock tips are a scam<p>The following is conjecture on my part, but it seems sound to me.<br /></p><p>Here’s my easy, step by step guide to becoming seriously rich with penny stocks.</p> <ul> <li>Create a simple website telling people to sign up for your penny stock tips.</li> <li>Advertise the site anywhere where uneducated potential investors might be. (The greedier and stupider the better.)</li> <li>Choose a penny stock which seems like a good investment. Ideally you’ll do some good research and find a sound deal, but you can just pick one at random if you like.</li> <li>Gradually buy up a bunch of stock in that company at its current low price.</li> <li>Create 'sell orders’ with your broker to sell the stock if it goes up by a certain percentage, let’s say 25% up from where you just bought it.</li> <li>Write a convincing letter about why you think this stock is about to “EXPLODE!”. Say you’ve got some magic system which is almost always right.</li> <li>Mail all the people on your mailing list to tell them to ‘buy it right away’.</li> </ul> <p>Result:</p> <ul> <li>Your mail goes out, and some percentage of your readers buy the stock.</li> <li>As penny stocks have low volume, there are few people currently attempting to sell the stock. This means that the people with sell orders (you) can pretty much ‘name their price’. This is different with regular stocks where the volume is so high that there are lots of people trying to sell the stock around the current price.</li> <li>They buy their stock from you, at the price you decided that you wanted.</li> <li>The stock price (i.e. what people are paying for the stock) shoots up, just as you predicted! (You’re a genius!)</li> <li>The people buying the stock have a short period to resell it to others caught in the frenzy.</li> <li>Then things calm down. There are no more frantic buyers to push the price up. Some people sell at a loss to get back out, and the price of the stock starts falling back down to the pre-boom level. Unfortunately, your helpers are stuck with stock that’s hard to sell and people aren’t buying – but that’s not your problem.</li> <li>You get to cite the huge gains as proof positive of your skills, which makes more people trust you in your next pick!</li> </ul> <p>I was excited by penny stocks until I worked this out. I might be a bit wrong in parts, but my magic system tells me I’m pretty close.</p> <p>I also found this post on Yahoo! Answers to be quite <a href="http://answers.yahoo.com/question/index?qid=20090323234038AA2zyeq">sanity inducing</a>.</p>Mark Popehttp://www.blogger.com/profile/10443487490891993842noreply@blogger.com0