<?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-4702919445327211227</id><updated>2012-01-10T15:35:36.148-08:00</updated><category term='tetris'/><category term='C++'/><category term='objective C'/><category term='3D Tetris'/><category term='iphone'/><category term='iPad'/><category term='smart brick'/><category term='puzzle'/><category term='game'/><category term='OpenGL ES'/><category term='iphone ipod touch'/><category term='programming'/><title type='text'>Warp Dreams Game Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-6783666216872091025</id><published>2011-12-28T14:19:00.000-08:00</published><updated>2011-12-28T14:25:10.279-08:00</updated><title type='text'>New Game: Doomsday Express</title><content type='html'>&lt;div&gt;Early Prototype:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-HXSU1xGfeCs/TvuW-LlXrQI/AAAAAAAAAHs/mvrR6vUQG_U/s1600/IMG_0381.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://1.bp.blogspot.com/-HXSU1xGfeCs/TvuW-LlXrQI/AAAAAAAAAHs/mvrR6vUQG_U/s400/IMG_0381.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5691308549118340354" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Y40ul1Zy2pg/TvuWLSsXjoI/AAAAAAAAAHg/FCdjsQzwk6A/s1600/IMG_0384.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://2.bp.blogspot.com/-Y40ul1Zy2pg/TvuWLSsXjoI/AAAAAAAAAHg/FCdjsQzwk6A/s400/IMG_0384.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5691307674853412482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-6783666216872091025?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/6783666216872091025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2011/12/new-game-doomsday-express.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/6783666216872091025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/6783666216872091025'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2011/12/new-game-doomsday-express.html' title='New Game: Doomsday Express'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-HXSU1xGfeCs/TvuW-LlXrQI/AAAAAAAAAHs/mvrR6vUQG_U/s72-c/IMG_0381.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-8283052403251024538</id><published>2010-06-18T19:58:00.001-07:00</published><updated>2010-06-18T19:58:57.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smart Brick HD for iPad is Available in App Store !</title><content type='html'>Store link:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;itms://itunes.apple.com/us/app/smart-brick-hd/id375581327?mt=8&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-8283052403251024538?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/8283052403251024538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/06/smart-brick-hd-for-ipad-is-available-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/8283052403251024538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/8283052403251024538'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/06/smart-brick-hd-for-ipad-is-available-in.html' title='Smart Brick HD for iPad is Available in App Store !'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-3356398922724401539</id><published>2010-05-31T16:58:00.000-07:00</published><updated>2010-05-31T16:59:21.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smart Brick Lite is Available in App Store</title><content type='html'>&lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); font-family:'lucida grande', tahoma, verdana, arial, sans-serif;font-size:13px;"&gt;Smart Brick Lite is LIVE in Apple Store! Have a free trial: &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); font-family:'lucida grande', tahoma, verdana, arial, sans-serif;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); font-family:'lucida grande', tahoma, verdana, arial, sans-serif;font-size:13px;"&gt;itms://itunes.apple.com/us/app/smart-brick-lite/id373771120?mt=8&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-3356398922724401539?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/3356398922724401539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/05/smart-brick-lite-is-available-in-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/3356398922724401539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/3356398922724401539'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/05/smart-brick-lite-is-available-in-app.html' title='Smart Brick Lite is Available in App Store'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-4172753012508583569</id><published>2010-05-27T23:06:00.000-07:00</published><updated>2010-05-27T23:07:43.267-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smart Brick HD for iPad in Development</title><content type='html'>Coming soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-4172753012508583569?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/4172753012508583569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/05/smart-brick-hd-for-ipad-in-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/4172753012508583569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/4172753012508583569'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/05/smart-brick-hd-for-ipad-in-development.html' title='Smart Brick HD for iPad in Development'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-7993163137332608158</id><published>2010-05-13T16:34:00.000-07:00</published><updated>2010-05-13T21:10:12.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smar Brick is LIVE on App Store!</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Smart Brick is a puzzle game that challenges and trains your 3D space sense, packed with simplistic art style. your need to arrange bricks of different colors with a proper orientation within given time, in order to fill up layers and resolve them. Each level has its unique design not only to entertain, but also to move people emotionally. Intuitive multi-touch control enables manipulation of 3D objects in 3D spaces with ease.&lt;br /&gt;&lt;br /&gt;Features:&lt;br /&gt;&lt;br /&gt;- Full 3D graphics running smoothly at 40 FPS (on iPhone 3GS)&lt;br /&gt;- Variant level designs with different pace, play styles and goals&lt;br /&gt;- Smooth and intuitive multi touch control&lt;br /&gt;- different sets of bricks, suiting from newbies to experts&lt;br /&gt;- Multiple relaxed casual levels to spend time on, each has a distinct theme&lt;br /&gt;- Full dynamic animation and background&lt;br /&gt;- A highscore board where you can challenge yourself or your friends&lt;br /&gt;&lt;br /&gt;How to play:&lt;br /&gt;&lt;br /&gt;- Double tap the brick to drop it&lt;br /&gt;- Press on the brick and hold to drag it around&lt;br /&gt;- Tab the spinning rectangles around the brick to turn it in the shown direction&lt;br /&gt;- Try fill up a full layer to make it disappear and score!&lt;br /&gt;&lt;br /&gt;Game modes:&lt;br /&gt;&lt;br /&gt;- Elimination: you must resolve specific bricks that scattered in the level to win. Some are hard to reach, and time is limited.&lt;br /&gt;- Time Killer: have some time to spend on bus or subway? Relax and score as much as you can in the beatiful levels. No time limit.&lt;br /&gt;&lt;br /&gt;Vist: warpdreams.blogspot.com for more screenshots and information about other games.&lt;br /&gt;&lt;br /&gt;If you have any suggestions or need support, write to: dreams.warp@gmail.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zL5qmMV8I/AAAAAAAAAGY/vJ2weL1YyA0/s1600/Screenshot+2010.04.27+10.32.48.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zL5qmMV8I/AAAAAAAAAGY/vJ2weL1YyA0/s400/Screenshot+2010.04.27+10.32.48.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470971838895773634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S-zL5VbuhwI/AAAAAAAAAGQ/r3jd2DEE-e8/s1600/Screenshot+2010.04.26+18.39.25.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S-zL5VbuhwI/AAAAAAAAAGQ/r3jd2DEE-e8/s400/Screenshot+2010.04.26+18.39.25.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470971833214732034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zL46oXZoI/AAAAAAAAAGI/NfqLr5jqKOc/s1600/Screenshot+2010.04.26+18.23.59.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zL46oXZoI/AAAAAAAAAGI/NfqLr5jqKOc/s400/Screenshot+2010.04.26+18.23.59.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470971826019985026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S-zL4ltCQYI/AAAAAAAAAGA/NHdYBDCtcCQ/s1600/Screenshot+2010.04.26+18.22.53.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S-zL4ltCQYI/AAAAAAAAAGA/NHdYBDCtcCQ/s400/Screenshot+2010.04.26+18.22.53.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470971820402426242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S-zL4bGP0BI/AAAAAAAAAF4/WLPbVIklB0I/s1600/Screenshot+2010.04.23+00.08.30.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S-zL4bGP0BI/AAAAAAAAAF4/WLPbVIklB0I/s400/Screenshot+2010.04.23+00.08.30.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470971817555382290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zMYuc8NMI/AAAAAAAAAGw/SB6Fg1Laub0/s1600/Screenshot+2010.04.28+21.52.57.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zMYuc8NMI/AAAAAAAAAGw/SB6Fg1Laub0/s400/Screenshot+2010.04.28+21.52.57.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470972372506653890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S-zMYffeYqI/AAAAAAAAAGo/82NllpMF6xg/s1600/Screenshot+2010.04.28+18.46.01.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S-zMYffeYqI/AAAAAAAAAGo/82NllpMF6xg/s400/Screenshot+2010.04.28+18.46.01.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470972368490750626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Store Link:&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="itms://itunes.apple.com/us/app/smart-brick/id370135845?mt=8"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 250px; height: 125px;" src="http://4.bp.blogspot.com/_HOCU8VVAwAQ/S-zM6c2Ml2I/AAAAAAAAAG4/Jil-yvn-fSI/s400/App_Store_Badge_EN.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5470972951896299362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-7993163137332608158?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/7993163137332608158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/05/smar-brick-is-live-on-app-store.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7993163137332608158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7993163137332608158'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/05/smar-brick-is-live-on-app-store.html' title='Smar Brick is LIVE on App Store!'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HOCU8VVAwAQ/S-zL5qmMV8I/AAAAAAAAAGY/vJ2weL1YyA0/s72-c/Screenshot+2010.04.27+10.32.48.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-7165416238900321490</id><published>2010-05-04T21:24:00.001-07:00</published><updated>2010-05-04T21:24:59.376-07:00</updated><title type='text'>Find Warp Dreams on Facebook</title><content type='html'>&lt;a href="http://www.facebook.com/#!/pages/Warp-Dreams/119440868084050"&gt;http://www.facebook.com/#!/pages/Warp-Dreams/119440868084050&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-7165416238900321490?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/7165416238900321490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/05/find-warp-dreams-on-facebook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7165416238900321490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7165416238900321490'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/05/find-warp-dreams-on-facebook.html' title='Find Warp Dreams on Facebook'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-2460367540096137703</id><published>2010-04-28T05:52:00.000-07:00</published><updated>2010-04-29T20:23:35.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smart Brick Is Submitted for Review</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S9gvzboa0MI/AAAAAAAAAD0/gmQf9QX6wkY/s1600/loading.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S9gvzboa0MI/AAAAAAAAAD0/gmQf9QX6wkY/s400/loading.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5465170708451217602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Now I have to wait patiently...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-2460367540096137703?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/2460367540096137703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-is-entering-final-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/2460367540096137703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/2460367540096137703'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-is-entering-final-test.html' title='Smart Brick Is Submitted for Review'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_HOCU8VVAwAQ/S9gvzboa0MI/AAAAAAAAAD0/gmQf9QX6wkY/s72-c/loading.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-4250023733248064912</id><published>2010-04-26T17:37:00.001-07:00</published><updated>2010-04-28T05:52:12.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smart Brick More Screenshot</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9YyTZKdQ6I/AAAAAAAAADs/lVEDk1tRNNE/s1600/Screenshot+2010.04.26+18.12.33.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9YyTZKdQ6I/AAAAAAAAADs/lVEDk1tRNNE/s400/Screenshot+2010.04.26+18.12.33.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5464610506614326178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HOCU8VVAwAQ/S9YyMPjX4BI/AAAAAAAAADk/-Ld4x4CZBGU/s1600/Screenshot+2010.04.26+18.22.53.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_HOCU8VVAwAQ/S9YyMPjX4BI/AAAAAAAAADk/-Ld4x4CZBGU/s400/Screenshot+2010.04.26+18.22.53.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5464610383775391762" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-4250023733248064912?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/4250023733248064912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-more-screenshot_26.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/4250023733248064912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/4250023733248064912'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-more-screenshot_26.html' title='Smart Brick More Screenshot'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9YyTZKdQ6I/AAAAAAAAADs/lVEDk1tRNNE/s72-c/Screenshot+2010.04.26+18.12.33.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-7302716438158469513</id><published>2010-04-23T06:00:00.000-07:00</published><updated>2010-04-23T06:00:31.137-07:00</updated><title type='text'>The Matrix Phone demo - iPhone 3GS/IPod Touch App HD</title><content type='html'>&lt;object style="background-image:url(http://i3.ytimg.com/vi/6zCa86NpqRA/hqdefault.jpg)" width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6zCa86NpqRA&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/6zCa86NpqRA&amp;amp;hl=en_US&amp;amp;fs=1" width="480" height="295" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-7302716438158469513?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/7302716438158469513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/matrix-phone-demo-iphone-3gsipod-touch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7302716438158469513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7302716438158469513'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/matrix-phone-demo-iphone-3gsipod-touch.html' title='The Matrix Phone demo - iPhone 3GS/IPod Touch App HD'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-5864969906454020414</id><published>2010-04-20T07:09:00.000-07:00</published><updated>2010-04-22T07:15:48.426-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Smart Brick More Screenshot</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9BaC0KBvwI/AAAAAAAAADM/WBaN29gNmUM/s1600/Screenshot+2010.04.23+00.13.45.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9BaC0KBvwI/AAAAAAAAADM/WBaN29gNmUM/s400/Screenshot+2010.04.23+00.13.45.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5462965352407351042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S9BZ9wIzSkI/AAAAAAAAADE/SWwah52UsFA/s1600/Screenshot+2010.04.23+00.09.35.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S9BZ9wIzSkI/AAAAAAAAADE/SWwah52UsFA/s400/Screenshot+2010.04.23+00.09.35.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5462965265429121602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9BZ3DC4nHI/AAAAAAAAAC8/oRu5vXgQFLw/s1600/Screenshot+2010.04.23+00.08.30.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9BZ3DC4nHI/AAAAAAAAAC8/oRu5vXgQFLw/s400/Screenshot+2010.04.23+00.08.30.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5462965150245493874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S9BZxmI5fHI/AAAAAAAAAC0/uwgE7GdSKng/s1600/Screenshot+2010.04.23+00.07.29.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S9BZxmI5fHI/AAAAAAAAAC0/uwgE7GdSKng/s400/Screenshot+2010.04.23+00.07.29.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5462965056586742898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-5864969906454020414?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/5864969906454020414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-more-screenshot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5864969906454020414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5864969906454020414'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-more-screenshot.html' title='Smart Brick More Screenshot'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HOCU8VVAwAQ/S9BaC0KBvwI/AAAAAAAAADM/WBaN29gNmUM/s72-c/Screenshot+2010.04.23+00.13.45.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-5655051632988735712</id><published>2010-04-16T03:03:00.000-07:00</published><updated>2010-04-18T20:17:52.180-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='3D Tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>3D Tetris - iPhone/iPod touch Game "Smart Brick" Empire State Building G...</title><content type='html'>&lt;object style="background-image:url(http://i2.ytimg.com/vi/al4vt_wIsdg/hqdefault.jpg)" width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/al4vt_wIsdg&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/al4vt_wIsdg&amp;amp;hl=en_US&amp;amp;fs=1" width="480" height="295" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-5655051632988735712?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/5655051632988735712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/3d-tetris-iphoneipod-touch-game-smart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5655051632988735712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5655051632988735712'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/3d-tetris-iphoneipod-touch-game-smart.html' title='3D Tetris - iPhone/iPod touch Game &quot;Smart Brick&quot; Empire State Building G...'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-5372039384532722908</id><published>2010-04-11T17:25:00.000-07:00</published><updated>2010-04-11T17:27:31.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Smart Brick Icon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S8Jor6Dr93I/AAAAAAAAACM/OJoxxfBn-eE/s1600/Screen+shot+2010-04-12+at+10.25.07+AM.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 106px; height: 107px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S8Jor6Dr93I/AAAAAAAAACM/OJoxxfBn-eE/s400/Screen+shot+2010-04-12+at+10.25.07+AM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5459040801854846834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Works for now I guess...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-5372039384532722908?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/5372039384532722908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-icon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5372039384532722908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5372039384532722908'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-icon.html' title='Smart Brick Icon'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HOCU8VVAwAQ/S8Jor6Dr93I/AAAAAAAAACM/OJoxxfBn-eE/s72-c/Screen+shot+2010-04-12+at+10.25.07+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-5616548759820641447</id><published>2010-04-07T07:13:00.000-07:00</published><updated>2010-04-07T20:14:28.625-07:00</updated><title type='text'>Warp Dreams Logo</title><content type='html'>I consulted a logo design studio for a quote and they presented a whopping $1750 price tag... Well, not that I don't recognize the value of their work, but that price is simply way above my budget. So I DIYed one myself using a toy-like Pa&lt;i&gt;intbrush &lt;/i&gt;on Mac OS X. (GIMP for Mac just sucks because X window on Mac sucks. You have to click twice on a button to activate it if the window contains it is not the active window). Look at left of the page.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It does has some issues, like: top-right proportion of the logo seems too empty. However, I think it works for now. Maybe I'll pay $1750 when I am rich.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-5616548759820641447?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/5616548759820641447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/warp-dreams-logo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5616548759820641447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/5616548759820641447'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/warp-dreams-logo.html' title='Warp Dreams Logo'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-1799204305646796666</id><published>2010-04-07T06:45:00.000-07:00</published><updated>2010-04-07T19:58:37.971-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL ES'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Using short value in vertex array instead of float</title><content type='html'>&lt;div&gt;I've been trying to squeeze more FPS from the rendering part of Smart Brick. I came across an article which suggests using GL_SHORT instead of GL_FLOAT in vertex array to boost performance:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://stackoverflow.com/questions/1762866/using-gl-short-instead-of-gl-float-in-an-opengl-es-vertex-array"&gt;http://stackoverflow.com/questions/1762866/using-gl-short-instead-of-gl-float-in-an-opengl-es-vertex-array&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The solution quite makes sense. Basically you use short value to replace float values; to compensate the precision loss,  a pair of additional &lt;i&gt;glScalef&lt;/i&gt; and &lt;i&gt;glTranslatef &lt;/i&gt;is required per-model.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A reply attached at the end of the post suggests that on iPhone it would be 30% faster. However, this is not the case for Smart Brick; not because the article is wrong, but I think the performance increment depends on actual scenarios. Here is my guess:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If your model contains large amounts of vertices the solution may help a lot. You get big computational savings for using short instead of float, with the price of only one additional &lt;i&gt;glScale&lt;/i&gt; and &lt;i&gt;glTranslate &lt;/i&gt;calls respectively. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, it does not help Smart Brick, because Smart Brick renders large amounts of models, each of them contains only few vertices. This way, the savings on float vertices are probably offset by &lt;i&gt;glScale&lt;/i&gt; and &lt;i&gt;glTranslate&lt;/i&gt; calls, because they are called once per-model, and they are called a lot when there are a lot of models.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-1799204305646796666?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/1799204305646796666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/using-short-value-in-vertex-array.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/1799204305646796666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/1799204305646796666'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/using-short-value-in-vertex-array.html' title='Using short value in vertex array instead of float'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-3187711002584650648</id><published>2010-04-05T02:55:00.000-07:00</published><updated>2010-04-05T03:27:29.008-07:00</updated><title type='text'>Smark Brick Game Play</title><content type='html'>&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-9436c8864f25a30e" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v4.nonxt3.googlevideo.com/videoplayback?id%3D9436c8864f25a30e%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331293092%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D80368B267ABE3D845AC86658D75131256918991F.3E4AB6F632551C7332D307AF03D5704738B05029%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9436c8864f25a30e%26offsetms%3D5000%26itag%3Dw160%26sigh%3DzOa6lsAXvCR-_Cwesbqv2p5zg2c&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v4.nonxt3.googlevideo.com/videoplayback?id%3D9436c8864f25a30e%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331293092%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D80368B267ABE3D845AC86658D75131256918991F.3E4AB6F632551C7332D307AF03D5704738B05029%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9436c8864f25a30e%26offsetms%3D5000%26itag%3Dw160%26sigh%3DzOa6lsAXvCR-_Cwesbqv2p5zg2c&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div&gt;This is a demo showing 2D mode in Smart Brick. Well, 2D is a special case of 3D after all. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-c58ebf3f55c906d0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v18.nonxt1.googlevideo.com/videoplayback?id%3Dc58ebf3f55c906d0%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331293092%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D14955B8B1FF3E4B1437B1393B309102C478771E2.4A7AD1E5A59BCA822E0FBE7D1F83451828492DFB%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dc58ebf3f55c906d0%26offsetms%3D5000%26itag%3Dw160%26sigh%3D_O1ylnF3Bo1Z0WDspL3FeNBdTeI&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v18.nonxt1.googlevideo.com/videoplayback?id%3Dc58ebf3f55c906d0%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331293092%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D14955B8B1FF3E4B1437B1393B309102C478771E2.4A7AD1E5A59BCA822E0FBE7D1F83451828492DFB%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dc58ebf3f55c906d0%26offsetms%3D5000%26itag%3Dw160%26sigh%3D_O1ylnF3Bo1Z0WDspL3FeNBdTeI&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div&gt;The true 3D mode in Smart Brick.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-3187711002584650648?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/3187711002584650648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smark-brick-game-play.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/3187711002584650648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/3187711002584650648'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smark-brick-game-play.html' title='Smark Brick Game Play'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-6268865775394129933</id><published>2010-04-01T16:44:00.000-07:00</published><updated>2010-04-01T16:48:28.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tetris'/><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='smart brick'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone ipod touch'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Smart Brick Screenshot</title><content type='html'>&lt;img src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/S7UwKC9j8-I/AAAAAAAAAA0/e9Fsel7dxiw/s400/Screen+shot+2010-04-02+at+10.36.53+AM.png" style="cursor:pointer; cursor:hand;width: 266px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5455319472781128674" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S7UwQSuNQyI/AAAAAAAAAA8/X0k2-IWNjbw/s1600/Screen+shot+2010-04-02+at+10.37.48+AM.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 266px; height: 400px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/S7UwQSuNQyI/AAAAAAAAAA8/X0k2-IWNjbw/s400/Screen+shot+2010-04-02+at+10.37.48+AM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5455319580090909474" /&gt;&lt;/a&gt;&lt;img src="http://1.bp.blogspot.com/_HOCU8VVAwAQ/S7UwnraTpXI/AAAAAAAAABU/9UrplPYPzEk/s400/Screen+shot+2010-04-02+at+10.42.50+AM.png" style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5455319981855319410" /&gt;&lt;img src="http://4.bp.blogspot.com/_HOCU8VVAwAQ/S7Uwa4KFEhI/AAAAAAAAABE/LrJL1Nzto7Y/s400/Screen+shot+2010-04-02+at+10.38.49+AM.png" style="cursor:pointer; cursor:hand;width: 267px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5455319761938616850" /&gt;&lt;img src="http://4.bp.blogspot.com/_HOCU8VVAwAQ/S7UwgT-LubI/AAAAAAAAABM/aPDBKNTR7nU/s400/Screen+shot+2010-04-02+at+10.40.42+AM.png" style="cursor:pointer; cursor:hand;width: 266px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5455319855304260018" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-6268865775394129933?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/6268865775394129933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-screenshot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/6268865775394129933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/6268865775394129933'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/04/smart-brick-screenshot.html' title='Smart Brick Screenshot'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HOCU8VVAwAQ/S7UwKC9j8-I/AAAAAAAAAA0/e9Fsel7dxiw/s72-c/Screen+shot+2010-04-02+at+10.36.53+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-6226109946227456911</id><published>2010-03-23T04:59:00.000-07:00</published><updated>2010-03-23T17:48:08.735-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='objective C'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>I love POC</title><content type='html'>POC stands for Plain Old C structure. A POC contains no references nor pointers, but only primitive value types or other POCs. No C++ elements (no user defined constructor, operator, etc)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The good of POC is that it is guaranteed to be allocated within a continuous memory space, so classic memory functions such as &lt;i&gt;memcpy&lt;/i&gt;, &lt;i&gt;memset&lt;/i&gt; works nicely on POC or array of POCs. Additionally, you get a free assignment operator, which is quite important for data types. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;POC works very good with &lt;i&gt;NSData&lt;/i&gt; for local file storage. Just copy the memory content of a POC into &lt;i&gt;NSData&lt;/i&gt; and call &lt;i&gt;writeToFile, &lt;/i&gt;saving the whole byte string to the file,&lt;i&gt; &lt;/i&gt;easily done. If it's not a POC... well good luck manual-serializing fields of an instance while saving and de-serializing them while loading, don't get the order wrong! Of course, using POC you probably need to mind the debug/release settings, for the compiler may pad within POC, causing a different size between debug and release mode. Files written by application compiled under different modes may not compatible.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-6226109946227456911?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/6226109946227456911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/03/i-love-poc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/6226109946227456911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/6226109946227456911'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/03/i-love-poc.html' title='I love POC'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-703154611302489229</id><published>2010-03-16T01:45:00.000-07:00</published><updated>2010-03-29T05:58:50.173-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='objective C'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Tips to Use Interface Builder As Much As Possible</title><content type='html'>The Interface Builder of the XCode Suite is particularly powerful. It is very handy when developing for iPhone/iPod touch. However, it comes with some difficulty when you actually want to generate and place your widget programmingly. For example: you have a scroll view with several buttons inside that align vertically, however the number of buttons and the texts on them are decided at run-time so you can't simply drag some in using Interface Builder. But neither do you want to go after all these tedious API calls to create buttons then configure formats manually either; what then?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can actually design a "sample button" using Interface Builder, have all the formats done (which is nice and easy using IB), then put it at the root of the widget hierarchy.  Since it is not a sub-view of any other widgets, it is not shown at run-time. Then you can use the following code to copy this button as you want, place it anywhere you want, without worrying the format:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;NSData *archived = [NSKeyedArchiver archivedDataWithRootObject: button_sample];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;//Initiate buttons based on a sample&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;UIButton* b = [NSKeyedUnarchiver unarchiveObjectWithData: archived];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;//set text, change position...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-703154611302489229?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/703154611302489229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/03/tips-to-use-interface-builder-as-much.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/703154611302489229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/703154611302489229'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/03/tips-to-use-interface-builder-as-much.html' title='Tips to Use Interface Builder As Much As Possible'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-2821317793816611073</id><published>2010-03-11T15:14:00.000-08:00</published><updated>2010-03-17T06:37:31.626-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>The Upcoming Game for iPhone</title><content type='html'>Well... bad news first. The Matrix Phone are not going to be on App Store any sooner. Apparently it is too close to the movie &lt;i&gt;The Matrix&lt;/i&gt; thus there is a copyright issue (although I have avoided reference to &lt;i&gt;The Matrix&lt;/i&gt; in the application description) . Maybe I would negotiate with &lt;i&gt;Walt Brothers &lt;/i&gt;about authorization; but that would be after my next game publishes.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok, the next game: &lt;b&gt;S&lt;/b&gt;&lt;i&gt;&lt;b&gt;mart Brick. &lt;span class="Apple-style-span" style="font-style: normal;"&gt; &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;You can think it as a 3D version of &lt;/span&gt;Tetris&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;. Instead of filling an 2D plane as in Tetris, the user should fill a 3D volume using bricks that stretches on all three dimensions. It is not a fresh idea actually, there are several versions of 3D Tetris over the web; however, the key is not about the idea, it's about the control. Manipulating bricks in a 3D space, like flipping and movement in three dimensions is far more complicated than in 2D. It will leads to frustration and fun-less-ness. However, thanks to the multi-touch technology of iPhone, "3D Tetris" is made possible. Screenshots and demos will go online soon. Stick closely. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;It is also planned to port&lt;b&gt;&lt;i&gt; Smart Brick&lt;/i&gt;&lt;/b&gt; on iPad - natively, not "stretched" up. But not until I get the product. I need to wait longer because I actually want the 3G version. &lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;For the end of the post, a little tip for the mix C++/Objective C development:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can have C++ classes as parameters of Objective C functions. However, Objective C does not allow namespace syntax, the "::", in the function declaration. So you need to put a namespace &lt;i&gt;using &lt;/i&gt;at the top of your Objective C header. It's kind of nasty, and I still prefer plain C struct as means of communication between C++ and Objective C.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-2821317793816611073?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/2821317793816611073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2010/03/upcoming-game-for-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/2821317793816611073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/2821317793816611073'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2010/03/upcoming-game-for-iphone.html' title='The Upcoming Game for iPhone'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-8295627676893488224</id><published>2009-11-29T19:33:00.000-08:00</published><updated>2010-03-17T06:38:05.363-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Mix C++ code with Objective C for iPhone</title><content type='html'>Objective C is not the only language you can use to program for iPhone; you can use C/C++ and mix the C/C++ code with your Objective C code. And I recommend to do so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reason 1: &lt;/span&gt;for cross-platform purposes. If you use only Objective C then you are locked on the Apple platform. Don't give up the chance of porting your program to other devices such as Zune HD.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reason 2:&lt;/span&gt; for the better C++ standard STL library. IMHO the STL library is much better than Objective C Cocoa libraries; it is portable and easier to use. Especially the container part.&lt;br /&gt;&lt;br /&gt;To those who are worried, iphone run-time have full support for C++, including virtual function, exception handling and RTTI. And Xcode does support template.&lt;br /&gt;&lt;br /&gt;There is no explicit boundary between C++ and Objective C when you code for iphone. You can write Objective C code in C++ classes/functions, and vice versa. But notice that the source code file other than headers should be named as ".mm".&lt;br /&gt;&lt;br /&gt;Althrough you can mix C++ and Objective C, a good idea is to separate them for better portability and maintainability. When comes to a problem that both C++ and Objective C have solutions, I prefer to write the C++ code when possible and only write Objective C code where Cocoa library provides an easier solution, or when only it has the solution. For example, the Cocoa container classes suck but they do provide very easy to use persistance functions; so I use STL container and only translate the content to the Cocoa counter part when I need to save the content to a file.&lt;br /&gt;&lt;br /&gt;A trick is that, you can provide Objective C implementation for C++ classes. I would use multiple implementation files for a C++ class interface: keep C++ only impl in one and Objective C impl in another.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-8295627676893488224?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/8295627676893488224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2009/11/mix-c-code-with-objective-c-for-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/8295627676893488224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/8295627676893488224'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2009/11/mix-c-code-with-objective-c-for-iphone.html' title='Mix C++ code with Objective C for iPhone'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-7754721595825053905</id><published>2009-10-28T22:30:00.000-07:00</published><updated>2009-10-28T23:00:41.806-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL ES'/><title type='text'>How to select 3D object from cursor/touch in OpenGL ES</title><content type='html'>When writing 3D games there is a requirement quite common (forget about OpenGL ES at the moment):&lt;br /&gt;&lt;br /&gt;How to select an 3D object in the scene, by mouse/touch?&lt;br /&gt;&lt;br /&gt;This problem is not so trivial as it seems. Actually the more you think about it, the more you will find it is not so easy to solve.&lt;br /&gt;&lt;br /&gt;Basically, we are trying to map the windows coordinate back to the 3D coordinate. If you understand how an object in OpenGL coordinate is projected onto your 2D display:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: lucida grande;"&gt;screen_vector = ((3D_vector_4x1) * model_view_matrix_4x4) * projection_matrix_4x4;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All we need to do is do the reverse, multiply the &lt;span style="font-family: lucida grande;"&gt;screen_vector &lt;/span&gt;with the reverse of model view/projection matrices:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: lucida grande;"&gt;3D_vector_4x1 = (screen_vector * (projection_matrix_4x4_inv)) * model_view_matrix_4x4_inv;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Actually, in desktop version of OpenGL, you don't have to do the calculation yourself. There is the mighty &lt;a href="http://nehe.gamedev.net/data/articles/article.asp?article=13"&gt;gluUnproject&lt;/a&gt; that handles it for you.&lt;br /&gt;&lt;br /&gt;But there is still a problem. Since your LCD screen is 2D, you only get the &lt;span style="font-family: lucida grande;"&gt;x,y&lt;/span&gt; component of &lt;span style="font-family: lucida grande;"&gt;screen_vector.&lt;/span&gt; Where is &lt;span style="font-family: lucida grande;"&gt;z&lt;/span&gt;? &lt;span style="font-family: lucida grande;"&gt;z &lt;/span&gt;is actually the depth component and you can find it in the depth buffer. In desktop version of OpenGL, you can call &lt;span style="font-family: lucida grande;"&gt;glReadPixels&lt;/span&gt; with &lt;span style="font-family: lucida grande;"&gt;GL_DEPTH_COMPONENT&lt;/span&gt; flag.  Of course it is not the full story: the depth buffer only stores pixel depth values that are minimal (unless you change the OpenGL depth function), when transformed back to 3D_vector_4x1 you only get the nearest object. Usually it is desired, but if your wanted object is painted behind other transparent polygons,  there is a little bit of problem - but hey it's not a big deal.&lt;br /&gt;&lt;br /&gt;But when comes to OpenGL ES, there is a big problem implementing all these:&lt;br /&gt;1. You don't get GLU package. So there is no &lt;span style="font-family: lucida grande;"&gt;gluUnproject&lt;/span&gt;.&lt;br /&gt;2. You don't have access to the depth buffer. (No &lt;span style="font-family: lucida grande;"&gt;GL_DEPTH_COMPONENT&lt;/span&gt; for you!)&lt;br /&gt;&lt;br /&gt;So the previous solution won't work!&lt;br /&gt;Face it, in OpenGL ES it is a one-way road: you can get windows coordinate from a 3D coordinate, but there is no other way around.  Then how to solve the problem?&lt;br /&gt;&lt;br /&gt;Well... brutal force always works. First, you define what object is selectable in the game world. Second, you calculate the window coordinate of that object during OpenGL paint, keeping it updated. Last, when a mouse click/touch happens, compare the event windows coordinate to all existing window coordinates that updated during OpenGL paint, and pick one that is nearest. Of course, it is not universal and not all objects in the world can be selected; but hey, do you really need that?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Or you can use ray-tracing.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-7754721595825053905?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/7754721595825053905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2009/10/how-to-select-3d-object-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7754721595825053905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/7754721595825053905'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2009/10/how-to-select-3d-object-from.html' title='How to select 3D object from cursor/touch in OpenGL ES'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-878270184220953036</id><published>2009-10-22T22:10:00.001-07:00</published><updated>2010-03-17T06:38:59.919-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='objective C'/><title type='text'>The Matrix Phone Improved - been Objective C, now go back to C++</title><content type='html'>The first version of The Matrix Phone is submitted to AppStore and is pending for review; however, this is far from the end. I'm now planning to develop a better game scheme for The Matrix Phone.&lt;br /&gt;&lt;br /&gt;(Now the geek part)&lt;br /&gt;As my first application that is written in Objective C, it is far from optimal: I were not familar with Objective C at that time - now I realize that the code is a mess, and is almost impossible to refactory to support new gaming schemes. After a period of struggling, I decide to re-write it in C++ (plus some Objective C code for iphone); I just have to do this anyway, maybe The Matrix Phone can be on Microsoft Zune.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Been Objective C, now go back to C++:&lt;/span&gt;&lt;br /&gt;I know the STL containers are not the only way, but without them and use NS containers of Objective C just don't feel right! Basically, the NS containers is generic typeless "store-by-pointer" containers like those in Java - but without garbage collection. And you can't store regular C structure by value; and there is no auto boxing/unboxing so even if it is &lt;span style="font-style: italic;"&gt;int &lt;/span&gt;you have to pack it/cast it back manually with NSNumber. So I avoid using it and end up with stinky &lt;span style="font-style: italic;"&gt;malloc.&lt;br /&gt;&lt;/span&gt;And string operation using &lt;span style="font-style: italic;"&gt;NSMutableString &lt;/span&gt;is so painful. Even putting two strings together is a hard job. No simple "+" like Java; no container-like operations like &lt;span style="font-style: italic;"&gt;std::string&lt;/span&gt;. So I just use C string but that's no better...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-878270184220953036?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/878270184220953036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2009/10/matrix-phone-improved-been-objective-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/878270184220953036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/878270184220953036'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2009/10/matrix-phone-improved-been-objective-c.html' title='The Matrix Phone Improved - been Objective C, now go back to C++'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4702919445327211227.post-3904899943636764059</id><published>2009-10-15T04:59:00.000-07:00</published><updated>2010-03-17T06:38:27.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>The Matrix Phone demo, and technical thoughts</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HOCU8VVAwAQ/StcTzkyUluI/AAAAAAAAAAs/6noBUCUvI0g/s1600-h/Screen+shot+2009-10-15+at+11.18.27+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 260px;" src="http://4.bp.blogspot.com/_HOCU8VVAwAQ/StcTzkyUluI/AAAAAAAAAAs/6noBUCUvI0g/s400/Screen+shot+2009-10-15+at+11.18.27+PM.png" alt="" id="BLOGGER_PHOTO_ID_5392800855568455394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/StcTzLXMIhI/AAAAAAAAAAk/nRwpf0yDMG4/s1600-h/Screen+shot+2009-10-15+at+11.18.47+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 235px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/StcTzLXMIhI/AAAAAAAAAAk/nRwpf0yDMG4/s400/Screen+shot+2009-10-15+at+11.18.47+PM.png" alt="" id="BLOGGER_PHOTO_ID_5392800848743768594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_HOCU8VVAwAQ/StcTyupQszI/AAAAAAAAAAc/pPn6jVlAYyQ/s1600-h/Screen+shot+2009-10-15+at+11.18.06+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 242px;" src="http://4.bp.blogspot.com/_HOCU8VVAwAQ/StcTyupQszI/AAAAAAAAAAc/pPn6jVlAYyQ/s400/Screen+shot+2009-10-15+at+11.18.06+PM.png" alt="" id="BLOGGER_PHOTO_ID_5392800841034937138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_HOCU8VVAwAQ/StcTyKd5vVI/AAAAAAAAAAU/2z0c8t9B57I/s1600-h/Screen+shot+2009-10-15+at+11.17.55+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://3.bp.blogspot.com/_HOCU8VVAwAQ/StcTyKd5vVI/AAAAAAAAAAU/2z0c8t9B57I/s400/Screen+shot+2009-10-15+at+11.17.55+PM.png" alt="" id="BLOGGER_PHOTO_ID_5392800831323618642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_HOCU8VVAwAQ/StcTxsYiPnI/AAAAAAAAAAM/6QMYLJHHF_E/s1600-h/Screen+shot+2009-10-15+at+11.17.39+PM.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 223px;" src="http://2.bp.blogspot.com/_HOCU8VVAwAQ/StcTxsYiPnI/AAAAAAAAAAM/6QMYLJHHF_E/s400/Screen+shot+2009-10-15+at+11.17.39+PM.png" alt="" id="BLOGGER_PHOTO_ID_5392800823248043634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-f6fa32f53d62e284" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v17.nonxt2.googlevideo.com/videoplayback?id%3Df6fa32f53d62e284%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331293092%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D13ACD86FA107A57323612070AA4F1B792803C80E.53471E46C9275746974F2250417A13A94EBC3999%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Df6fa32f53d62e284%26offsetms%3D5000%26itag%3Dw160%26sigh%3DDMDpdBT8XjCB4vRHGuZfCPNUmGY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v17.nonxt2.googlevideo.com/videoplayback?id%3Df6fa32f53d62e284%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331293092%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D13ACD86FA107A57323612070AA4F1B792803C80E.53471E46C9275746974F2250417A13A94EBC3999%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Df6fa32f53d62e284%26offsetms%3D5000%26itag%3Dw160%26sigh%3DDMDpdBT8XjCB4vRHGuZfCPNUmGY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Matrix Phone &lt;/span&gt;is a simple application that simulates the digital rain effect seem in my favorite movie trilogy &lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;The Matrix&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The first demo version of &lt;span style="font-weight: bold;"&gt;The Matrix Phone &lt;/span&gt;is complete. Please check out the video attached (I hope this one has a higher resolution than YouTube!).&lt;br /&gt;&lt;br /&gt;I will submit this app to the App Store soon... Please wait patiently.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now... the technical discussion. (Ignore the following if you are not a true geek)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Matrix Phone&lt;/span&gt; supports only iPhone 3GS and third generation iPod Touch since it uses OpenGL 2.0, and OpenGL 2.0 is not backwards compatible. Since the resolution of the video is low, it is hard to see the glow and the interlaced scan line effect that intentionally simulates the old CRT (please see the screenshot); the effect is done through a pixel shader...  (maybe it is an over kill, maybe it can also be implemented using blending of the old-school Open GL 1)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4702919445327211227-3904899943636764059?l=warpdreams.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://warpdreams.blogspot.com/feeds/3904899943636764059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://warpdreams.blogspot.com/2009/10/matrix-phone-demo-and-technical.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/3904899943636764059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4702919445327211227/posts/default/3904899943636764059'/><link rel='alternate' type='text/html' href='http://warpdreams.blogspot.com/2009/10/matrix-phone-demo-and-technical.html' title='The Matrix Phone demo, and technical thoughts'/><author><name>Warp Dreams</name><uri>http://www.blogger.com/profile/13557899857397564492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_HOCU8VVAwAQ/StcTzkyUluI/AAAAAAAAAAs/6noBUCUvI0g/s72-c/Screen+shot+2009-10-15+at+11.18.27+PM.png' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
