<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4051688237897755309</id><updated>2011-11-28T00:04:26.274Z</updated><category term='WIP'/><title type='text'>Lemon Good</title><subtitle type='html'>Diary, produce and ramblings of a games programmer with an unquenchable ego.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-4260679644336466519</id><published>2010-01-10T16:30:00.000Z</published><updated>2010-01-10T16:30:35.634Z</updated><title type='text'>wxWidgets on OS X...</title><content type='html'>Using the latest version from SVN... it doesn't work out of the box. Here are some notes (once I've got all this working I'll submit TRAC bugs or something similar to wxWidgets...)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I can't use `wx-config --cppflags` in xcode for cpp flags. So I need to do it manually. Maybe xcode has a workaround instead of using execution quotes....&lt;/li&gt;&lt;li&gt;wx-config returns a __WX_MAC__ define, a build then results in an #error No Target defined. It turns out now with the cocoa split, WX_MAC is no longer used, instead I need to manually set the target to be __WXOSX_COCOA__ (or _CARBON or _IPHONE etc). Maybe wx-config needs updating... &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;It builds! Lets see if it works...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-4260679644336466519?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/4260679644336466519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2010/01/wxwidgets-on-os-x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/4260679644336466519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/4260679644336466519'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2010/01/wxwidgets-on-os-x.html' title='wxWidgets on OS X...'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-2781596859712422725</id><published>2009-09-07T17:19:00.000+01:00</published><updated>2009-09-07T17:19:24.004+01:00</updated><title type='text'>Slack.</title><content type='html'>Well it didn't take long before the daily updates stopped. I'm busy packing up my house, throwing away my crap rather than working.&lt;br /&gt;After wrestling with the iPhone http connection code I got it downloading files with stability. The cocoa framework code was threaded too, and I had only quickly put the code together for synchronous connections. I've expanded the system so after creating a connection you start a Download() or Upload() with an url (which obviously we can adapt for other protocols) which creates a task with a TBinaryTree which contains data being sent, URI information, error codes, and then on success will have the returned HTTP data -which will be exclusivly XML-. We poll the connection with our task ref to get the current status (False,Wait,True) and the data on the task and wait for the thread to finish.&lt;br /&gt;&lt;br /&gt;Now that that was working on both formats (same fish test as before of course) I added uploading data via multi-part form posts. This wasn't too much trouble using Curl... I never realised how poorly thrown together some of the HTTP protocols are! The use of an arbrtitry string to seperate fields seems a little daft to me, and doesn't really impose any error checking for half-submitted forms IMO. But anyway, it's a 20 year old standard so I guess the world has coped.&lt;br /&gt;&lt;br /&gt;Anyway, data gets uploaded as hex strings - a little ineffecient, but reliable, easily translatable back to binary,&amp;nbsp; readable so good for debugging - as they're UTF8 compatbile and so good for XML and Form data. Each branch of the Upload data we supplied to Upload() gets put into a different form-part. The PHP code simply enumerates through the POST variables, and converts the form part name (Ref) and the form part data from Hex back into binary for whatever data we require; Ref, String, Data, integers etc. The whole system is essentially templated from setting up the upload data all the way through to the PHP code which now has the $_POST variable as an equivilent binary tree.&lt;br /&gt;&lt;br /&gt;I'm now working on the database interaction code on the web side to store the match asset's data in the database and return some relevant data.&lt;br /&gt;&lt;br /&gt;This can then all be re-used in the same way to get a list of matches applicable to one user name[ref] returned in an XML format which we can parse, or just to fetch the latest asset from the server of a particular match.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-2781596859712422725?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/2781596859712422725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/09/slack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/2781596859712422725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/2781596859712422725'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/09/slack.html' title='Slack.'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-324065160403705548</id><published>2009-09-02T18:16:00.000+01:00</published><updated>2009-09-02T18:16:29.591+01:00</updated><title type='text'>Embiggen day N</title><content type='html'>After wrestling mostly with NSConnection and an Objective-c learning curve, I've got the file-downloading code down to a wierd bad_access crash and stopped work on that to spend the rest of the afternoon on Embiggen features.&lt;br /&gt;&lt;br /&gt;The next task was to do something with the words (and points) now that we've calculated them. To aid this I've setup player information; A list of players in the match, and arbritary data on the player. The data on the players contains a player ref (a global unique identifier) an avatar texture ref, a current score and a list of letters in the players rack.&lt;br /&gt;&lt;br /&gt;I setup the gui to display the avatar, name and score. It also currently colours the active player red so we know who's playing. Upon pressing play, it calculates the words generated by the current player, verifies everything is okay (although I've not done spell checking yet), burns the players tiles into the board, adds the points to the players score.&lt;br /&gt;&lt;br /&gt;It then saves the match asset which contains the board, (which contains tiles, letter pool), players and active player. Due to the way the engine works this is easily serialised into an asset. Now we have an asset we can/will send that asset up to the web, where some PHP will write it back to the database, do notifications etc and wait for the next player to make their move and submit the next board.&lt;br /&gt;&lt;br /&gt;All simple data-orientated changes, but it does mean it turns into much more of a game now that we handle multiple players and save/load the board :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3504/3881672458_07cf96bae4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm4.static.flickr.com/3504/3881672458_07cf96bae4.jpg" width="128" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Next task is back to sorting out the IPod web-connection, THEN I can do the PC and IPod web-sending code, then I'll sort out the server side PHP scripts and database to save our match and make it accessible world wide!&lt;br /&gt;Target to finish by the end of the week may be reachable :) (Although I need to start packing for my move to Manchester next week)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-324065160403705548?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/324065160403705548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/09/embiggen-day-n.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/324065160403705548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/324065160403705548'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/09/embiggen-day-n.html' title='Embiggen day N'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3504/3881672458_07cf96bae4_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-8040854425846115186</id><published>2009-09-02T02:05:00.000+01:00</published><updated>2009-09-02T02:05:08.842+01:00</updated><title type='text'>Embiggen day five</title><content type='html'>All day doing apple network code. 2am now. Quickly added word detection. Bed time.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm3.static.flickr.com/2572/3880040812_316b9636fe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm3.static.flickr.com/2572/3880040812_316b9636fe.jpg" width="113" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-8040854425846115186?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/8040854425846115186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/09/embiggen-day-five.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/8040854425846115186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/8040854425846115186'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/09/embiggen-day-five.html' title='Embiggen day five'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2572/3880040812_316b9636fe_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-2375430217371232222</id><published>2009-08-31T22:48:00.000+01:00</published><updated>2009-08-31T22:48:07.237+01:00</updated><title type='text'>Thank you curl, Thurl.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Today was a bit of engine work. (Not a bank holiday as some other people here in the UK seem think, too wet!)&lt;br /&gt;For Embiggen we will need to fetch some data from the web. Namely, from a database which stores all our matches (and user profiles). A simple PHP script can convert the required match database row into some XML and pump it out - specifically into our asset XML format - and we can download it, convert it to binary asset data and load it in-game. Shimples! &lt;br /&gt;Anyway, the UIKit in the iPhone SDK provides us with some functionality to do this for us (NSURLConnection) so we need a solution in windows to replicate this for easier testing. (and maybe for us on the Wii or Mac or whatever else we might port to)&lt;br /&gt;&lt;br /&gt;I looked through a few open source projects, libs etc before settling on LibCurl which seems to do everything we require in a nice simple, supported, threadsafe, documented, active open source package. After some initial linking trouble with unresolved externals all starting with __imp__ I had a look through the example .vcproj for some pre-processor defines which sure enough I missed out on. Got it all going, setup a simple asynchronous base connection class (TLNetwork::TConnection), setup a new TestApp example which shows one texture asset on the left and another on the right. I uploaded a compiled .asset file to the web (Which is &lt;a href="http://tootlegames.com/beta/wwwremote.textu.asset"&gt;freely availible to download&lt;/a&gt; if you're curious, although it's binary data rather than XML representation, I'll show an example of that when it's ready)&lt;br /&gt;Everything seemed to be setup nicely but when the internal thread was cleaned up I kept getting some corruption in the heap. I started looking into CRT issues and conflicts and found a full rebuild of an all debug build of the app didn't corrupt the heap. I setup all our projects to use Debug MT CRT but was still getting an occasional crash. I overloaded all the LibCurl memory allocation functions to use our own memory allocation functions which I can track much more easily. The remaining crash seemed more consistent (Instead of random crashes), looking further into it an asset kept being overwritten and corrupted... I stepped through the code and it turned out I was corrupting one of my assets myself, turning a c-pointer into a smart pointer and then releasing it, Oops.&lt;br /&gt;Now I'm a little unsure if the change in the memory allocations, or the CRT changes were neccessary. Nevermind, it works!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3480/3875211713_664d03c9fe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm4.static.flickr.com/3480/3875211713_664d03c9fe.jpg" width="128" /&gt;&lt;/a&gt;&lt;/div&gt;The image is the file download test app. The image on the left is local, the image on the right is downloaded, converted and then set. Not the most exciting screenshot :)&lt;br /&gt;&lt;br /&gt;I've put together an IPod/IPhone version, but untested. Now that this is stable I can see if it works on the iPhone and get back to game stuff :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-2375430217371232222?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/2375430217371232222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/thank-you-curl-thurl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/2375430217371232222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/2375430217371232222'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/thank-you-curl-thurl.html' title='Thank you curl, Thurl.'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3480/3875211713_664d03c9fe_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-1702616403683096527</id><published>2009-08-30T18:52:00.000+01:00</published><updated>2009-08-30T18:52:19.542+01:00</updated><title type='text'>Embiggen day three</title><content type='html'>I'm half way through day three now and I can concentrate a bit further as I have all day to myself (bar cat-feeding).&lt;br /&gt;&lt;br /&gt;I've added a rack to place tiles on now. The tiles on the rack come from the board's pool of letters (currently just 3 of every character). Tiles can be moved to the board and back and rearranged in the rack itself, all very nice and stable, and again, data driven. The rack places are datums inside my main GUI SVG. As are my buttons, these are extremley simple code wise, I have a datum specifying where the click should be detected and in the code I create a TWidgetButton assigned to that datum which just sends an command back to the game when it's clicked, thanks to the fantastic engine I don't need to worry about interface stuff much at all :)&lt;br /&gt;&lt;br /&gt;The text on the buttons required a tiny bit more work, the GUI's scheme specifies text nodes which use smaller datums on the button to dictate the position of the "play"/"back"/"undo" text. Again, out of code and just means when we come to translate there are no texture or code changes.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3430/3870593807_b580106c21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm4.static.flickr.com/3430/3870593807_b580106c21.jpg" width="128" /&gt;&lt;/a&gt;&lt;/div&gt;My next task is a jump out of the Embiggen code for a while as I setup the all important (and important for Rocket) code to fetch and send files across http.&lt;br /&gt;&lt;br /&gt;On first inspection libCurl seems like an adequate, stable, popular and open source library for me to use on win32 (and later the wii...) which mimicks apple's NSConnection classes which I'll be using on the iPod. Should be quite simple to write some platform indepedent interfaces to get/put files across HTTP which means I can send the current Match state asset as XML up to the server for PHP to process and stick in a database and reverse of that to download the current Match XML and turn back into an asset :)&lt;br /&gt;&lt;br /&gt;All going well and nice and quick development so far! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-1702616403683096527?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/1702616403683096527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/embiggen-day-three.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/1702616403683096527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/1702616403683096527'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/embiggen-day-three.html' title='Embiggen day three'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3430/3870593807_b580106c21_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-689200481989661662</id><published>2009-08-30T18:40:00.001+01:00</published><updated>2009-08-30T18:40:33.463+01:00</updated><title type='text'>Embiggen day 2</title><content type='html'>Day two was about an hour of work while I had lunch on saturday :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just finished the tile-drag code which dropped the tiles onto the board and worked out a local position which translates to an integer grid x/y position. If the new grid xy is empty, the dragged tile is delete and the grid entry is reset and render node is recreated. Once a tile is dragged (from wherever) it becomes detatched and a bit disposable so we are relying on the widget code to get a Mouse-Up style message to drop the node somewhere.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm3.static.flickr.com/2583/3866764463_1128ea7228.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm3.static.flickr.com/2583/3866764463_1128ea7228.jpg" width="128" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Also changed the colour scheme a little. These are hard-coded colours at the moment and the tile is a simple transparent + white PNG. All ready for themes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-689200481989661662?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/689200481989661662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/embiggen-day-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/689200481989661662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/689200481989661662'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/embiggen-day-2.html' title='Embiggen day 2'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2583/3866764463_1128ea7228_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-5789882174825971399</id><published>2009-08-30T18:40:00.000+01:00</published><updated>2009-08-30T18:40:10.509+01:00</updated><title type='text'>A game in a week? ish?</title><content type='html'>I've been playing far too much Words With Friends lately (add me - SoylentGraham - if you want a challenge) and have come across various limitations and changes, additional rule options etc that I and others want, as well as additional games to play. Minesweeper, boggle, erm, more will come to me I'm sure.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3519/3864451607_217a16da25.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm4.static.flickr.com/3519/3864451607_217a16da25.jpg" width="128" /&gt;&lt;/a&gt;&lt;/div&gt;After the first few hours, I have a dynamically sized grid, tile render nodes which I can drag around and the board and tile data is serialisable into a TBinaryTree, all ready for saving to an asset or upload/download. The Tiles themselves are an SVG, which is texture mapped to a tile PNG which is a simple white tile with transparent rounded edges. The tiles with letters are coloured green and 2 text render nodes are rendered on top; one for the letter, one for the number. A little OTT but it does mean I can use any font, align &amp;amp; scale the letter and point number by datums in the SVG too. All the visual stuff is nice and out of the code :) This will also make animating the letters, tiles, colours etc all much easier too.&lt;br /&gt;&lt;br /&gt;Next step will be to make the dragging of the nodes a bit more functional and actually change the board's data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-5789882174825971399?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/5789882174825971399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/game-in-week-ish.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/5789882174825971399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/5789882174825971399'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/game-in-week-ish.html' title='A game in a week? ish?'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3519/3864451607_217a16da25_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-2365194992647761491</id><published>2009-08-24T15:13:00.000+01:00</published><updated>2009-08-24T15:13:06.443+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WIP'/><title type='text'>Followup: Broken inherited rotations</title><content type='html'>Problem fixed, nothing terrible in the engine design thankfully, nor was there any errors in the math, the quaternion code was just overwriting itself as it calculated the new components.&lt;br /&gt;&lt;br /&gt;I quickly expanded the thumbstick demo in our test app to add a child arrow and a second thumbstick, THEN I actually looked into the quaternion code (rather than just the Transform code as I did before) and noticed the mistake. Hindsight is great, getting half my Sunday back would be better :P&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3571/3851817001_5b38cbbfdd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://farm4.static.flickr.com/3571/3851817001_5b38cbbfdd.jpg" width="128" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The next part of the game to finish off is the trigger linking in the editor and then maybe implement some proper particle system effects as a reward to myself :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-2365194992647761491?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/2365194992647761491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/followup-broken-inherited-rotations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/2365194992647761491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/2365194992647761491'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/followup-broken-inherited-rotations.html' title='Followup: Broken inherited rotations'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3571/3851817001_5b38cbbfdd_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-6226399577774659492</id><published>2009-08-24T13:42:00.000+01:00</published><updated>2009-08-24T15:18:01.251+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WIP'/><title type='text'>Broken inherited rotations</title><content type='html'>Progress on RocketMan is going swimmingly, a much more organised editor is in place; The engine-side scheme/graph editor has been split into modes (it's a state machine) and the overloaded game editor now instigates a menu for handling the different modes.&lt;br /&gt;&lt;br /&gt;Once that and the in-game menu had been all converted to asset-based systems I wanted to cut out a part of redundant code on the player. Previously we only had 1 shape per physics node so the collision sensor on the hoover nozzle -which determined when to suck up a node- was a seperate physics object. Now this can be placed directly on the player and remove the superfolous physics node on the player.&lt;br /&gt;Setup was simple, although requires an extra transform [let's assume... everyframe] now to convert the datum representing the nozzle on the hoover render node [this is a child as it requires a different rotation] up the tree to be in the same space as the main player, this was easy enough... but it appears there is a problem with the world transform on our child node, argh!&lt;br /&gt;I've confirmed this by rendering ALL nodes with their calculated world transform instead of local offsets and it definately rotates incorrectly in this case...&lt;br /&gt;Root -&amp;gt; Rotated Object -&amp;gt; Rotated Child&lt;br /&gt;The child's rotation seems to be magnified by the rotation on the parent object, when the parent is at 0-degree's everything is fine. The more it is rotated the more we quickly end up with "quaternion wrap" (I made this term up) where the radians wrap past 2PI and we just get wrong angles.&lt;br /&gt;&lt;br /&gt;I would just revert the code back to the old state, but I think the issue is in the engine's transform system and just not noticed before.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm4.static.flickr.com/3420/3851817087_e1033e9b1e.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://farm4.static.flickr.com/3420/3851817087_e1033e9b1e.jpg" width="200" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;In the image, the magenta circle (Physics node's shape) is the nozzle datum which I have manually calculated (to put it in the correct local space). The hoover itself, and the datums (white outline spheres) are rotated incorrectly and the one at the furthest extent should be in the same place as the magenta&amp;nbsp; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Setting up a test case in the test app :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-6226399577774659492?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/6226399577774659492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/current-work.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/6226399577774659492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/6226399577774659492'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/current-work.html' title='Broken inherited rotations'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3420/3851817087_e1033e9b1e_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4051688237897755309.post-927807188857521278</id><published>2009-08-24T13:38:00.000+01:00</published><updated>2009-08-24T13:42:31.953+01:00</updated><title type='text'>Introduction</title><content type='html'>I enjoy coding, I do it a lot. Although I document my work internally (comments) I don't actually document what I am producing, techniques I use, issues I come across etc, so I rarely review anything outside of an IDE, offline if you will.&lt;br /&gt;&lt;br /&gt;A lot of what I do could be useful to others, amaetuer and expert alike so in the interest of creating discussion, documenting my days and ego worship I am going to write here on blogger. Although I might not publish much literal code all the theory shouild be explained and source code is only really useful for copy+paste situations anyway and none of this should be language restrictive.&lt;br /&gt;&lt;br /&gt;Really I should have done this 14 months ago when I quit full time work, but never mind :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4051688237897755309-927807188857521278?l=www.lemongood.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.lemongood.co.uk/feeds/927807188857521278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.lemongood.co.uk/2009/08/introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/927807188857521278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4051688237897755309/posts/default/927807188857521278'/><link rel='alternate' type='text/html' href='http://www.lemongood.co.uk/2009/08/introduction.html' title='Introduction'/><author><name>GrahamGrahamReeves</name><uri>http://www.blogger.com/profile/01248774282792038317</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_4CznvRWo0M8/SpKiHB9P63I/AAAAAAAAG9s/Yt5afnWSvec/s1600-R/AIbEiAIAAABDCO_gy_Xiir2UfCILdmNhcmRfcGhvdG8qKDQ1MTg0ZmI3M2M0OTU1ZTI4MDA5YTM1ZjVkOGQ0MTJkYzUwZDVlOWIwAfeOSo17kXSiKll5_75IyYAns_Nl'/></author><thr:total>0</thr:total></entry></feed>
