<?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-2295098488449349581</id><updated>2011-11-17T18:56:18.942-08:00</updated><title type='text'>Liquid Rock Games Dev Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://liquidrockgames.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default?start-index=101&amp;max-results=100'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>142</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7751772046816026413</id><published>2010-12-17T09:34:00.000-08:00</published><updated>2010-12-17T09:38:33.455-08:00</updated><title type='text'>New LRG website update and blog</title><content type='html'>Hi guys,&lt;br /&gt;&lt;br /&gt;Just to update everyone that we've updated the new Liquid Rock Games website (&lt;a href="http://www.liquidrockgames.com"&gt;http://www.liquidrockgames.com&lt;/a&gt;) and moved our blog to Wordpress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7751772046816026413?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/12/new-lrg-website-update-and-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7751772046816026413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7751772046816026413'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/12/new-lrg-website-update-and-blog.html' title='New LRG website update and blog'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2579712534690249347</id><published>2010-12-13T20:33:00.001-08:00</published><updated>2010-12-13T23:53:00.801-08:00</updated><title type='text'>Word Zen Unlimited released!</title><content type='html'>We have just released Word Zen Unlimited for USD 2.99 !&lt;br /&gt;&lt;br /&gt;Features:&lt;br /&gt;* Advertisement free! No advertisement pop ups for Word Zen Unlimited.&lt;br /&gt;* Save and continue your game anytime you like and upload your high scores later.&lt;br /&gt;&lt;br /&gt;Purchase available here:&lt;br /&gt;&lt;a href="http://www.slideme.org/application/word-zen-unlimited"&gt;http://www.slideme.org/application/word-zen-unlimited&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2579712534690249347?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/12/word-zen-unlimited-released.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2579712534690249347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2579712534690249347'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/12/word-zen-unlimited-released.html' title='Word Zen Unlimited released!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-1048384276686628515</id><published>2010-12-02T08:27:00.001-08:00</published><updated>2010-12-02T08:27:56.864-08:00</updated><title type='text'>Word Zen ver 1.1 update</title><content type='html'>Hi guys,&lt;br /&gt;&lt;br /&gt;We have just updated Word Zen to version 1.1. &lt;br /&gt;&lt;br /&gt;Changes include:&lt;br /&gt;1. Fix bug on ad buttons not showing correctly.&lt;br /&gt;2. Apk install now installs to SD for froyo.&lt;br /&gt;3. Solved certain input not responding issues.&lt;br /&gt;4. Added return button to exit app in main menu.&lt;br /&gt;&lt;br /&gt;Download the updated version from the official Word Zen website: &lt;a href="http://wordzen.liquidrockgames.com/"&gt;http://wordzen.liquidrockgames.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-1048384276686628515?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/12/word-zen-ver-11-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1048384276686628515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1048384276686628515'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/12/word-zen-ver-11-update.html' title='Word Zen ver 1.1 update'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-1531708759410378809</id><published>2010-11-30T15:16:00.000-08:00</published><updated>2010-11-30T15:19:48.112-08:00</updated><title type='text'>Word Zen Gameplay Video</title><content type='html'>Check out the Word Zen gameplay in action :D&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/otlhLsAHMOU?fs=1&amp;amp;hl=en_US&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/otlhLsAHMOU?fs=1&amp;amp;hl=en_US&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&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/2295098488449349581-1531708759410378809?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/word-zen-gameplay-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1531708759410378809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1531708759410378809'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/word-zen-gameplay-video.html' title='Word Zen Gameplay Video'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7285060121364714767</id><published>2010-11-29T06:32:00.000-08:00</published><updated>2010-11-29T06:33:49.946-08:00</updated><title type='text'>Tips to increase score count in Word Zen</title><content type='html'>Some tips on how to rack up scores in Word Zen quickly:&lt;br /&gt;&lt;br /&gt;1. Make plural words.&lt;br /&gt;2. Destroy obstacle tiles whenever possible by making them fall 2 tiles as they produce the most points.&lt;br /&gt;3. Use shuffle often !&lt;br /&gt;4. If you're stuck in the bonus round, click on the Pass button to skip to the next puzzle fast !&lt;br /&gt;5. Know your 2 letter words such as: AD, AH, AR, AW, BI, ED, EF, EH, EL, EM, EN, ER, ES, EX, FA, HA, HM, HO, LA to name a few.&lt;br /&gt;6. Know your 3 letter words such as: GEE, WEE, TEE.&lt;br /&gt;7. Common word endings to include are: -ING, -ED, -ER, -IER, -IEST, and -IES.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.liquidrockgames.com/forums/viewtopic.php?f=13&amp;t=87&amp;sid=d6682ca701ba07b79a0956673a63f7af"&gt;Visit the official forum for more tip updates!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7285060121364714767?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/tips-to-increase-score-count-in-word.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7285060121364714767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7285060121364714767'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/tips-to-increase-score-count-in-word.html' title='Tips to increase score count in Word Zen'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-563015484014079745</id><published>2010-11-27T20:21:00.000-08:00</published><updated>2010-11-27T20:23:43.715-08:00</updated><title type='text'>Alternative download links for Word Zen.</title><content type='html'>Besides the official Android marketplace, Word Zen is also listed and available for download from these following sites:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.appbrain.com/app/word-zen/com.liquidrockgames.wordzen"&gt;http://www.appbrain.com/app/word-zen/com.liquidrockgames.wordzen &lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="https://www.slideme.org/application/word-zen"&gt;https://www.slideme.org/application/word-zen &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://android.handster.com/word_zen.html"&gt;http://android.handster.com/word_zen.html &lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://andappstore.com/AndroidApplications/apps/Word_Zen"&gt;http://andappstore.com/AndroidApplications/apps/Word_Zen &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-563015484014079745?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/alternative-download-links-for-word-zen.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/563015484014079745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/563015484014079745'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/alternative-download-links-for-word-zen.html' title='Alternative download links for Word Zen.'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5680939247144592851</id><published>2010-11-27T09:10:00.000-08:00</published><updated>2010-11-27T09:13:42.466-08:00</updated><title type='text'>Word Zen Reaches 1000 downloads in 24 hours!</title><content type='html'>Thanks guys for the support ! For those who has not tried out Word Zen yet, get it from the official website. :D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wordzen.liquidrockgames.com/"&gt;http://wordzen.liquidrockgames.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5680939247144592851?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/word-zen-reaches-1000-downloads-in-24.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5680939247144592851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5680939247144592851'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/word-zen-reaches-1000-downloads-in-24.html' title='Word Zen Reaches 1000 downloads in 24 hours!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7130191062619012220</id><published>2010-11-26T01:10:00.000-08:00</published><updated>2010-11-26T01:14:10.027-08:00</updated><title type='text'>Word Zen - Android Word Puzzle Game</title><content type='html'>Hurray its finally finished! Liquid Rock Games is proud to present Word Zen for Android phones and tablets. :D&lt;br /&gt;&lt;br /&gt;Official Word Zen website: &lt;a href="http://wordzen.liquidrockgames.com/"&gt;http://wordzen.liquidrockgames.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;About Word Zen&lt;/span&gt;&lt;br /&gt;Word Zen is a simple yet addictive word puzzle game from Liquid Rock Games with a relaxing zen-like theme which will appeal to players looking to test their word vocabulary.&lt;br /&gt;&lt;br /&gt;With thousands of official crosswords words to form from, the possibilities are endless!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Features:&lt;/span&gt;&lt;br /&gt;* Swipe letter tiles in any direction to form new words!&lt;br /&gt;* Over 100,000 words to solve as seen in official crossword games!&lt;br /&gt;* Global leader boards for players to update their scores and to compete for world ranking.&lt;br /&gt;* Use special tiles to your advantage and form new strategies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Screenshots:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img220.imageshack.us/img220/3702/screenshots0275pct.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 360px; height: 641px;" src="http://img220.imageshack.us/img220/3702/screenshots0275pct.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img44.imageshack.us/img44/749/screenshots0175pct.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 360px; height: 641px;" src="http://img44.imageshack.us/img44/749/screenshots0175pct.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7130191062619012220?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/word-zen-android-word-puzzle-game.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7130191062619012220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7130191062619012220'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/11/word-zen-android-word-puzzle-game.html' title='Word Zen - Android Word Puzzle Game'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4893475695010370487</id><published>2010-10-27T00:58:00.001-07:00</published><updated>2010-10-27T01:13:59.995-07:00</updated><title type='text'>Physics Data Format Reconstruction</title><content type='html'>Over the past week I've been doing a major surgery on the core Solid State Engine to restructure our physics data format especially on the batching front. Due to the requirement of invisible physics meshes for certain simulations in Aftershock, I had to fix this long overdue feature. Previously, batched meshes from our editor are forced to be static physics meshes thus allowing us to do precise world collision. However, there are times when we don't require such precision or when we want an invisible wall to keep things within a boundary.&lt;br /&gt;&lt;br /&gt;Being so, I've redesigned the internal batching architecture to take into consideration of invisible physics meshes. To improve efficiency, I made a new file format to define physics meshes which can both be exported from Blender3D or from our world editor.&lt;br /&gt;&lt;br /&gt;After all said and done, a major surgery can be quite an issue. Unexpected bugs started to emerge all over the place. I've probably fixed about 20+ of them already. There's still some more to go at the moment. At any rate, with this new change, our fellow artists will need to reexport their prefabs to the new format. Fortunately scene structure still remains the same. So it's not too big a deal. On the plus side, we get a much more well defined physics system and a more efficient file format. In the process, I've also removed the need of physics definition files for visible static meshes. This will cut down a massive load of unnecessary files which would lower our level file size! Yeay!&lt;br /&gt;&lt;br /&gt;Ok. Back to debugging and get this work ASAP. Major surgery sucks. *_*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4893475695010370487?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/10/physics-data-format-reconstruction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4893475695010370487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4893475695010370487'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/10/physics-data-format-reconstruction.html' title='Physics Data Format Reconstruction'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3944901647460772901</id><published>2010-10-14T12:04:00.000-07:00</published><updated>2010-10-14T12:05:08.942-07:00</updated><title type='text'>Grapple With Animation Revision 2</title><content type='html'>Updated the grapple machine with 2 rotating rings.&lt;br /&gt;&lt;br /&gt;&lt;object width="600" height="300"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zGQbNq4p_zE?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/zGQbNq4p_zE?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="300"&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/2295098488449349581-3944901647460772901?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/10/grapple-with-animation-revision-2.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3944901647460772901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3944901647460772901'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/10/grapple-with-animation-revision-2.html' title='Grapple With Animation Revision 2'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-708562696803216138</id><published>2010-10-07T10:14:00.001-07:00</published><updated>2010-10-07T17:33:01.065-07:00</updated><title type='text'>Disruptor Weapon FX test</title><content type='html'>Very early weapons FX test for the disruptor weapon.&lt;br /&gt;&lt;br /&gt;&lt;object width="600" height="300"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-QLrujS93Us?fs=1&amp;amp;hl=en_US&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-QLrujS93Us?fs=1&amp;amp;hl=en_US&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="300"&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/2295098488449349581-708562696803216138?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/10/disruptor-weapon-fx-test.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/708562696803216138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/708562696803216138'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/10/disruptor-weapon-fx-test.html' title='Disruptor Weapon FX test'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7682715123722117895</id><published>2010-09-25T03:52:00.000-07:00</published><updated>2010-09-25T06:59:34.774-07:00</updated><title type='text'>Effects System</title><content type='html'>Wow, this blog post is long overdue. The past few months had been a rather busy month for me. I had to juggle between a few projects which saw work on aftershock slowed down to a crawl.&lt;br /&gt;&lt;br /&gt;However, I'm now back to speed. :-D&lt;br /&gt;&lt;br /&gt;So today I'm going to talk about our effects system. The effects system has been in my head for a long time. I had been doing lots of thinking through making sure that my idea was sane and useful. I'm rather proud to say that the effects system is very well capable of complex effects that combines lighting, particles, ribbon trails and even animations.&lt;br /&gt;&lt;br /&gt;The idea was not a revolutionary one though. What I came up with was a node graph system to define a behavior of a given effect. Imagine blender's material node system but instead of applying on materials, we apply on entities. If you're quick to notice, this idea is pretty much a high level primitive scripting system. Only that instead of using scripting, we build nodes. One could also think of it as shader nodes for effects.&lt;br /&gt;&lt;br /&gt;However, to keep things simple, I omitted conditional nodes and forced all value type to be float. Hence we only have float, float2, float3 and float4 value type.&lt;br /&gt;&lt;br /&gt;Bellow is an example of how a flickering light effect can be described with the node system:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img22.imageshack.us/img22/5808/lightflickereffectexamp.png" /&gt;&lt;br /&gt;Figure 1 - Flicker Light Effect Example&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;To aid the ease of node building, I've also made the node system do auto conversion between the defined types. This mainly means single float can be easily converted automatically to multi float type. Any other combination is not possible as that would be ambiguous as shown bellow:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img842.imageshack.us/img842/254/nodevalueautoconvertion.png" /&gt;&lt;br /&gt;Figure 2 - Value Type Auto Conversion&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Adding on top of that, I've allowed nodes to support multiple slot mode. This is similar to the method overloading of C/C++. The only difference is that the number of input/output slot must retain the same. Only the value type can be different. With this, depending on how the node graph is linked, my node compiler will use the best fit mode for any node processing.&lt;br /&gt;&lt;br /&gt;Bellow is an example of how it would work given a mock up node graph scenario:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img841.imageshack.us/img841/6687/nodemultislotmodeexampl.png" /&gt;&lt;br /&gt;Figure 3 - Multi Slot Mode Use Case Example&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;So why do we need this? This is very useful for primitive operations for example Addition, Subtraction and Multiplication nodes which requires different input and output value types for all possible combination.&lt;br /&gt;&lt;br /&gt;Once the effect node graph is defined, we can simply bind them to entities that demands the given effect. :-) Obviously the whole implementation and design is much more complex compared to this. However I felt the node graph idea to be most interesting to report about. Imagine the possibilities of extending this into animation systems which interestingly is very similar to the animation blend tree idea.&lt;br /&gt;&lt;br /&gt;Oh yeah, one nice effect of the node system is that when designed carefully, we can reuse the compiled node graph on all instance of the same effect in the scene. Also, if written properly, this is actually much more optimal compared to using a scripting engine which I personally feel should be left to handle less CPU intensive logic like game rules.&lt;br /&gt;&lt;br /&gt;There, I hope this is long enough to justify for my lack of blog post. I will put up some programmer art effects video &lt;span style="font-style:italic;"&gt;if possible&lt;/span&gt; when I get the effects system running and tested. As of now, I already have the node graph system and entity binding in place. However, I've yet to deal with all the possible node types I planned to add to allow complex effects. Still, having the base system means we're pretty close to a complete effects system already. So stay tuned. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7682715123722117895?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/09/effects-system.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7682715123722117895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7682715123722117895'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/09/effects-system.html' title='Effects System'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4974508281174241730</id><published>2010-09-23T02:06:00.000-07:00</published><updated>2010-09-23T16:32:51.325-07:00</updated><title type='text'>2nd Craft Update</title><content type='html'>Finally another update after a long holiday and some projects and it's back to Aftershock :D&lt;br /&gt;&lt;br /&gt;Shown here is an in game shot of the 2nd craft in progress.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img201.imageshack.us/img201/9369/craft21.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 420px; height: 251px;" src="http://img295.imageshack.us/img295/5545/craft21thumb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img69.imageshack.us/img69/8134/craft22.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 420px; height: 251px;" src="http://img375.imageshack.us/img375/6319/craft22thumb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img3.imageshack.us/img3/5244/craft23.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 420px; height: 251px;" src="http://img42.imageshack.us/img42/7430/craft23thumb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img714.imageshack.us/img714/7483/craft24.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 420px; height: 251px;" src="http://img685.imageshack.us/img685/719/craft24thumb.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4974508281174241730?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/09/2nd-craft-update.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4974508281174241730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4974508281174241730'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/09/2nd-craft-update.html' title='2nd Craft Update'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8561652636827923889</id><published>2010-08-17T09:50:00.000-07:00</published><updated>2010-08-17T09:51:23.794-07:00</updated><title type='text'>another project completed...</title><content type='html'>Phew...sigh of relief upon completion of another project for a client. :D Time for some rejuve and then its back to Aftershock ! &gt;:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8561652636827923889?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/08/another-project-completed.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8561652636827923889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8561652636827923889'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/08/another-project-completed.html' title='another project completed...'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3841715942751156611</id><published>2010-06-27T11:18:00.000-07:00</published><updated>2010-06-27T11:20:07.481-07:00</updated><title type='text'>Updated powerup</title><content type='html'>Decided to go for simpler icon looks for the powerups which players can pick up along the tracks as the older powerups were harder to identify from afar.&lt;br /&gt;&lt;br /&gt;Here's a sample rocket pack powerup.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img84.imageshack.us/img84/4430/rocketh.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 300px;" src="http://img84.imageshack.us/img84/4430/rocketh.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3841715942751156611?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/updated-powerup.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3841715942751156611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3841715942751156611'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/updated-powerup.html' title='Updated powerup'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7096033868549086388</id><published>2010-06-22T14:09:00.000-07:00</published><updated>2010-06-22T14:11:04.649-07:00</updated><title type='text'>Outdoor Test Scene Vid</title><content type='html'>&lt;span&gt;Small real time outdoor test scene to test paging geometry as  well as our new water shader materials. Several future wish list  improvements include more material blending for terrain surfaces.  Further stress tests and optimizations for dense foliage systems needed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ikpL1qO2bfY&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ikpL1qO2bfY&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&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/2295098488449349581-7096033868549086388?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/outdoor-test-scene-vid.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7096033868549086388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7096033868549086388'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/outdoor-test-scene-vid.html' title='Outdoor Test Scene Vid'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8044963170900610835</id><published>2010-06-12T19:37:00.000-07:00</published><updated>2010-06-12T19:49:02.944-07:00</updated><title type='text'>SSAO update</title><content type='html'>More screenshots on our SSAO implementation. This time with all textures+lighting+post processing on.&lt;br /&gt;&lt;br /&gt;Image01 Before SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img808.imageshack.us/img808/788/image01before.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img808.imageshack.us/img808/788/image01before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image01 After SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img46.imageshack.us/img46/5041/image01after.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img46.imageshack.us/img46/5041/image01after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 02 Before SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img24.imageshack.us/img24/112/image02before.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img24.imageshack.us/img24/112/image02before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 02 After SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img580.imageshack.us/img580/9328/image02after.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img580.imageshack.us/img580/9328/image02after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 03 Before SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img41.imageshack.us/img41/2691/image03before.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img41.imageshack.us/img41/2691/image03before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 03 After SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img541.imageshack.us/img541/4047/image03after.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img541.imageshack.us/img541/4047/image03after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 04 Before SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img31.imageshack.us/img31/6691/image04before.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img31.imageshack.us/img31/6691/image04before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 04 After SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img31.imageshack.us/img31/4999/image04after.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img31.imageshack.us/img31/4999/image04after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 05 Before SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img63.imageshack.us/img63/6470/image05before.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img63.imageshack.us/img63/6470/image05before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 05 After SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img21.imageshack.us/img21/1859/image05after.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img21.imageshack.us/img21/1859/image05after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 06 Before SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img576.imageshack.us/img576/2152/image06before.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img576.imageshack.us/img576/2152/image06before.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image 06 After SSAO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img535.imageshack.us/img535/2844/image06after.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 150px;" src="http://img535.imageshack.us/img535/2844/image06after.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8044963170900610835?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/ssao-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8044963170900610835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8044963170900610835'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/ssao-update.html' title='SSAO update'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4246857405002369507</id><published>2010-06-11T12:03:00.000-07:00</published><updated>2010-06-11T12:05:41.459-07:00</updated><title type='text'>Mine Powerup Trap</title><content type='html'>Touch this powerup and several mines spawn on the track within the area.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img188.imageshack.us/img188/8241/minepowerup.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 230px;" src="http://img188.imageshack.us/img188/8241/minepowerup.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4246857405002369507?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/mine-powerup-trap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4246857405002369507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4246857405002369507'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/mine-powerup-trap.html' title='Mine Powerup Trap'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6535356846204289283</id><published>2010-06-10T22:58:00.000-07:00</published><updated>2010-06-10T23:00:35.224-07:00</updated><title type='text'>Missile pack powerup</title><content type='html'>Just completed this missile pack powerup to replenish those used missiles.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img3.imageshack.us/img3/7333/missilepack.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 230px;" src="http://img3.imageshack.us/img3/7333/missilepack.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6535356846204289283?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/missile-pack-powerup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6535356846204289283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6535356846204289283'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/missile-pack-powerup.html' title='Missile pack powerup'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4734301301709371149</id><published>2010-06-10T10:12:00.000-07:00</published><updated>2010-06-10T11:27:40.531-07:00</updated><title type='text'>Screen Space Ambient Occlusion !</title><content type='html'>Oooh yeah. Left-Hand just added in screen space ambient occlusion (SSAO) to our Solid State Engine. Now all added details such as normals really POP out ! &gt;:)&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image01: Without Screen Space Ambient Occlusion (BEFORE)&lt;/span&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img340.imageshack.us/img340/2078/withoutssao01.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img340.imageshack.us/img340/2078/withoutssao01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Image01: &lt;/span&gt;&lt;span&gt;With Screen Space Ambient Occlusion (AFTER)&lt;/span&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img638.imageshack.us/img638/3311/withssao01.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img638.imageshack.us/img638/3311/withssao01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image02: &lt;/span&gt;Without Screen Space Ambient Occlusion (BEFORE)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img155.imageshack.us/img155/6981/withoutssao02.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img155.imageshack.us/img155/6981/withoutssao02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image02: &lt;/span&gt;With Screen Space Ambient Occlusion (AFTER)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img231.imageshack.us/img231/7673/withssao02.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img231.imageshack.us/img231/7673/withssao02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image03: &lt;/span&gt;Without Screen Space Ambient Occlusion (BEFORE)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img707.imageshack.us/img707/9880/withoutssao03.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img707.imageshack.us/img707/9880/withoutssao03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image03: &lt;/span&gt;With Screen Space Ambient Occlusion (AFTER)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img21.imageshack.us/img21/4088/withssao03.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img21.imageshack.us/img21/4088/withssao03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image04: &lt;/span&gt;Without Screen Space Ambient Occlusion (BEFORE)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img535.imageshack.us/img535/5599/withoutssao04.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img535.imageshack.us/img535/5599/withoutssao04.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Image04: &lt;/span&gt;With Screen Space Ambient Occlusion (AFTER)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img535.imageshack.us/img535/4427/withssao04.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img535.imageshack.us/img535/4427/withssao04.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image05: Without Screen Space Ambient Occlusion (BEFORE)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img811.imageshack.us/img811/3894/withoutssao05.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img811.imageshack.us/img811/3894/withoutssao05.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Image05: With Screen Space Ambient Occlusion (AFTER)&lt;br /&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img28.imageshack.us/img28/1724/withssao05.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 250px;" src="http://img28.imageshack.us/img28/1724/withssao05.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4734301301709371149?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/screen-space-ambient-occlusion.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4734301301709371149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4734301301709371149'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/screen-space-ambient-occlusion.html' title='Screen Space Ambient Occlusion !'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2734858364997617906</id><published>2010-06-06T02:27:00.000-07:00</published><updated>2010-06-06T02:28:19.489-07:00</updated><title type='text'>Ammopack powerup FX test</title><content type='html'>Early stage ammopack powerup FX test.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M0U_hElLA8M&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/M0U_hElLA8M&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&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/2295098488449349581-2734858364997617906?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/ammopack-powerup-fx-test.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2734858364997617906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2734858364997617906'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/ammopack-powerup-fx-test.html' title='Ammopack powerup FX test'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4969982039048016576</id><published>2010-06-04T10:27:00.000-07:00</published><updated>2010-06-04T11:22:29.869-07:00</updated><title type='text'>Network frenzy</title><content type='html'>Just a day before I tried back network play of aftershock and to my dismay the jittering issue came back. I thought I had nailed it but apparently I did not. So I delved more into the design of my code and did tons of debugging again. After a few test cases, I finally found out the issue. It was two fold.&lt;br /&gt;&lt;br /&gt;Firstly, there was an issue where my client side's simulation was shifting farther and farther away from the server's simulation due to time discrepancies between both systems. Secondly, my camera simulation code was not entirely in sync with the physics simulation code when applying frame smoothing.&lt;br /&gt;&lt;br /&gt;After some tinkering, I managed to fix both issue. For the first issue, I kept a 5 frame buffer of frame latency to get the average latency across snapshots. From there, I use it to cap the frame difference between the current physics frame and the given server physics frame.&lt;br /&gt;&lt;br /&gt;Now everything works like a charm and no more jittering from my test case. In fact it's so smooth compared to my last work that I'm mightily proud of it! :-) I do know that I'm not revealing much of how I did my network syncing here. I'm rather busy working on many things right now. But I promise I'll put up a post with some diagrams some time later to explain the approach I used. In short it's what Gaffer suggested for the server client approach though like I found out as I did this, it's not as simple as it sounds. There's slightly more to it than just sync and smooth.&lt;br /&gt;&lt;br /&gt;Aside from that, I wish that bullet provides a proper method for me to selectively simulate a group of rigid bodies. This would help a lot for the prediction simulation after snapping of server update state; we don't want to end up wrongly simulating non networked local rigid bodies or non important rigid bodies that are not part of the network update snapshot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4969982039048016576?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/network-frenzy.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4969982039048016576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4969982039048016576'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/network-frenzy.html' title='Network frenzy'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8989454384878181532</id><published>2010-06-02T21:10:00.000-07:00</published><updated>2010-06-02T21:17:18.636-07:00</updated><title type='text'>Solid State Engine logo</title><content type='html'>Decided to work on our new Solid State Engine logo which is responsible for all the visual goodness which is seen in Aftershock.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img69.imageshack.us/img69/5695/solidstateenginesplashs.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 500px; height: 260px;" src="http://img69.imageshack.us/img69/5695/solidstateenginesplashs.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The 2 gears in the center represent our engine's earlier loading screen :D created by Lih-Hern.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img16.imageshack.us/img16/2106/gearsm.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 300px; height: 200px;" src="http://img16.imageshack.us/img16/2106/gearsm.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8989454384878181532?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/solid-state-engine-logo.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8989454384878181532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8989454384878181532'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/solid-state-engine-logo.html' title='Solid State Engine logo'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8242398876835987341</id><published>2010-06-02T04:28:00.001-07:00</published><updated>2010-06-02T08:14:03.696-07:00</updated><title type='text'>More lighting fun !</title><content type='html'>I could not resist playing with our new semi-deferred renderer and decided to add play around with more real time lights in our editor &gt;:) Imagine it with lightning effects emitting from the device.....&lt;br /&gt;&lt;br /&gt;We'll be able to place in virtually unlimited lights real time for not only indoor scenes but also FX effects like fairy dusts...sci fi weapons blazing....the possibilities are just endless !&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img215.imageshack.us/img215/791/grapplelightingf.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 270px;" src="http://img215.imageshack.us/img215/791/grapplelightingf.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8242398876835987341?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/more-lighting-fun.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8242398876835987341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8242398876835987341'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/06/more-lighting-fun.html' title='More lighting fun !'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-697304177377529542</id><published>2010-05-17T20:52:00.000-07:00</published><updated>2010-05-17T20:59:45.833-07:00</updated><title type='text'>Mish mash of props for the industrial racing zone</title><content type='html'>Just thought I'd post some prop updates on the next track level which features an industrial powerplant-nuclear feel to it which will be rearranged later. Decided to go on smaller building blocks for the buildings as it'll allow me to scale the size of the level easily. The track is meant to be surrounded by industrial like complexes. So expect lotsa labyrinthine tube like old machinery for the level.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img6.imageshack.us/img6/9676/misc01a.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 250px;" src="http://img6.imageshack.us/img6/9676/misc01a.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img532.imageshack.us/img532/61/misc02.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 250px;" src="http://img532.imageshack.us/img532/61/misc02.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-697304177377529542?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/05/mish-mash-of-props-for-industrial.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/697304177377529542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/697304177377529542'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/05/mish-mash-of-props-for-industrial.html' title='Mish mash of props for the industrial racing zone'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2432064014209887407</id><published>2010-04-02T20:15:00.000-07:00</published><updated>2010-04-02T20:18:01.883-07:00</updated><title type='text'>Drain water test</title><content type='html'>Heres a sample drain water test for the industrial level theme. A lil difficult to view the refraction on the base adn reflection with this youtube vid but its there.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XisYsw8AKjw&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/XisYsw8AKjw&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&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/2295098488449349581-2432064014209887407?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/04/drain-water-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2432064014209887407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2432064014209887407'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/04/drain-water-test.html' title='Drain water test'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6411886692126049805</id><published>2010-03-20T07:49:00.000-07:00</published><updated>2010-03-20T08:32:46.001-07:00</updated><title type='text'>Deferred progress 6</title><content type='html'>As mentioned, previously, I pointed out two method to render volumetric lights. I have successfully implemented the first technique for both point and spot lights. Here's a screen shot of it in action(4 point lights &amp; 1 spot light):&lt;br /&gt;&lt;center&gt;&lt;a href="http://img502.imageshack.us/img502/6609/deferredvolumelights.jpg"&gt;&lt;img style="border:0;" src="http://img502.imageshack.us/img502/6609/deferredvolumelights.jpg" width="640" height="480"&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Notice the frame rate with my crappy hardware. This is with shadow, HDR and refraction on. Previously, when we were still using forward rendering, I get about the same FPS at ~40. This has proved my speculation was right that when all features are on, I will not see any significant frame rate changes. In fact, we gain the ability to do cheap lighting! The old renderer would have done a horrible job to produce the screen shot above. Hence, deferred lighting FTW! :)&lt;br /&gt;&lt;br /&gt;However, since the current method is rather brute force in that all lights will use stenciling technique, this means we might hit a limit quite quickly(probably around 30+ lights). To solve this issue, I have plans for light batching. The idea is to group lights that only encompass a small area in screen space. Then we use shader instancing to render the lights without the stencil pass. Obviously this will end up rendering some redundant portion of the screen. However, I do believe the optimization on less render state changes will offset this cost. As to what is the right screen ratio, I currently have no clue. I probably need to build a test level with tons of lights to figure out. :)&lt;br /&gt;&lt;br /&gt;As for the second technique I mentioned during the last post, I intend to use that for custom non convex light volumes. This method allows me to scrap the light group masking idea I had which not only complicates rendering, it also gives the level designers a lot of headache. The goal for this custom light volume is to allow level designers to define light volumes that will not leak into areas they do not want to due to no shadowing; for example spot light casting across adjacent room.&lt;br /&gt;&lt;br /&gt;So there, deferred lighting conversion, success! Woot! :-D I must say I have learned a lot over the course of attempting this rendering "upgrade". Now I finally understood the tricks of getting view space position from depth buffer. I was having some trouble especially on figuring how to generate proper far clip plane coordinates with a volume mesh on the screen. But thanks to nullsquared the genius, he solved it for me in a forum post I found. Still, let's not get into the details less I become too long winded; which I already am. :-P That's all for this post.&lt;br /&gt;&lt;br /&gt;Ciaoz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6411886692126049805?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-6.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6411886692126049805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6411886692126049805'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-6.html' title='Deferred progress 6'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5476959911248999487</id><published>2010-03-16T04:26:00.000-07:00</published><updated>2010-03-16T12:50:30.131-07:00</updated><title type='text'>Deferred progress 5</title><content type='html'>Local lights are the main factor that made deferred lighting so appealing. The fact that they are rendered in screen space allowed the process to be fillrate dependent instead of vertex bound; where in the forward renderer, for each light lit on a geometry, we have to send the whole geometry to the GPU for rendering.&lt;br /&gt;&lt;br /&gt;However, deferred lighting incurs fillrate issue that is typically encountered with particle effects. In the naive approach, one would render quads on the screen representing each light. This method though working well with small attenuating lights does not work well at all for lights that covers a huge volume of the screen space. Hence we would like to come up with a solution of optimal lighting where only affected pixels are rendered.&lt;br /&gt;&lt;br /&gt;The answer to that problem is light volume rendering. Instead of rendering quads on the screen, we render volume meshes that represent the lights; sphere for point and cone for spot. Being that they are real true mesh rendered in the scene, we could utilize the Z-Buffer depth test to cull areas that are occluded (Figure 1 - A). Unfortunately, this is not optimal most of the time. With only simple volume mesh rendering, surfaces that are not affected behind the volume mesh will get uselessly rendered as well. Another way about this is to render the backface of the volume with a "greater equal" depth test (Figure 1 - B). This method would cull off unnecessary surfaces that are behind the light volume. However, it does that at the cost of never culling for surface in front of the light volume. Hence such naive methods do not work well at all for what we are trying to solve.&lt;br /&gt;&lt;br /&gt;To illustrate, lets give a 2D visual of a given scenario:&lt;br /&gt;&lt;center&gt;&lt;img src="http://img251.imageshack.us/img251/6640/naivelightvolume.png" /&gt;&lt;br /&gt;Figure 1 - Naive light volume approaches&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Interestingly, there are a few methods to solve this and they all uses the stencil buffer. The idea in fact came from the good old stencil shadow volume rendering technique. There are many articles out there on this topic if anyone is interested. However, to summarize, these are the two more popular technique used: Depth fail hybrid and XOR stencil technique.&lt;br /&gt;&lt;br /&gt;Let's start with the first. To understand this technique, we need to first take note of one interesting fact. If you look closely at Figure 1, you would have realized that to get the desired result, we could combine the two naive approach with an AND logic operation!&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img179.imageshack.us/img179/9760/andlogicop.png" /&gt;&lt;br /&gt;Figure 2 - AND logic operation&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Now with that in mind, lets talk about how the depth fail hybrid technique works. The reason why I called it a hybrid technique was that instead of the full depth fail stencil volume technique which uses two stencil render passes, the technique applies the first depth fail stencil pass and then combine the second depth test pass with the lighting render while applying the generated stencil mask. Effectively this is equivalent to the AND logic operation but with better fillrate optimization due to using one stencil pass instead of two (I'm referring to stencil shadow).&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img651.imageshack.us/img651/5792/zdepthfailhybrid.png" /&gt;&lt;br /&gt;Figure 3 - Z-Depth fail hybrid&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Lets get on to the second technique. This is actually a less common technique due to it being more fillrate intensive compared to the previous technique. The concept of this technique is to flip the stencil value without triangle face culling. Hence, it pretty much mimics the XOR logic operation. Truth be told, this technique could be done in two ways; Depth Pass(Figure 4 - First row) or Depth Fail(Figure 4 - Second row).&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img135.imageshack.us/img135/9848/xorlogicop.png" /&gt;&lt;br /&gt;Figure 4 - XOR logic operation&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;From what I gather, the latter implementation seems to be the implementation of choice just as the Z-Depth fail technique. If I understood it correctly, it is due to typical scene structure where camera views are mostly looking at sparse areas instead of having plenty of near eye occlusions. Hence it will optimize off some fillrate in the stencil pass. Also, an interesting note is that doing a Z-Depth fail technique for this XOR method actually avoid the problems of when camera is within light volume.&lt;br /&gt;&lt;br /&gt;Having said that, the light volume stenciling technique obviously does not follow stencil shadow techniques. Due to this, the two mentioned technique actually assumes some limitations.&lt;br /&gt;&lt;br /&gt;For Z-Depth fail hybrid technique, the system assumes enclosed convex light volume. The usage is also not applicable when camera is inside the light volume (Frontface is behind camera resulting in no lighting).&lt;br /&gt;&lt;br /&gt;For the XOR Z-Depth fail technique, the system assumes enclosed light volume. However, due to it's nature of XOR operation, the light volume can be concave type as long as there are no intersection issues. This is an interesting behavior as it means we could have specially controlled light volumes that will not bleed into areas we do not want!(Think point and spot lights that has special light volume to avoid bleeding to adjacent rooms) Adding on to that, as mentioned before, this technique do not suffer from the camera in light volume glitch. Obviously there's always a catch when things look so good. The fact that we have to turn off backface culling during the stencil pass means that our stencil rendering is more expensive.&lt;br /&gt;&lt;br /&gt;Phewh~ this is a long topic and I'm still not done yet. To think most reference slides describing these methods I could find online discussed them in two slides. O_O Anyways, to conclude for this post, I've outlined two methods that I will integrate in our deferred lighting pipeline. My next blog post will talk about when I would use them. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5476959911248999487?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-5.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5476959911248999487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5476959911248999487'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-5.html' title='Deferred progress 5'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-1515225912375402613</id><published>2010-03-15T08:09:00.000-07:00</published><updated>2010-03-15T09:31:30.438-07:00</updated><title type='text'>Deferred progress 4</title><content type='html'>I have completed porting directional shadow casting and refraction to the new system. This means we now officially have all the original features running with a deferred lighting renderer. A test run with all features on (single shadowmap, HDR and Refraction) got me an average of 40fps at 1024x768. Overall, that's pretty much a 10fps dip from previous test. This is mostly due to the shadow casting cost which shows how expensive shadow rendering is. I'm a bit disappointed with this since it makes PSSM useless even on fast machines. I'm planning to have a way to allow artist to define non shadow casting batched entities in the editor to narrow down shadow casting to where it matters. Hopefully this will improve shadow casting performance.&lt;br /&gt;&lt;br /&gt;Aside from that, I've also changed the depth G-Buffer format into PF_FLOAT16_GR to add one more channel for material ID. I came to the conclusion of needing this due to the limitation of any deferred renderer which is having different materials with different lighting properties. The main reason I added this functionality so soon was that our tree leaves and grasses are using custom shading. This limits us from utilizing the deferred lighting system to lit them. It would be fine for the first level since there's only one light through the whole scene. However, we have plans for night scenes in the future which wouldn't work very well then. Hence with material ID introduced, the custom shading for leaf and grass is now done in the deferred stage. Obviously this potentially allow us to extend it even more into other types of materials like cloth.&lt;br /&gt;&lt;br /&gt;Unfortunately since we are trying to limit the G-Buffer's fatness, we're limited with the number of channels we have to store data. This means that any material type that requires extra info cannot be integrated. Unless we introduce 64bit buffers, this is not possible.&lt;br /&gt;&lt;br /&gt;At any rate, with this done, our artist can now happily do outdoor night scenes that has lights affecting grass and tree leaves. My next move is to get the major feature of deferred lighting in: spot and point lights. Since this blog post is already getting long, I'll leave my local lighting thoughts to my next post. So stay tuned. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-1515225912375402613?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1515225912375402613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1515225912375402613'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-4.html' title='Deferred progress 4'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3004542653612471302</id><published>2010-03-08T11:15:00.000-08:00</published><updated>2010-03-09T09:58:24.547-08:00</updated><title type='text'>Deferred progress 3</title><content type='html'>I finally got to the stage of being able to render our first level using the deferred lighting renderer. It is still not complete yet however. Only the default materials required for level01 has been updated. Also, due to this changes, refraction needs to be redone in a different approach.&lt;br /&gt;&lt;br /&gt;Along the way, I actually hit a few problems. First one was due to my mistake. When designing the G-Buffer, I assumed I will be able to construct the lighting pass with just the depth and normal. I was wrong. I needed the specular power value as well. Hence, I had to go back to the drawing board again and decided to go for the least accurate model of R8G8B8A8 where we store compacted view space normal map in the RGB channel and spec power in the Alpha channel. Interestingly, it turned out pretty good. So much for the "not accurate" crap mentioned in the CryEngine3 power point presentation slide. Personally, the inaccuracy is not really distinguishable. Besides, with proper good textures provided by artists, this small error isn't really a big deal; especially considering that we are not trying to achieve realism. What we want is beauty and style. :-)&lt;br /&gt;&lt;br /&gt;Another of my issue was the way Ogre did its rendering. For every render target, Ogre would do a scene traversal to find all visible renderables and render them. This I found unacceptable. Reason being that it means Ogre would traverse the scene at least twice; First being G-Buffer stage, second being the final compositing and forward rendering stage. This is a waste of cpu resources hence I ended up listening to the render queue event during the G-Buffer pass and keep my own copy of all queuing renderables. Then I manually inject the render queue during the final compositing stage with a custom subclassed SceneMgrQueuedRenderableVisitor that tries to refetch the right material technique base on the new material scheme.&lt;br /&gt;&lt;br /&gt;And the end result? I had our first level running at ~40-70fps with an average of 50fps at 1024x768. This is with HDR on but without Shadow. Not too bad for a crappy 8600GTS.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://img59.imageshack.us/img59/117/aftershocklevel01deferr.jpg"&gt;&lt;img style="border:0;" src="http://img59.imageshack.us/img59/117/aftershocklevel01deferr.jpg" width="640" height="480"&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Oh, one thing interesting to note is that since the G-Buffer stage does not require much texture sampling, it actually renders really fast. That being so, and because we keep the Z-Buffer intact throughout the whole process, we actually gain some performance during the final compositing pass due to early Z-out. So you loose some, you win some. :-P (In theory, if you do a pre Z-only pass before filling the G-Buffer, you might speed up more if your scene is complex. But it will also increase batch count. So I'm not too sure if it's worth while.)&lt;br /&gt;&lt;br /&gt;Unfortunately for us though was that because we did not planned to have deferred lighting from the start, we had to abide by some bad decisions done in the past. One notable issue was that our G-Buffer stage requires the diffuse, normal and spec map in the worst case scenario. This is because in the case of an alpha-rejection shaded material, we need to sample the alpha channel of diffuse for alpha-rejection, and specular power from the spec map. This means that we are sampling at least two textures for each material during the G-Buffer stage. This is not ideal as we should try to sample as little textures as possible in this pass.&lt;br /&gt;&lt;br /&gt;That said, if I could fix this, I would make specular power part of the normal map's alpha instead of in the spec map's alpha; making only one texture sampling needed typically in the G-Buffer stage. This would also leave an extra alpha for reflection factor in the spec map for envmap reflective materials; which would be a win win solution(less one reflection factor texture map). Sadly, we're already a long way in art asset creation. Changing this now would mean loads of work fixing the old textures and materials.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3004542653612471302?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-3.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3004542653612471302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3004542653612471302'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/03/deferred-progress-3.html' title='Deferred progress 3'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5674963447666109147</id><published>2010-02-25T06:51:00.000-08:00</published><updated>2010-02-26T02:10:12.218-08:00</updated><title type='text'>Deferred progress 2</title><content type='html'>I've begun working on light buffer generation. While tackling this, I realized my normal buffer generation isn't accurate. I'm using the view space normal compressed with only XY where Z is reconstructed. While using 16bit float keeps accuracy pretty well, we loose the Z's sign info and this does not bode well for us. The reason is that while for the most part Z is always positive facing, there is bound to be edge cases where it is not. Especially when we are using normal map to distort a surface's normal. So I begun a search to find if I could improve my normal buffer rendering. To my surprise, someone by the name of Aras did the &lt;a href="http://aras-p.info/texts/CompactNormalStorage.html"&gt;homework&lt;/a&gt; for me. Thanks Aras! :)&lt;br /&gt;&lt;br /&gt;Just so you know, I'm not a math junkie. So deciphering what was done within that page took me quite a good while. That said, I decided to pick two method out of the selection to test out; Stereographic Projection and Cry Engine 3 method. From what I understood, Cry Engine 3's method sacrifices the X, Y's accuracy for a very good Z value. Comparatively, Stereographic Projection produces more even distortion. However, since we're using two channel 16bit float g-buffer format, both data loss is pretty insignificant. After some testing, I came to the conclusion that both method produce almost 100% similar lighting. The difference is unnoticeable to the naked eye. Hence, I decided to use the cheaper of the two, which happens to be Stereographic Projection.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img20.imageshack.us/img20/108/gnormfix.png"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;So.. Normal G-Buffer fixed!&lt;br /&gt;&lt;br /&gt;Now, as we know, shadow casting is a very expensive process. So for the most part, we would want to avoid shadow casting. However this leads to one problem; light leaking. Given a light in a room, if light is not applied with shadow casting, the light will leak through the wall into the adjacent room. This becomes an ugly behavior. So how does one fix this? When using forward rendering, we had the flexibility of doing selective light masking. This worked very well for the case mentioned, but how do we bring it to the deferred model? From what I see, my best bet is to use the stencil buffer. However, I'm not quite sure how cheap stencil buffers are. From what I read, clearing stencil buffer is expensive. Also, stencil depth is only 8bits for any modern cards (being that the other 24bits are for depth buffer). Also, for fillrate optimization, we would want to mask out the depth bound of lighting volume for each local light we render. Hence, that would take up 1 bit of the stencil buffer, leaving only 7 for light grouping.&lt;br /&gt;&lt;br /&gt;I am not familiar with stencil buffer and do not know exactly what kind of cost it would impose on rendering. But writing and switching stencil ref value during the G-Buffer rendering phase seems scary to me. I will have to keep setting the stencil ref value for each Renderable being rendered. From what I gather, the best way for me to implement this is to add a RenderObjectListener during the G-Buffer render state, then set the stencil ref value for each renderable in the callback. Then after G-Buffer mode is done, remove the listener. However, there is one issue with this. Since the callback is dealing with Renderable, I have no way to find out the light mask for that Renderable since the light mask is set in the MovableObject. As of now, I have no clue how to handle this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5674963447666109147?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/02/deferred-progress-2.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5674963447666109147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5674963447666109147'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/02/deferred-progress-2.html' title='Deferred progress 2'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8816864484847067164</id><published>2010-02-24T01:03:00.000-08:00</published><updated>2010-02-24T01:46:52.932-08:00</updated><title type='text'>Deferred progress 1</title><content type='html'>I started working on our deferred lighting / light pre-pass / semi deferred / or whatever you wanna call it renderer. Right now, all it does is just generate the appropriate G-Buffer.&lt;br /&gt;&lt;br /&gt;As simple as it looked, it wasn't so for me since our engine have pretty complex mix of custom materials. I had to restructure the way we sort our render queues to filter out unwanted meshes from the G-Buffer pass. One draw back of our current system was that our models consist of both shaded and unshaded materials; E.G. Buildings with holographic ads. The other was the AO boxing overlay that shares vertex buffer with the mesh that is being overlayed. So in the end, I had to hijack them away during the renderableQueued() callback stage. This method feels ugly though. Unfortunately, I can't think of any other way to solve this. Especially since the problem is mostly about filtering submeshes, so there's no way to use the visibility flag in Ogre.&lt;br /&gt;&lt;br /&gt;Nevertheless, it's done and I'm beginning to see how to build this renderer in the most optimum way possible(in Ogre). I must admit that the reason why I am working on this now is all thanks to the Ogre dudes. Without the recent added features, I probably wouldn't be working on this now. So lemme give my thanks to Noman and dark_sylinc for making this possible. :) Oh, I should also thank Google too since they technically funded Ogre's compositor improvement.&lt;br /&gt;&lt;br /&gt;As always, I like posting some graphics since I'm a graphics person. So, without further ado, here they are:&lt;br /&gt;G-Buffer normal:&lt;br /&gt;&lt;a href="http://img714.imageshack.us/img714/3376/aftershock0224201016493.jpg"&gt;&lt;img style="border:0;" src="http://img714.imageshack.us/img714/3376/aftershock0224201016493.jpg" width="640" height="480"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;G-Buffer depth:&lt;br /&gt;&lt;a href="http://img641.imageshack.us/img641/6123/aftershock0224201016431.png"&gt;&lt;img style="border:0;" src="http://img641.imageshack.us/img641/6123/aftershock0224201016431.png" width="640" height="480"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and since the depth buffer looked so strangely satisfying, here's two more just for kicks.&lt;br /&gt;&lt;a href="http://img525.imageshack.us/img525/9346/aftershock0224201016403.png"&gt;&lt;img style="border:0;" src="http://img525.imageshack.us/img525/9346/aftershock0224201016403.png" width="640" height="480"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://img246.imageshack.us/img246/589/aftershock0224201016345.png"&gt;&lt;img style="border:0;" src="http://img246.imageshack.us/img246/589/aftershock0224201016345.png" width="640" height="480"&gt;&lt;/a&gt;&lt;br /&gt;Don't you think they set the post-apocalyptic mood? :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8816864484847067164?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/02/deferred-progress-1.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8816864484847067164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8816864484847067164'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/02/deferred-progress-1.html' title='Deferred progress 1'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3748927419031258085</id><published>2010-02-19T03:21:00.000-08:00</published><updated>2010-02-19T09:52:24.010-08:00</updated><title type='text'>A light deferred approach</title><content type='html'>As we progressed with the building of our second level, we hit one major issue with our rendering solution; lights. Since level 2 is an underwater level, it requires tons of lights to set the mood. Our current rendering method is a forward rendering system. This means for each mesh lit by a light, an additional pass is needed to draw the affected mesh. This becomes a problem as the GPU will be re-rendering meshes for each light.&lt;br /&gt;&lt;br /&gt;To solve this problem, most games uses pre-baked light map for this case. However, we opted not to rely on this method as our tool chain is designed for more dynamically build levels (Levels build with prefabs put together). Also, we prefer to have a dynamically lit scene where we can freely move lights around. We believe it actually would save us more time compared to baking lighting which will only slow down the level building.&lt;br /&gt;&lt;br /&gt;Having said that, I've decided to tackle this problem the deferred way. However as we know, full deferred renderer has many caveats. They're problematic with different materials and expensive due to sampling of 4 render targets per light. Thankfully, there appears to be a simpler method known as the light pre-pass rendering method, introduced by &lt;a href="http://diaryofagraphicsprogrammer.blogspot.com/2008/03/light-pre-pass-renderer.html"&gt;Wolfgang Engel&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The light pre-pass renderer basically does a lighting pass that accumulate all lighting to a light buffer without the diffuse/albedo part of the scene. The idea is to use less render textures (RT) hence less texture sampling during the lighting stage.&lt;br /&gt;&lt;br /&gt;So I began to draft out how I would build my G-Buffer and handle the rendering pipeline.&lt;br /&gt;&lt;br /&gt;Bellow is how I plan to layout my G-Buffer:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img718.imageshack.us/img718/664/gbuffer.png"&gt;&lt;br /&gt;&lt;small&gt;Note that RT2 is optional and only generated when we want to have full scene motion blur.&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Then, to implement the light pre-pass rendering pipeline into our existing shading pipeline, this is what I'm planning to do:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img205.imageshack.us/img205/4811/renderpipeline.png"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;An interesting thing to note is that this method does not incur much extra memory compared to the deferred approach. In fact, the additional memory required for G-Buffer is pretty much already a required memory size when enabling refraction in our current pipeline. Hence, refraction effect pretty much becomes almost free in terms of memory needs.&lt;br /&gt;&lt;br /&gt;Obviously this is only just one side of it. On the other side of things, we actually need a light buffer and this is where things start to cost more. For the sake of HDR, we would need to use PF_FLOAT16_RGB or PF_FLOAT16_RGBA. Both format here is actually a 64bbps format which means double the cost of the normal render buffer. For an accurate lighting model, we would need two render target. One for N.L phong lighting, the other for N.H specular lighting. So we would impose extra memory requirement to build a perfect specular lighting model. Annoying. Hence, I'm planning to have an approximate specular mode where we only keep specularity as a luminance value. This way, we only use one light buffer and we leave the specular colour lit base on diffuse light and the material. It shouldn't look too bad I hope.&lt;br /&gt;&lt;br /&gt;Aside from that, this new method does introduce a problem. The opaque part of the scene has to be rendered twice. Once for filling the G-Buffer, and second time for the actual material and light composition. This basically means that the initial rendering would not be faster compared to our forward rendering approach. However, it will impose very low cost to having additional dynamic lighting. Personally, I hope this is a correct direction to head for. I do know cards in the range of 8800GTS (which is medium range by now) can handle this no problem. However, lower end cards would suffer, E.G. 9600GTS - which is what I am using for testing. It's already trudging along with all features on at 1024x768 doing 30fps or less which is bad for a racing game.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3748927419031258085?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/02/light-deferred-approach.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3748927419031258085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3748927419031258085'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/02/light-deferred-approach.html' title='A light deferred approach'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5731740226484219541</id><published>2010-01-26T18:15:00.000-08:00</published><updated>2010-01-26T18:17:01.090-08:00</updated><title type='text'>The Gamer's Hub Developer Interview</title><content type='html'>Hi guys, heres an interview on Liquid Rock Games by Anthony of The Gamer's Hub.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://thegamershub.co.uk/2010/01/developer-interview-liquid-rock-games/"&gt;http://thegamershub.co.uk/2010/01/developer-interview-liquid-rock-games/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks a mil Anthony ! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5731740226484219541?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/gamers-hub-developer-interview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5731740226484219541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5731740226484219541'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/gamers-hub-developer-interview.html' title='The Gamer&apos;s Hub Developer Interview'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2606648520561673823</id><published>2010-01-26T09:59:00.000-08:00</published><updated>2010-01-26T10:03:44.079-08:00</updated><title type='text'>Forcefield with refraction test update 2</title><content type='html'>An update to the underwater track forcefield with refraction.   &lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/C_4QRK1Z1wM&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/C_4QRK1Z1wM&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&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/2295098488449349581-2606648520561673823?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/forcefield-with-refraction-test-update.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2606648520561673823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2606648520561673823'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/forcefield-with-refraction-test-update.html' title='Forcefield with refraction test update 2'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5842398734514095718</id><published>2010-01-20T04:20:00.000-08:00</published><updated>2010-01-20T04:22:28.062-08:00</updated><title type='text'>300k hits to LRG website!</title><content type='html'>Looking back since the first Liquid Rock Games website was first created. We have had over 300k views to our website. Thanks a mil guys for checking out our site. Lets push for 1 million views with Aftershock's release!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5842398734514095718?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/300k-hits-to-lrg-website.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5842398734514095718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5842398734514095718'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/300k-hits-to-lrg-website.html' title='300k hits to LRG website!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8871482336120933697</id><published>2010-01-19T09:09:00.001-08:00</published><updated>2010-01-19T09:11:45.439-08:00</updated><title type='text'>New members to LRG !!</title><content type='html'>We would like to welcome our latest addition to the team. MD as our game artist and Pang Lih Wuei for additional game programming for Aftershock ! Welcome aboard guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8871482336120933697?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/new-members-to-lrg.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8871482336120933697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8871482336120933697'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/new-members-to-lrg.html' title='New members to LRG !!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3932139441125793638</id><published>2010-01-15T08:23:00.001-08:00</published><updated>2010-01-15T08:23:38.056-08:00</updated><title type='text'>Underwater Track Forcefield test</title><content type='html'>Heres a forcefield test for the undersea track to keep the seawater out from flooding the tracks.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aJsVyIIH8D0&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aJsVyIIH8D0&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&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/2295098488449349581-3932139441125793638?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/underwater-track-forcefield-test.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3932139441125793638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3932139441125793638'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/underwater-track-forcefield-test.html' title='Underwater Track Forcefield test'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3910391615491982923</id><published>2010-01-15T00:36:00.000-08:00</published><updated>2010-01-15T01:11:39.532-08:00</updated><title type='text'>Event Scripting and computer troubles</title><content type='html'>I've got the basics of event trigger to script working. With this, we can now easily trigger AngelScript code from our C++ event delegate system transparently. However, due to the requirement of knowing about the existence of AngelScript component, C++ events would need to use a specially subclassed scriptable event object. But aside from that, triggering of events from C++ does not need to know about the script bound delegates. This is a big plus to our engine as it means we can fully utilize scripts for in game logic base on event triggers.&lt;br /&gt;&lt;br /&gt;Out side of the coding development, I had a bad situation yesterday. For some odd reason, my house's power went nuts leaving all the power points malfunctioning for a few hours. Oddly enough, after trying in vain to go out to look for help, I come back to find it working again. But two things went wrong after that. Firstly, my computer went bonkers with the display flickering and goes black every time I logged in. Secondly, the switch hub I'm using died.&lt;br /&gt;&lt;br /&gt;It took me the whole night trying to figure out what's wrong with my computer. Trying to find the culprit was a pain in the ass. Had to switch to safemode and normal mode alternately for a bazillion times. x_x Thankfully it wasn't any hardware issues. After downloading a new display driver, it got working again. Sheesh, talk about weirdness. But now I can't connect it to the internet since the switch died on me.&lt;br /&gt;&lt;br /&gt;Ah well, sigh... wasted a day's worth of work. I need to go get a new switch. Yet another unexpected cost of indie game development. !@$!@$!@#%!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3910391615491982923?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/event-scripting-and-computer-troubles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3910391615491982923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3910391615491982923'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2010/01/event-scripting-and-computer-troubles.html' title='Event Scripting and computer troubles'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7117213234005523155</id><published>2009-12-31T07:20:00.000-08:00</published><updated>2009-12-31T07:22:37.769-08:00</updated><title type='text'>Happy New Year !!!</title><content type='html'>LRG wishes everyone a very happy new year 2010 with more development goodness coming in the year ahead !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7117213234005523155?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/12/happy-new-year.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7117213234005523155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7117213234005523155'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/12/happy-new-year.html' title='Happy New Year !!!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8422787892351368399</id><published>2009-12-16T17:03:00.000-08:00</published><updated>2009-12-16T17:04:55.277-08:00</updated><title type='text'>Official Aftershock website</title><content type='html'>Just released Aftershock's own official page:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aftershock.liquidrockgames.com/"&gt;http://aftershock.liquidrockgames.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Will be updating it with more content to come in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8422787892351368399?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/12/official-aftershock-website.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8422787892351368399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8422787892351368399'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/12/official-aftershock-website.html' title='Official Aftershock website'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7906715894874217022</id><published>2009-12-09T08:02:00.000-08:00</published><updated>2009-12-09T08:07:12.118-08:00</updated><title type='text'>LRG wins Most Promising Start-up Games Studio</title><content type='html'>Just won the Most Promising Start-up Games Studio at MSC Malaysia Kre8tif! Digital Content Conference. A million thanks to the judges and the organizers for this award. We PROMISE to continue to innovate and continue push tech for our future games as much as possible.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img51.imageshack.us/img51/8199/mscaward.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://img51.imageshack.us/img51/8199/mscaward.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7906715894874217022?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/12/lrg-wins-most-promising-start-up-games.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7906715894874217022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7906715894874217022'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/12/lrg-wins-most-promising-start-up-games.html' title='LRG wins Most Promising Start-up Games Studio'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6278579755898082343</id><published>2009-11-26T18:39:00.001-08:00</published><updated>2009-11-26T18:40:27.138-08:00</updated><title type='text'>Holographic advertisement projector prop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img410.imageshack.us/img410/9595/holo01.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 300px;" src="http://img410.imageshack.us/img410/9595/holo01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6278579755898082343?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/11/holographic-advertisement-projector.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6278579755898082343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6278579755898082343'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/11/holographic-advertisement-projector.html' title='Holographic advertisement projector prop'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-338380992051454334</id><published>2009-11-18T07:39:00.001-08:00</published><updated>2009-11-18T08:21:06.532-08:00</updated><title type='text'>Lamp post prop</title><content type='html'>Broken lamp post prop. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img688.imageshack.us/img688/6368/lampposts.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://img688.imageshack.us/img688/6368/lampposts.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-338380992051454334?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/11/lamp-post-prop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/338380992051454334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/338380992051454334'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/11/lamp-post-prop.html' title='Lamp post prop'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7825466207561651480</id><published>2009-10-28T19:51:00.000-07:00</published><updated>2009-10-29T01:43:32.666-07:00</updated><title type='text'>Track node update</title><content type='html'>Track node editor has finally been completed with ability to define checkpoints for race route. I did a real world test with our first level and successfully defined the whole track without any issues. :D Yay! It's a bit cumbersome to use though since we don't have a proper UI. Our level editor as of now truly requires a pro. lol.&lt;br /&gt;&lt;br /&gt;Anyways, for some eye candy shot to please our fans, here it is :D&lt;br /&gt;&lt;a href="http://img442.imageshack.us/img442/9206/aftershocktrackandcheck.jpg"&gt;&lt;img src="http://img442.imageshack.us/img442/9206/aftershocktrackandcheck.jpg" width="640" height="480"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7825466207561651480?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/track-node-update.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7825466207561651480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7825466207561651480'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/track-node-update.html' title='Track node update'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3505380309097950179</id><published>2009-10-22T02:11:00.001-07:00</published><updated>2009-10-22T02:11:35.247-07:00</updated><title type='text'>Facebook URL</title><content type='html'>Just changed our direct facebook URL to: &lt;a href="http://www.facebook.com/LiquidRockGames"&gt;http://www.facebook.com/LiquidRockGames&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3505380309097950179?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/facebook-url.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3505380309097950179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3505380309097950179'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/facebook-url.html' title='Facebook URL'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-571372989351213783</id><published>2009-10-20T07:57:00.000-07:00</published><updated>2009-10-21T21:23:50.122-07:00</updated><title type='text'>Booster pads!</title><content type='html'>The name speaks for itself.&lt;br /&gt;&lt;br /&gt;includes: parallax mapping+animated glowy parts.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img27.imageshack.us/img27/9121/boosterpad2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 500px; height: 250px;" src="http://img27.imageshack.us/img27/9121/boosterpad2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-571372989351213783?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/booster-pads.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/571372989351213783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/571372989351213783'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/booster-pads.html' title='Booster pads!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2022803350497819128</id><published>2009-10-14T09:55:00.000-07:00</published><updated>2009-10-14T09:58:37.125-07:00</updated><title type='text'>More misc screenshots</title><content type='html'>of the ship interior this time with a work in progress racing track:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img377.imageshack.us/img377/5193/misc1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 115px;" src="http://img377.imageshack.us/img377/5193/misc1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img185.imageshack.us/img185/7563/misc2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 115px;" src="http://img185.imageshack.us/img185/7563/misc2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img382.imageshack.us/img382/4703/misc3.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 115px;" src="http://img382.imageshack.us/img382/4703/misc3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img49.imageshack.us/img49/9256/misc4e.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 115px;" src="http://img49.imageshack.us/img49/9256/misc4e.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img382.imageshack.us/img382/3203/misc5.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 115px;" src="http://img382.imageshack.us/img382/3203/misc5.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2022803350497819128?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/more-misc-screenshots.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2022803350497819128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2022803350497819128'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/more-misc-screenshots.html' title='More misc screenshots'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6172931325820707501</id><published>2009-10-13T07:57:00.000-07:00</published><updated>2009-10-13T11:27:55.131-07:00</updated><title type='text'>Teleport effect</title><content type='html'>While waiting for my code to compile, I started thinking how we want to do re-spawn effect. Blinking the player craft directly into the track is downright ugly. Hence, I thought having some teleporting effect would be cool.&lt;br /&gt;&lt;br /&gt;Here's what I got after a few minutes of hacking into our already crazily mega shader.&lt;br /&gt;&lt;a href="http://img261.imageshack.us/img261/7900/teleporttest.png"&gt;&lt;img src="http://img261.imageshack.us/img261/7900/teleporttest.png" width="600"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Imagine that + some particle effects. :D However, it'll still take a while before I actually get this into the game. I need to work on an effects system to easily apply custom effects to the scene.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6172931325820707501?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/teleport-effect.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6172931325820707501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6172931325820707501'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/teleport-effect.html' title='Teleport effect'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5656331387751240481</id><published>2009-10-12T15:30:00.001-07:00</published><updated>2009-10-12T15:53:16.059-07:00</updated><title type='text'>Track node editor</title><content type='html'>Over the week I've been working on a very important feature; Track system. The need for this system was due to requirements of a racing game. In a racing title, we need to know if our player craft is inside or outside of the track. We also need to know how to respawn back into the track. Last but not least, we need to have a way to know if a player has finished a lap.&lt;br /&gt;&lt;br /&gt;Thus the track system come into place. With a way to define tracks, all of these will be possible. What's even cooler is the ability to give a good estimate of how long a track level is. :)&lt;br /&gt;&lt;br /&gt;However, the problem lies in defining the track. Because it's impossible to do it outside by text file, we need an editor to lay our tracks. This turned out to be quite a pain in the ass to implement. In fact it's more complex than prefab placement since we need to link tracks together to form a track chain.&lt;br /&gt;&lt;br /&gt;Anyways, I've finally got a usable editor tool in our world editor.&lt;br /&gt;&lt;br /&gt;Here's a screen shot of this WIP track edit mode:&lt;br /&gt;&lt;a href="http://img94.imageshack.us/img94/9282/tracknodeeditor.png"&gt;&lt;img src="http://img94.imageshack.us/img94/9282/tracknodeeditor.png" width="640" height="480" /&gt;&lt;/a&gt;&lt;br /&gt;Ignore the lighting. The main point is the track. Obviously lighting is just default crap since I created a new level just to test this in a quick manner.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;P.S. For those who are wondering, I'm using cubic bezier curves for each path segment. Thanks to my bro, we've got quite an advanced bezier curve functions like getting arc length, finding closest point on path and splitting a set of points evenly along the path. Trust me it's no easy feat. Requires lots of integration maths and Newtonian Interpolation. That plus our rusty math, this took us almost two days to figure out. :P&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5656331387751240481?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/track-node-editor.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5656331387751240481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5656331387751240481'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/track-node-editor.html' title='Track node editor'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8897522273338068139</id><published>2009-10-10T23:57:00.000-07:00</published><updated>2009-10-11T00:00:08.889-07:00</updated><title type='text'>Twitters!!!</title><content type='html'>Catch us at our official Liquid Rock Games Twitter site! Live updates ! Rants and raves !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/LiquidRockGames"&gt;http://twitter.com/LiquidRockGames&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8897522273338068139?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/twitters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8897522273338068139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8897522273338068139'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/twitters.html' title='Twitters!!!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8498267870196456072</id><published>2009-10-10T04:03:00.001-07:00</published><updated>2009-10-10T07:08:25.694-07:00</updated><title type='text'>Digital Distribution Summit</title><content type='html'>Must watch for indies looking to go the digital distribution route.&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6877865&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6877865&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6877865"&gt;Digital Distribution Summit - Sandra Sdraulig Opening &amp;amp; David Edery Keynote&lt;/a&gt; from &lt;a href="http://vimeo.com/ddsummit"&gt;Digital Distribution Summit&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8498267870196456072?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/digital-distribution-summit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8498267870196456072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8498267870196456072'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/digital-distribution-summit.html' title='Digital Distribution Summit'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5296627545613103411</id><published>2009-10-09T19:59:00.001-07:00</published><updated>2009-10-10T03:48:12.751-07:00</updated><title type='text'>US court says software is owned, not licensed</title><content type='html'>Finally about time. Read the article &lt;b&gt;&lt;a href="http://liquidrockgames.xullum.net/forums/viewtopic.php?f=7&amp;amp;t=61"&gt;here&lt;/a&gt;.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5296627545613103411?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/us-court-says-software-is-owned-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5296627545613103411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5296627545613103411'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/us-court-says-software-is-owned-not.html' title='US court says software is owned, not licensed'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-1850510170845062613</id><published>2009-10-08T10:41:00.000-07:00</published><updated>2009-10-09T21:35:20.383-07:00</updated><title type='text'>Ship interior update 4</title><content type='html'>Here's an update on how the ship interior looks like within the level editor plus detail maps with some test lights. no ambient occlusion map yet though as the model is not fully completed yet. Lighting will be further tweaked when the entire track is set up and finalized.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;update: 10/10/09 Tweaked the lighting abit for more contrast in the scene to make the middle part of the track stand out more plus added colored specularity maps.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img40.imageshack.us/img40/4085/interior2n.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 325px;" src="http://img40.imageshack.us/img40/4085/interior2n.jpg" border="0" alt="" /&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/2295098488449349581-1850510170845062613?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/ship-interior-update-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1850510170845062613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1850510170845062613'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/ship-interior-update-4.html' title='Ship interior update 4'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8554854669850421786</id><published>2009-10-01T09:53:00.000-07:00</published><updated>2009-10-06T03:52:47.982-07:00</updated><title type='text'>Ship Interior update 3: Lighting tests</title><content type='html'>Here's a rough lighting idea for this part of the track to convey the feeling of a dark and dank environment. Image rendered in Blender3D. Will be destroying parts of the interior later on.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img62.imageshack.us/img62/2489/wiprender02.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 350px;" src="http://img62.imageshack.us/img62/2489/wiprender02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mini update (6/10/2009):&lt;br /&gt;&lt;br /&gt;Started destroying parts of the ship's interior. Will be working on the racing track soon.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img198.imageshack.us/img198/6879/destroyedr.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 350px;" src="http://img198.imageshack.us/img198/6879/destroyedr.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8554854669850421786?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/ship-interior-update-3-lighting-tests.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8554854669850421786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8554854669850421786'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/10/ship-interior-update-3-lighting-tests.html' title='Ship Interior update 3: Lighting tests'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8202702347841197758</id><published>2009-09-30T08:57:00.000-07:00</published><updated>2009-09-30T09:03:25.853-07:00</updated><title type='text'>Ship interior update 2</title><content type='html'>Here's a Blender3D render on a partially textured ship interior. Will be adding additional detail using detail maps once in game to enhance the details.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img185.imageshack.us/img185/315/wiprender01.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 400px;" src="http://img185.imageshack.us/img185/315/wiprender01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8202702347841197758?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/ship-interior-update-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8202702347841197758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8202702347841197758'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/ship-interior-update-2.html' title='Ship interior update 2'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-696528587812865039</id><published>2009-09-24T12:29:00.000-07:00</published><updated>2009-09-24T12:36:36.783-07:00</updated><title type='text'>error C1083 Not enough space! O_o</title><content type='html'>[begin rant]&lt;br /&gt;Man, this sucks. Just as I was getting into more fun, VC hits the brick with our core framework static lib hitting the roof for file size. It's now at 600++mb O_O. Really sad... I couldn't link the editor with it anymore.&lt;br /&gt;&lt;br /&gt;Guess I have to turn it into a standalone dll. Hope this will solve the issue. Woo hoo.. more dlls! Sheesh...&lt;br /&gt;[end rant]&lt;br /&gt;&lt;br /&gt;About what I'm working on, I'm building a track system to define what's an inside of a track and what's out. This system will be able to help detect when a craft falls out of the track and be re-spawned properly back in the track. It also will serve as checkpoint system. Two birds with one stone. v^_^v&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-696528587812865039?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/error-c1083-not-enough-space-oo.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/696528587812865039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/696528587812865039'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/error-c1083-not-enough-space-oo.html' title='error C1083 Not enough space! O_o'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3754081681895869042</id><published>2009-09-15T21:19:00.000-07:00</published><updated>2009-09-15T21:22:29.028-07:00</updated><title type='text'>Ship interior update</title><content type='html'>more shots of the low poly ship interior track before I start working on the high poly version.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img245.imageshack.us/img245/9684/boat03.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 400px;" src="http://img245.imageshack.us/img245/9684/boat03.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img21.imageshack.us/img21/3447/boat04.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 400px;" src="http://img21.imageshack.us/img21/3447/boat04.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img245.imageshack.us/img245/3141/boat01.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 400px;" src="http://img245.imageshack.us/img245/3141/boat01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img200.imageshack.us/img200/4112/boat05.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 400px;" src="http://img200.imageshack.us/img200/4112/boat05.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3754081681895869042?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/ship-interior-update.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3754081681895869042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3754081681895869042'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/ship-interior-update.html' title='Ship interior update'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4653385617035149129</id><published>2009-09-11T22:17:00.000-07:00</published><updated>2009-09-12T21:35:28.097-07:00</updated><title type='text'>Ship Interior Track WIP</title><content type='html'>Started modelling on a racing track through a massive sunken ship interior where players get to navigate through the ship's massive malfunctioned engines.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img32.imageshack.us/img32/2019/shipinterior.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 325px;" src="http://img32.imageshack.us/img32/2019/shipinterior.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4653385617035149129?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/ship-interior-track-wip.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4653385617035149129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4653385617035149129'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/ship-interior-track-wip.html' title='Ship Interior Track WIP'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8622418233872572270</id><published>2009-09-04T07:06:00.000-07:00</published><updated>2009-09-04T07:08:56.796-07:00</updated><title type='text'>Sunken Ship Update 3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img261.imageshack.us/img261/5034/sboat03.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 350px;" src="http://img261.imageshack.us/img261/5034/sboat03.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8622418233872572270?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/sunken-ship-update-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8622418233872572270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8622418233872572270'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/sunken-ship-update-3.html' title='Sunken Ship Update 3'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7144568926188938678</id><published>2009-09-02T23:21:00.000-07:00</published><updated>2009-09-02T23:35:49.918-07:00</updated><title type='text'>Lossy floating point compression</title><content type='html'>I've finally fixed the problem with my float compression. Just to note, the compression technique is following the IEEE standard somewhat. I forgot to deal with normalized values (-127 exponent) which made the compressor generate garbage.&lt;br /&gt;&lt;br /&gt;If anybody is interested on how I compress, just have a look at how halffloat(16bit float) is stored. I'm pretty much using similar technique. Basically discarding some precision on the fractions and shifting exponent bias for more floating point precision at smaller values. (Note that I'm making it very specialized for delta type compression; meaning the closer the value is to zero, the more precise, the bigger the value, less precise.)&lt;br /&gt;&lt;br /&gt;Aside from this, I found out that the compression worked really well even for important objects like player controlled entities and camera. Thanks to Glenn's article describing exponential smoothing, as long as I don't snap when compared values are very close, things worked very smoothly.&lt;br /&gt;&lt;br /&gt;I'm very happy with the result thus far :) Next up is actual multiplayer race! Woo hoo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7144568926188938678?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/lossy-floating-point-compression.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7144568926188938678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7144568926188938678'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/09/lossy-floating-point-compression.html' title='Lossy floating point compression'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6844113864023166454</id><published>2009-08-26T21:42:00.001-07:00</published><updated>2009-08-26T21:54:23.859-07:00</updated><title type='text'>Network syncing!</title><content type='html'>After countless hours of sleepless nights, I finally got it going! Smoothed network physics simulation will little noticeable jerks. Yay! However, this is only for the LAN. I'm not sure how it will fare with the internet where latency isn't our best friend.&lt;br /&gt;&lt;br /&gt;It took me a while to figure out that I had to synchronize the physics time frame and not the system time frame. Top that off with bad timing for the network syncing right after physics simulation was done, I was having a lot of headache beating around the bush for naught! Sheesh...&lt;br /&gt;&lt;br /&gt;Aside from this, I'm having issues with float compression. Somehow it's giving weird values that leaps all over. Probably something wrong with the way I compress and decompress. While on this, I wonder if I should have some way to mark significant objects for non compression mode? How does other games normally does it anyways? Do they like make important objects like controlling player to always sent in non compressed mode while other non controlling objects get compressed mode?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6844113864023166454?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/network-syncing.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6844113864023166454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6844113864023166454'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/network-syncing.html' title='Network syncing!'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3917383174364157425</id><published>2009-08-22T03:39:00.000-07:00</published><updated>2009-08-22T03:52:07.543-07:00</updated><title type='text'>A sunken LNG Carrier</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img29.imageshack.us/img29/8762/sboat02.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 350px;" src="http://img29.imageshack.us/img29/8762/sboat02.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img15.imageshack.us/img15/9302/sboat02a.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 350px;" src="http://img15.imageshack.us/img15/9302/sboat02a.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3917383174364157425?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/sunken-lng-carrier.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3917383174364157425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3917383174364157425'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/sunken-lng-carrier.html' title='A sunken LNG Carrier'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2644610832192208685</id><published>2009-08-14T09:12:00.000-07:00</published><updated>2009-08-14T09:23:50.195-07:00</updated><title type='text'>Sunken ship props</title><content type='html'>Started working on some sunken ships which players can view along the tracks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img148.imageshack.us/img148/8669/sunkenship.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 350px;" src="http://img148.imageshack.us/img148/8669/sunkenship.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img34.imageshack.us/img34/2230/shipclose.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 350px;" src="http://img34.imageshack.us/img34/2230/shipclose.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2644610832192208685?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/sunken-ship-props.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2644610832192208685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2644610832192208685'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/sunken-ship-props.html' title='Sunken ship props'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-107838341891807687</id><published>2009-08-12T17:59:00.000-07:00</published><updated>2009-08-12T18:07:31.970-07:00</updated><title type='text'>More network goodies! :)</title><content type='html'>Finally something worth blogging. I've got the game networking with input syncing working like a charm. Yahoo! Looks like my action system is doing a fine job. :)&lt;br /&gt;&lt;br /&gt;Right now I've all client players sit as observers on the server's craft. While the server is controlling, the clients get the input as well. However, since I've yet to do any entity syncing, the craft on the client screens start to steer off into parallel dimensions. lol.&lt;br /&gt;&lt;br /&gt;Either way, it's nice to see that my hard sweat Action system is working like a charm. Very excited now. :P Entity syncing here I come!&lt;br /&gt;&lt;br /&gt;P.S. Sorry, no pics for networking. I can't think of any creative way to represent them with pics anyways.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-107838341891807687?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/more-network-goodies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/107838341891807687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/107838341891807687'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/08/more-network-goodies.html' title='More network goodies! :)'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-638185554602379295</id><published>2009-07-31T03:47:00.001-07:00</published><updated>2009-07-31T04:18:09.163-07:00</updated><title type='text'>Ramen Shop Games &amp; Network update</title><content type='html'>I got this link from my sensei classifying our company business model as the Ramen Profitable. Rather funny name. So now we're noodle shop guys. lol&lt;br /&gt;&lt;a href="http://paulgraham.com/ramenprofitable.html"&gt;http://paulgraham.com/ramenprofitable.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the side note, I've just managed to get two PC linked together and entering the game. No game syncing yet. That's to be done after this. :)&lt;br /&gt;&lt;br /&gt;While getting this done, I implemented a system I called delayed sync messaging. This system basically utilizes the time sync method I mentioned &lt;a href="http://liquidrockgames.blogspot.com/2009/05/network-time-sync.html"&gt;here&lt;/a&gt;. The concept behind this system is so that one can accurately synchronize a particular event that needs accurate triggering. For example, the beginning of the race, count down should be as synchronized as possible so client don't get a laggy start.&lt;br /&gt;&lt;br /&gt;When dealing with this type of events, the only caveat is that the server side also have to synchronize with the client side. This means that the event has to be delayed as much as possible as such that all clients will get the request before it is triggered.&lt;br /&gt;&lt;br /&gt;In a LAN environment, this usually isn't much of a problem because the ping rate is rather high; less than 1ms to 10ms. However, in the Internet scale, latency can go as high as 500ms to 1500ms or more. In that situation, time syncing becomes a necessity to accurately identify the server time.&lt;br /&gt;&lt;br /&gt;I haven't really tested the time syncing algo I've implemented in the Internet environment yet. However, in theory, it shouldn't go wrong.. I hope... :-P&lt;br /&gt;&lt;br /&gt;Sneak Peak:&lt;br /&gt;&lt;img src="http://img194.imageshack.us/img194/9619/aftershocknetprototype.png"&gt;&lt;br /&gt;&lt;small&gt;Don't mind the UI. It's just programmer art to keep me going. ;-)&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-638185554602379295?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/07/ramen-shop-games-network-update.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/638185554602379295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/638185554602379295'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/07/ramen-shop-games-network-update.html' title='Ramen Shop Games &amp; Network update'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7439387649393461634</id><published>2009-07-18T00:03:00.000-07:00</published><updated>2009-07-18T00:16:52.179-07:00</updated><title type='text'>Scripting engine</title><content type='html'>Ah.. time sure flies. Just to update, I had been busy putting a working network prototype together.&lt;br /&gt;&lt;br /&gt;While doing so, I've also did some research on scripting to ease up game logic coding later. I was thinking of using V8 at the beginning. However after digging it through, I realised that it was designed to only run on a single thread (Google Chrome is designed as a multiprocess app instead of multithreaded app). So in the end, I'm back to square one of using Angel Script. It looked like it has evolved since my last use for it when I was still in my previous game company.&lt;br /&gt;&lt;br /&gt;P.S. I did look at spidermonkey too. But getting from their source tree is a little troublesome with my ever so crappy always disconnect ISP. So I dropped it. Mercurial really sucks without the auto resume feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7439387649393461634?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/07/scripting-engine.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7439387649393461634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7439387649393461634'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/07/scripting-engine.html' title='Scripting engine'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6411116920878844196</id><published>2009-06-19T01:26:00.000-07:00</published><updated>2009-06-20T06:40:37.280-07:00</updated><title type='text'>Multimaterial test</title><content type='html'>Here's a multi phong material test for a submerged building overrun with coral and other sea plant life.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img189.imageshack.us/img189/9677/building.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://img189.imageshack.us/img189/9677/building.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&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;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Close up on the building surface. Includes parallax and ambient occlusion map.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img200.imageshack.us/img200/3280/buildingclose.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://img200.imageshack.us/img200/3280/buildingclose.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&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;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More buildings...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img191.imageshack.us/img191/5384/4buildings.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://img191.imageshack.us/img191/5384/4buildings.jpg" border="0" alt="" /&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/2295098488449349581-6411116920878844196?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/multimaterial-test.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6411116920878844196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6411116920878844196'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/multimaterial-test.html' title='Multimaterial test'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2916885884609271140</id><published>2009-06-17T23:00:00.000-07:00</published><updated>2009-06-17T23:02:47.443-07:00</updated><title type='text'>Seabed props</title><content type='html'>Just completed some seabed props(dead coral collection) mainly to be used to add extra details to the seabed track. Also to be used as track obstacles.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img36.imageshack.us/img36/3844/coralprop.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 180px;" src="http://img36.imageshack.us/img36/3844/coralprop.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2916885884609271140?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/seabed-props.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2916885884609271140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2916885884609271140'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/seabed-props.html' title='Seabed props'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-9076347936186785248</id><published>2009-06-15T13:06:00.000-07:00</published><updated>2009-06-15T13:09:55.198-07:00</updated><title type='text'>More dead corals !!</title><content type='html'>Another test for corals+parallax+ambient occlusion mapping. Will be adding paging geo coral meshes for added details later.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img188.imageshack.us/img188/5883/detail3.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://img188.imageshack.us/img188/5883/detail3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-9076347936186785248?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/more-dead-corals.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/9076347936186785248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/9076347936186785248'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/more-dead-corals.html' title='More dead corals !!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4203524329285591178</id><published>2009-06-12T11:33:00.000-07:00</published><updated>2009-06-12T11:35:39.597-07:00</updated><title type='text'>Dead corals.......</title><content type='html'>Parallax mapping test on a sample dead coral mesh.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img401.imageshack.us/img401/8378/coral.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 175px;" src="http://img401.imageshack.us/img401/8378/coral.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4203524329285591178?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/dead-corals.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4203524329285591178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4203524329285591178'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/dead-corals.html' title='Dead corals.......'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8605084507170422666</id><published>2009-06-11T21:17:00.000-07:00</published><updated>2009-06-11T21:21:32.050-07:00</updated><title type='text'>Misc screenshots</title><content type='html'>Just thought I'd post some test screenies with a simple seabed mesh. Will be adding more details like rocks, debris to it later.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img15.imageshack.us/img15/116/71176322.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://img15.imageshack.us/img15/116/71176322.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img31.imageshack.us/img31/9503/80048270.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://img31.imageshack.us/img31/9503/80048270.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img199.imageshack.us/img199/6994/42736149.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://img199.imageshack.us/img199/6994/42736149.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img526.imageshack.us/img526/1821/41584547.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 250px;" src="http://img526.imageshack.us/img526/1821/41584547.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8605084507170422666?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/misc-screenshots.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8605084507170422666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8605084507170422666'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/misc-screenshots.html' title='Misc screenshots'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-411471430924861826</id><published>2009-06-10T10:15:00.000-07:00</published><updated>2009-06-10T10:24:18.607-07:00</updated><title type='text'>Track structure update</title><content type='html'>Heres an update on the completed low poly model with textures in the level editor.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img291.imageshack.us/img291/7039/structure01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 400px;" src="http://img291.imageshack.us/img291/7039/structure01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;closeup pic:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img31.imageshack.us/img31/3755/structure02.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 380px;" src="http://img31.imageshack.us/img31/3755/structure02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-411471430924861826?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/track-structure-update.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/411471430924861826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/411471430924861826'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/track-structure-update.html' title='Track structure update'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-1975180743632202098</id><published>2009-06-03T02:40:00.001-07:00</published><updated>2009-06-03T02:43:23.301-07:00</updated><title type='text'>Track structure</title><content type='html'>Just completed the hi poly version of this track structure which is basically a huge shield barrier which prevents sea water from flooding the tracks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img189.imageshack.us/img189/4325/rendero.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 450px; height: 250px;" src="http://img189.imageshack.us/img189/4325/rendero.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-1975180743632202098?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/track-structure.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1975180743632202098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1975180743632202098'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/06/track-structure.html' title='Track structure'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7730570973024271721</id><published>2009-05-31T21:05:00.000-07:00</published><updated>2009-05-31T21:07:57.924-07:00</updated><title type='text'>Bridge Support</title><content type='html'>Just completed some support structure for the track. Players would be able to race through them as they race on the seabed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img268.imageshack.us/img268/5359/bridgesupport.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 450px; height: 250px;" src="http://img268.imageshack.us/img268/5359/bridgesupport.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7730570973024271721?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/bridge-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7730570973024271721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7730570973024271721'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/bridge-support.html' title='Bridge Support'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5488604101618007510</id><published>2009-05-22T03:17:00.000-07:00</published><updated>2009-05-22T04:33:56.218-07:00</updated><title type='text'>3.. 2.. 1.. Action!</title><content type='html'>&lt;img style="float:left;" src="http://2.bp.blogspot.com/_Q9k4SCd6xWQ/ShaBhDxBTtI/AAAAAAAAABQ/f8dN1NomcAY/s320/slate_icon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5338596813240880850" /&gt;Interaction system. It's funny how the simplest and most important piece of a game engine could be so difficult to design. If there's no interaction, then there's no game at all. Hence, a game engine MUST have a unified way to deal with interaction.&lt;br /&gt;&lt;br /&gt;When talking about interaction, input controls come to mind. Keyboard, mouse, gamepad or even those driving force feed back steering wheels. These controls would be bound with the in game characters, crafts or even turrets.&lt;br /&gt;&lt;br /&gt;However, here lies the question. What about characters, crafts or turrets that are not controlled by the player? AI comes to mind. Better still, what about replays? Or how about in a multiplayer environment where certain crafts are controlled by some other players over the network?&lt;br /&gt;&lt;br /&gt;These scenarios shows one thing. A controller that controls any element in a game should be abstracted from the physical input devices. They should only care about what to simulate when a certain command is executed without needing to know who is executing it.&lt;br /&gt;&lt;br /&gt;Hence, I came up with what I call the Action System.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img200.imageshack.us/img200/8404/actionmanager.png" /&gt;&lt;/center&gt;As you can see, the core of an Action System lies in the ActionManager. It will manage a list of action controls. These action controls are basically action devices(in red) bound to a controller(green) through what is called an ActionMap(blue).&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img33.imageshack.us/img33/1849/actiondevice.png" /&gt;&lt;/center&gt;Action devices can be anything that handles action inputs. It can be a real input device(keyboard, mouse or gamepad), AI device, Replay device or a Proxy. A proxy device is simply a device that clones whatever the true controlling device's(Owning devices) state. The proxy device is meant for network use only.&lt;br /&gt;&lt;br /&gt;Bellow is a rough idea of how it would look like in a network environment with two clients connected to a server.&lt;br /&gt;&lt;center&gt;&lt;img src="http://img194.imageshack.us/img194/728/actionnetwork.png" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img196.imageshack.us/img196/9122/actionv.png" /&gt;&lt;/center&gt;Now, the underlying structure of an ActionMap holds the key to how one interacts with a controller. It holds a list of actions that defines what is a toggle button, what is an analog axis or even a world vector for FPS styled games.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://img30.imageshack.us/img30/8393/inputmap.png" /&gt;&lt;/center&gt;Having that, the next complicated one is the physical input. How does one bind a physical input to the ActionMap? Here's how I devised it to work. An action input device will hold a list of InputMaps. These InputMaps basically defines the bindings of the input to an action in the ActionMap. This design allows the designer to constraint what input type an action should use while allowing the players the freedom to define their own input within that constraint.&lt;br /&gt;&lt;br /&gt;To cap it up, bellow is how the InputMap and ActionMap interaction will look like for an FPS.&lt;br /&gt;&lt;center&gt;&lt;img src="http://img268.imageshack.us/img268/6208/actioninputtocontroller.png" /&gt;&lt;/center&gt;Note the vector action doesn't have a direct input from the InputMap. It instead receives it's input from the controller that calculates the look-at of a player through the mouse axis input.&lt;br /&gt;&lt;br /&gt;That's it. Next up I'll be talking about buffering the ActionMap for network prediction and Replay. Stay tuned. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5488604101618007510?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/3-2-1-action.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5488604101618007510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5488604101618007510'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/3-2-1-action.html' title='3.. 2.. 1.. Action!'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Q9k4SCd6xWQ/ShaBhDxBTtI/AAAAAAAAABQ/f8dN1NomcAY/s72-c/slate_icon.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6199797925751078240</id><published>2009-05-22T02:14:00.000-07:00</published><updated>2009-05-22T02:16:51.038-07:00</updated><title type='text'>Track variations</title><content type='html'>Just started working on different track variations. Heres a couple of destroyed track pieces.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img20.imageshack.us/img20/3079/destroyed02.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://img20.imageshack.us/img20/3079/destroyed02.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img268.imageshack.us/img268/6503/destroyed01.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://img268.imageshack.us/img268/6503/destroyed01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6199797925751078240?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/track-variations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6199797925751078240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6199797925751078240'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/track-variations.html' title='Track variations'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6756856103712606673</id><published>2009-05-19T02:39:00.000-07:00</published><updated>2009-05-19T05:45:04.920-07:00</updated><title type='text'>Completed holo barrier model</title><content type='html'>Heres the completed holographic road barrier.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img217.imageshack.us/img217/7978/hbarrier.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://img217.imageshack.us/img217/7978/hbarrier.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6756856103712606673?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/completed-holo-barrier-model.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6756856103712606673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6756856103712606673'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/completed-holo-barrier-model.html' title='Completed holo barrier model'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3534698038943347455</id><published>2009-05-17T09:34:00.000-07:00</published><updated>2009-05-17T09:36:48.229-07:00</updated><title type='text'>Re: Holo Barrier Projector</title><content type='html'>Wasnt too fond of the last holographic projector model. Decided to rework on a new design. Based on normal concrete road barriers but with a futuristic design.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img198.imageshack.us/img198/3593/barrierrender.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://img198.imageshack.us/img198/3593/barrierrender.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3534698038943347455?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/re-holo-barrier-projector.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3534698038943347455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3534698038943347455'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/re-holo-barrier-projector.html' title='Re: Holo Barrier Projector'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2727115454724325049</id><published>2009-05-14T02:46:00.001-07:00</published><updated>2009-05-14T02:51:24.081-07:00</updated><title type='text'>Holo barrier projector</title><content type='html'>Heres a hi poly version of a holographic "no entry" barrier to block players off certain paths for the 2nd level theme. Will be working on a low poly version soon.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img15.imageshack.us/img15/1448/holoprojector.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 300px;" src="http://img15.imageshack.us/img15/1448/holoprojector.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2727115454724325049?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/holo-barrier-projector.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2727115454724325049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2727115454724325049'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/holo-barrier-projector.html' title='Holo barrier projector'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2894091629459973511</id><published>2009-05-11T03:20:00.000-07:00</published><updated>2009-05-11T03:50:44.900-07:00</updated><title type='text'>Network time sync</title><content type='html'>Time synchronization is very essential to a network game. Though for the most part, what I've read about realtime network games tend to not bother. But what they do bother was implementing client prediction to compensate network latency.&lt;br /&gt;&lt;br /&gt;I suppose it's quite acceptable to use enet's rough estimate of round trip time. But I believe if we can improve the estimation of server client time difference, the client side prediction would be more accurate. Besides, getting a good estimate of time synchronization only takes up the first few seconds of a connection. So it's worth doing it. :)&lt;br /&gt;&lt;br /&gt;The time sync i'm planning to implement is from this article: &lt;a href="http://www.mine-control.com/zack/timesync/timesync.html"&gt;http://www.mine-control.com/zack/timesync/timesync.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Though the design of time syncing is more for RTS styled network, it should still be very useful for realtime world snapshot based network.&lt;br /&gt;&lt;br /&gt;However, implementing this time syncing algorithm requires that the internal logic code respond to the network as soon as possible. Any delay due to application layer will only jeopardize the quality of the time syncing. This being the case, I need to poll enet in a separate thread from the main rendering thread. That way, I eliminate the delay caused by any main thread's busy logic and also the beloved monitor vsync.&lt;br /&gt;&lt;br /&gt;Then from this polling thread, whenever there's a new incoming streaming enet event, I immediately push them to the streaming thread. This gives me almost immediate event receiving for the streaming system. That way, I could implement the time syncing using the net streaming system which is a good thing. :)&lt;br /&gt;&lt;br /&gt;However, I still need to pass normal messages back to the main thread. For that, I used a lockless queue system to queue the event messages back to the main thread without any need to do mutex locking. That means less expensive threading. Yay!&lt;br /&gt;&lt;br /&gt;I've only just got this part compiling. Not tested yet. Hopefully it'll work. :P&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;By demand, here's a list of articles I'm referencing when designing my network system:&lt;br /&gt;&lt;a href="http://fabiensanglard.net/quakeSource/index.php"&gt;http://fabiensanglard.net/quakeSource/index.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking"&gt;http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://udn.epicgames.com/Two/NetworkingArchitecture.html"&gt;http://udn.epicgames.com/Two/NetworkingArchitecture.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking"&gt;http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developer.valvesoftware.com/wiki/Networking_Entities"&gt;http://developer.valvesoftware.com/wiki/Networking_Entities&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developer.valvesoftware.com/wiki/Lag_Compensation"&gt;http://developer.valvesoftware.com/wiki/Lag_Compensation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.P.S&lt;br /&gt;Oh, i forgot to mention about the net streaming system during the last post. Just a quick cap, the net streaming system is a way to write synchronous network protocol in a separate thread without interfering with the main thread. This works very well for stuffs like handshake and file streaming. ;)&lt;br /&gt;&lt;br /&gt;Lf3T-Hn4D out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2894091629459973511?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/network-time-sync.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2894091629459973511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2894091629459973511'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/network-time-sync.html' title='Network time sync'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2239052959389483104</id><published>2009-05-07T23:14:00.000-07:00</published><updated>2009-05-07T23:15:26.099-07:00</updated><title type='text'>Game investment talk by Matthew Le Merle</title><content type='html'>&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3750270&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3750270&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/3750270"&gt;TriplePoint Speaker Series: Matthew Le Merle, Chairman of Mindfuse&lt;/a&gt; from &lt;a href="http://vimeo.com/user1349880"&gt;triplepoint&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2239052959389483104?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/game-investment-talk-by-matthew-le.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2239052959389483104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2239052959389483104'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/game-investment-talk-by-matthew-le.html' title='Game investment talk by Matthew Le Merle'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2098885800894368591</id><published>2009-05-07T10:04:00.000-07:00</published><updated>2009-05-07T10:31:39.811-07:00</updated><title type='text'>Network beginnings</title><content type='html'>I've got basic networking done. Now the game engine deals cleanly with connection handshake and network command messaging.&lt;br /&gt;&lt;br /&gt;These two feature is essential for the game. Handshake exist such that verification between server and client must exist when initiating connection. This will allow server to verify if the client is the actual Aftershock game client and not some other random app who so happen to use the same port number. It also filters bad version matches so only game binary of the same version can connect. Last but not least, it also deals with filtering of conflicting user names.&lt;br /&gt;&lt;br /&gt;Eventually, this system will be extended to authenticating with our central server for validating users in online play. :)&lt;br /&gt;&lt;br /&gt;The second system which is network command messaging acts as a way for two computer to communicate and send command to each other. This is important for world synchronizing where the server needs to tell clients to spawn objects, shoot some fireworks, trigger some sounds, or even send chat messages.&lt;br /&gt;&lt;br /&gt;Unfortunately, network is not as nice as graphics. There's nothing flashy to show even though the underlying part is a masterpiece. :P So no screenies for this post.&lt;br /&gt;&lt;br /&gt;But one thing I must say before I end. I'm glad I planned for network when designing the engine. Writing a single player game engine and a network multiplayer game engine is two totally different thing. A single player game engine can never be enhanced properly in a multiplayer environment. I'm glad to have so many reference articles by Epic, Valve and id-Soft for puny little me to refer to. :) Gotta love living in this era. :P&lt;br /&gt;&lt;br /&gt;Next up: Time synchronizing :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2098885800894368591?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/network-beginnings.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2098885800894368591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2098885800894368591'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/network-beginnings.html' title='Network beginnings'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4586179992332321970</id><published>2009-05-05T08:16:00.001-07:00</published><updated>2009-05-05T08:19:16.368-07:00</updated><title type='text'>Making of: Game Art for Project Aftershock</title><content type='html'>&lt;h3 style="font-weight: normal; font-family: arial;" class="UIIntentionalStory_Message"&gt;&lt;span style="font-size:85%;"&gt;Catch the making of game art for Project Aftershock in Blender Art Magazine Issue 21: Look What I Can Do! page 31&lt;br /&gt;&lt;br /&gt;Download link here : &lt;a href="http://www.blenderart.org/issues/" onmousedown="'UntrustedLink.bootstrap($(this)," target="_blank" rel="nofollow"&gt;http://www.blenderart.org/issues/&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blenderart.org/images/covers/blenderart_mag_thumb_21.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 234px; height: 187px;" src="http://www.blenderart.org/images/covers/blenderart_mag_thumb_21.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4586179992332321970?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/making-of-game-art-for-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4586179992332321970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4586179992332321970'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/05/making-of-game-art-for-project.html' title='Making of: Game Art for Project Aftershock'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4192615538494837356</id><published>2009-04-29T22:22:00.000-07:00</published><updated>2009-04-29T22:29:31.614-07:00</updated><title type='text'>More lighting screenshots</title><content type='html'>Been busy building more track varieties and adding new lighting solutions for our next level where there will be no sun light to light up the scene. Next step would be adding lightmap for smaller light sources whereby majority of the scene lighting will be lit up using real time lighting.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img156.imageshack.us/img156/377/worldeditor200904301317.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 350px;" src="http://img156.imageshack.us/img156/377/worldeditor200904301317.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4192615538494837356?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/more-lighting-screenshots.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4192615538494837356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4192615538494837356'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/more-lighting-screenshots.html' title='More lighting screenshots'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-4427955883063622243</id><published>2009-04-16T10:39:00.000-07:00</published><updated>2009-04-16T10:40:39.329-07:00</updated><title type='text'>Votes needed to help Gamers Daily News grow</title><content type='html'>Hi guys, just wondering if you guys could help out our friend, Christopher Rick, Editor in Chief for Gamers Daily News (&lt;!-- m --&gt;&lt;a class="postlink" href="http://www.gamersdailynews.com/"&gt;http://www.gamersdailynews.com&lt;/a&gt;&lt;!-- m --&gt;) win the business grant from Intuit to help grow Gamers Daily News which helps and features indie developers such as ourselves here at Liquid Rock Games.&lt;br /&gt;&lt;br /&gt;All you need to do is log in and vote for the article below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://community.intuit.com/contests/ckb0mEE_yqllvkab8P4pmk#bottom" class="postlink"&gt;http://community.intuit.com/contests/ckb0mEE_yqllvkab8P4pmk#bottom&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All help will be greatly appreciated! Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-4427955883063622243?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/votes-needed-to-help-gamers-daily-news.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4427955883063622243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/4427955883063622243'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/votes-needed-to-help-gamers-daily-news.html' title='Votes needed to help Gamers Daily News grow'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3199166414636828544</id><published>2009-04-15T10:15:00.001-07:00</published><updated>2009-04-15T10:52:39.431-07:00</updated><title type='text'>Project Aftershock on Indie Game Mag issue 4 May/June 2009</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e0OQdEgBaaY/SeYWb_o_1jI/AAAAAAAAACE/3ZbyyOc7DH0/s1600-h/IGM-issue-4-6.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 255px; height: 320px;" src="http://3.bp.blogspot.com/_e0OQdEgBaaY/SeYWb_o_1jI/AAAAAAAAACE/3ZbyyOc7DH0/s320/IGM-issue-4-6.jpg" alt="" id="BLOGGER_PHOTO_ID_5324968279607858738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3199166414636828544?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/project-aftershock-on-indie-game-mag.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3199166414636828544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3199166414636828544'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/project-aftershock-on-indie-game-mag.html' title='Project Aftershock on Indie Game Mag issue 4 May/June 2009'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_e0OQdEgBaaY/SeYWb_o_1jI/AAAAAAAAACE/3ZbyyOc7DH0/s72-c/IGM-issue-4-6.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7425164413719946383</id><published>2009-04-15T10:11:00.000-07:00</published><updated>2009-04-16T01:13:55.896-07:00</updated><title type='text'>Liquid Rock Games Launches Developer Diary Exclusively at Gamers Daily News</title><content type='html'>Special thanks to Christophor Rick,Editor-in-Chief for Gamers Daily News.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.developmag.com/press-releases/46361/Liquid-Rock-Games-Launches-Developer-Diary-Exclusively-at-Gamers-Daily-News"&gt;Liquid Rock Games Launches Developer Diary Exclusively at Gamers Daily News&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.spawnpoint.com/news/14270/Liquid_Rock_Games_Launches_Developer_Diary_Exclusively_at_Gamers_Daily_News"&gt;http://www.spawnpoint.com/news/14270/Liquid_Rock_Games_Launches_Developer_Diary_Exclusively_at_Gamers_Daily_News&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-7425164413719946383?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/liquid-rock-games-launches-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7425164413719946383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7425164413719946383'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/liquid-rock-games-launches-developer.html' title='Liquid Rock Games Launches Developer Diary Exclusively at Gamers Daily News'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8555328901794552656</id><published>2009-04-14T09:34:00.000-07:00</published><updated>2009-04-14T09:49:07.244-07:00</updated><title type='text'>And Lf3T-Hn4D says... Let there be lights!</title><content type='html'>And there was lights:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img411.imageshack.us/img411/9708/aftershocklightediting.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 640px; height: 480px;" src="http://img411.imageshack.us/img411/9708/aftershocklightediting.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yep, that's our new quick addition to our wonderfully already hyper complex shaders. Not everything receives them lights yet though. Right now, only solid phong objects receives lights.&lt;br /&gt;&lt;br /&gt;It's a per pass lighting system though. So it's not very efficient. I wish I could do deferred shading. Sigh...&lt;br /&gt;&lt;br /&gt;Ah well, whatever. Better get this done fast and continue on my network coding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8555328901794552656?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/and-lf3t-hn4d-says-let-there-be-lights.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8555328901794552656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8555328901794552656'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/and-lf3t-hn4d-says-let-there-be-lights.html' title='And Lf3T-Hn4D says... Let there be lights!'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-7621545768743763984</id><published>2009-04-07T09:24:00.001-07:00</published><updated>2009-04-07T09:28:52.987-07:00</updated><title type='text'>New official youtube channel</title><content type='html'>Just created our own official youtube channel for Liquid Rock Games. All future vids will be posted here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/user/LiquidRockGames"&gt;Liquid Rock Games Youtube Channel&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So dont forget to visit and subscribe today !&lt;br /&gt;&lt;br /&gt;Also an updated vid of the first track environment. The next video will feature gameplay elements.&lt;br /&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HtX0YKufaHI&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HtX0YKufaHI&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&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/2295098488449349581-7621545768743763984?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/new-official-youtube-channel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7621545768743763984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/7621545768743763984'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/04/new-official-youtube-channel.html' title='New official youtube channel'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-2546416878051992964</id><published>2009-03-31T12:18:00.000-07:00</published><updated>2009-03-31T12:23:39.767-07:00</updated><title type='text'>Texture atlas set test</title><content type='html'>Here are the new texture sets for the floor track . replacing the old one. There will be some transparent parts showing off piping running through the track floors. Will mix n match parts of the texture atlas to create more floor pattern varieties.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img509.imageshack.us/img509/6862/floortest.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://img509.imageshack.us/img509/6862/floortest.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-2546416878051992964?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/texture-atlas-set-test.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2546416878051992964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/2546416878051992964'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/texture-atlas-set-test.html' title='Texture atlas set test'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3336987385438863465</id><published>2009-03-30T02:24:00.000-07:00</published><updated>2009-03-30T02:54:27.974-07:00</updated><title type='text'>Smoothness and frame rate independent</title><content type='html'>Ahh... I finally got it quite right. Few days back I was trying to tackle frame rate independent physics. Sad to say, bullet physics as nice as it was, was horrible at interpolation. This is due to it doing extrapolation instead of interpolation which didn't work very well with force intensive physics (Having multiple forces applied to an object at each simulation step).&lt;br /&gt;&lt;br /&gt;The reason for interpolation/extrapolation of physics is so that physics can be simulated at a fixed time step to maintain stability and determinism. This means that given an exact state of an initial physics world, the simulation will always end the same way with the given fixed input in any number of tries. However, as frame rate is not in fixed time step and can fluctuate depending on cpu/gpu performance, interpolation/extrapolation was introduced to provide "smooth" graphical display.&lt;br /&gt;&lt;br /&gt;The sad part about bullet though was that it's doing extrapolation. In layman term, this means predicting into the future. In some sense it's correct if you think about each simulation is a few millisecond behind the current rendering frame. But it causes horrible jerks due to the prediction.&lt;br /&gt;&lt;br /&gt;Hence I went and dig through bullet's source and modified it to do backward interpolation or I should say "true" interpolation as described here: &lt;a href="http://gafferongames.com/game-physics/fix-your-timestep"&gt;http://gafferongames.com/game-physics/fix-your-timestep&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After this, I managed to get good frame rate independent simulation which helped a lot on my machine where fps fluctuated around 30 to 60. All was nice and dandy until we tried it on the faster 8800GTS and 9800GT cards. It was giving horrible jerky motion due to fluctuating fps of 58 to 60. Thanks to Ogre for providing the frame smoothing feature. After turning it on and tweaking to a good enough value (0.05 - meaning average 3 frames at most), we got pretty darn smooth simulation. :)&lt;br /&gt;&lt;br /&gt;But there were still some vital pops and jerks once in a while due to paging geometry. In the end, I had to crack my head and totally put all processing of paging geometry stuffs into the background thread. That solved almost all jerks and pops. :)&lt;br /&gt;&lt;br /&gt;I think I'm happy with what I've achieved thus far. Now I can focus on network and scripts. FINALLY!&lt;br /&gt;&lt;br /&gt;P.S. I'll be posting up a patch to bullet for that interpolation feature once I get enough time. I didn't remove the extrapolation technique. Just #defined them so users can switch between them when compiling. I think they should really embrace this method as the default though. It works a lot better for visual side of things even though it means visual is slower by 1 frame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3336987385438863465?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/smoothness-and-frame-rate-independent.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3336987385438863465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3336987385438863465'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/smoothness-and-frame-rate-independent.html' title='Smoothness and frame rate independent'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-1391074303194840470</id><published>2009-03-29T00:07:00.000-07:00</published><updated>2009-03-29T00:10:59.855-07:00</updated><title type='text'>Exhaust flames</title><content type='html'>Still screenshot of the exhaust flames coming out of the crafts engines. Looks alot nicer when the flames are in motion. Will be needing some refraction particles to simulate heat waves. Vroom....&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img19.imageshack.us/img19/5835/jetflames.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 275px;" src="http://img19.imageshack.us/img19/5835/jetflames.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-1391074303194840470?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/exhaust-flames.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1391074303194840470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/1391074303194840470'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/exhaust-flames.html' title='Exhaust flames'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-5629756233987594328</id><published>2009-03-28T23:52:00.000-07:00</published><updated>2009-03-29T00:03:20.390-07:00</updated><title type='text'>Refraction update</title><content type='html'>Here's an update on the refraction effect for flowing water coming out of drain pipes. Will be adding some particle effects for water splashing a little later. Player would be able to turn it on and off later in game if this effect is slowing down their framerate.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;With refraction&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img10.imageshack.us/img10/879/refrac1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://img10.imageshack.us/img10/879/refrac1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img19.imageshack.us/img19/1615/refrac2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://img19.imageshack.us/img19/1615/refrac2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;Without refraction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img8.imageshack.us/img8/2177/norefrac1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://img8.imageshack.us/img8/2177/norefrac1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img8.imageshack.us/img8/588/norefrac2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://img8.imageshack.us/img8/588/norefrac2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-5629756233987594328?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/refraction-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5629756233987594328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/5629756233987594328'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/refraction-update.html' title='Refraction update'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-897975487580503013</id><published>2009-03-27T10:19:00.000-07:00</published><updated>2009-03-27T10:21:29.855-07:00</updated><title type='text'>Level 2</title><content type='html'>Started working on the next track theme with the first building blocks.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img12.imageshack.us/img12/8072/lvl2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://img12.imageshack.us/img12/8072/lvl2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-897975487580503013?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/level-2.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/897975487580503013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/897975487580503013'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/level-2.html' title='Level 2'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-8344028462521819221</id><published>2009-03-25T07:06:00.000-07:00</published><updated>2009-03-25T07:08:07.372-07:00</updated><title type='text'>Blog comments fixed!</title><content type='html'>L3ft_H4nd finally got the blog comments working ! after many complaints bout the broken post comment link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-8344028462521819221?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/blog-comments-fixed.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8344028462521819221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/8344028462521819221'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/blog-comments-fixed.html' title='Blog comments fixed!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-140410005544974417</id><published>2009-03-18T14:49:00.000-07:00</published><updated>2009-03-18T15:23:38.501-07:00</updated><title type='text'>Refraction!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img9.imageshack.us/img9/3314/aftershockrefractionsho.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 640px; height: 480px;" src="http://img9.imageshack.us/img9/3314/aftershockrefractionsho.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Tada!&lt;br /&gt;&lt;br /&gt;I know, I know.. Not the best shot to be proud of. But its the best shot at showcasing every single graphical feature we have in our game right now; HDR, Refraction, Shadow, Paging Geom, Baked AO (somewhat like light map but independent of light source), fuzzy holo and lens flare.&lt;br /&gt;&lt;br /&gt;Yes, this post is more about the refraction than anything else. Getting refraction up was a real pain. Took me a few days of frustrations and hitting Ogre bug(s) before I got it working more or less. The FPS isn't too happy on my machine though. 8600GTS just doesn't cut it for such fillrate intensive feature. I'm getting about 40-50fps when every feature is turned on (shadow at lowest setting). I've yet to test it on the more powerful 9800GT, but I bet it'll be blazing fast. :)&lt;br /&gt;&lt;br /&gt;The trick behind refraction is that it's a postprocessing feature. Thanks to Ogre's nifty compositor system, It allowed me to build this pretty much from a simple compositor script and a handful of materials and shader files.&lt;br /&gt;&lt;br /&gt;What I did was basically tell compositor to render the scene in what I call the refraction pass. What happens here is that instead of rendering the scene with the basic materials, we render them with special refraction materials which sets the refraction and depth info into a temporary render texture. This is done by ordering the compositor pass to use a custom material scheme.&lt;br /&gt;&lt;br /&gt;After this is done, the render texture is then used to distort the real scene texture base on the offset and depth info. Not too complicated. :)&lt;br /&gt;&lt;br /&gt;However this technique has it's quirks and problems. Attempt at using it for effects like stained glass results in ugly distortion of the tinting. Stacking them up over one another will most definitely turn it into a muddle of crappy distorted glasses. &lt;br /&gt;&lt;br /&gt;Still, this effect has it's use in many other cases. For one, we intend to use it for simple water based effect like the shot above. Uh.. yeah, it's not going to look like that, I'll be changing it to the &lt;span style="font-weight:bold;"&gt;proper&lt;/span&gt; shader later. :P&lt;br /&gt;&lt;br /&gt;The second effect, which we will be using a lot, is heat haze and shield distortion. This will definitely spice up things. Hehe :D&lt;br /&gt;&lt;br /&gt;Aside from this, there's still more to deal with. To get this working I had to work around a problem with the PCZSM(portal scene manager) that I was using. It was a bug that causes compositor to not function properly. I've yet to figure out how to solve that. Hopefully I can solve that soon and move on. There's already tons of things in my todo list and it's piling up! :(&lt;br /&gt;&lt;br /&gt;That's it. I'm done. Shader programming should be a full time job. Sheesh.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;P.S. I know I didn't really properly explain the whole process of the refraction shader. But I'll leave that to the imagination of any reader who intends to add refraction into their system. :) It's not that hard to figure it out.&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-140410005544974417?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/refraction.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/140410005544974417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/140410005544974417'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/refraction.html' title='Refraction!'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6868997236311155566</id><published>2009-03-13T11:52:00.001-07:00</published><updated>2009-03-13T11:54:41.196-07:00</updated><title type='text'>Updated game logo</title><content type='html'>Redid the game logo as the first version lacked the feel of the game. So heres a new one.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img15.imageshack.us/img15/7103/logo3w.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 240px;" src="http://img15.imageshack.us/img15/7103/logo3w.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6868997236311155566?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/updated-game-logo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6868997236311155566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6868997236311155566'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/updated-game-logo.html' title='Updated game logo'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-3439739293784111409</id><published>2009-03-12T08:56:00.000-07:00</published><updated>2009-03-12T09:05:25.438-07:00</updated><title type='text'>Background threading success!</title><content type='html'>I got background threading working and it's working mightily well for paging geometry's batching. With it, I no longer get the annoying periodic jerks that happens whenever a page gets batched in to view.&lt;br /&gt;&lt;br /&gt;I've also added an option to dynamically tweak the "density" of the paging geometries so that lower end machines can have less details as necessary. :)&lt;br /&gt;&lt;br /&gt;Also to improve performance due to fillrate issues, I've made grass shader's shadow receiving technique pervertex instead of perpixel. This means only cards that supports vertex texture fetch will work. I wonder how many ATI cards I just killed. Hmmm... will need checking.&lt;br /&gt;&lt;br /&gt;Henceforth, mission success! Very happy and proud of myself :P Now, back to refraction technique. Then after that to do the most important thing; Network, Script and Game logic!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-3439739293784111409?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/background-threading-success.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3439739293784111409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/3439739293784111409'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/background-threading-success.html' title='Background threading success!'/><author><name>Lf3T-Hn4D</name><uri>http://www.blogger.com/profile/13890814226944911772</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Q9k4SCd6xWQ/SaEavOopoFI/AAAAAAAAAAM/vh0DYzkgEL8/S220/avatar.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2295098488449349581.post-6933582695261183886</id><published>2009-03-12T06:48:00.000-07:00</published><updated>2009-03-12T09:19:42.716-07:00</updated><title type='text'>Game logo!</title><content type='html'>Just created a new game logo for aftershock. The red color circle represents the core gameplay mechanic of the game.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img259.imageshack.us/img259/7197/aftershocklogo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 600px; height: 218px;" src="http://img259.imageshack.us/img259/7197/aftershocklogo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2295098488449349581-6933582695261183886?l=liquidrockgames.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/game-logo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6933582695261183886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2295098488449349581/posts/default/6933582695261183886'/><link rel='alternate' type='text/html' href='http://liquidrockgames.blogspot.com/2009/03/game-logo.html' title='Game logo!'/><author><name>Prometheus</name><uri>http://www.blogger.com/profile/03531149638770557396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='28' src='http://3.bp.blogspot.com/_e0OQdEgBaaY/Sr4yX_NzUSI/AAAAAAAAADE/gbmZHS2LIqQ/S220/logosmall.jpg'/></author><thr:total>0</thr:total></entry></feed>
