<?xml version='1.0' encoding='UTF-8' ?><rss xmlns:content='http://purl.org/rss/1.0/modules/content/' version='2.0'><channel><title>oscan.net</title><link>http://oscan.net</link><description>News Feed for oscan.net</description><item><title>Game Dev progress report: Progress!</title><link>http://oscan.net/?cmd=blog&amp;pid=22</link><description>&lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=trinhex&amp;amp;linkId=8' class='link'&gt;Trinhex&lt;/a&gt; is &lt;b&gt;&lt;i&gt;finally&lt;/i&gt;&lt;/b&gt; out in the wild!&lt;br&gt;&lt;br&gt;My thanks to Lisandro from &lt;a href='http://www.7lay.net' class='link'&gt;7lay.net&lt;/a&gt; for being willing to sponsor the game, and for being so patient during the whole bidding process, which I allowed go for... a while :).&lt;br&gt;&lt;br&gt;Starting into its fifth day of being published the game has racked up almost 20k plays so far on about 130 sites. On &lt;a href='http://www.newgrounds.com/portal/view/538695' class='link'&gt;Newgrounds&lt;/a&gt; it managed to get a rating of 3.43/5 with about 1,400 plays before falling into the black hole of obscurity. On &lt;a href='http://www.kongregate.com/games/oscan/trinhex' class='link'&gt;Kongregate&lt;/a&gt; it scored about 2.8 after 965 plays to date, with the last few hundred plays thanks to a &lt;a href='http://www.raphkoster.com/2010/06/10/trinhex/' class='link'&gt;post from Raph&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:right;float:right&quot;&gt;&lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=Blockdown' class='link'&gt;&lt;img src='http://oscan.net/blockdown_100x100.png' alt='' title='' width='100' border=0 /&gt;&lt;/a&gt;&lt;/div&gt;Game 'number 3', that I had been prototyping at the time of the last post and that is now known as &lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=Blockdown' class='link'&gt;Blockdown&lt;/a&gt; (&lt;a href='http://www.flashgamelicense.com/view_game.php?game_id=10427&amp;amp;from=dev' class='link'&gt;FGL link&lt;/a&gt;), has been completed for a while and is waiting to see if it can pick up a potential sponsor. We seem to be in a bit of an early summer lull for the flash sponsorship market, so it may have to wait a while longer. Although my games appear to be in a constant lull in terms of attracting sponsor interest. :)&lt;br&gt;&lt;br&gt;&lt;br&gt;In the meantime, I've been &lt;i&gt;slowly&lt;/i&gt; working away on an isometric engine for a possible Tower Defense-esque game...&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/-gXZ2JLh8Ic&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/-gXZ2JLh8Ic&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;</description><pubDate>Sun, 13 Jun 2010 4:00:47 GMT</pubDate><content:encoded><![CDATA[ <a href='http://oscan.net/index.php?cmd=page&amp;p=trinhex&amp;linkId=8' class='link'>Trinhex</a> is <b><i>finally</i></b> out in the wild!<br><br>My thanks to Lisandro from <a href='http://www.7lay.net' class='link'>7lay.net</a> for being willing to sponsor the game, and for being so patient during the whole bidding process, which I allowed go for... a while :).<br><br>Starting into its fifth day of being published the game has racked up almost 20k plays so far on about 130 sites. On <a href='http://www.newgrounds.com/portal/view/538695' class='link'>Newgrounds</a> it managed to get a rating of 3.43/5 with about 1,400 plays before falling into the black hole of obscurity. On <a href='http://www.kongregate.com/games/oscan/trinhex' class='link'>Kongregate</a> it scored about 2.8 after 965 plays to date, with the last few hundred plays thanks to a <a href='http://www.raphkoster.com/2010/06/10/trinhex/' class='link'>post from Raph</a>.<br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:right;float:right"><a href='http://oscan.net/index.php?cmd=page&amp;p=Blockdown' class='link'><img src='http://oscan.net/blockdown_100x100.png' alt='' title='' width='100' border=0 /></a></div>Game 'number 3', that I had been prototyping at the time of the last post and that is now known as <a href='http://oscan.net/index.php?cmd=page&amp;p=Blockdown' class='link'>Blockdown</a> (<a href='http://www.flashgamelicense.com/view_game.php?game_id=10427&amp;from=dev' class='link'>FGL link</a>), has been completed for a while and is waiting to see if it can pick up a potential sponsor. We seem to be in a bit of an early summer lull for the flash sponsorship market, so it may have to wait a while longer. Although my games appear to be in a constant lull in terms of attracting sponsor interest. :)<br><br><br>In the meantime, I've been <i>slowly</i> working away on an isometric engine for a possible Tower Defense-esque game...<br><br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/-gXZ2JLh8Ic&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-gXZ2JLh8Ic&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></div> ]]></content:encoded></item><item><title>Game Dev progress report: Lacking progress...</title><link>http://oscan.net/?cmd=blog&amp;pid=20</link><description>It's been just over six weeks since I released my first attempt at monetising a complete flash game, &lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=pompetaire&amp;amp;linkId=6' class='link'&gt;Pompetaire&lt;/a&gt;, out into the wild. This game just had a pre-loader ad attached (no attempts at finding sponsorship were made) and was uploaded to Kongregate (no ads), Newgrounds and added to Mochi's distribution list.&lt;br&gt;&lt;br&gt;To date the game has earned a grand total of.... wait for it..... &lt;b&gt;$2.37!&lt;/b&gt;&lt;br&gt;$0.85 of that comes from Kongregate from 666 plays (35% of a total revenue of $2.42) all of which were mostly from the first week, with the rest, $1.52, coming from MochiAds from just under five thousand ad impressions. Over a third of the mochi earnings came from a single site, &lt;a href='http://onlinespiele24.org' class='link'&gt;onlinespiele24.org&lt;/a&gt;, which only picked up the game over three weeks after the game was first released.&lt;br&gt;&lt;br&gt;Suffice to say the game never &quot;gained traction&quot;, to borrow Metaplace's phrase, with reviews being decidedly average, hovering just above the 50% mark. &lt;br&gt;&lt;br&gt;So all in all a failure!&lt;br&gt;&lt;br&gt;But with every failure there are lessons to be learnt, some of which I had in mind when putting together my next game &lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=Trinhex' class='link'&gt;Trinhex&lt;/a&gt;.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://oscan.net/trinhex_screen4.png' alt='' title='' border=0 /&gt;&lt;br&gt;&lt;i&gt;Spot the reused assets!&lt;/i&gt;&lt;/div&gt;&lt;br&gt;This is a colour matching game based upon Raph Koster's original game Wheelwright&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;a href='http://oscan.net/files/wheelwright.jpg' class='link'&gt;&lt;img src='http://oscan.net/files/wheelwright.jpg' alt='' title='' width='200' border=0 /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;This time I decided to take the sponsorship/licensing route by using &lt;a href='http://www.flashgamelicense.com/' class='link'&gt;FlashGameLicense.com&lt;/a&gt;, which can provide the potential of a few thousand US dollars per game, assuming you can manage to entice a sponsor to put in a bid. So far the game has been &lt;a href='http://www.flashgamelicense.com/view_game.php?game_id=9791' class='link'&gt;available to potential sponsors&lt;/a&gt; for just over two weeks now with no solid offers, but it is still considered too early to say how it will do. It may take up to a month or two before the right sponsor comes along.&lt;br&gt;&lt;br&gt;In the mean time I am working away on game number 3...&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://oscan.net/game4.png' alt='' title='' border=0 /&gt;&lt;/div&gt;</description><pubDate>Thu, 04 Mar 2010 7:31:11 GMT</pubDate><content:encoded><![CDATA[ It's been just over six weeks since I released my first attempt at monetising a complete flash game, <a href='http://oscan.net/index.php?cmd=page&amp;p=pompetaire&amp;linkId=6' class='link'>Pompetaire</a>, out into the wild. This game just had a pre-loader ad attached (no attempts at finding sponsorship were made) and was uploaded to Kongregate (no ads), Newgrounds and added to Mochi's distribution list.<br><br>To date the game has earned a grand total of.... wait for it..... <b>$2.37!</b><br>$0.85 of that comes from Kongregate from 666 plays (35% of a total revenue of $2.42) all of which were mostly from the first week, with the rest, $1.52, coming from MochiAds from just under five thousand ad impressions. Over a third of the mochi earnings came from a single site, <a href='http://onlinespiele24.org' class='link'>onlinespiele24.org</a>, which only picked up the game over three weeks after the game was first released.<br><br>Suffice to say the game never "gained traction", to borrow Metaplace's phrase, with reviews being decidedly average, hovering just above the 50% mark. <br><br>So all in all a failure!<br><br>But with every failure there are lessons to be learnt, some of which I had in mind when putting together my next game <a href='http://oscan.net/index.php?cmd=page&amp;p=Trinhex' class='link'>Trinhex</a>.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://oscan.net/trinhex_screen4.png' alt='' title='' border=0 /><br><i>Spot the reused assets!</i></div><br>This is a colour matching game based upon Raph Koster's original game Wheelwright<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><a href='http://oscan.net/files/wheelwright.jpg' class='link'><img src='http://oscan.net/files/wheelwright.jpg' alt='' title='' width='200' border=0 /></a></div><br><br>This time I decided to take the sponsorship/licensing route by using <a href='http://www.flashgamelicense.com/' class='link'>FlashGameLicense.com</a>, which can provide the potential of a few thousand US dollars per game, assuming you can manage to entice a sponsor to put in a bid. So far the game has been <a href='http://www.flashgamelicense.com/view_game.php?game_id=9791' class='link'>available to potential sponsors</a> for just over two weeks now with no solid offers, but it is still considered too early to say how it will do. It may take up to a month or two before the right sponsor comes along.<br><br>In the mean time I am working away on game number 3...<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://oscan.net/game4.png' alt='' title='' border=0 /></div> ]]></content:encoded></item><item><title>ThatFallingBlockGame source</title><link>http://oscan.net/?cmd=blog&amp;pid=19</link><description>I've posted the &lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=thatfallingblockgame&amp;amp;linkId=7' class='link'&gt;complete source&lt;/a&gt; to my Metaplace tetris clone, That Falling Block Game, under the games section.</description><pubDate>Mon, 08 Feb 2010 4:49:55 GMT</pubDate><content:encoded><![CDATA[ I've posted the <a href='http://oscan.net/index.php?cmd=page&amp;p=thatfallingblockgame&amp;linkId=7' class='link'>complete source</a> to my Metaplace tetris clone, That Falling Block Game, under the games section. ]]></content:encoded></item><item><title>Pompetaire: Game finished and published!</title><link>http://oscan.net/?cmd=blog&amp;pid=18</link><description>&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:left;float:left&quot;&gt;&lt;div style='display: block;margin-left: auto;margin-right: auto;width:100; height:100'&gt;&lt;img src='http://oscan.net/pompetaire_thumb.png' alt='' title='' width='100' height='100' border=0 /&gt;&lt;DIV STYLE=&quot;position:relative; z-index:2;margin-top: -100px;width:100; height:100;&quot;&gt;&lt;img src='./img/soft_border.png' width='100' height='100' border=0 /&gt;&lt;/DIV&gt;&lt;/div&gt;&lt;/div&gt;Okay, so it was a little bit over two weeks...&lt;br&gt;&lt;br&gt;The game is now &quot;finished&quot; and has been sent out to fend for itself in the thunderdome that is the net. I hope it doesn't get too savagely beaten!&lt;br&gt;&lt;br&gt;It is currently awaiting approval to be added to Mochis Partner Publisher list and is also up on &lt;a href='http://www.kongregate.com/games/oscan/pompetaire' class='link'&gt;Kongregate&lt;/a&gt;. The relative success of the game on Kongregate will depend mainly on the rating it gets from the community there, so feel free to sign up and give it a 5-star rating! And then get everyone you know to do the same. ;-)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description><pubDate>Tue, 19 Jan 2010 5:24:28 GMT</pubDate><content:encoded><![CDATA[ <div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:left;float:left"><div style='display: block;margin-left: auto;margin-right: auto;width:100; height:100'><img src='http://oscan.net/pompetaire_thumb.png' alt='' title='' width='100' height='100' border=0 /><DIV STYLE="position:relative; z-index:2;margin-top: -100px;width:100; height:100;"><img src='./img/soft_border.png' width='100' height='100' border=0 /></DIV></div></div>Okay, so it was a little bit over two weeks...<br><br>The game is now "finished" and has been sent out to fend for itself in the thunderdome that is the net. I hope it doesn't get too savagely beaten!<br><br>It is currently awaiting approval to be added to Mochis Partner Publisher list and is also up on <a href='http://www.kongregate.com/games/oscan/pompetaire' class='link'>Kongregate</a>. The relative success of the game on Kongregate will depend mainly on the rating it gets from the community there, so feel free to sign up and give it a 5-star rating! And then get everyone you know to do the same. ;-)<br><br><br><br><br> ]]></content:encoded></item><item><title>Flash Game: Pompetaire... almost there</title><link>http://oscan.net/?cmd=blog&amp;pid=17</link><description>I'm now over halfway through the second week of my self-imposed two week time limit for &lt;a href='http://oscan.net/index.php?cmd=blog&amp;amp;pid=16' class='link'&gt;creating a flash game&lt;/a&gt;. I'm mainly in polishing mode now, making everything look pretty. Apart from the ads, which I have yet to put in, it is probably 90% there.&lt;br&gt;&lt;br&gt;I've also decided on a name. &lt;b&gt;Pompetaire!&lt;/b&gt; I guess I probably have to explain that...&lt;br&gt;Since the game is basically Spider Solitaire, I decided I'd call it &lt;i&gt;something&lt;/i&gt;-taire; it was just a matter of figuring out what the &lt;i&gt;something&lt;/i&gt; should be. As things in the game are mostly grouped into lots of five, I thought perhaps &lt;i&gt;Pentaire&lt;/i&gt; or &lt;i&gt;Quintaire&lt;/i&gt;. Although Pentaire doesn't exist, there is a Pentair, which is a water services equipment supplier, so that was a bit too close. Quintaire appears to be a surname (or sometimes a first name).&lt;br&gt;&lt;br&gt;I ended up going a bit more obscure and decided to use the &lt;a href='http://en.wikipedia.org/wiki/Oscan_language' class='link'&gt;oscan&lt;/a&gt; word for five, which is &lt;i&gt;pompe&lt;/i&gt;, so I end up with &lt;i&gt;Pompetaire&lt;/i&gt;. As far as google is concerned this word simply doesn't exist. At all. This has the added benefit of allowing me to be able to track the spread of the game by searching for any mentions of the word used on the net (not that I have high hopes that it will spread far and wide).&lt;br&gt;&lt;br&gt;So here we have the &lt;i&gt;almost there&lt;/i&gt; version...&lt;br&gt;&lt;br&gt;[edit]&lt;br&gt;&lt;a href='http://oscan.net/index.php?cmd=page&amp;amp;p=pompetaire&amp;amp;linkId=6' class='link'&gt;Link to final version&lt;/a&gt;&lt;br&gt;[/edit]&lt;br&gt;&lt;br&gt;I still have a few questions for myself on the gameplay - as to whether it is perhaps a bit too easy - so again &lt;b&gt;I would greatly appreciate feedback from play experiences at various levels!&lt;/b&gt;&lt;br&gt;&lt;br&gt;In this version the 'strict' and 'non-strict' rules are merged; where a 'strict' move, as indicated by the green placement guide, only costs one point per move, and a 'non-strict' move, as indicated by the red placement guide, costs 5 points per move. I am toying with the idea that I should only allow up to 5 non-strict moves per game, so it would be up to the player to decide when best to use those moves. All assuming the current version doesn't provide enough challenge.&lt;br&gt;&lt;br&gt;Thanks for your help!</description><pubDate>Thu, 14 Jan 2010 11:19:46 GMT</pubDate><content:encoded><![CDATA[ I'm now over halfway through the second week of my self-imposed two week time limit for <a href='http://oscan.net/index.php?cmd=blog&amp;pid=16' class='link'>creating a flash game</a>. I'm mainly in polishing mode now, making everything look pretty. Apart from the ads, which I have yet to put in, it is probably 90% there.<br><br>I've also decided on a name. <b>Pompetaire!</b> I guess I probably have to explain that...<br>Since the game is basically Spider Solitaire, I decided I'd call it <i>something</i>-taire; it was just a matter of figuring out what the <i>something</i> should be. As things in the game are mostly grouped into lots of five, I thought perhaps <i>Pentaire</i> or <i>Quintaire</i>. Although Pentaire doesn't exist, there is a Pentair, which is a water services equipment supplier, so that was a bit too close. Quintaire appears to be a surname (or sometimes a first name).<br><br>I ended up going a bit more obscure and decided to use the <a href='http://en.wikipedia.org/wiki/Oscan_language' class='link'>oscan</a> word for five, which is <i>pompe</i>, so I end up with <i>Pompetaire</i>. As far as google is concerned this word simply doesn't exist. At all. This has the added benefit of allowing me to be able to track the spread of the game by searching for any mentions of the word used on the net (not that I have high hopes that it will spread far and wide).<br><br>So here we have the <i>almost there</i> version...<br><br>[edit]<br><a href='http://oscan.net/index.php?cmd=page&amp;p=pompetaire&amp;linkId=6' class='link'>Link to final version</a><br>[/edit]<br><br>I still have a few questions for myself on the gameplay - as to whether it is perhaps a bit too easy - so again <b>I would greatly appreciate feedback from play experiences at various levels!</b><br><br>In this version the 'strict' and 'non-strict' rules are merged; where a 'strict' move, as indicated by the green placement guide, only costs one point per move, and a 'non-strict' move, as indicated by the red placement guide, costs 5 points per move. I am toying with the idea that I should only allow up to 5 non-strict moves per game, so it would be up to the player to decide when best to use those moves. All assuming the current version doesn't provide enough challenge.<br><br>Thanks for your help! ]]></content:encoded></item><item><title>Help Play test a Flash game!</title><link>http://oscan.net/?cmd=blog&amp;pid=16</link><description>&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:left;float:left&quot;&gt;&lt;div style='display: block;margin-left: auto;margin-right: auto;width:203; height:175'&gt;&lt;img src='http://oscan.net/game2_proto.png' alt='' title='' width='203' height='175' border=0 /&gt;&lt;DIV STYLE=&quot;position:relative; z-index:2;margin-top: -175px;width:203; height:175;&quot;&gt;&lt;img src='./img/soft_border.png' width='203' height='175' border=0 /&gt;&lt;/DIV&gt;&lt;/div&gt;&lt;/div&gt; On Monday I started my effort to &lt;a href='http://oscan.net/index.php?cmd=blog&amp;amp;pid=14' class='link'&gt;complete a flash game in two weeks&lt;/a&gt;, making a simple Spider-Solitaire-as-a-colour-matching-game... game.&lt;br&gt;For this project, the intent is not necessarily to make the most engaging play experience ever, but simply to just get a finished, polished game posted on a game portal site. That being said, I'd still like for the game to be somewhat fun to play, so I'd like to get feedback from some play testing, if you would be so kind to give it a shot please?&lt;br&gt;&lt;br&gt;Below is a working prototype (meaning it won't look like much, as it is all place-holder graphics, but the gameplay is mostly all there) that I've put together in the two and a half days since getting started.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;[edit: prototype removed. see &lt;a href='http://oscan.net/index.php?cmd=blog&amp;amp;pid=17' class='link'&gt;post above&lt;/a&gt;]&lt;br&gt;How to play: &lt;span class=standard_text&gt;&lt;ul&gt;&lt;li&gt;To win a game you need to clear the board of all pieces.&lt;br&gt;&lt;/li&gt;&lt;li&gt;To clear pieces you need to stack shapes of the same colour in increasing 'size' from top to bottom.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Shape 'sizes' in order, ranging from 1 to 5, are circle, oval, triangle, square and pentagon. So you want circles on the top of the stack, pentagons at the bottom. &lt;br&gt;(This will hopefully be more intuitive with final graphics)&lt;br&gt;&lt;/li&gt;&lt;li&gt;You can place a shape on top of another shape of the next size up regardless of colour (e.g. triangle on a square, square on a pentagon).&lt;br&gt;&lt;/li&gt;&lt;li&gt;If you disable the 'strict' setting, you can place a shape on top of &lt;i&gt;any&lt;/i&gt; larger shape (e.g. circle on a square)&lt;br&gt;&lt;/li&gt;&lt;li&gt;You can only move multiple shapes at the same time (moving one shape and everything above it) if all the shapes are of the same colour and in the correct order.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Not all of the pieces are on the board at the beginning. You need to choose when to 'deal' in these additional pieces, which will be added to the top of each column.&lt;br&gt;&lt;/li&gt;&lt;li&gt;A column cannot go more than 12 pieces high. If a column is 12 high, it will block the next deal.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If you find yourself not able to make a move then you lost that game (no prompt as yet)&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br&gt;That's the basics of it. It's not too hard to understand once you go through it once.&lt;br&gt;&lt;br&gt;There are three levels: easy with just one colour, medium with two, and hard with four (it starts on medium).&lt;br&gt;If you have some time to perhaps play through a few games of each, with and without the strict setting, I'd greatly appreciate it if you could give some feedback below. Was it challenging? Was it fun to play? Or only somewhat? Completely boring? I hate these games!&lt;br&gt;&lt;br&gt;There are likely to be a few bugs floating about, so if you run into any if you could mention them below too would be a great help.&lt;br&gt;&lt;br&gt;Thanks for your help!&lt;br&gt;&lt;br&gt;[edit]&lt;br&gt;updated the graphics a bit to make it a bit easier on the colour blind.</description><pubDate>Wed, 06 Jan 2010 6:52:50 GMT</pubDate><content:encoded><![CDATA[ <div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:left;float:left"><div style='display: block;margin-left: auto;margin-right: auto;width:203; height:175'><img src='http://oscan.net/game2_proto.png' alt='' title='' width='203' height='175' border=0 /><DIV STYLE="position:relative; z-index:2;margin-top: -175px;width:203; height:175;"><img src='./img/soft_border.png' width='203' height='175' border=0 /></DIV></div></div> On Monday I started my effort to <a href='http://oscan.net/index.php?cmd=blog&amp;pid=14' class='link'>complete a flash game in two weeks</a>, making a simple Spider-Solitaire-as-a-colour-matching-game... game.<br>For this project, the intent is not necessarily to make the most engaging play experience ever, but simply to just get a finished, polished game posted on a game portal site. That being said, I'd still like for the game to be somewhat fun to play, so I'd like to get feedback from some play testing, if you would be so kind to give it a shot please?<br><br>Below is a working prototype (meaning it won't look like much, as it is all place-holder graphics, but the gameplay is mostly all there) that I've put together in the two and a half days since getting started.<br><br><br><br><br><br>[edit: prototype removed. see <a href='http://oscan.net/index.php?cmd=blog&amp;pid=17' class='link'>post above</a>]<br>How to play: <span class=standard_text><ul><li>To win a game you need to clear the board of all pieces.<br></li><li>To clear pieces you need to stack shapes of the same colour in increasing 'size' from top to bottom.<br></li><li>Shape 'sizes' in order, ranging from 1 to 5, are circle, oval, triangle, square and pentagon. So you want circles on the top of the stack, pentagons at the bottom. <br>(This will hopefully be more intuitive with final graphics)<br></li><li>You can place a shape on top of another shape of the next size up regardless of colour (e.g. triangle on a square, square on a pentagon).<br></li><li>If you disable the 'strict' setting, you can place a shape on top of <i>any</i> larger shape (e.g. circle on a square)<br></li><li>You can only move multiple shapes at the same time (moving one shape and everything above it) if all the shapes are of the same colour and in the correct order.<br></li><li>Not all of the pieces are on the board at the beginning. You need to choose when to 'deal' in these additional pieces, which will be added to the top of each column.<br></li><li>A column cannot go more than 12 pieces high. If a column is 12 high, it will block the next deal.<br></li><li>If you find yourself not able to make a move then you lost that game (no prompt as yet)</li></ul></span><br>That's the basics of it. It's not too hard to understand once you go through it once.<br><br>There are three levels: easy with just one colour, medium with two, and hard with four (it starts on medium).<br>If you have some time to perhaps play through a few games of each, with and without the strict setting, I'd greatly appreciate it if you could give some feedback below. Was it challenging? Was it fun to play? Or only somewhat? Completely boring? I hate these games!<br><br>There are likely to be a few bugs floating about, so if you run into any if you could mention them below too would be a great help.<br><br>Thanks for your help!<br><br>[edit]<br>updated the graphics a bit to make it a bit easier on the colour blind. ]]></content:encoded></item><item><title>Metaplace asset grabber</title><link>http://oscan.net/?cmd=blog&amp;pid=15</link><description>I've put together an asset grabber for Metaplace to make it easier for users to download scripts, images, sounds, tiles &amp;amp; maps (for each place) and initial tag stream from their various worlds. This is basically a mini client that connects to a world and parses the lists of assets that are normally sent to clients.&lt;br&gt;&lt;br&gt;A few things to be aware of:&lt;br&gt;&lt;span class=standard_text&gt;&lt;ul&gt;&lt;li&gt;The username supplied is case-sensitive and must be exactly the same as displayed on your metaplace profile. e.g. Obo not obo.&lt;br&gt;&lt;/li&gt;&lt;li&gt;You are required to provide your metaplace password. Just be aware this is not an official metaplace service! That said, your password will not be stored anywhere. Just be aware of any similar service that does as for your password.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Once you submit the form &lt;span style='color:blue'&gt;nothing will appear to happen other than the browser will appear to be connecting to oscan.net&lt;/span&gt;. This is the way it currently works, so just let it be! Once it has grabbed all the assets it will pack them into a Zip file and then give you a prompt to download it. &lt;b&gt;Don't hit the submit button twice!&lt;/b&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;This process may take a while for large worlds, so &lt;b&gt;BE PATIENT!&lt;/b&gt; If the browser looks like it is doing something then just let it work away.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Where possible use the &quot;local only&quot; option to only get 0:x assets if you don't need everything from the world.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If you get an error link &quot;could not connect to game04.metaplace.com:5101&quot; then try again later. Your login session tried to connect to a server and/or port my web host hasn't put on the white-list to allow connections.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If an asset could not be downloaded it should be listed in the error_log provided in the zip file.&lt;br&gt;&lt;/li&gt;&lt;li&gt;While it works for me it very well might break, and there is not much time left to allow more testing! If something goes wrong leave a comment here or use the contact page and I'll try and track down the problem.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt; &lt;br&gt;So here if the link...&lt;br&gt;&lt;a href='http://oscan.net/metaplace/asset_grab/' class='link'&gt;http://oscan.net/metaplace/asset_grab/&lt;/a&gt;&lt;br&gt;&lt;br&gt;I'll see about making it easier, more foolproof, to use in the next few days if needed.&lt;br&gt;&lt;br&gt;[edit]&lt;br&gt;&lt;br&gt;Fixed an issue with the content of downloaded scripts being a web-api error message like...&lt;br&gt;&lt;br&gt;[S_ERROR]|110|web_api|You have exceeded the maximum of 50 requests per minute.&lt;br&gt;&lt;br&gt;Too lazy to check if there was an actual error, so I just rate limited it to one script per second, or three seconds for every tenth script.&lt;br&gt;&lt;br&gt;I also altered the 'Local Only' option so that you could set a specific worldscope, instead of just 0:x.&lt;br&gt;&lt;br&gt;[edit 1st Jan]&lt;br&gt;For some reason access to the game servers got blocked again, so this wasn't working from around some time last night. Should be up and running again (apart from the bits that don't work :P).</description><pubDate>Mon, 28 Dec 2009 4:43:11 GMT</pubDate><content:encoded><![CDATA[ I've put together an asset grabber for Metaplace to make it easier for users to download scripts, images, sounds, tiles &amp; maps (for each place) and initial tag stream from their various worlds. This is basically a mini client that connects to a world and parses the lists of assets that are normally sent to clients.<br><br>A few things to be aware of:<br><span class=standard_text><ul><li>The username supplied is case-sensitive and must be exactly the same as displayed on your metaplace profile. e.g. Obo not obo.<br></li><li>You are required to provide your metaplace password. Just be aware this is not an official metaplace service! That said, your password will not be stored anywhere. Just be aware of any similar service that does as for your password.<br></li><li>Once you submit the form <span style='color:blue'>nothing will appear to happen other than the browser will appear to be connecting to oscan.net</span>. This is the way it currently works, so just let it be! Once it has grabbed all the assets it will pack them into a Zip file and then give you a prompt to download it. <b>Don't hit the submit button twice!</b><br></li><li>This process may take a while for large worlds, so <b>BE PATIENT!</b> If the browser looks like it is doing something then just let it work away.<br></li><li>Where possible use the "local only" option to only get 0:x assets if you don't need everything from the world.<br></li><li>If you get an error link "could not connect to game04.metaplace.com:5101" then try again later. Your login session tried to connect to a server and/or port my web host hasn't put on the white-list to allow connections.<br></li><li>If an asset could not be downloaded it should be listed in the error_log provided in the zip file.<br></li><li>While it works for me it very well might break, and there is not much time left to allow more testing! If something goes wrong leave a comment here or use the contact page and I'll try and track down the problem.<br></li></ul></span> <br>So here if the link...<br><a href='http://oscan.net/metaplace/asset_grab/' class='link'>http://oscan.net/metaplace/asset_grab/</a><br><br>I'll see about making it easier, more foolproof, to use in the next few days if needed.<br><br>[edit]<br><br>Fixed an issue with the content of downloaded scripts being a web-api error message like...<br><br>[S_ERROR]|110|web_api|You have exceeded the maximum of 50 requests per minute.<br><br>Too lazy to check if there was an actual error, so I just rate limited it to one script per second, or three seconds for every tenth script.<br><br>I also altered the 'Local Only' option so that you could set a specific worldscope, instead of just 0:x.<br><br>[edit 1st Jan]<br>For some reason access to the game servers got blocked again, so this wasn't working from around some time last night. Should be up and running again (apart from the bits that don't work :P). ]]></content:encoded></item><item><title>Moving on (or back) to Flash</title><link>http://oscan.net/?cmd=blog&amp;pid=14</link><description>With the closing of Metaplace a lot of its users are now asking themselves &quot;where to now?&quot;. Some are looking for another social hangout, others, like myself are thinking more about game development environments. There has been a lot of talk about &lt;a href='http://unity3d.com/' class='link'&gt;Unity 3D&lt;/a&gt;, which I've been meaning to have a look at for a while, but first I think I'm going to try out Flash... again (although to be pedantic it'll be Flex).&lt;br&gt;&lt;br&gt;After my 'success' of creating &lt;a href='http://www.youtube.com/watch?v=-z8O25ktp9Y' class='link'&gt;That Falling Block Game&lt;/a&gt; on Metaplace (okay, okay, I'll finally admit it... It's TETRIS!), and buoyed by the &lt;a href='http://forums.f13.net/index.php?topic=15690.0' class='link'&gt;success stories&lt;/a&gt; of &lt;a href='http://www.loadeddie.com/' class='link'&gt;others&lt;/a&gt;, I thought I could try my hand at creating a &lt;i&gt;real&lt;/i&gt; flash game rather than trying to contort a virtual world platform into one. So last summer, after finally figuring out you could create flash apps for free with the command line flex compiler (therefore avoiding the need to spend hundreds on the Flash development program) I started to make a flash game!&lt;br&gt;&lt;br&gt;&lt;b&gt;Adventures in Actionscript&lt;/b&gt;&lt;br&gt;The scripting language, ActionScript, had changed a bit since I had &lt;a href='http://oscan.net/index.php?cmd=blog&amp;amp;pid=5' class='link'&gt;last played around with it&lt;/a&gt;, so I used this &lt;a href='http://www.brighthub.com/internet/web-development/articles/11010.aspx' class='link'&gt;great tutorial for making games in flex&lt;/a&gt; to get myself up to speed (since AS is from the same family as JavaScript it wasn't too hard to get in to).&lt;br&gt;&lt;br&gt;I had decided to try and make a Peggle like hit-the-targets-with-the-bouncing-ball game, just without gravity. That was probably my first mistake; wrangling with physics while trying to learn the ins and outs of a platform is probably not the best idea. My second, and most likely biggest, mistake was to write all that physics interaction myself, rather than use a 3rd party library. It seemed a somewhat reasonable decision; there was only going to be one moving object, with everything it could collide with being stationary (walls, circles and slingshotting around black holes). I had worked on this game on and off over three months of the summer and most of that time was spent trying to get one ball to bounce correctly off those various surfaces, or ensuring that it would bounce at all and not just pass through the object.&lt;br&gt;&lt;br&gt;Ultimately it was never finished. The last version of the game was complied on the 27th of August, full of debug code...&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;object width='400' height='460'&gt;&lt;param name='movie' value='http://oscan.net/game1.swf'&gt;&lt;embed src='http://oscan.net/game1.swf' width='400' height='460'&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br&gt;(hit r to reset if the ball gets stuck somewhere)&lt;/div&gt;&lt;br&gt;The aim of the game was:&lt;br&gt;&lt;span class=standard_text&gt;&lt;ul&gt;&lt;li&gt;Hit each of the targets in sequence. There could be up to eight, where they were coloured red, orange, yellow, etc. Each time you hit the next in the sequence it played a musical note on a scale.&lt;br&gt;&lt;/li&gt;&lt;li&gt;The player first places the ball within a small starting area and then aims where to shoot the ball (fine-aim with mouse-wheel or x/c). From then on the player has no control as the ball bounces around the level, hitting targets and traps.&lt;br&gt;&lt;/li&gt;&lt;li&gt;You started out with 3 hit-points. Each time you hit the next in the sequence you got an extra hit-point. Each time you hit some spikes you lost a hit point.&lt;br&gt;&lt;/li&gt;&lt;li&gt;When you got to 0 hp the level reset.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Getting too close to a black-hole and falling in would reset the level.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If you have more than 3 hp you could spend 3 hp to stop the ball in its tracks so that you could re-aim without resetting the level (single-click while ball is moving).&lt;br&gt;&lt;/li&gt;&lt;li&gt;When aiming you could increase or decrease the length of the aiming guide line (up or down keys), which would have modified the amount of points you could get (the longer the line the fewer points you would would get during the level)&lt;br&gt;&lt;/li&gt;&lt;li&gt;For each level there would be at least one way to aim the ball in such a way that you could hit each target without losing any hit-points (a perfect completion)&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br&gt;Those last two were what probably lead to me dropping the project (or at least turning a break into an indefinite break). Although there were still some annoying collision bugs to iron out, most had been taken care of and I was beginning to move on to actually creating levels. I hadn't made a level editor, instead defining the levels in text files as a list of objects and their positions and orientations. This is what originally lead to the extendible aim guide in order to try and find at least one perfect route per level. It was a rather clumsy way to go about building a level; I'd enter an object into the text file, recompile the flash movie, play the level to see how it interacts with the path of the ball, make adjustments in the text file etc. etc., all the while the aim guide was buggy in its own collision detection.&lt;br&gt;&lt;br&gt;Luckily before I got too far in this mind numbing process I noticed something odd about how the ball would bounce off the circular targets. A small difference in the approach trajectory of the ball to a circular target made a larger difference in the departing trajectory. When trying to aim the ball so it would hit multiple circular targets in succession, a tiny initial fine-tuning in aim resulted in a massive difference in the path after a few bounces. Whether this is just a property of collisions between circles or as a result of my code, it would have taken the only form of skill and control away from the player, leaving them with just a shoot and hope strategy, as well as making an already painful level creation process near impossible.&lt;br&gt;&lt;br&gt;I decided to put it all aside for a while, but then never revisited it to find the actual cause.&lt;br&gt;&lt;br&gt;&lt;b&gt;Back to square one&lt;/b&gt;&lt;br&gt;With my impending post-Metaplace attempt at entering the flash game scene, I hope I'll have learnt the lessons of my previous effort and start out with something a bit less chaotic. A bit more mundane. Like a colour-matching game!&lt;br&gt;It was in the middle of my 3,487th game of spider solitaire (on medium I must admit) that I thought &lt;i&gt;'I could turn this into a simple match-5 game, with coloured shapes in place of suited cards!'&lt;/i&gt; &lt;br&gt;&lt;br&gt;So come January 2nd that shall be my task, and I give myself... oh, lets say two weeks to get it done!&lt;br&gt;</description><pubDate>Sun, 27 Dec 2009 4:34:26 GMT</pubDate><content:encoded><![CDATA[ With the closing of Metaplace a lot of its users are now asking themselves "where to now?". Some are looking for another social hangout, others, like myself are thinking more about game development environments. There has been a lot of talk about <a href='http://unity3d.com/' class='link'>Unity 3D</a>, which I've been meaning to have a look at for a while, but first I think I'm going to try out Flash... again (although to be pedantic it'll be Flex).<br><br>After my 'success' of creating <a href='http://www.youtube.com/watch?v=-z8O25ktp9Y' class='link'>That Falling Block Game</a> on Metaplace (okay, okay, I'll finally admit it... It's TETRIS!), and buoyed by the <a href='http://forums.f13.net/index.php?topic=15690.0' class='link'>success stories</a> of <a href='http://www.loadeddie.com/' class='link'>others</a>, I thought I could try my hand at creating a <i>real</i> flash game rather than trying to contort a virtual world platform into one. So last summer, after finally figuring out you could create flash apps for free with the command line flex compiler (therefore avoiding the need to spend hundreds on the Flash development program) I started to make a flash game!<br><br><b>Adventures in Actionscript</b><br>The scripting language, ActionScript, had changed a bit since I had <a href='http://oscan.net/index.php?cmd=blog&amp;pid=5' class='link'>last played around with it</a>, so I used this <a href='http://www.brighthub.com/internet/web-development/articles/11010.aspx' class='link'>great tutorial for making games in flex</a> to get myself up to speed (since AS is from the same family as JavaScript it wasn't too hard to get in to).<br><br>I had decided to try and make a Peggle like hit-the-targets-with-the-bouncing-ball game, just without gravity. That was probably my first mistake; wrangling with physics while trying to learn the ins and outs of a platform is probably not the best idea. My second, and most likely biggest, mistake was to write all that physics interaction myself, rather than use a 3rd party library. It seemed a somewhat reasonable decision; there was only going to be one moving object, with everything it could collide with being stationary (walls, circles and slingshotting around black holes). I had worked on this game on and off over three months of the summer and most of that time was spent trying to get one ball to bounce correctly off those various surfaces, or ensuring that it would bounce at all and not just pass through the object.<br><br>Ultimately it was never finished. The last version of the game was complied on the 27th of August, full of debug code...<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><object width='400' height='460'><param name='movie' value='http://oscan.net/game1.swf'><embed src='http://oscan.net/game1.swf' width='400' height='460'></embed></object><br>(hit r to reset if the ball gets stuck somewhere)</div><br>The aim of the game was:<br><span class=standard_text><ul><li>Hit each of the targets in sequence. There could be up to eight, where they were coloured red, orange, yellow, etc. Each time you hit the next in the sequence it played a musical note on a scale.<br></li><li>The player first places the ball within a small starting area and then aims where to shoot the ball (fine-aim with mouse-wheel or x/c). From then on the player has no control as the ball bounces around the level, hitting targets and traps.<br></li><li>You started out with 3 hit-points. Each time you hit the next in the sequence you got an extra hit-point. Each time you hit some spikes you lost a hit point.<br></li><li>When you got to 0 hp the level reset.<br></li><li>Getting too close to a black-hole and falling in would reset the level.<br></li><li>If you have more than 3 hp you could spend 3 hp to stop the ball in its tracks so that you could re-aim without resetting the level (single-click while ball is moving).<br></li><li>When aiming you could increase or decrease the length of the aiming guide line (up or down keys), which would have modified the amount of points you could get (the longer the line the fewer points you would would get during the level)<br></li><li>For each level there would be at least one way to aim the ball in such a way that you could hit each target without losing any hit-points (a perfect completion)</li></ul></span><br>Those last two were what probably lead to me dropping the project (or at least turning a break into an indefinite break). Although there were still some annoying collision bugs to iron out, most had been taken care of and I was beginning to move on to actually creating levels. I hadn't made a level editor, instead defining the levels in text files as a list of objects and their positions and orientations. This is what originally lead to the extendible aim guide in order to try and find at least one perfect route per level. It was a rather clumsy way to go about building a level; I'd enter an object into the text file, recompile the flash movie, play the level to see how it interacts with the path of the ball, make adjustments in the text file etc. etc., all the while the aim guide was buggy in its own collision detection.<br><br>Luckily before I got too far in this mind numbing process I noticed something odd about how the ball would bounce off the circular targets. A small difference in the approach trajectory of the ball to a circular target made a larger difference in the departing trajectory. When trying to aim the ball so it would hit multiple circular targets in succession, a tiny initial fine-tuning in aim resulted in a massive difference in the path after a few bounces. Whether this is just a property of collisions between circles or as a result of my code, it would have taken the only form of skill and control away from the player, leaving them with just a shoot and hope strategy, as well as making an already painful level creation process near impossible.<br><br>I decided to put it all aside for a while, but then never revisited it to find the actual cause.<br><br><b>Back to square one</b><br>With my impending post-Metaplace attempt at entering the flash game scene, I hope I'll have learnt the lessons of my previous effort and start out with something a bit less chaotic. A bit more mundane. Like a colour-matching game!<br>It was in the middle of my 3,487th game of spider solitaire (on medium I must admit) that I thought <i>'I could turn this into a simple match-5 game, with coloured shapes in place of suited cards!'</i> <br><br>So come January 2nd that shall be my task, and I give myself... oh, lets say two weeks to get it done!<br> ]]></content:encoded></item><item><title>Metaplace is dead. Long live Metaplace!</title><link>http://oscan.net/?cmd=blog&amp;pid=13</link><description>So we got the news yesterday that Metaplace.com will be &lt;a href='http://us1.campaign-archive.com/?u=d52efca73013b738db5d9bab8&amp;amp;id=3299db4e27&amp;amp;e=07b4a740c2' class='link'&gt;closing down&lt;/a&gt; as a User Generated Content platform at the end of the year, a little over two years since alpha testing first began. My sentiments pretty much echo &lt;a href='http://camelpate.blogspot.com/2009/12/rip-metaplacecom.html' class='link'&gt;those of Crwth&lt;/a&gt;. Metaplace had the right ingredients, but perhaps just needed a pinch of something or other and a little bit longer to cook before serving.&lt;br&gt;&lt;br&gt;I first got my hands on Metaplace, after following it from its announcement, only a few months after alpha testing started; and other than a handful of days where I hadn't been online, I've been there every day since. Even during the weeks when I didn't even touch the building tools I was always sitting in Plain Old Chat keeping up to date with the goings on of the community.&lt;br&gt;&lt;br&gt;To me Metaplace was a way to help me understand the making of games, providing an engine for rapid prototyping and a great way to get rapid feedback from the community. I tried a number of projects with varying levels of success, the best of which ended up as featured content in Metaplace Central. &lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/-z8O25ktp9Y&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/-z8O25ktp9Y&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/yhZ9j5t8emw&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/yhZ9j5t8emw&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;Initially I thought the appeal of Metaplace was that it was going to allow people to make their own little mini MMOs (mMO?), but for a large part the visible community ended up being a bunch of 12 year olds pretending to be 14 year olds looking for 'boyfriends' and 'girlfriends', whatever that means in a virtual context. The more dedicated builders began to retreat into various unseen corners while still creating some great content in the form of Adventure games or Platform games or other interesting experiments.&lt;br&gt;&lt;br&gt;Over time I had been making little MMO systems, such as health bars and skill toolbars, for people to use to try and make games; although I could probably have made them a bit easier to use! I only just recently started to pull these together myself in an attempt to create a group based dungeon crawl. It had been a while since I had made anything in Metaplace and working on this, coding AI, making walls disappear when you walk into a room etc. was getting me excited about the whole thing all over again.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/_YsDjWlfy_Y&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/_YsDjWlfy_Y&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;I was also just starting to help work on Crwth's &lt;a href='http://pages.cpsc.ucalgary.ca/~crwth/js/chump/' class='link'&gt;HTML5 client&lt;/a&gt;, which I was finding really interesting.&lt;br&gt;But alas, it is not to be.&lt;br&gt;&lt;br&gt;I'll be interested to see what now becomes of the Metaplace platform. I'm thinking we will be seeing professionally created games come out of it, rather than the &quot;virtual worlds for everyone&quot; approach.&lt;br&gt;&lt;br&gt;All the time I spent on Metaplace was time well spent. I learned a lot, got to know some great people, which will all undoubtedly have an effect on whatever future projects I end up working on.&lt;br&gt;&lt;br&gt;To quote Carl Sagan, quoting Thomas Campbell, &quot;To live in hearts you leave behind is not to die&quot;. So Metaplace will live on in the memories of its dedicated community members... I'm just not sure our hearts have a RESTful web-api.</description><pubDate>Tue, 22 Dec 2009 6:29:24 GMT</pubDate><content:encoded><![CDATA[ So we got the news yesterday that Metaplace.com will be <a href='http://us1.campaign-archive.com/?u=d52efca73013b738db5d9bab8&amp;id=3299db4e27&amp;e=07b4a740c2' class='link'>closing down</a> as a User Generated Content platform at the end of the year, a little over two years since alpha testing first began. My sentiments pretty much echo <a href='http://camelpate.blogspot.com/2009/12/rip-metaplacecom.html' class='link'>those of Crwth</a>. Metaplace had the right ingredients, but perhaps just needed a pinch of something or other and a little bit longer to cook before serving.<br><br>I first got my hands on Metaplace, after following it from its announcement, only a few months after alpha testing started; and other than a handful of days where I hadn't been online, I've been there every day since. Even during the weeks when I didn't even touch the building tools I was always sitting in Plain Old Chat keeping up to date with the goings on of the community.<br><br>To me Metaplace was a way to help me understand the making of games, providing an engine for rapid prototyping and a great way to get rapid feedback from the community. I tried a number of projects with varying levels of success, the best of which ended up as featured content in Metaplace Central. <br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/-z8O25ktp9Y&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-z8O25ktp9Y&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></div><br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/yhZ9j5t8emw&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yhZ9j5t8emw&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></div><br><br>Initially I thought the appeal of Metaplace was that it was going to allow people to make their own little mini MMOs (mMO?), but for a large part the visible community ended up being a bunch of 12 year olds pretending to be 14 year olds looking for 'boyfriends' and 'girlfriends', whatever that means in a virtual context. The more dedicated builders began to retreat into various unseen corners while still creating some great content in the form of Adventure games or Platform games or other interesting experiments.<br><br>Over time I had been making little MMO systems, such as health bars and skill toolbars, for people to use to try and make games; although I could probably have made them a bit easier to use! I only just recently started to pull these together myself in an attempt to create a group based dungeon crawl. It had been a while since I had made anything in Metaplace and working on this, coding AI, making walls disappear when you walk into a room etc. was getting me excited about the whole thing all over again.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/_YsDjWlfy_Y&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_YsDjWlfy_Y&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></div><br><br>I was also just starting to help work on Crwth's <a href='http://pages.cpsc.ucalgary.ca/~crwth/js/chump/' class='link'>HTML5 client</a>, which I was finding really interesting.<br>But alas, it is not to be.<br><br>I'll be interested to see what now becomes of the Metaplace platform. I'm thinking we will be seeing professionally created games come out of it, rather than the "virtual worlds for everyone" approach.<br><br>All the time I spent on Metaplace was time well spent. I learned a lot, got to know some great people, which will all undoubtedly have an effect on whatever future projects I end up working on.<br><br>To quote Carl Sagan, quoting Thomas Campbell, "To live in hearts you leave behind is not to die". So Metaplace will live on in the memories of its dedicated community members... I'm just not sure our hearts have a RESTful web-api. ]]></content:encoded></item><item><title>DIY Wedge: more control!</title><link>http://oscan.net/?cmd=blog&amp;pid=12</link><description>Last week I finally got around to adding an azimuth fine tuning controller to my diy equatorial wedge, which is little more than a bunch of M6 fittings fixed to both the wedge body and one of the bolts that attaches wedge to the tripod. I only just got around to it as I the original bolts I got for the tripod were not long enough (there were in fact flush to the tripod body), so I had to go to a specialist trade shop again to get the mtyhical UNC thread bolts and nuts.&lt;br&gt;&lt;br&gt;When the tripod bolts are loosened I can then use the wing nuts on the side mounted azimuth control to make slight adjustments to the azimuth angle when attempting zero in on Polaris while doing a 'wedge align' as a part of the equatorial alignment setup; there is enough give on the size of the bolt holes on the wedge to allow some rotational movement. &lt;br&gt;Hopefully this works out better than the disastrous results that come with picking up the entire gear and trying to shift it slightly one way or the other!&lt;br&gt;&lt;br&gt;Now I just need some clear skies... on a night that is not too cold please!&lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='./images/thumb_14.png' alt='' title='' width='185' border=0 /&gt; &lt;img src='./images/thumb_15.png' alt='' title='' width='240' border=0 /&gt;&lt;/div&gt;&lt;br&gt;&lt;table align=center border=0 width=400 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td height=110 width=400&gt;&lt;div height=110 width=400 style='position:relative;'&gt;&lt;div id='picbar_container_f923d434438829dc732c4a5791ba5342' style='display:table-cell;vertical-align:middle;position:absolute;top:-50;height:110px;width:400;max-height:110px;max-width:400;clip:rect(0,400,110,0);'&gt;&lt;div id='picbar_f923d434438829dc732c4a5791ba5342' style='position:absolute;left:0;line-height:100px; text-align: center;height:100;width:100%;white-space:nowrap;'&gt;&lt;img scr='./img/blank.gif' width=1 height=101 style='vertical-align:middle;'&gt;&lt;a href='./index.php?cmd=gallery&amp;cat=8,&amp;pid=3'&gt;&lt;img src='./images/thumb_3.png' style='vertical-align:middle;height:50' class=solid id='picbar_1_f923d434438829dc732c4a5791ba5342' onmouseover=&quot;picbar_over('f923d434438829dc732c4a5791ba5342', 1, 6)&quot; onmouseout=&quot;picbar_out('f923d434438829dc732c4a5791ba5342',1, 6)&quot; alt=&quot;DIY Wedge 1&quot; title=&quot;DIY Wedge 1&quot;&gt;&lt;/a&gt; &lt;a href='./index.php?cmd=gallery&amp;cat=8,&amp;pid=4'&gt;&lt;img src='./images/thumb_4.png' style='vertical-align:middle;height:50' class=solid id='picbar_2_f923d434438829dc732c4a5791ba5342' onmouseover=&quot;picbar_over('f923d434438829dc732c4a5791ba5342', 2, 6)&quot; onmouseout=&quot;picbar_out('f923d434438829dc732c4a5791ba5342',2, 6)&quot; alt=&quot;DIY Wedge 2&quot; title=&quot;DIY Wedge 2&quot;&gt;&lt;/a&gt; &lt;a href='./index.php?cmd=gallery&amp;cat=8,&amp;pid=8'&gt;&lt;img src='./images/thumb_8.png' style='vertical-align:middle;height:50' class=solid id='picbar_3_f923d434438829dc732c4a5791ba5342' onmouseover=&quot;picbar_over('f923d434438829dc732c4a5791ba5342', 3, 6)&quot; onmouseout=&quot;picbar_out('f923d434438829dc732c4a5791ba5342',3, 6)&quot; alt=&quot;DIY wedge 3&quot; title=&quot;DIY wedge 3&quot;&gt;&lt;/a&gt; &lt;a href='./index.php?cmd=gallery&amp;cat=8,&amp;pid=6'&gt;&lt;img src='./images/thumb_6.png' style='vertical-align:middle;height:50' class=solid id='picbar_4_f923d434438829dc732c4a5791ba5342' onmouseover=&quot;picbar_over('f923d434438829dc732c4a5791ba5342', 4, 6)&quot; onmouseout=&quot;picbar_out('f923d434438829dc732c4a5791ba5342',4, 6)&quot; alt=&quot;DIY Wedge 4&quot; title=&quot;DIY Wedge 4&quot;&gt;&lt;/a&gt; &lt;a href='./index.php?cmd=gallery&amp;cat=8,&amp;pid=14'&gt;&lt;img src='./images/thumb_14.png' style='vertical-align:middle;height:50' class=solid id='picbar_5_f923d434438829dc732c4a5791ba5342' onmouseover=&quot;picbar_over('f923d434438829dc732c4a5791ba5342', 5, 6)&quot; onmouseout=&quot;picbar_out('f923d434438829dc732c4a5791ba5342',5, 6)&quot; alt=&quot;DIY Wedge Azimuth Control&quot; title=&quot;DIY Wedge Azimuth Control&quot;&gt;&lt;/a&gt; &lt;a href='./index.php?cmd=gallery&amp;cat=8,&amp;pid=15'&gt;&lt;img src='./images/thumb_15.png' style='vertical-align:middle;height:50' class=solid id='picbar_6_f923d434438829dc732c4a5791ba5342' onmouseover=&quot;picbar_over('f923d434438829dc732c4a5791ba5342', 6, 6)&quot; onmouseout=&quot;picbar_out('f923d434438829dc732c4a5791ba5342',6, 6)&quot; alt=&quot;DIY Wedge Azimuth Control&quot; title=&quot;DIY Wedge Azimuth Control&quot;&gt;&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div id='picbar_scroll_left_f923d434438829dc732c4a5791ba5342' style='width:17;height:100;position:absolute;left:-16px;top:-50px;background-color:grey;opacity:0.5;filter:alpha(opacity=50);' onmouseover=&quot;scrollPicBar('f923d434438829dc732c4a5791ba5342','left',6)&quot; onmouseout=&quot;stopScrollPicBar('f923d434438829dc732c4a5791ba5342')&quot;&gt;&lt;img src='./img/move_W1.gif' width=17 height=17 style='position:absolute;top:42'&gt;&lt;/div&gt;&lt;div id='picbar_scroll_right_f923d434438829dc732c4a5791ba5342' style='width:17;height:100;position:absolute;right:-16px;top:-50px;background-color:grey;opacity:0.5;filter:alpha(opacity=50);' onmouseover=&quot;scrollPicBar('f923d434438829dc732c4a5791ba5342','right',6)&quot; onmouseout=&quot;stopScrollPicBar('f923d434438829dc732c4a5791ba5342')&quot;&gt;&lt;img src='./img/move_E1.gif' width=17 height=17 style='position:absolute;top:42'&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type='text/javascript'&gt;picbar_over('f923d434438829dc732c4a5791ba5342',1,6,25);&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description><pubDate>Tue, 20 Oct 2009 2:02:33 GMT</pubDate><content:encoded><![CDATA[ Last week I finally got around to adding an azimuth fine tuning controller to my diy equatorial wedge, which is little more than a bunch of M6 fittings fixed to both the wedge body and one of the bolts that attaches wedge to the tripod. I only just got around to it as I the original bolts I got for the tripod were not long enough (there were in fact flush to the tripod body), so I had to go to a specialist trade shop again to get the mtyhical UNC thread bolts and nuts.<br><br>When the tripod bolts are loosened I can then use the wing nuts on the side mounted azimuth control to make slight adjustments to the azimuth angle when attempting zero in on Polaris while doing a 'wedge align' as a part of the equatorial alignment setup; there is enough give on the size of the bolt holes on the wedge to allow some rotational movement. <br>Hopefully this works out better than the disastrous results that come with picking up the entire gear and trying to shift it slightly one way or the other!<br><br>Now I just need some clear skies... on a night that is not too cold please!<br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='./images/thumb_14.png' alt='' title='' width='185' border=0 /> <img src='./images/thumb_15.png' alt='' title='' width='240' border=0 /></div><br><table align=center border=0 width=400 cellpadding=0 cellspacing=0><tr><td height=110 width=400><div height=110 width=400 style='position:relative;'><div id='picbar_container_f923d434438829dc732c4a5791ba5342' style='display:table-cell;vertical-align:middle;position:absolute;top:-50;height:110px;width:400;max-height:110px;max-width:400;clip:rect(0,400,110,0);'><div id='picbar_f923d434438829dc732c4a5791ba5342' style='position:absolute;left:0;line-height:100px; text-align: center;height:100;width:100%;white-space:nowrap;'><img scr='./img/blank.gif' width=1 height=101 style='vertical-align:middle;'><a href='./index.php?cmd=gallery&cat=8,&pid=3'><img src='./images/thumb_3.png' style='vertical-align:middle;height:50' class=solid id='picbar_1_f923d434438829dc732c4a5791ba5342' onmouseover="picbar_over('f923d434438829dc732c4a5791ba5342', 1, 6)" onmouseout="picbar_out('f923d434438829dc732c4a5791ba5342',1, 6)" alt="DIY Wedge 1" title="DIY Wedge 1"></a> <a href='./index.php?cmd=gallery&cat=8,&pid=4'><img src='./images/thumb_4.png' style='vertical-align:middle;height:50' class=solid id='picbar_2_f923d434438829dc732c4a5791ba5342' onmouseover="picbar_over('f923d434438829dc732c4a5791ba5342', 2, 6)" onmouseout="picbar_out('f923d434438829dc732c4a5791ba5342',2, 6)" alt="DIY Wedge 2" title="DIY Wedge 2"></a> <a href='./index.php?cmd=gallery&cat=8,&pid=8'><img src='./images/thumb_8.png' style='vertical-align:middle;height:50' class=solid id='picbar_3_f923d434438829dc732c4a5791ba5342' onmouseover="picbar_over('f923d434438829dc732c4a5791ba5342', 3, 6)" onmouseout="picbar_out('f923d434438829dc732c4a5791ba5342',3, 6)" alt="DIY wedge 3" title="DIY wedge 3"></a> <a href='./index.php?cmd=gallery&cat=8,&pid=6'><img src='./images/thumb_6.png' style='vertical-align:middle;height:50' class=solid id='picbar_4_f923d434438829dc732c4a5791ba5342' onmouseover="picbar_over('f923d434438829dc732c4a5791ba5342', 4, 6)" onmouseout="picbar_out('f923d434438829dc732c4a5791ba5342',4, 6)" alt="DIY Wedge 4" title="DIY Wedge 4"></a> <a href='./index.php?cmd=gallery&cat=8,&pid=14'><img src='./images/thumb_14.png' style='vertical-align:middle;height:50' class=solid id='picbar_5_f923d434438829dc732c4a5791ba5342' onmouseover="picbar_over('f923d434438829dc732c4a5791ba5342', 5, 6)" onmouseout="picbar_out('f923d434438829dc732c4a5791ba5342',5, 6)" alt="DIY Wedge Azimuth Control" title="DIY Wedge Azimuth Control"></a> <a href='./index.php?cmd=gallery&cat=8,&pid=15'><img src='./images/thumb_15.png' style='vertical-align:middle;height:50' class=solid id='picbar_6_f923d434438829dc732c4a5791ba5342' onmouseover="picbar_over('f923d434438829dc732c4a5791ba5342', 6, 6)" onmouseout="picbar_out('f923d434438829dc732c4a5791ba5342',6, 6)" alt="DIY Wedge Azimuth Control" title="DIY Wedge Azimuth Control"></a> </div></div><div id='picbar_scroll_left_f923d434438829dc732c4a5791ba5342' style='width:17;height:100;position:absolute;left:-16px;top:-50px;background-color:grey;opacity:0.5;filter:alpha(opacity=50);' onmouseover="scrollPicBar('f923d434438829dc732c4a5791ba5342','left',6)" onmouseout="stopScrollPicBar('f923d434438829dc732c4a5791ba5342')"><img src='./img/move_W1.gif' width=17 height=17 style='position:absolute;top:42'></div><div id='picbar_scroll_right_f923d434438829dc732c4a5791ba5342' style='width:17;height:100;position:absolute;right:-16px;top:-50px;background-color:grey;opacity:0.5;filter:alpha(opacity=50);' onmouseover="scrollPicBar('f923d434438829dc732c4a5791ba5342','right',6)" onmouseout="stopScrollPicBar('f923d434438829dc732c4a5791ba5342')"><img src='./img/move_E1.gif' width=17 height=17 style='position:absolute;top:42'></div></div><script type='text/javascript'>picbar_over('f923d434438829dc732c4a5791ba5342',1,6,25);</script></td></tr></table> ]]></content:encoded></item><item><title>Anatomy of a very Metaplace hack</title><link>http://oscan.net/?cmd=blog&amp;pid=10</link><description>There are those in the Metaplace community - those who inhabit the dank, dark avatar-less backwaters - who strive to know as much as possible about inner workings of the system. Those who make clients, who probe for weaknesses in closed-source scripts, who still mourn the loss of &lt;a href='http://camelpate.blogspot.com/2009/06/outputtouser.html' class='link'&gt;OutputToUser()&lt;/a&gt;, and get very grumpy at undocumented changes.&lt;br&gt;&lt;br&gt;When server update notes are released they don't just look at new features thinking '&lt;i&gt;how could I use this in a game&lt;/i&gt;?' but also '&lt;i&gt;how could this be abused&lt;/i&gt;?'&lt;br&gt;&lt;br&gt;One such update that started a spate of devious thinking was the inclusion of the UiPickable() function and its pending support in the client. This function would allow a UI element (and any child elements) to ignore mouse-clicks, making them fall through to whatever was underneath. Now this has some obviously helpful uses such as with avatar name tags; these are pieces of UI attached to objects in worldspace that can sometimes get in the way of mouse-clicks intended for movement. But it could also be easily abused, and it didn't take long for Crwth to think of a way to use it, with the intended target being the user-to-user coin gifting.&lt;br&gt;&lt;br&gt;Coin gifting (which has only recently been removed again in preparation for testing &quot;Real Money&quot; systems) was an in-world functionality that allowed one player to give some of their fake Metaplace play-dough money to another player. This was all safely locked away in the Secure Features module, which relies on closed-source scripts for its security. Closed-source scripts, &lt;i&gt;if used correctly&lt;/i&gt;, can be very good at keeping your code and data locked up tight. Although this hadn't always been the case - there were times when they were not so closed and exposed their data to anyone! - by the time coin gifting came around they were pretty secure. &lt;br&gt;&lt;br&gt;If you wanted to exploit coin gifting, for example trying to get someone to give you more than they wanted to, then you couldn't do it by trying to change the data within the secured gifting 'session'. But coin gifting did have a weakness; it required user input. The user needed to enter the amount of coins they wished to transfer and then again approve that transfer on a confirmation balance window. The user has to trust that the User Interface displayed to them is accurate and that they will only be transferring the amount they expect to.&lt;br&gt;&lt;br&gt;Crwth's idea was to exploit this trust by placing his own UI on top of the 'real' UI. The fake UI would use UiPickable() to allow the button clicks to pass down to the real UI, which was using different values than what the user expected. But it wouldn't even have to be similar UI; a user could think they were playing a game in someone's world, but really they were transferring their coins to the world owner.&lt;br&gt;&lt;br&gt;At the time this was discussed there was still no support for UiPickable in the client, so it couldn't be tested, but that didn't stop me from trying to implement something similar.&lt;br&gt;This vector of attack relied on the user actually wanting to perform a coin transfer and conning the user into transferring an unwanted amount by making subtle tweaks to the actual coin transfer UI itself.&lt;br&gt;&lt;br&gt;&lt;b&gt;On to the gory details:&lt;/b&gt;&lt;br&gt;A coin transfer was initiated from the context menu on a user; you would click the user you wanted to give coins to and select the option from the menu that popped up. This started a session from the &lt;i&gt;mpsec_start_coin_gift&lt;/i&gt; trigger. Since it used a trigger you could write a script that also had a version of this trigger, attached to the player template, so you could know when a transfer session had started and which user was the target. This on its own doesn't do you much good; while you could block the actual session from starting by preventing other implementations of that trigger from firing, you couldn't really put your own fake transfer in its place, as only the 'Secure Features' script has the privileges to perform an actual transfer. But it did allow your script to know when to try begin exploiting.&lt;br&gt;&lt;br&gt;Since my script (or any likely attacking script) was attached after the 'Secure Features' script, my version of the trigger fired first. By this point there was no session and no UI to try and meddle with. So I used a SendTo() to fire my own custom trigger but with a delay of 10ms (it would actually be about 30ms on average in practice due to the time it takes to set up a new execution frame). By the time this trigger actually fires the coin transfer UI will have been built, but in order to do anything to this UI you need to know what its ID numbers are.&lt;br&gt;&lt;br&gt;Each UI creation function returns a User Interface ID which can be used to manipulate that UI element after creation, such as attaching, deleting or changing values. In order to use these values you have to manually store them as they are not publicly accessible from anywhere else. So how can you get your hands on the IDs for already created UI that you did not make?&lt;br&gt;&lt;br&gt;The IDs are created sequentially; if an element you just made has an ID of 15 you can be reasonably sure that the element created immediately before it has an ID 14. In our case we are trying to look for the UI almost immediately after it was created, before it has even had a chance to be sent to the client. If you waited too long there could be a chance that some other innocent UI was created in the interval and therefore spoil your attack.&lt;br&gt;&lt;br&gt;I manually examined the MetaMarkup tags that are sent from the server to the clients and counted how many UI elements had been created for the coin transfer. Then in the first line of my custom trigger I immediately create a new UiElement and get its ID. I then subtracted the expected number elements for the coin transfer UI to get to its parent element. Alternatively you could just count back far enough to the individual child element you want to alter, such as the text field and the button, but going back to the parent demonstrates two weaknesses for the price of one.&lt;br&gt;&lt;br&gt;I could now use the newly acquired parent ID and use it with the UiFindWindow() function, which takes a parent id and a target element name. So I used that to find the text field&lt;br&gt;&lt;blockquote&gt;Code: MetaScript&lt;hr&gt;&lt;span class=standard_text style=&quot;font-family:'courier new',courier,monospace&quot;&gt;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;uiId&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;UiElement(0,'my_win&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;w_finder',&amp;nbsp;0,0)&lt;br&gt;uiId&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;uiId&amp;nbsp;-&amp;nbsp;9&lt;br&gt;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;text_field&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;UiFindWin&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;w(uiId,'amount_input')&lt;br&gt;&lt;/span&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;br&gt;This is the valid text field where the user enters the amount to be transferred. But instead of allowing the user to input their value here I made it invisible and changed the value to my own&lt;br&gt;&lt;blockquote&gt;Code: MetaScript&lt;hr&gt;&lt;span class=standard_text style=&quot;font-family:'courier new',courier,monospace&quot;&gt;UiVisible(text_field,0)&lt;br&gt;UiText(text_field,&amp;nbsp;'1337')&lt;br&gt;&lt;/span&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;br&gt;This will set up the session to transfer 1337 coins no matter what value the user inputs. But as of now the user has nowhere to enter a value, so I have to create a new text field that looks just like the old one.&lt;br&gt;&lt;blockquote&gt;Code: MetaScript&lt;hr&gt;&lt;span class=standard_text style=&quot;font-family:'courier new',courier,monospace&quot;&gt;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;submit&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;UiFindWin&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;w(ui,'yes_button')&lt;br&gt;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;text_field_bg&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;UiFindWin&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;w(ui,'amount_bg')&lt;br&gt;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;new_field&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;UiTextField(text_field_bg,'hack_field',10,7,145,15,&amp;nbsp;255,255,255,&amp;nbsp;0,0,0,0,&amp;nbsp;'mpsec_coin_g&lt;span style='color:#0000ff'&gt;if&lt;/span&gt;t&amp;nbsp;'..user_id..'&amp;nbsp;1337',&amp;nbsp;100&amp;nbsp;)&lt;br&gt;UiButtonField(submit,&amp;nbsp;new_field)&lt;br&gt;&lt;/span&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;br&gt;This finds the background element that was created for the real text field and submit button. The new field is then attached to the background in the correct place and its command has my hacked value appended to it, this is just in case the user tries to submit by hitting the enter key in the field rather than clicking on the submit button.&lt;br&gt;The new field is also attached to the button (I can't quite remember why I did this, and I can't test it any more to find out. I may have been trying to see what value the user entered to use it later on).&lt;br&gt;&lt;br&gt;When the &lt;i&gt;mpsec_coin_gift&lt;/i&gt; command was sent, it now used the 1337 value for the transfer, but before doing so it generated a confirmation screen that showed the users current coin balance, the amount to be transferred and then the resultant coin balance. This was a bit tricky, as at this point the displayed transfer value was 1337, which the user would surely notice as not being the value they entered. I would need to again grab that new UI and change it, but to what? At the time (as I recall) intercepting the command with the user entered value proved a failure so you'd just have to wing it, changing the value back to the default 100 and hope the user saw what they wanted to see.&lt;br&gt;&lt;br&gt;Or this is where a bit of social engineering could come in. You could only ask a user to transfer you the value that would ultimately be displayed on the confirmation screen. So you say &quot;send me 500 coins&quot;, they input 500, 500 is then displayed on the confirm window, but they are actually sending you 5,000.&lt;br&gt;&lt;br&gt;Or there is the &lt;i&gt;real&lt;/i&gt; engineering way. Don't hardcode in a value but set up up a new command that only you use and then use that to prime the value to the used. You agree a value to be transferred, then before they get to sent it you quickly fire off a command with that value so that it is used in the display.&lt;br&gt;&lt;br&gt;The only wrinkle in these methods is that they both fail to alter the last bit of information, the resultant balance. While you can alter a value in a UI element you can not extract a current value, and a users coin balance is considered privileged information so you can't access it. You just have to hope that no one in their right mind is &lt;i&gt;actually&lt;/i&gt; going to add up the values to see if the balances match.&lt;br&gt;&lt;br&gt;I tried this attack once and only once... on the Metaplace developer who made the coin transfer code. I got him to try and send me 100 coins from within my world, but the value that popped over his head as the transfer finally went through was 1337!&lt;br&gt;&lt;br&gt;Some may think that detailing all of this now in public is just going to help the exploiters, giving them a way to con the innocent Metaplace user. But I take the view that you can not know how to create a robust secure application unless you know the potential ways in which it can be exploited. After this was demonstrated, the coin transferring code was altered to help prevent this kind of attack. But it shouldn't be just the Metaplace developers who know how it could happen, everyone on Metaplace is a potential content developer. All builders and scripts should know those kinds of exploits (which is clearly why I am writing it on a site nobody reads!).&lt;br&gt;&lt;br&gt;My as yet unreleased PayPal module faced the same problem and I used a similar method to combat it. This attack relies on someone else knowing how many UI element IDs to count back to in order to find the correct elements to alter, and also optionally the names of the elements used. This can be combated by casting doubts on those assumptions.&lt;br&gt;&lt;blockquote&gt;Code: MetaScript&lt;hr&gt;&lt;span class=standard_text style=&quot;font-family:'courier new',courier,monospace&quot;&gt;&lt;br&gt;--utility&amp;nbsp;&lt;span style='color:#0000ff'&gt;function&lt;/span&gt;s&lt;br&gt;&lt;span style='color:#0000ff'&gt;function&lt;/span&gt;&amp;nbsp;r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_ele()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;r&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;math.ceil(&amp;nbsp;((math.ran&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;m()*100)/10)&amp;nbsp;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:#0000ff'&gt;for&lt;/span&gt;&amp;nbsp;1,r&amp;nbsp;&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UiElement(0,'fake&amp;nbsp;ui',0,0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:#0000ff'&gt;end&lt;/span&gt;&lt;br&gt;&lt;span style='color:#0000ff'&gt;end&lt;/span&gt;&lt;br&gt;&lt;span style='color:#0000ff'&gt;function&lt;/span&gt;&amp;nbsp;r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_name()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;MD5(&lt;span style='color:#ff0000'&gt;os&lt;/span&gt;.time()..':'..math.ran&lt;span style='color:#0000ff'&gt;do&lt;/span&gt;m())&lt;br&gt;&lt;span style='color:#0000ff'&gt;end&lt;/span&gt;&lt;br&gt;&lt;br&gt;--build&amp;nbsp;our&amp;nbsp;UI&lt;br&gt;r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_ele()&lt;br&gt;&lt;span style='color:#0000ff'&gt;local&lt;/span&gt;&amp;nbsp;uiId&amp;nbsp;&lt;span style='color:#ff0000'&gt;=&lt;/span&gt;&amp;nbsp;UiElement(0,'myParentUI'..r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_name(),0,0)&lt;br&gt;r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_ele()&lt;br&gt;UiLabel(uiId,'myTextLabel'..r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_name(),0,0,'can&amp;nbsp;you&amp;nbsp;find&amp;nbsp;me?!')&lt;br&gt;r&lt;span style='color:#0000ff'&gt;and&lt;/span&gt;_ui_ele()&lt;br&gt;UiAttachUser(&lt;span style='color:#ff0000'&gt;self&lt;/span&gt;,uiId)&lt;br&gt;&lt;/span&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;br&gt;This code creates a random number of UI element IDs before, in between and after each newly created piece of UI, which prevents someone from simply counting back a known number of elements. It also appends random strings to the ends of UI element names so that they can not be accessed that way.&lt;br&gt;This likely won't prevent all future attacks on UI, but it is a good place to start.&lt;br&gt;&lt;br&gt;As for UiPickable()... well, we never did get support for that in the client (perhaps due to this demonstration?), which is a shame since there are cases where it could be useful, even safe. For example I see no reason why it shouldn't be allowed for UI elements that are attached to objects, in worldspace. Those will always be behind the screen level UI and so have no chance to interfere. It is also probably where it is more useful.</description><pubDate>Tue, 29 Sep 2009 6:10:06 GMT</pubDate><content:encoded><![CDATA[ There are those in the Metaplace community - those who inhabit the dank, dark avatar-less backwaters - who strive to know as much as possible about inner workings of the system. Those who make clients, who probe for weaknesses in closed-source scripts, who still mourn the loss of <a href='http://camelpate.blogspot.com/2009/06/outputtouser.html' class='link'>OutputToUser()</a>, and get very grumpy at undocumented changes.<br><br>When server update notes are released they don't just look at new features thinking '<i>how could I use this in a game</i>?' but also '<i>how could this be abused</i>?'<br><br>One such update that started a spate of devious thinking was the inclusion of the UiPickable() function and its pending support in the client. This function would allow a UI element (and any child elements) to ignore mouse-clicks, making them fall through to whatever was underneath. Now this has some obviously helpful uses such as with avatar name tags; these are pieces of UI attached to objects in worldspace that can sometimes get in the way of mouse-clicks intended for movement. But it could also be easily abused, and it didn't take long for Crwth to think of a way to use it, with the intended target being the user-to-user coin gifting.<br><br>Coin gifting (which has only recently been removed again in preparation for testing "Real Money" systems) was an in-world functionality that allowed one player to give some of their fake Metaplace play-dough money to another player. This was all safely locked away in the Secure Features module, which relies on closed-source scripts for its security. Closed-source scripts, <i>if used correctly</i>, can be very good at keeping your code and data locked up tight. Although this hadn't always been the case - there were times when they were not so closed and exposed their data to anyone! - by the time coin gifting came around they were pretty secure. <br><br>If you wanted to exploit coin gifting, for example trying to get someone to give you more than they wanted to, then you couldn't do it by trying to change the data within the secured gifting 'session'. But coin gifting did have a weakness; it required user input. The user needed to enter the amount of coins they wished to transfer and then again approve that transfer on a confirmation balance window. The user has to trust that the User Interface displayed to them is accurate and that they will only be transferring the amount they expect to.<br><br>Crwth's idea was to exploit this trust by placing his own UI on top of the 'real' UI. The fake UI would use UiPickable() to allow the button clicks to pass down to the real UI, which was using different values than what the user expected. But it wouldn't even have to be similar UI; a user could think they were playing a game in someone's world, but really they were transferring their coins to the world owner.<br><br>At the time this was discussed there was still no support for UiPickable in the client, so it couldn't be tested, but that didn't stop me from trying to implement something similar.<br>This vector of attack relied on the user actually wanting to perform a coin transfer and conning the user into transferring an unwanted amount by making subtle tweaks to the actual coin transfer UI itself.<br><br><b>On to the gory details:</b><br>A coin transfer was initiated from the context menu on a user; you would click the user you wanted to give coins to and select the option from the menu that popped up. This started a session from the <i>mpsec_start_coin_gift</i> trigger. Since it used a trigger you could write a script that also had a version of this trigger, attached to the player template, so you could know when a transfer session had started and which user was the target. This on its own doesn't do you much good; while you could block the actual session from starting by preventing other implementations of that trigger from firing, you couldn't really put your own fake transfer in its place, as only the 'Secure Features' script has the privileges to perform an actual transfer. But it did allow your script to know when to try begin exploiting.<br><br>Since my script (or any likely attacking script) was attached after the 'Secure Features' script, my version of the trigger fired first. By this point there was no session and no UI to try and meddle with. So I used a SendTo() to fire my own custom trigger but with a delay of 10ms (it would actually be about 30ms on average in practice due to the time it takes to set up a new execution frame). By the time this trigger actually fires the coin transfer UI will have been built, but in order to do anything to this UI you need to know what its ID numbers are.<br><br>Each UI creation function returns a User Interface ID which can be used to manipulate that UI element after creation, such as attaching, deleting or changing values. In order to use these values you have to manually store them as they are not publicly accessible from anywhere else. So how can you get your hands on the IDs for already created UI that you did not make?<br><br>The IDs are created sequentially; if an element you just made has an ID of 15 you can be reasonably sure that the element created immediately before it has an ID 14. In our case we are trying to look for the UI almost immediately after it was created, before it has even had a chance to be sent to the client. If you waited too long there could be a chance that some other innocent UI was created in the interval and therefore spoil your attack.<br><br>I manually examined the MetaMarkup tags that are sent from the server to the clients and counted how many UI elements had been created for the coin transfer. Then in the first line of my custom trigger I immediately create a new UiElement and get its ID. I then subtracted the expected number elements for the coin transfer UI to get to its parent element. Alternatively you could just count back far enough to the individual child element you want to alter, such as the text field and the button, but going back to the parent demonstrates two weaknesses for the price of one.<br><br>I could now use the newly acquired parent ID and use it with the UiFindWindow() function, which takes a parent id and a target element name. So I used that to find the text field<br><blockquote>Code: MetaScript<hr><span class=standard_text style="font-family:'courier new',courier,monospace"><span style='color:#0000ff'>local</span>&nbsp;uiId&nbsp;<span style='color:#ff0000'>=</span>&nbsp;UiElement(0,'my_win<span style='color:#0000ff'>do</span>w_finder',&nbsp;0,0)<br>uiId&nbsp;<span style='color:#ff0000'>=</span>&nbsp;uiId&nbsp;-&nbsp;9<br><span style='color:#0000ff'>local</span>&nbsp;text_field&nbsp;<span style='color:#ff0000'>=</span>&nbsp;UiFindWin<span style='color:#0000ff'>do</span>w(uiId,'amount_input')<br></span><hr></blockquote><br>This is the valid text field where the user enters the amount to be transferred. But instead of allowing the user to input their value here I made it invisible and changed the value to my own<br><blockquote>Code: MetaScript<hr><span class=standard_text style="font-family:'courier new',courier,monospace">UiVisible(text_field,0)<br>UiText(text_field,&nbsp;'1337')<br></span><hr></blockquote><br>This will set up the session to transfer 1337 coins no matter what value the user inputs. But as of now the user has nowhere to enter a value, so I have to create a new text field that looks just like the old one.<br><blockquote>Code: MetaScript<hr><span class=standard_text style="font-family:'courier new',courier,monospace"><span style='color:#0000ff'>local</span>&nbsp;submit&nbsp;<span style='color:#ff0000'>=</span>&nbsp;UiFindWin<span style='color:#0000ff'>do</span>w(ui,'yes_button')<br><span style='color:#0000ff'>local</span>&nbsp;text_field_bg&nbsp;<span style='color:#ff0000'>=</span>&nbsp;UiFindWin<span style='color:#0000ff'>do</span>w(ui,'amount_bg')<br><span style='color:#0000ff'>local</span>&nbsp;new_field&nbsp;<span style='color:#ff0000'>=</span>&nbsp;UiTextField(text_field_bg,'hack_field',10,7,145,15,&nbsp;255,255,255,&nbsp;0,0,0,0,&nbsp;'mpsec_coin_g<span style='color:#0000ff'>if</span>t&nbsp;'..user_id..'&nbsp;1337',&nbsp;100&nbsp;)<br>UiButtonField(submit,&nbsp;new_field)<br></span><hr></blockquote><br>This finds the background element that was created for the real text field and submit button. The new field is then attached to the background in the correct place and its command has my hacked value appended to it, this is just in case the user tries to submit by hitting the enter key in the field rather than clicking on the submit button.<br>The new field is also attached to the button (I can't quite remember why I did this, and I can't test it any more to find out. I may have been trying to see what value the user entered to use it later on).<br><br>When the <i>mpsec_coin_gift</i> command was sent, it now used the 1337 value for the transfer, but before doing so it generated a confirmation screen that showed the users current coin balance, the amount to be transferred and then the resultant coin balance. This was a bit tricky, as at this point the displayed transfer value was 1337, which the user would surely notice as not being the value they entered. I would need to again grab that new UI and change it, but to what? At the time (as I recall) intercepting the command with the user entered value proved a failure so you'd just have to wing it, changing the value back to the default 100 and hope the user saw what they wanted to see.<br><br>Or this is where a bit of social engineering could come in. You could only ask a user to transfer you the value that would ultimately be displayed on the confirmation screen. So you say "send me 500 coins", they input 500, 500 is then displayed on the confirm window, but they are actually sending you 5,000.<br><br>Or there is the <i>real</i> engineering way. Don't hardcode in a value but set up up a new command that only you use and then use that to prime the value to the used. You agree a value to be transferred, then before they get to sent it you quickly fire off a command with that value so that it is used in the display.<br><br>The only wrinkle in these methods is that they both fail to alter the last bit of information, the resultant balance. While you can alter a value in a UI element you can not extract a current value, and a users coin balance is considered privileged information so you can't access it. You just have to hope that no one in their right mind is <i>actually</i> going to add up the values to see if the balances match.<br><br>I tried this attack once and only once... on the Metaplace developer who made the coin transfer code. I got him to try and send me 100 coins from within my world, but the value that popped over his head as the transfer finally went through was 1337!<br><br>Some may think that detailing all of this now in public is just going to help the exploiters, giving them a way to con the innocent Metaplace user. But I take the view that you can not know how to create a robust secure application unless you know the potential ways in which it can be exploited. After this was demonstrated, the coin transferring code was altered to help prevent this kind of attack. But it shouldn't be just the Metaplace developers who know how it could happen, everyone on Metaplace is a potential content developer. All builders and scripts should know those kinds of exploits (which is clearly why I am writing it on a site nobody reads!).<br><br>My as yet unreleased PayPal module faced the same problem and I used a similar method to combat it. This attack relies on someone else knowing how many UI element IDs to count back to in order to find the correct elements to alter, and also optionally the names of the elements used. This can be combated by casting doubts on those assumptions.<br><blockquote>Code: MetaScript<hr><span class=standard_text style="font-family:'courier new',courier,monospace"><br>--utility&nbsp;<span style='color:#0000ff'>function</span>s<br><span style='color:#0000ff'>function</span>&nbsp;r<span style='color:#0000ff'>and</span>_ui_ele()<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:#0000ff'>local</span>&nbsp;r&nbsp;<span style='color:#ff0000'>=</span>&nbsp;math.ceil(&nbsp;((math.ran<span style='color:#0000ff'>do</span>m()*100)/10)&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:#0000ff'>for</span>&nbsp;1,r&nbsp;<span style='color:#0000ff'>do</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UiElement(0,'fake&nbsp;ui',0,0)<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style='color:#0000ff'>end</span><br><span style='color:#0000ff'>end</span><br><span style='color:#0000ff'>function</span>&nbsp;r<span style='color:#0000ff'>and</span>_ui_name()<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;MD5(<span style='color:#ff0000'>os</span>.time()..':'..math.ran<span style='color:#0000ff'>do</span>m())<br><span style='color:#0000ff'>end</span><br><br>--build&nbsp;our&nbsp;UI<br>r<span style='color:#0000ff'>and</span>_ui_ele()<br><span style='color:#0000ff'>local</span>&nbsp;uiId&nbsp;<span style='color:#ff0000'>=</span>&nbsp;UiElement(0,'myParentUI'..r<span style='color:#0000ff'>and</span>_ui_name(),0,0)<br>r<span style='color:#0000ff'>and</span>_ui_ele()<br>UiLabel(uiId,'myTextLabel'..r<span style='color:#0000ff'>and</span>_ui_name(),0,0,'can&nbsp;you&nbsp;find&nbsp;me?!')<br>r<span style='color:#0000ff'>and</span>_ui_ele()<br>UiAttachUser(<span style='color:#ff0000'>self</span>,uiId)<br></span><hr></blockquote><br>This code creates a random number of UI element IDs before, in between and after each newly created piece of UI, which prevents someone from simply counting back a known number of elements. It also appends random strings to the ends of UI element names so that they can not be accessed that way.<br>This likely won't prevent all future attacks on UI, but it is a good place to start.<br><br>As for UiPickable()... well, we never did get support for that in the client (perhaps due to this demonstration?), which is a shame since there are cases where it could be useful, even safe. For example I see no reason why it shouldn't be allowed for UI elements that are attached to objects, in worldspace. Those will always be behind the screen level UI and so have no chance to interfere. It is also probably where it is more useful. ]]></content:encoded></item><item><title>The Resource game: mmo prototyping in Metaplace</title><link>http://oscan.net/?cmd=blog&amp;pid=9</link><description>&lt;a href='http://www.raphkoster.com/2009/09/18/game-breakr-interview-at-austin-gdc/' class='link'&gt;Raph recently gave an interview&lt;/a&gt; at the Austin Game Developer Conference, during which the topic of Star Wars Galaxies and its resource system came up. It didn't take much for me to start thinking about the way I wanted to handle resources in Tile Tactics, or the more idealised version in my 'dream mmo'.&lt;br&gt;&lt;br&gt;&lt;br&gt;When I say 'resources' I mean materials that are used to make items in a game, specifically ores extracted from the ground.&lt;br&gt;Most massively multi-player games tend to keep this aspect of game play simple, using 'resource nodes'; an object in the game world that you walk up to, click on a few times to swing your pickaxe at, and then loot your resources before moving on. So it is very much like a monster that doesn't move and that doesn't fight back. The location of nodes are typically static, so even if a node disappears due to being mined out one may typically reappear in the same location (or very near it) a short while later.&lt;br&gt;&lt;br&gt;Some 'worldy' game worlds take it a bit further. EvE Online is an entirely space based game, where you play as a spaceship, so it has you extracting resources from  asteroid belts.&lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://oscan.net/images/109.jpg' alt='' title='' border=0 /&gt;&lt;/div&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;i&gt;My old mining barge. Now probably a pile of rust!&lt;/i&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;As with all things in EvE this is a much more time intensive activity. By effectively shooting the asteroids with your mining lasers you slowly take quantities from the rock which are placed in to your cargo hold. Each asteroid has a finite, yet varying, quantity of units each, so once you extract everything it will disappear (when asteroids are gone from a belt they may not reappear again for a few days).&lt;br&gt;Efficient mining in EvE is all about effective time management. The large mining lasers may cycle for a few minutes before they return any resources to your hold, so you need to know when to prematurely deactivate your lasers should the need arise; you don't want to have gone through three minutes of a cycle to find out you've only picked up one unit of ore! That means keeping an eye on how much is left in the asteroids while also making sure your cargo hold doesn't fill up (and making sure your massive-cargo-hold transport ship buddy keeps coming by to pick up your ore to bring back to the nearest station) and keeping and eye out for NPC pirates (or other players in lower security space).&lt;br&gt;While it may not be the most intensive activtiy in gaming, it is not exactly something you can walk away from for a few minutes.&lt;br&gt;&lt;br&gt;Star Wars Galaxies was a bit different altogether.&lt;br&gt;With other games finding the resources is typically very easy, but with SWG finding the resources was half the fun.&lt;br&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://oscan.net/images/screenShot0033.jpg' alt='' title='' border=0 /&gt;&lt;/div&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;i&gt;The best image I could find of the SWG survey tool interface (the bit in the background)&lt;/i&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;There were a number of different resource types, ranging from minerals to 'wind' to animal hides. Animal products like hides and meat had to be taken from dead creatures, so that was a resource gathering game for the combat orientated players; the rest you had to survey for, which was the domain of the 'artisan'. There were survey tools for each main type of resource, listing all of the currently available resources for the planet you were currently on. In most games iron is iron is iron, it is always the same, but with SWG each time a resource spawned it was unique. The system would procedurally generate a new alloy/variant of one of the main resource classes (iron, copper, inert gases, woods, etc), giving it a unique name and stats (which ranged from 0 to 1000 for various attributes).&lt;br&gt;&lt;br&gt;It would also generate a unique distribution map for where the resources could be found on each planet it had spawned on (the same resource was typically on more than one planet). You would have to use your survey tool to scan the surrounding few hundred metres, which would then display the concentrations on a small top-down map on the survey tools user interface. You would then have to travel in the direction where the displayed percentages were rising to try and find a hotspot of the resource vein, avoiding nasty creatures along the way (and to a dedicated crafter everything is nasty!). You could end up following a vein only to have it max out at 60%; if the numbers were rising too slowly as you covered ground it was a good bet that you were chasing down a dead end. What you really wanted was the coveted high 90's spots, that way you could make the most of your mining time while the resource still hung around, because after a while that resource would vanish from the galaxy never to be seen again. When that 999 Conductivity, 999 Overall Quality Copper suddenly makes an appearance it creates a gold rush, because when it's gone it will be gone for good! Everyone and their ewok would be looking to get in on a piece of that action.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;a href='http://www.avian-gamers.net/images/swg/screenShot0005.jpg' class='link'&gt;&lt;img src='http://oscan.net/images/screenShot0005.jpg' alt='' title='' border=0 /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;i&gt;&quot;There are fields, endless fields, where resources are no longer born, they are... eh, grown?!&quot;&lt;/i&gt;&lt;/div&gt;&lt;br&gt;&lt;i&gt;(From Raph's interview above he states that resources could be 'mined out', which means they would last for a shorter period of time if enough people were mining it right away. So there could only ever be a finite amount of any particular resource. I was a bit surprised by this as I figured it was an infinite source with each resource lasting about one week. Although I guess it does explain some &lt;/i&gt;unreasonably&lt;i&gt; short spawns!)&lt;/i&gt;&lt;br&gt;&lt;br&gt;When you found your spot you could place some mining installations to extract the resources for you, so that it could do the gathering while you go off and do something else. All you'd have to do is check in ever once in a while to empty the hopper and top up it's power and maintenance reserves. You could also do manual sampling, which many people did do (when they didn't strictly have to after levelling up their skills) typically using macros so that they themselves could then get away from the keyboard while their character pulled in ore.&lt;br&gt;&lt;br&gt;The extraction rates worked on the basis of a mining installations Base Extraction Rate and what concentration of the resource it was placed over. A BER of 14 placed on a 90% site would yield 12 units per minute. With around ten installations you could get over one million units of the resource before it vanished. So other than upkeep, you could pretty much place and forget.&lt;br&gt;&lt;br&gt;Tile Tactics had resources pretty much at its core; &lt;a href='http://oscan.net/index.php?cmd=blog&amp;amp;pid=5' class='link'&gt;it was the descendant of a game all about 'digging' after all&lt;/a&gt;.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://tiletactics.com/screen36.gif' alt='' title='' border=0 /&gt;&lt;/div&gt;&lt;br&gt;Resources were distributed across the map in a way similar to SWG, but it went one dimension further by using numerous layers. The first four layers were to be accessible to manual digging by avatars, but the four extra layers below that were only to be accessible by a mining structure placed on the map &lt;img src='http://tiletactics.com/img/mine2.gif' alt='' title='' border=0 /&gt;. The deeper you went the more likely you were to find the rarer ores. The multiple layers also allowed for the possibility for three dimensional veins of a single resource, with the quantity of each layer in each tile being finite. &lt;br&gt;&lt;br&gt;Mines would first extract the ore from directly beneath them and then begin to move out in ever increasing circles on the X/Y plane, with the further from the centre it went the less efficient its extraction rate became. The player would have the option to focus the mine in a particular direction in order to follow a vein, providing fewer inefficiencies the more focused the direction. The not-entirely-fleshed-out thinking was that this would force miners to make strategic decisions on where to place their mines and which veins to follow.&lt;br&gt;&lt;br&gt;Veins were intended to stick around for a while with them only slowly vanishing as they were mined out. The presence of the resources is what gave any particular tile value and hence was the incentive for a player, or groups of players, to want to have territorial control over that area.&lt;br&gt;There were also to be regularly generated 'challenges' whose winning conditions would be along the line of &quot;control the most land that contains the most of ore X for the longest period of time over the next week&quot;. The rewards for such challenges included the &quot;Genesis Device&quot;, a stackable item that would allow the players to have some form of control over how resources would be re-spawned in an area (the bigger the stack, the greater the control).&lt;br&gt;&lt;br&gt;The algorithm for &lt;a href='http://oscan.net/metaplace/index.php?cmd=genesis' class='link'&gt;reseeding resources&lt;/a&gt; was pretty straight forward. &lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://oscan.net/images/scan.png' alt='' title='' border=0 /&gt;&lt;/div&gt;&lt;br&gt;&lt;span class=standard_text&gt;&lt;ul&gt;&lt;li&gt;A random tile within the spawn area (on the target layer) was picked. &lt;br&gt;&lt;/li&gt;&lt;li&gt;If no resource currently existed at that location a search, out to a certain range, from that point was made.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If no resource was found in the outward search then the resources were added to the original tile.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If a resource was found in that search that location was then used to add more resources to the map; either adding to the resource in that tile or to an adjacent tile.&lt;br&gt;&lt;/li&gt;&lt;li&gt;If the found tile was 'full' the adjacent layers on that tile were also examined for the possibility of placing the resource there too. This would then act as a seed/anchor when resources were spawned on those layers&lt;br&gt;&lt;/li&gt;&lt;li&gt;Repeat up to the threshold limit&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;br&gt;The seepage from one layer to another at 'full' locations is what would create the 3d veins but also allow for veins going in different directions per layer, but merging at hotspots. This means the decision of where to place a mine wouldn't be so straightforward as to place on a simple 99% concentration spot.&lt;br&gt;&lt;br&gt;As previously posted, Tile Tactics never got put through its paces to any degree, so I never really found out if any of this was feasible. But I'm still curious as to how this would play out, so I started putting together a small protoype in Metaplace.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;img src='http://oscan.net/images/mp_res.png' alt='' title='' border=0 /&gt;&lt;/div&gt;&lt;br&gt;I used Metaplace to connect to the same 'genesis' php script linked above; but outputted in xml. This didn't quite work out with a 50x50 map with 4 layers as I hit barriers on the Metaplace end with memory allocation and Infinite Loop detection errors, so I'm start with 25x25 and 2 layers; &quot;Metaplace: we talk the web... just don't talk too loudly or too fast!&quot;&lt;br&gt;&lt;br&gt;At the moment it is very simple; place a mine, turn it on, and watch it mine out an area outwards from its location (at a very fast rate). &lt;br&gt;After I get the mines to extract from a set direction, mining across layers, distance inefficiencies, and get multiple layers working on a larger map, I'll start a 'game' where each player can place one mine on the map and then see who can extract the most in a set time (or very quickly processed set number of cycles), where the strategy or skill is in picking the correct placement given multiple rich veins across multiple layers.&lt;br&gt;&lt;br&gt;&lt;iframe width=&quot;640&quot; height=&quot;520&quot; src=&quot;https://www.metaplace.com/remote/embedsimple/MinersPlot&quot; style=&quot;border: 0; margin: 0; padding: 0; overflow: hidden;&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; scrollbar=&quot;no&quot;&gt;&lt;/iframe&gt;</description><pubDate>Mon, 28 Sep 2009 6:32:45 GMT</pubDate><content:encoded><![CDATA[ <a href='http://www.raphkoster.com/2009/09/18/game-breakr-interview-at-austin-gdc/' class='link'>Raph recently gave an interview</a> at the Austin Game Developer Conference, during which the topic of Star Wars Galaxies and its resource system came up. It didn't take much for me to start thinking about the way I wanted to handle resources in Tile Tactics, or the more idealised version in my 'dream mmo'.<br><br><br>When I say 'resources' I mean materials that are used to make items in a game, specifically ores extracted from the ground.<br>Most massively multi-player games tend to keep this aspect of game play simple, using 'resource nodes'; an object in the game world that you walk up to, click on a few times to swing your pickaxe at, and then loot your resources before moving on. So it is very much like a monster that doesn't move and that doesn't fight back. The location of nodes are typically static, so even if a node disappears due to being mined out one may typically reappear in the same location (or very near it) a short while later.<br><br>Some 'worldy' game worlds take it a bit further. EvE Online is an entirely space based game, where you play as a spaceship, so it has you extracting resources from  asteroid belts.<br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://oscan.net/images/109.jpg' alt='' title='' border=0 /></div><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><i>My old mining barge. Now probably a pile of rust!</i></div><br><br>As with all things in EvE this is a much more time intensive activity. By effectively shooting the asteroids with your mining lasers you slowly take quantities from the rock which are placed in to your cargo hold. Each asteroid has a finite, yet varying, quantity of units each, so once you extract everything it will disappear (when asteroids are gone from a belt they may not reappear again for a few days).<br>Efficient mining in EvE is all about effective time management. The large mining lasers may cycle for a few minutes before they return any resources to your hold, so you need to know when to prematurely deactivate your lasers should the need arise; you don't want to have gone through three minutes of a cycle to find out you've only picked up one unit of ore! That means keeping an eye on how much is left in the asteroids while also making sure your cargo hold doesn't fill up (and making sure your massive-cargo-hold transport ship buddy keeps coming by to pick up your ore to bring back to the nearest station) and keeping and eye out for NPC pirates (or other players in lower security space).<br>While it may not be the most intensive activtiy in gaming, it is not exactly something you can walk away from for a few minutes.<br><br>Star Wars Galaxies was a bit different altogether.<br>With other games finding the resources is typically very easy, but with SWG finding the resources was half the fun.<br><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://oscan.net/images/screenShot0033.jpg' alt='' title='' border=0 /></div><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><i>The best image I could find of the SWG survey tool interface (the bit in the background)</i></div><br><br>There were a number of different resource types, ranging from minerals to 'wind' to animal hides. Animal products like hides and meat had to be taken from dead creatures, so that was a resource gathering game for the combat orientated players; the rest you had to survey for, which was the domain of the 'artisan'. There were survey tools for each main type of resource, listing all of the currently available resources for the planet you were currently on. In most games iron is iron is iron, it is always the same, but with SWG each time a resource spawned it was unique. The system would procedurally generate a new alloy/variant of one of the main resource classes (iron, copper, inert gases, woods, etc), giving it a unique name and stats (which ranged from 0 to 1000 for various attributes).<br><br>It would also generate a unique distribution map for where the resources could be found on each planet it had spawned on (the same resource was typically on more than one planet). You would have to use your survey tool to scan the surrounding few hundred metres, which would then display the concentrations on a small top-down map on the survey tools user interface. You would then have to travel in the direction where the displayed percentages were rising to try and find a hotspot of the resource vein, avoiding nasty creatures along the way (and to a dedicated crafter everything is nasty!). You could end up following a vein only to have it max out at 60%; if the numbers were rising too slowly as you covered ground it was a good bet that you were chasing down a dead end. What you really wanted was the coveted high 90's spots, that way you could make the most of your mining time while the resource still hung around, because after a while that resource would vanish from the galaxy never to be seen again. When that 999 Conductivity, 999 Overall Quality Copper suddenly makes an appearance it creates a gold rush, because when it's gone it will be gone for good! Everyone and their ewok would be looking to get in on a piece of that action.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><a href='http://www.avian-gamers.net/images/swg/screenShot0005.jpg' class='link'><img src='http://oscan.net/images/screenShot0005.jpg' alt='' title='' border=0 /></a></div><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><i>"There are fields, endless fields, where resources are no longer born, they are... eh, grown?!"</i></div><br><i>(From Raph's interview above he states that resources could be 'mined out', which means they would last for a shorter period of time if enough people were mining it right away. So there could only ever be a finite amount of any particular resource. I was a bit surprised by this as I figured it was an infinite source with each resource lasting about one week. Although I guess it does explain some </i>unreasonably<i> short spawns!)</i><br><br>When you found your spot you could place some mining installations to extract the resources for you, so that it could do the gathering while you go off and do something else. All you'd have to do is check in ever once in a while to empty the hopper and top up it's power and maintenance reserves. You could also do manual sampling, which many people did do (when they didn't strictly have to after levelling up their skills) typically using macros so that they themselves could then get away from the keyboard while their character pulled in ore.<br><br>The extraction rates worked on the basis of a mining installations Base Extraction Rate and what concentration of the resource it was placed over. A BER of 14 placed on a 90% site would yield 12 units per minute. With around ten installations you could get over one million units of the resource before it vanished. So other than upkeep, you could pretty much place and forget.<br><br>Tile Tactics had resources pretty much at its core; <a href='http://oscan.net/index.php?cmd=blog&amp;pid=5' class='link'>it was the descendant of a game all about 'digging' after all</a>.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://tiletactics.com/screen36.gif' alt='' title='' border=0 /></div><br>Resources were distributed across the map in a way similar to SWG, but it went one dimension further by using numerous layers. The first four layers were to be accessible to manual digging by avatars, but the four extra layers below that were only to be accessible by a mining structure placed on the map <img src='http://tiletactics.com/img/mine2.gif' alt='' title='' border=0 />. The deeper you went the more likely you were to find the rarer ores. The multiple layers also allowed for the possibility for three dimensional veins of a single resource, with the quantity of each layer in each tile being finite. <br><br>Mines would first extract the ore from directly beneath them and then begin to move out in ever increasing circles on the X/Y plane, with the further from the centre it went the less efficient its extraction rate became. The player would have the option to focus the mine in a particular direction in order to follow a vein, providing fewer inefficiencies the more focused the direction. The not-entirely-fleshed-out thinking was that this would force miners to make strategic decisions on where to place their mines and which veins to follow.<br><br>Veins were intended to stick around for a while with them only slowly vanishing as they were mined out. The presence of the resources is what gave any particular tile value and hence was the incentive for a player, or groups of players, to want to have territorial control over that area.<br>There were also to be regularly generated 'challenges' whose winning conditions would be along the line of "control the most land that contains the most of ore X for the longest period of time over the next week". The rewards for such challenges included the "Genesis Device", a stackable item that would allow the players to have some form of control over how resources would be re-spawned in an area (the bigger the stack, the greater the control).<br><br>The algorithm for <a href='http://oscan.net/metaplace/index.php?cmd=genesis' class='link'>reseeding resources</a> was pretty straight forward. <br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://oscan.net/images/scan.png' alt='' title='' border=0 /></div><br><span class=standard_text><ul><li>A random tile within the spawn area (on the target layer) was picked. <br></li><li>If no resource currently existed at that location a search, out to a certain range, from that point was made.<br></li><li>If no resource was found in the outward search then the resources were added to the original tile.<br></li><li>If a resource was found in that search that location was then used to add more resources to the map; either adding to the resource in that tile or to an adjacent tile.<br></li><li>If the found tile was 'full' the adjacent layers on that tile were also examined for the possibility of placing the resource there too. This would then act as a seed/anchor when resources were spawned on those layers<br></li><li>Repeat up to the threshold limit</li></ul></span><br>The seepage from one layer to another at 'full' locations is what would create the 3d veins but also allow for veins going in different directions per layer, but merging at hotspots. This means the decision of where to place a mine wouldn't be so straightforward as to place on a simple 99% concentration spot.<br><br>As previously posted, Tile Tactics never got put through its paces to any degree, so I never really found out if any of this was feasible. But I'm still curious as to how this would play out, so I started putting together a small protoype in Metaplace.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><img src='http://oscan.net/images/mp_res.png' alt='' title='' border=0 /></div><br>I used Metaplace to connect to the same 'genesis' php script linked above; but outputted in xml. This didn't quite work out with a 50x50 map with 4 layers as I hit barriers on the Metaplace end with memory allocation and Infinite Loop detection errors, so I'm start with 25x25 and 2 layers; "Metaplace: we talk the web... just don't talk too loudly or too fast!"<br><br>At the moment it is very simple; place a mine, turn it on, and watch it mine out an area outwards from its location (at a very fast rate). <br>After I get the mines to extract from a set direction, mining across layers, distance inefficiencies, and get multiple layers working on a larger map, I'll start a 'game' where each player can place one mine on the map and then see who can extract the most in a set time (or very quickly processed set number of cycles), where the strategy or skill is in picking the correct placement given multiple rich veins across multiple layers.<br><br><iframe width="640" height="520" src="https://www.metaplace.com/remote/embedsimple/MinersPlot" style="border: 0; margin: 0; padding: 0; overflow: hidden;" frameborder="0" scrolling="no" scrollbar="no"></iframe> ]]></content:encoded></item><item><title>Comments fixed</title><link>http://oscan.net/?cmd=blog&amp;pid=8</link><description>Not that I'm under any illusions that anyone is actually reading this, let alone finding anything worthy enough to comment on... &lt;i&gt;but&lt;/i&gt;, if such a fictional person &lt;i&gt;did&lt;/i&gt; exist and &lt;i&gt;did&lt;/i&gt; try to comment and &lt;i&gt;did&lt;/i&gt; get stopped by my insanely simple yet infuriatingly pedantic bot filter... ahem, well that's been fixed!&lt;br&gt;&lt;br&gt;Bug hunting inadvertently inspired by &lt;a href='http://xkcd.com/635/' class='link'&gt;todays xkcd&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;i&gt;&quot;If a blog post exists on the internet and nobody reads it, does it make a &lt;strike&gt;cry for help&lt;/strike&gt; sound?&quot;&lt;/i&gt;</description><pubDate>Fri, 11 Sep 2009 12:52:28 GMT</pubDate><content:encoded><![CDATA[ Not that I'm under any illusions that anyone is actually reading this, let alone finding anything worthy enough to comment on... <i>but</i>, if such a fictional person <i>did</i> exist and <i>did</i> try to comment and <i>did</i> get stopped by my insanely simple yet infuriatingly pedantic bot filter... ahem, well that's been fixed!<br><br>Bug hunting inadvertently inspired by <a href='http://xkcd.com/635/' class='link'>todays xkcd</a>.<br><br><i>"If a blog post exists on the internet and nobody reads it, does it make a <strike>cry for help</strike> sound?"</i> ]]></content:encoded></item><item><title>On phobias, neurons and disorders</title><link>http://oscan.net/?cmd=blog&amp;pid=7</link><description>I think this could probably fulfil the role of the requisite 'emo blog post', as per contractual blogger obligations.&lt;br&gt;I think I want a &quot;I sold my non-existant soul to the Internet and all I got was this lousy blog&quot; tee-shirt in return. At least it won't be a  LiveJournal kind of emo!&lt;br&gt;&lt;br&gt;I suppose I'll get the &lt;a href='http://www.urbandictionary.com/define.php?term=tl%3Bdr' class='link'&gt;tl;dr &lt;/a&gt; version out of the way, otherwise I'll just spend 2,000 words trying to get there: I have &lt;a href='http://en.wikipedia.org/wiki/Social_anxiety_disorder' class='link'&gt;Social Anxiety Disorder&lt;/a&gt; and &lt;a href='http://en.wikipedia.org/wiki/Selective_eating_disorder' class='link'&gt;Selective Eating Disorder&lt;/a&gt;. Aware of the later for about a couple of years, the former a couple of weeks. Aware, that is, of the clinical definition for those periods of time; living with the reality of them probably for as long as I can remember.&lt;br&gt;&lt;br&gt;In short, social anxiety is related to the, mostly consciously irrational, fear of public embarrassment and thus an over obsession with your own perceptions of what other peoples perceptions of you are. A grand old vicious circle!&lt;br&gt;Selective eating is the much less studied (particularly compared to other eating disorders) situation where someone limits themselves to a small range of foods; in many cases individual food items not just food groups. Related to this is Food Neophobia, which is the reluctance or fear of trying new foods. It mainly has to do with food tastes and textures, rather than self image issues that all the 'cool' eating disorders relate to, and can obviously lead to lack of nutrition.&lt;br&gt;&lt;br&gt;Of course, naturally, how all this relates to me is not based on any sort of professional diagnosis; no, no that would make far too much sense! This is all still purely in self-diagnosis territory. But I think it is a pretty safe bet and that I am not succumbing to hypochondria.&lt;br&gt;&lt;br&gt;Both conditions have that unfortunate 'D' word in there, which when first encountered can be a bit scary; &quot;I have a di...dis.. disorder?! But not just one, I have two!&quot; &lt;br&gt;Of course when one of them deals with social anxiety it doesn't exactly help; &quot;What if people find out? They'll &lt;i&gt;really, really&lt;/i&gt; think I'm a freak!&quot;&lt;br&gt;This means most of the time I can be very reluctant to actually discuss the issues at hand, but I don't think too many who've known me would be &lt;i&gt;too&lt;/i&gt; surprised by such revelations, as I've always been 'the quiet one' of a group, or that guy who only ever seems to eat chips, or at least that's what I tell myself. Not that any of that would stop me from stressing about them actually knowing. Why the hell am I even still typing this?!&lt;br&gt;&lt;br&gt;Perhaps it is because, after my programmer/knowledge-junkie self takes control, I find the whole situation &lt;i&gt;fascinating&lt;/i&gt;! &lt;br&gt;What neurological contortions have I gotten myself into? What now-self-reinforcing patterns did my brain pick up on? Did I divide by zero somewhere?&lt;br&gt;Maybe I've been watching too much House, but I really want to know just what the hell is going on in there. &quot;For Science!&quot; And I think that is my ticket out of this mess.&lt;br&gt;&lt;br&gt;&lt;b&gt;The unfortunate acronym SAD&lt;/b&gt;&lt;br&gt;For the first week or three since first learning about the existence of social anxiety I had been reading up on it trying to figure out just what it is and how it is dealt with. I had gotten a &lt;a href='http://www.amazon.co.uk/Overcoming-Social-Anxiety-Shyness-Behavioural/dp/1854877038/ref=pd_sim_b_1/276-4281007-2668466' class='link'&gt;couple&lt;/a&gt; of &lt;a href='http://www.amazon.co.uk/exec/obidos/ASIN/0967126509/' class='link'&gt;books&lt;/a&gt; on then topic. 'Disorders' scary partner in crime 'therapy' comes up a lot, which prompts its own initial irrational chain of thought; &quot;I can't do &lt;i&gt;therapy&lt;/i&gt;, I'll just be admitting to the world to being defective!&quot;&lt;br&gt;It is specifically Cognitive Behavioural Therapy, which if it had a motto it would probably be 'knowing is half the battle'. It mainly deals with recognising your own state of mind, what you were thinking about when you begin to feel anxious. Examining those thoughts and the assumptions you build around them and then working towards putting yourself in similar situations where your can consciously override those unwanted thoughts and behaviours; all the while building self-confidence, reducing self-consciousness and avoiding safety behaviours.&lt;br&gt;It's not quite an fMRI map of which neurons are firing when a massive gravity well appears in your small intestine and you begin to sweat and uncontrollably blush as your mind goes blank and you scramble for cliched conversational catchphrases when confronted with perceived awkward social situations. But, it does appear to be a good analytical approach to the problem that has been shown to get results.&lt;br&gt;&lt;br&gt;And I might just try it... someday. *Safety Behaviour Alert!*&lt;br&gt;The last few weeks have just been getting on with life as usual without actively doing anything to overcome my social anxiety, which I guess is right up there with my usual main 'safety behaviour' of just avoiding social situations. I suppose I could try to rationalise it as acclimatising to the notions of CBT during day to day normality without it being at the forefront of my mind or actively going through the steps, or that I don't have a firm enough grasp of it yet to feel comfortable with it.&lt;br&gt;&lt;br&gt;Or I'm a coward! The most likely option.&lt;br&gt;But still fascinated!&lt;br&gt;&lt;br&gt;&lt;b&gt;Not as bad as first imagined&lt;/b&gt;&lt;br&gt;On the food front things have been more positive, perhaps because I've had longer to grasp the reality of the situation and therefore have a stronger determination to actually do something about it.&lt;br&gt;&lt;br&gt;I have always been a 'picky' eater. Having done the blue food dye test I'd be categorised as a &lt;a href='http://en.wikipedia.org/wiki/Supertaster' class='link'&gt;supertaster&lt;/a&gt; (another unfortunate label, as it has been subject to ridicule); perhaps the mere fact of just having the blue food dye on my tongue was enough to make me gag due to its bitterness is as good an indication than the actual test itself. So apparently I have an over heightened sense of taste, which is probably why I've always had a narrow range of foods I'm comfortable with, even as a young child. In fact I probably had a wider range of diet when I was young than for the vast majority of my life. &lt;br&gt;&lt;br&gt;But there was always one constant; I simply flat-out refused to have anything to do with meat. Not for any sort of idealogical reasons, I'm perfectly fine with animals being slaughtered for food (I'm not one of &lt;i&gt;those&lt;/i&gt; people),  I just didn't want it. As an infant I would spit it out. Just. Did. Not. Like! Any time I'd come within touching distance of meat, particularity raw meat, I'd get an involuntary shiver down my spine (you can practically smell the irrationality).&lt;br&gt;&lt;br&gt;So for the longest time I've described myself as a vegetarian, just one who didn't like too many vegetables.&lt;br&gt;&lt;br&gt;Now at the moment this doesn't sounds like it is all the fault of supertasting, and to be honest it probably isn't. There are probably supertasters who enjoy a wide range of food and enjoy their food all the more for it. Those who only shy away from some overly bitter or sour extremes. I ended up being conservative and only sticking to what I felt was safe.&lt;br&gt;When young, as far a dinners go, I would eat potatoes, peas, beans, carrots, fish but only as fish fingers, rice and probably more that I can't even remember any more. I have a slight recollection of gravy. &lt;br&gt;Chips (Freedom Fries for the yanks!) I also most definitely ate, but they were a rare threat. Both my brother and sister had themselves particular dietary requirements and could not digest the oil, so we just never had them that often.&lt;br&gt;Of course there were other things I ate too; cereals, eggs, bread, oh and sweets of course!&lt;br&gt;&lt;br&gt;Then around about the ages from seven to nine there was a lot of upheaval in my personal life, that ran the spectrum from death to replantation. We were now living with my grandparents, where there were still two of my mothers five brothers and sisters living (5 total, not each). If there was one thing that was plentiful it was food. And to me that meant one thing; I could have chips whenever I wanted! I could have them every day! And I most definitely did!&lt;br&gt;&lt;br&gt;In a way it was a comfort in the wake of a lot of troubling times that I was superficially taking in my stride. But perhaps too much of a comfort. From that point on for the next two decades my dinner menu was either: Chips and beans, Chips and mini cheese and tomato pizzas, or Roast potatoes and beans. That's it, nothing else. On the very odd rare occasion I might try rice, but not too much; the carrots and fish fingers were gone; peas I'd have occasionally, but only 'processed' peas; gravy... out of the question. Even the beans themselves were to be preferably of one particular brand.&lt;br&gt;&lt;br&gt;Chips and beans. &lt;br&gt;It made up the vast majority of my meals. It was what I grew up on. It was either that or nothing. I became a connoisseur of the perfect plate of chips and beans.&lt;br&gt;When eating out I'd order my signature dish (an increasingly embarrassing event as the years went on) in the hope that the kitchen didn't think it too plain looking a meal and take it upon themselves to sprinkle 'green stuff' on top. 'Green stuff' was the bane of my existence. I would either send it back, try to eat around it, or just go without.&lt;br&gt;I would try to deflect the attention of the ever helpful waitresses who would insist &quot;there must be something we can get you&quot; when they saw an empty place setting in front of me when the menu had nothing for me&lt;br&gt;&quot;Oh! You're a vegetarian? We do have a vegetarian option!&quot;&lt;br&gt;&quot;I wouldn't eat it... whatever it is.&quot;&lt;br&gt;&lt;br&gt;Perhaps that encouraged my apparent social anxiety, perhaps my social anxiety then encouraged my reluctance to try new things. &lt;i&gt;What if I tried something in a restaurant and didn't like the way they prepared it? What if I reacted badly to it? What would other people think if they saw?&lt;/i&gt;&lt;br&gt;Regardless, 'eating out' became a fixture only for family occasions; at least you are on somewhat familiar ground there.&lt;br&gt;&lt;br&gt;So that has been the state of affairs for countless years. Until recently!&lt;br&gt;Somewhere out of the blue I found some resolve (in a CBT-esque kind of way) in the last few months to expand my diet and actually try something new. Maybe the blue food dye is to blame?&lt;br&gt;I've since tried pasta with tomato sauces, &lt;i&gt;chicken&lt;/i&gt; of all things and even had half a burger! &lt;i&gt;A burger!&lt;/i&gt; Chicken... Beef! &lt;b&gt;Meat!&lt;/b&gt; This is universe shattering stuff here that I still can't quite believe.&lt;br&gt;Granted it is more sampling than actually finishing whole meals, and I'm not quite liking &lt;i&gt;everything&lt;/i&gt; I'm trying, but it is a start and one I intend to continue with. &lt;br&gt;&lt;br&gt;Hell, if I can work out this, maybe there is hope for the other 'D' word? Maybe I'll approach some sort of normality. Hmm... maybe I'll have to develop some other idiosyncrasies to compensate...</description><pubDate>Sun, 06 Sep 2009 11:42:56 GMT</pubDate><content:encoded><![CDATA[ I think this could probably fulfil the role of the requisite 'emo blog post', as per contractual blogger obligations.<br>I think I want a "I sold my non-existant soul to the Internet and all I got was this lousy blog" tee-shirt in return. At least it won't be a  LiveJournal kind of emo!<br><br>I suppose I'll get the <a href='http://www.urbandictionary.com/define.php?term=tl%3Bdr' class='link'>tl;dr </a> version out of the way, otherwise I'll just spend 2,000 words trying to get there: I have <a href='http://en.wikipedia.org/wiki/Social_anxiety_disorder' class='link'>Social Anxiety Disorder</a> and <a href='http://en.wikipedia.org/wiki/Selective_eating_disorder' class='link'>Selective Eating Disorder</a>. Aware of the later for about a couple of years, the former a couple of weeks. Aware, that is, of the clinical definition for those periods of time; living with the reality of them probably for as long as I can remember.<br><br>In short, social anxiety is related to the, mostly consciously irrational, fear of public embarrassment and thus an over obsession with your own perceptions of what other peoples perceptions of you are. A grand old vicious circle!<br>Selective eating is the much less studied (particularly compared to other eating disorders) situation where someone limits themselves to a small range of foods; in many cases individual food items not just food groups. Related to this is Food Neophobia, which is the reluctance or fear of trying new foods. It mainly has to do with food tastes and textures, rather than self image issues that all the 'cool' eating disorders relate to, and can obviously lead to lack of nutrition.<br><br>Of course, naturally, how all this relates to me is not based on any sort of professional diagnosis; no, no that would make far too much sense! This is all still purely in self-diagnosis territory. But I think it is a pretty safe bet and that I am not succumbing to hypochondria.<br><br>Both conditions have that unfortunate 'D' word in there, which when first encountered can be a bit scary; "I have a di...dis.. disorder?! But not just one, I have two!" <br>Of course when one of them deals with social anxiety it doesn't exactly help; "What if people find out? They'll <i>really, really</i> think I'm a freak!"<br>This means most of the time I can be very reluctant to actually discuss the issues at hand, but I don't think too many who've known me would be <i>too</i> surprised by such revelations, as I've always been 'the quiet one' of a group, or that guy who only ever seems to eat chips, or at least that's what I tell myself. Not that any of that would stop me from stressing about them actually knowing. Why the hell am I even still typing this?!<br><br>Perhaps it is because, after my programmer/knowledge-junkie self takes control, I find the whole situation <i>fascinating</i>! <br>What neurological contortions have I gotten myself into? What now-self-reinforcing patterns did my brain pick up on? Did I divide by zero somewhere?<br>Maybe I've been watching too much House, but I really want to know just what the hell is going on in there. "For Science!" And I think that is my ticket out of this mess.<br><br><b>The unfortunate acronym SAD</b><br>For the first week or three since first learning about the existence of social anxiety I had been reading up on it trying to figure out just what it is and how it is dealt with. I had gotten a <a href='http://www.amazon.co.uk/Overcoming-Social-Anxiety-Shyness-Behavioural/dp/1854877038/ref=pd_sim_b_1/276-4281007-2668466' class='link'>couple</a> of <a href='http://www.amazon.co.uk/exec/obidos/ASIN/0967126509/' class='link'>books</a> on then topic. 'Disorders' scary partner in crime 'therapy' comes up a lot, which prompts its own initial irrational chain of thought; "I can't do <i>therapy</i>, I'll just be admitting to the world to being defective!"<br>It is specifically Cognitive Behavioural Therapy, which if it had a motto it would probably be 'knowing is half the battle'. It mainly deals with recognising your own state of mind, what you were thinking about when you begin to feel anxious. Examining those thoughts and the assumptions you build around them and then working towards putting yourself in similar situations where your can consciously override those unwanted thoughts and behaviours; all the while building self-confidence, reducing self-consciousness and avoiding safety behaviours.<br>It's not quite an fMRI map of which neurons are firing when a massive gravity well appears in your small intestine and you begin to sweat and uncontrollably blush as your mind goes blank and you scramble for cliched conversational catchphrases when confronted with perceived awkward social situations. But, it does appear to be a good analytical approach to the problem that has been shown to get results.<br><br>And I might just try it... someday. *Safety Behaviour Alert!*<br>The last few weeks have just been getting on with life as usual without actively doing anything to overcome my social anxiety, which I guess is right up there with my usual main 'safety behaviour' of just avoiding social situations. I suppose I could try to rationalise it as acclimatising to the notions of CBT during day to day normality without it being at the forefront of my mind or actively going through the steps, or that I don't have a firm enough grasp of it yet to feel comfortable with it.<br><br>Or I'm a coward! The most likely option.<br>But still fascinated!<br><br><b>Not as bad as first imagined</b><br>On the food front things have been more positive, perhaps because I've had longer to grasp the reality of the situation and therefore have a stronger determination to actually do something about it.<br><br>I have always been a 'picky' eater. Having done the blue food dye test I'd be categorised as a <a href='http://en.wikipedia.org/wiki/Supertaster' class='link'>supertaster</a> (another unfortunate label, as it has been subject to ridicule); perhaps the mere fact of just having the blue food dye on my tongue was enough to make me gag due to its bitterness is as good an indication than the actual test itself. So apparently I have an over heightened sense of taste, which is probably why I've always had a narrow range of foods I'm comfortable with, even as a young child. In fact I probably had a wider range of diet when I was young than for the vast majority of my life. <br><br>But there was always one constant; I simply flat-out refused to have anything to do with meat. Not for any sort of idealogical reasons, I'm perfectly fine with animals being slaughtered for food (I'm not one of <i>those</i> people),  I just didn't want it. As an infant I would spit it out. Just. Did. Not. Like! Any time I'd come within touching distance of meat, particularity raw meat, I'd get an involuntary shiver down my spine (you can practically smell the irrationality).<br><br>So for the longest time I've described myself as a vegetarian, just one who didn't like too many vegetables.<br><br>Now at the moment this doesn't sounds like it is all the fault of supertasting, and to be honest it probably isn't. There are probably supertasters who enjoy a wide range of food and enjoy their food all the more for it. Those who only shy away from some overly bitter or sour extremes. I ended up being conservative and only sticking to what I felt was safe.<br>When young, as far a dinners go, I would eat potatoes, peas, beans, carrots, fish but only as fish fingers, rice and probably more that I can't even remember any more. I have a slight recollection of gravy. <br>Chips (Freedom Fries for the yanks!) I also most definitely ate, but they were a rare threat. Both my brother and sister had themselves particular dietary requirements and could not digest the oil, so we just never had them that often.<br>Of course there were other things I ate too; cereals, eggs, bread, oh and sweets of course!<br><br>Then around about the ages from seven to nine there was a lot of upheaval in my personal life, that ran the spectrum from death to replantation. We were now living with my grandparents, where there were still two of my mothers five brothers and sisters living (5 total, not each). If there was one thing that was plentiful it was food. And to me that meant one thing; I could have chips whenever I wanted! I could have them every day! And I most definitely did!<br><br>In a way it was a comfort in the wake of a lot of troubling times that I was superficially taking in my stride. But perhaps too much of a comfort. From that point on for the next two decades my dinner menu was either: Chips and beans, Chips and mini cheese and tomato pizzas, or Roast potatoes and beans. That's it, nothing else. On the very odd rare occasion I might try rice, but not too much; the carrots and fish fingers were gone; peas I'd have occasionally, but only 'processed' peas; gravy... out of the question. Even the beans themselves were to be preferably of one particular brand.<br><br>Chips and beans. <br>It made up the vast majority of my meals. It was what I grew up on. It was either that or nothing. I became a connoisseur of the perfect plate of chips and beans.<br>When eating out I'd order my signature dish (an increasingly embarrassing event as the years went on) in the hope that the kitchen didn't think it too plain looking a meal and take it upon themselves to sprinkle 'green stuff' on top. 'Green stuff' was the bane of my existence. I would either send it back, try to eat around it, or just go without.<br>I would try to deflect the attention of the ever helpful waitresses who would insist "there must be something we can get you" when they saw an empty place setting in front of me when the menu had nothing for me<br>"Oh! You're a vegetarian? We do have a vegetarian option!"<br>"I wouldn't eat it... whatever it is."<br><br>Perhaps that encouraged my apparent social anxiety, perhaps my social anxiety then encouraged my reluctance to try new things. <i>What if I tried something in a restaurant and didn't like the way they prepared it? What if I reacted badly to it? What would other people think if they saw?</i><br>Regardless, 'eating out' became a fixture only for family occasions; at least you are on somewhat familiar ground there.<br><br>So that has been the state of affairs for countless years. Until recently!<br>Somewhere out of the blue I found some resolve (in a CBT-esque kind of way) in the last few months to expand my diet and actually try something new. Maybe the blue food dye is to blame?<br>I've since tried pasta with tomato sauces, <i>chicken</i> of all things and even had half a burger! <i>A burger!</i> Chicken... Beef! <b>Meat!</b> This is universe shattering stuff here that I still can't quite believe.<br>Granted it is more sampling than actually finishing whole meals, and I'm not quite liking <i>everything</i> I'm trying, but it is a start and one I intend to continue with. <br><br>Hell, if I can work out this, maybe there is hope for the other 'D' word? Maybe I'll approach some sort of normality. Hmm... maybe I'll have to develop some other idiosyncrasies to compensate... ]]></content:encoded></item><item><title>More questing for the stars!</title><link>http://oscan.net/?cmd=blog&amp;pid=6</link><description>My quest for &lt;a href='http://oscan.net/index.php?cmd=blog&amp;amp;pid=3' class='link'&gt;long(er) duration astrophotography&lt;/a&gt; has been a bit hit and miss. Mostly miss.&lt;br&gt;There are three basic system that I need get working correctly before I can even take one simple shot successfully; focusing, camera control, and alignment.&lt;br&gt;&lt;br&gt;Focusing may seem like a trivial issue to deal with but my camera tries to make it as difficult as possible. My Canon EOS 10D was the last model of its line that went without any sort of Live View functionality, which means that you cannot use the cameras LCD screen (or better yet a computer screen, i.e. Remote Live View) to view the scene before taking a shot in order to get good focus. The only way to focus the telescope with the camera attached is to use the cameras viewfinder. At the best of times it isn't easy to actually see any stars through the tiny viewfinder in order to get a fine focus; then throw the usual light pollution into the mix. If you reposition to a star that you can actually see you may be bending over backwards just to actually be able to see through the viewfinder at all.&lt;br&gt;But then when you think you are actually focused, with lovely pinpoints of light for stars, what ends up on the exposure are big blobs of light.&lt;br&gt;&lt;br&gt;I thought this focusing issue was going to be the main thing holding me back and that I'd probably be better off just getting a different camera, but I eventually found a little program called &lt;a href='http://www.dslrfocus.com/' class='link'&gt;DSLR Focus&lt;/a&gt; that takes a series of quick shots and allows you to slowly tune in to a fine focus (and you can be sure it is focused!). The same could be done manually with some of the Canon utility programs, but the mere thought of doing it that way would just make me want to give up the whole thing.&lt;br&gt;&lt;br&gt;So focusing solved, what about controlling the actual taking of pictures?&lt;br&gt;Typically DSLR cameras on their own can be set to take exposures of up to 30 seconds in duration. If you want to go for longer you need to use the 'bulb' setting and use an attached triggering device. The ones you can usually find a manual triggers, either wired or remote, but I'd want to be able to take a series of specifically timed exposures, preferably using a program like Strak-Labs &lt;a href='http://www.stark-labs.com/page26/DSLR_Shutter.html' class='link'&gt;DSLR Shutter&lt;/a&gt;. So I'd need a way to trigger the camera via the computer. I found the &lt;a href='http://www.beskeen.com/projects/dslr_serial/dslr_serial.shtml' class='link'&gt;schematic&lt;/a&gt; for such a thing, which looked simple enough, so I got out my rarely used soldering iron and had a go at putting it together.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;a href='http://oscan.net/index.php?cmd=gallery&amp;amp;pid=13&amp;amp;page=1' class='link'&gt;&lt;img src='http://oscan.net/images/thumb_13.png' alt='' title='' border=0 /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;It's not the prettiest thing in the world (maybe I should actually go join the local &lt;a href='http://www.tog.ie' class='link'&gt;hackerspace&lt;/a&gt; and learn how to solder properly), but it does work... well, at least some of the time. I've had it out at night with the telescope once and although it was triggering the shutter it wasn't holding it open. I've since gotten that to work with changing a setting in the program (for some strange reason I ignored the setting labelled for the Nikon D200).&lt;br&gt;But then yesterday I decided to try to use it to take shots for a time lapse video test, but it failed to work at all! I ended up connecting directly to a USB-to-Serial cable, bypassing my hacked together monstrosity, which may or may not be entirely healthy for the camera but it worked this once.&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/qxkx8_MlJFc&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/qxkx8_MlJFc&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br&gt;&lt;div class=standard_text style=&quot;display: block;margin-left: auto;margin-right: auto;text-align:center;&quot;&gt;&lt;b&gt;Over an hours worth of boring clouds in 20 seconds&lt;/b&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;So I'll need to figure this one out before attempting to use it with the telescope again.&lt;br&gt;&lt;br&gt;But that isn't what is really keeping me from taking a decent astronomy photograph. It is the alignment that is holding me back.&lt;br&gt;I think my inability to cut or drill straight is coming back to haunt me, because right now the wedge just doesn't seem to be working out too well. Every attempt at alignment so far has been waaay off, with a five minute exposure leaving a lightning blot like zig-zag streak.&lt;br&gt;One issue is that I may just be setting the altitude angle wrong, as I don't have a relatively easy way of actually setting the angle (the threaded rod is great for actually changing the angle, but I'm just not quite sure what angle it is actually at).&lt;br&gt;The other issue is a complete lack of any sort of azimuth fine control. If I want to alter the azimuth I have to actually move the tripod itself, which is... eh, not ideal.&lt;br&gt;There are a few adjustments I might try in order to overcome these problems. &lt;br&gt;&lt;br&gt;I knew from the start that the wedge just might not work out in the end, but I'm not giving up on it just yet. I put too much bloody work into it!</description><pubDate>Sat, 29 Aug 2009 2:21:42 GMT</pubDate><content:encoded><![CDATA[ My quest for <a href='http://oscan.net/index.php?cmd=blog&amp;pid=3' class='link'>long(er) duration astrophotography</a> has been a bit hit and miss. Mostly miss.<br>There are three basic system that I need get working correctly before I can even take one simple shot successfully; focusing, camera control, and alignment.<br><br>Focusing may seem like a trivial issue to deal with but my camera tries to make it as difficult as possible. My Canon EOS 10D was the last model of its line that went without any sort of Live View functionality, which means that you cannot use the cameras LCD screen (or better yet a computer screen, i.e. Remote Live View) to view the scene before taking a shot in order to get good focus. The only way to focus the telescope with the camera attached is to use the cameras viewfinder. At the best of times it isn't easy to actually see any stars through the tiny viewfinder in order to get a fine focus; then throw the usual light pollution into the mix. If you reposition to a star that you can actually see you may be bending over backwards just to actually be able to see through the viewfinder at all.<br>But then when you think you are actually focused, with lovely pinpoints of light for stars, what ends up on the exposure are big blobs of light.<br><br>I thought this focusing issue was going to be the main thing holding me back and that I'd probably be better off just getting a different camera, but I eventually found a little program called <a href='http://www.dslrfocus.com/' class='link'>DSLR Focus</a> that takes a series of quick shots and allows you to slowly tune in to a fine focus (and you can be sure it is focused!). The same could be done manually with some of the Canon utility programs, but the mere thought of doing it that way would just make me want to give up the whole thing.<br><br>So focusing solved, what about controlling the actual taking of pictures?<br>Typically DSLR cameras on their own can be set to take exposures of up to 30 seconds in duration. If you want to go for longer you need to use the 'bulb' setting and use an attached triggering device. The ones you can usually find a manual triggers, either wired or remote, but I'd want to be able to take a series of specifically timed exposures, preferably using a program like Strak-Labs <a href='http://www.stark-labs.com/page26/DSLR_Shutter.html' class='link'>DSLR Shutter</a>. So I'd need a way to trigger the camera via the computer. I found the <a href='http://www.beskeen.com/projects/dslr_serial/dslr_serial.shtml' class='link'>schematic</a> for such a thing, which looked simple enough, so I got out my rarely used soldering iron and had a go at putting it together.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><a href='http://oscan.net/index.php?cmd=gallery&amp;pid=13&amp;page=1' class='link'><img src='http://oscan.net/images/thumb_13.png' alt='' title='' border=0 /></a></div><br>It's not the prettiest thing in the world (maybe I should actually go join the local <a href='http://www.tog.ie' class='link'>hackerspace</a> and learn how to solder properly), but it does work... well, at least some of the time. I've had it out at night with the telescope once and although it was triggering the shutter it wasn't holding it open. I've since gotten that to work with changing a setting in the program (for some strange reason I ignored the setting labelled for the Nikon D200).<br>But then yesterday I decided to try to use it to take shots for a time lapse video test, but it failed to work at all! I ended up connecting directly to a USB-to-Serial cable, bypassing my hacked together monstrosity, which may or may not be entirely healthy for the camera but it worked this once.<br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/qxkx8_MlJFc&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/qxkx8_MlJFc&hl=en&fs=1&color1=0x3a3a3a&color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></div><br><div class=standard_text style="display: block;margin-left: auto;margin-right: auto;text-align:center;"><b>Over an hours worth of boring clouds in 20 seconds</b></div><br><br>So I'll need to figure this one out before attempting to use it with the telescope again.<br><br>But that isn't what is really keeping me from taking a decent astronomy photograph. It is the alignment that is holding me back.<br>I think my inability to cut or drill straight is coming back to haunt me, because right now the wedge just doesn't seem to be working out too well. Every attempt at alignment so far has been waaay off, with a five minute exposure leaving a lightning blot like zig-zag streak.<br>One issue is that I may just be setting the altitude angle wrong, as I don't have a relatively easy way of actually setting the angle (the threaded rod is great for actually changing the angle, but I'm just not quite sure what angle it is actually at).<br>The other issue is a complete lack of any sort of azimuth fine control. If I want to alter the azimuth I have to actually move the tripod itself, which is... eh, not ideal.<br>There are a few adjustments I might try in order to overcome these problems. <br><br>I knew from the start that the wedge just might not work out in the end, but I'm not giving up on it just yet. I put too much bloody work into it! ]]></content:encoded></item></channel></rss>