<?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-29472686</id><updated>2011-12-13T19:54:19.236-08:00</updated><category term='darkstar'/><category term='zcam'/><category term='avatars'/><title type='text'>Developing the Cosmic Engine</title><subtitle type='html'>The Cosmic Engine is a Java and MTGame based virtual worlds engine in development at Immediate Mode Interactive.  It serves as a testing ground for useful components that are released into the community via Sun Microsystems Project Wonderland. This is our developer journal of that activity.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29472686.post-398135289127483873</id><published>2009-12-14T15:06:00.000-08:00</published><updated>2009-12-14T15:17:03.427-08:00</updated><title type='text'>Google Code Update</title><content type='html'>We have updated the code base on Google Code, the update includes the Avatar System Developer Tool that we use internally - starting with our next update we will post fixes to known art asset issues. The tool is used by the artists to verify assets before passing it along for integration, it is possible to load meshes and animations on run time for a smooth work flow.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have started a documentation effort using the wiki on Google Code, it is possible to post comments on the wiki pages, let us know what you think!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A new forum for the CosmicEngine is up and running at &lt;a href="http://groups.google.com/group/cosmicenginegroup"&gt;http://groups.google.com/group/cosmicenginegroup&lt;/a&gt;&lt;/div&gt;&lt;div&gt;please feel free to post your questions and comments, we monitor this forum regularly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Work has begun on the Cosmic Object Model! We will document on the wiki as this matures. We hope to use this model to ease the work on "Game Objects", separate the business logic from the reusable components and even make networking easier - stay tuned!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-398135289127483873?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/398135289127483873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=398135289127483873' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/398135289127483873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/398135289127483873'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/12/google-code-update.html' title='Google Code Update'/><author><name>Souliloquy</name><uri>http://www.blogger.com/profile/05176158090295555389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_IfgBGy6ZMsM/SKEhIbok42I/AAAAAAAAAAU/-9yUOqCCMSA/s1600-R/IMAGE_023.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-7416523458469404350</id><published>2009-11-06T17:49:00.000-08:00</published><updated>2009-11-06T17:53:57.021-08:00</updated><title type='text'>Cosmic Engine is posted!</title><content type='html'>I am proud to announce the entire Cosmic Engine code base is now up in SVN on the Google Code Cosmic engine site.  The link again is:&lt;div&gt;&lt;a href="http://code.google.com/p/cosmic-engine/"&gt;cosmic-engine - Project Hosting on Google Code&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, it's not exactly user (or even developer friendly) but it's an important milestone.  Docs and tutorials as well as regular development updates will now happen there and as open source!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's been a long time coming.  I hope we can grow a great community around this tech stack.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hoo-ray!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-7416523458469404350?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/7416523458469404350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=7416523458469404350' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/7416523458469404350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/7416523458469404350'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/11/cosmic-engine-is-posted.html' title='Cosmic Engine is posted!'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-9216267463450924439</id><published>2009-11-03T18:46:00.000-08:00</published><updated>2009-11-03T18:51:17.308-08:00</updated><title type='text'>This sprint I promise!</title><content type='html'>Delays, delays.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So we didn't make the release by last Friday as planned, but I promise, if I have to hand carry each bit, we'll push it all up during this mini-sprint.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We had an entire office move right ontop of this sprint, literally the move was the same day of the sprint closing and this got cut.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-9216267463450924439?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/9216267463450924439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=9216267463450924439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/9216267463450924439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/9216267463450924439'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/11/this-spring-i-promise.html' title='This sprint I promise!'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-113569062593443034</id><published>2009-10-26T10:27:00.001-07:00</published><updated>2009-10-26T11:16:48.338-07:00</updated><title type='text'>Google Code for hosting</title><content type='html'>We have decided to set up our code hosting at Google Code.  The link is: &lt;div&gt;&lt;a href="http://code.google.com/p/cosmic-engine/"&gt;cosmic-engine - Project Hosting on Google Code&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is next to nothing there now, but the first official drop will go up at the end of this week(!), then followed by regular roll outs until it's all up and refactored for public consumption.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-113569062593443034?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/113569062593443034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=113569062593443034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/113569062593443034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/113569062593443034'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/10/google-code-to-host.html' title='Google Code for hosting'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-3704572260100580417</id><published>2009-10-06T12:28:00.000-07:00</published><updated>2009-10-06T12:56:13.648-07:00</updated><title type='text'>Cosmic Engine goes Open Source</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://commons.wikimedia.org/wiki/File:Neon_Open_Sign.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 120px; height: 90px;" src="http://1.bp.blogspot.com/_l4c-x4Kc_tI/SsueeZniw9I/AAAAAAAAAB8/EQydpIlOcZ0/s320/120px-Neon_Open_Sign.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5389575624188937170" /&gt;&lt;/a&gt;&lt;div&gt;I just wanted to make a quick announcement because I can't wait any longer.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We will be releasing the Cosmic Engine and related technologies as open source within the next few weeks.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To begin we will host it at Google Code and the team will be working out of that repository directly.  Additionally, we are committed to making it as easy as possible to build out of the (SVN) box with a NetBeans project that will build and run with little to no configuring and by including all the underlying layers in our stack (JOGL, jMonkeyEngine, MTGame, Avatars and all our secret sauce that we have yet to release to the wild)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We are still in development so this is not an orphaned project, but we have reached the point where enough outside parties need and should have access to the source to grow and refine it's feature and capabilities.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-3704572260100580417?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/3704572260100580417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=3704572260100580417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/3704572260100580417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/3704572260100580417'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/10/cosmic-engine-goes-open-source.html' title='Cosmic Engine goes Open Source'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_l4c-x4Kc_tI/SsueeZniw9I/AAAAAAAAAB8/EQydpIlOcZ0/s72-c/120px-Neon_Open_Sign.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-5642272100269896740</id><published>2009-09-02T16:01:00.000-07:00</published><updated>2009-09-02T16:17:44.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='darkstar'/><category scheme='http://www.blogger.com/atom/ns#' term='zcam'/><category scheme='http://www.blogger.com/atom/ns#' term='avatars'/><title type='text'>Digging up old videos</title><content type='html'>I was going through some of the old snap shots and videos that were taken during the development of the avatar animation system and I found recordings of the experiments done with the ZCam prototype I brought with me from my vacation in Israel last year :). The ZCam is a special camera that captures depth (in addition to the normal color and sound), this is the same\similar technology that is utilized by project Natal (see Microsoft's XBox360).&lt;br /&gt;&lt;br /&gt;Here is a video showing a networked prototype:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-7bbadcd9501c8b5f" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v20.nonxt4.googlevideo.com/videoplayback?id%3D7bbadcd9501c8b5f%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330095136%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1421826437747671E9CB5FCBC7C91755FD7E8A53.41AE440A9273D865EE74FCB1AF92DFB8415EDC2D%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7bbadcd9501c8b5f%26offsetms%3D5000%26itag%3Dw160%26sigh%3DMnjWOoJVQIXbyLK8sUdFxhBcmiQ&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v20.nonxt4.googlevideo.com/videoplayback?id%3D7bbadcd9501c8b5f%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330095136%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1421826437747671E9CB5FCBC7C91755FD7E8A53.41AE440A9273D865EE74FCB1AF92DFB8415EDC2D%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7bbadcd9501c8b5f%26offsetms%3D5000%26itag%3Dw160%26sigh%3DMnjWOoJVQIXbyLK8sUdFxhBcmiQ&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Here is a video showing avatar movement:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-21474a04657b8ec6" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v3.nonxt6.googlevideo.com/videoplayback?id%3D21474a04657b8ec6%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330095136%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1D98D5402DCF6294C030CC9A21CECC93DEA6264A.4BC44A8C2A008AC15621CC8CE26A31FD3FED4273%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D21474a04657b8ec6%26offsetms%3D5000%26itag%3Dw160%26sigh%3D7GqLRymw-uwYErBbJ3UKXQgQm40&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v3.nonxt6.googlevideo.com/videoplayback?id%3D21474a04657b8ec6%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330095136%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1D98D5402DCF6294C030CC9A21CECC93DEA6264A.4BC44A8C2A008AC15621CC8CE26A31FD3FED4273%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D21474a04657b8ec6%26offsetms%3D5000%26itag%3Dw160%26sigh%3D7GqLRymw-uwYErBbJ3UKXQgQm40&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-5642272100269896740?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=21474a04657b8ec6&amp;type=video%2Fmp4' length='0'/><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=7bbadcd9501c8b5f&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/5642272100269896740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=5642272100269896740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/5642272100269896740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/5642272100269896740'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/09/digging-up-old-videos.html' title='Digging up old videos'/><author><name>Souliloquy</name><uri>http://www.blogger.com/profile/05176158090295555389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_IfgBGy6ZMsM/SKEhIbok42I/AAAAAAAAAAU/-9yUOqCCMSA/s1600-R/IMAGE_023.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-6005521980973997581</id><published>2009-08-24T08:18:00.000-07:00</published><updated>2009-08-24T08:36:26.132-07:00</updated><title type='text'>Freezing the Avatars project on the Sun SVN</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IfgBGy6ZMsM/SpKv_wdCsoI/AAAAAAAAACM/M78a7-gxZmg/s1600-h/bwavatars.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 324px;" src="http://2.bp.blogspot.com/_IfgBGy6ZMsM/SpKv_wdCsoI/AAAAAAAAACM/M78a7-gxZmg/s400/bwavatars.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5373550815279755906" /&gt;&lt;/a&gt;As you might already know Wonderland is going through a period of bug fixing in which no new features are added, we evaluated what are the things we would like to touch up before freezing the avatars repository which are used for wonderland integration*. First is a fix to the hair placement issue, each head skeleton has a special joint called "HairAttach", this joint is used to properly transform the hair into position. We made sure that all the head skeletons are set up nice. Another issue we ironed out is color modulation for every clothing item and the skin, the system supported this feature for a very long time now but we made common use of alternative techniques (that often gave better results) such as using texture blending tools (avaiable in the avatars project, but can also be done with common industry tools) to compose a custom texture. The latest commit to the repository changed all the defaut textures that are used by all clothing and skin to black and white, this insures that color modulation will yield the desired results.&lt;div&gt;In the picture you can see two avatars with white color modulation on the clothes and skin tone color modulation applied on the skin, the shoes, pants, shirt and hair can each be individually color modulated.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* https://avatars.dev.java.net/svn/avatars&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-6005521980973997581?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/6005521980973997581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=6005521980973997581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/6005521980973997581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/6005521980973997581'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/08/freezing-avatars-project-on-sun-svn.html' title='Freezing the Avatars project on the Sun SVN'/><author><name>Souliloquy</name><uri>http://www.blogger.com/profile/05176158090295555389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_IfgBGy6ZMsM/SKEhIbok42I/AAAAAAAAAAU/-9yUOqCCMSA/s1600-R/IMAGE_023.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IfgBGy6ZMsM/SpKv_wdCsoI/AAAAAAAAACM/M78a7-gxZmg/s72-c/bwavatars.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-8494976854535537940</id><published>2009-07-29T19:10:00.000-07:00</published><updated>2009-07-30T10:25:28.140-07:00</updated><title type='text'>Odd and Ends</title><content type='html'>We have been meaning to post for a while but just didn't get around to it, we have progress in multiple directions. In the Project Wonderland space we are reaping the benefits of the dedicated time we spent towards refactoring the entire avatar system. We got our internally developed collision solution integrated into our branch for 0.5. We load in our own custom environments and modestly begin designing the GUI\HUD of our implementation. Performance, download and load times are improving. We are in close contact with the team at Sun and we appreciate their plans to perform "feature freeze" and focus on stabilizing the overall system. We have found a need for a quick machine compatibility test application to help in the QA effort, before even considering the use of a certain machine in the studio for QA we make sure that machine passes the test - loading a smiling avatar via web start app.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IfgBGy6ZMsM/SnEKjnlINBI/AAAAAAAAAB8/YzJy2TAx0kY/s1600-h/shaderTEst.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 167px;" src="http://2.bp.blogspot.com/_IfgBGy6ZMsM/SnEKjnlINBI/AAAAAAAAAB8/YzJy2TAx0kY/s200/shaderTEst.jpg" alt="" id="BLOGGER_PHOTO_ID_5364080238211380242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On another front we have successfully developed a tool for soft body physics editing for 3D models. The output of that tool is exported into an iphone friendly format that is then loaded on the iphone and runs in an app developed by Kyle Roucis - one of our interns. We are experimenting various usages for this tech, it could possibly serve as a solid base for a heavily multi-threaded physics system that is based on verlet integration. I love verlet systems, it's lots of fun!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IfgBGy6ZMsM/SnEKr_8fMUI/AAAAAAAAACE/JH0Bm1NroJg/s1600-h/badVerlet1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 163px;" src="http://2.bp.blogspot.com/_IfgBGy6ZMsM/SnEKr_8fMUI/AAAAAAAAACE/JH0Bm1NroJg/s200/badVerlet1.jpg" alt="" id="BLOGGER_PHOTO_ID_5364080382190760258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(This picture is outdated but it shows a verlet structure)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-8494976854535537940?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/8494976854535537940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=8494976854535537940' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/8494976854535537940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/8494976854535537940'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/07/java-open-source-software-stack.html' title='Odd and Ends'/><author><name>Souliloquy</name><uri>http://www.blogger.com/profile/05176158090295555389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_IfgBGy6ZMsM/SKEhIbok42I/AAAAAAAAAAU/-9yUOqCCMSA/s1600-R/IMAGE_023.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IfgBGy6ZMsM/SnEKjnlINBI/AAAAAAAAAB8/YzJy2TAx0kY/s72-c/shaderTEst.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-2635503508017730858</id><published>2009-07-17T15:16:00.001-07:00</published><updated>2009-07-17T16:16:54.214-07:00</updated><title type='text'>Developing a "Best Fit" view model</title><content type='html'>To followup with improvements and fixes to Wonderland0.5, we created an option in the context menu that attempts to position a camera on a cell of interest containing an X11 app; to allow the user the "best view" possible upon interaction.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This context option currently switches the user camera to a First Person Camera (FPS Camera), and based on the transform of the cell of interest, attempts to calculate the best position to place the camera so the user gets the best view of the cell.  When the user wishes to go back to the avatar view mode, selecting the "Best Fit" in the context window will return the user to a third person camera.  This mode will undoubtedly make interactions and/or viewing X11 apps easier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Due to current refactoring of the Wonderland0.5 code, the "Best Fit" context mode will be available in about a week.  The code has been submitted to the Wonderland Team to be integrated in with the refactoring.  Expect more cool things like the Chase Cam and the Best Fit view mode as wonderland evolves and matures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-d66ea868c2c4c69" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v15.nonxt5.googlevideo.com/videoplayback?id%3D0d66ea868c2c4c69%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330095136%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D6C55B7387D787BFAB576564FE3672EC24C49FB17.3E51FA76D4733005781737F2A889D5DEBCCF6B25%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dd66ea868c2c4c69%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLs5AAPrEX6OScYkgqFhG8BWFCUY&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v15.nonxt5.googlevideo.com/videoplayback?id%3D0d66ea868c2c4c69%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330095136%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D6C55B7387D787BFAB576564FE3672EC24C49FB17.3E51FA76D4733005781737F2A889D5DEBCCF6B25%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dd66ea868c2c4c69%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLs5AAPrEX6OScYkgqFhG8BWFCUY&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-2635503508017730858?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=d66ea868c2c4c69&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/2635503508017730858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=2635503508017730858' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/2635503508017730858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/2635503508017730858'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/07/developing-best-fit-view-model.html' title='Developing a &quot;Best Fit&quot; view model'/><author><name>ptruong</name><uri>http://www.blogger.com/profile/05537813342406041480</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-5090878375786407773</id><published>2009-07-10T17:42:00.000-07:00</published><updated>2009-07-10T19:07:37.342-07:00</updated><title type='text'>Chase Camera Model</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Hello All!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As of Wonderland 0.5 revision 2844, a chase camera behavior is available. The default camera behavior in Wonderland needed a bit of love and attention so we integrated a camera model of ours. The behavior is a third person perspective camera that uses springs to smooth out changes in the desired position and desired look at target. The position that the camera seeks to, relative to the avatar, is configurable to allow for zooming, rotation about the avatar, etc. Go get the latest version of the trunk and check it out! In the client, use the "Tools" -&gt; "Use Chase Cam" menu item. I've posted screen shots, but you REALLY need to see it in action to appreciate it.&lt;br /&gt;&lt;div style="text-align: center;"&gt;Default Hard Attach Cam&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_X94C3f8w84U/SlfzhtggoMI/AAAAAAAAABc/ubVeN7zOTmg/s1600-h/HardAttach.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 295px;" src="http://4.bp.blogspot.com/_X94C3f8w84U/SlfzhtggoMI/AAAAAAAAABc/ubVeN7zOTmg/s320/HardAttach.png" alt="" id="BLOGGER_PHOTO_ID_5357018042257678530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Chase Cam&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_X94C3f8w84U/SlfzpcNZcpI/AAAAAAAAABk/-IXoLCAwGNA/s1600-h/ChaseCam.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 295px;" src="http://4.bp.blogspot.com/_X94C3f8w84U/SlfzpcNZcpI/AAAAAAAAABk/-IXoLCAwGNA/s320/ChaseCam.png" alt="" id="BLOGGER_PHOTO_ID_5357018175053066898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-5090878375786407773?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/5090878375786407773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=5090878375786407773' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/5090878375786407773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/5090878375786407773'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/07/chase-camera-model.html' title='Chase Camera Model'/><author><name>Dahlgren</name><uri>http://www.blogger.com/profile/08389150079146528291</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_X94C3f8w84U/SA39oVh7oMI/AAAAAAAAAAM/Nl0Q183vzX0/S220/me_professional2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_X94C3f8w84U/SlfzhtggoMI/AAAAAAAAABc/ubVeN7zOTmg/s72-c/HardAttach.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-5668922540281314687</id><published>2009-07-09T19:18:00.000-07:00</published><updated>2009-07-09T19:21:38.463-07:00</updated><title type='text'>API Refactoring now in Wonderland 0.5 trunk!</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Hello again Cosmic Game Engine followers!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;As of revision 2833, the refactoring we mentioned in the previous post has been merged and integrated with the &lt;a href="http://wonderland.dev.java.net"&gt;Wonderland 0.5 trunk&lt;/a&gt;.&lt;span style="font-weight: bold;"&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;The major&lt;span style="font-weight: bold;"&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;thing that will show up visibly is a better selection of random avatars. Grab the latest revision and check it out!&lt;br /&gt;&lt;br /&gt;Ron&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-5668922540281314687?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/5668922540281314687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=5668922540281314687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/5668922540281314687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/5668922540281314687'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/07/api-refactoring-now-in-wonderland-05.html' title='API Refactoring now in Wonderland 0.5 trunk!'/><author><name>Dahlgren</name><uri>http://www.blogger.com/profile/08389150079146528291</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_X94C3f8w84U/SA39oVh7oMI/AAAAAAAAAAM/Nl0Q183vzX0/S220/me_professional2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-1766549186492018087</id><published>2009-07-02T08:10:00.000-07:00</published><updated>2009-07-02T08:17:39.793-07:00</updated><title type='text'>Description Update</title><content type='html'>&lt;div&gt;So now that we are underway in our new development with Cosmic, I thought I should update the blog description to better reflection the current activities.  For posterity's sake I will copy the old description here as it may still give some context to the older posts as well as maintain that small bit of history, may Java3D rest in peace.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  white-space: pre-wrap; font-family:'Lucida Grande', fantasy;font-size:11px;"&gt;The Cosmic game engine is a Java and Java3D based game engine in development at Immediate Mode Interactive.  It is named after the game lead character and universe of "Cosmic Birdie", which is the game in production using the Cosmic engine.  This is my developer journal of that activity as it closes in on release.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-1766549186492018087?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/1766549186492018087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=1766549186492018087' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/1766549186492018087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/1766549186492018087'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/07/description-update.html' title='Description Update'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-7844757556053920235</id><published>2009-06-30T12:01:00.000-07:00</published><updated>2009-06-30T14:58:32.757-07:00</updated><title type='text'>Spring Cleaning</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Hello faithful Cosmic Game Engine followers!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  The team recently completed a two-week refactoring party on the avatar system. A lot of the early code needed to be looked at again through the lens of over a year of experience as well as the feedback from early API users. Attention was paid to locking down the API (that is, only exposing the essential pieces), refactoring the classes to fit a more "package as module" design rather than "package as a way to organize source code", throwing exceptions as soon as things go wrong, and removing unused cruftiness.&lt;br /&gt;&lt;br /&gt;  One part of this effort that we decided to test out was the usage of automation wherever possible in the development process. The stated goals of this effort were:&lt;ul&gt;&lt;li&gt;Host a local &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; repository (to speed commit / update cycles)&lt;/li&gt;&lt;li&gt;Use static analysis tools (more on this later)&lt;/li&gt;&lt;li&gt;Host a &lt;a href="http://www.bugzilla.org/"&gt;Bugzilla&lt;/a&gt; install to track pending issues&lt;/li&gt;&lt;li&gt;Use a continuous integration server to detect problems as early as possible&lt;/li&gt;&lt;/ul&gt;The first step here was to determine an operating system to use. My initial choice was &lt;a href="http://opensolaris.org/os/"&gt;OpenSolaris&lt;/a&gt;, but unfortunately the RAID controller on our server was not supported under OpenSolaris (or several other OSes as we discovered). After a myriad of different OS trials (including &lt;a href="http://www.freebsd.org/"&gt;FreeBSD&lt;/a&gt;, &lt;a href="http://www.suse.org/"&gt;SuSe&lt;/a&gt;, and &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt;), we had the most success with &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; Server. From this point I set up &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt; webserver and &lt;a href="http://tomcat.apache.org/"&gt;Tomcat&lt;/a&gt;. Installing bugzilla and subversion turned out to be pretty simple, but getting tomcat to work well with https proved a little more tricky. Once the subversion server was up, we determined that having an html browsing interface for the repositories would be great. There are plenty of commercial products for this, but I decided on &lt;a href="http://www.viewvc.org/"&gt;ViewVC&lt;/a&gt;. ViewVC even has a plugin for Hudson, although I could not get it to work without modifying my install (shame on the plugin writer! Give me a config option to change!). My goal was to have a single htpasswd file that was shared between as many services as possible. This was possible for every tool except bugzilla which has been a bit of a pain to configure. The rationale behind this goal was to pass off administration of this system to &lt;span style="font-style: italic;"&gt;anyone&lt;/span&gt;. Rather than needing to be a competent *nix administrator, a person wanting to add a new account to the build server / svn / https documents simply needs to run a handful of commands from the shell.&lt;br /&gt;&lt;br /&gt;For our continuous integration server, we went with &lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt;. Hudson has proven to be an extremely useful tool. Firstly, we were able to set up automated builds that are triggered by subversion commits. Secondly, we were able to easily tie our static analysis tool in with Hudson (through a plugin) and have it run periodically on the code base. Hudson is easily deployed via Tomcat, although again some voodoo is required to make tomcat play well with apache https access. I am particularly pleased with how much configuration and administration is possible in hudson &lt;span style="font-weight: bold;"&gt;entirely&lt;/span&gt; through the web interface. Plugins can be installed and the software can even be updated, all by clicking through a few pages in your browser.&lt;br /&gt;&lt;br /&gt;The static analysis tool we settled on was &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_X94C3f8w84U/SkqEynlYb8I/AAAAAAAAABU/2wtmQSvUhXA/s1600-h/CM+Capture+2.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 154px;" src="http://3.bp.blogspot.com/_X94C3f8w84U/SkqEynlYb8I/AAAAAAAAABU/2wtmQSvUhXA/s320/CM+Capture+2.png" alt="" id="BLOGGER_PHOTO_ID_5353237112237354946" border="0" /&gt;&lt;/a&gt;&lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt;. This tool is awesome! FindBugs is a java tool made and maintained by the University of Maryland. It is free software (&lt;a href="http://www.gnu.org/licenses/lgpl.html"&gt;LGPL&lt;/a&gt;) and it can detect all sorts of potential problems that may have otherwise eluded developers. Not only does FindBugs analyze your code, but it can also analyze dependency libraries that you provide. All of the bugs that it finds can in turn be linked back to the source code to immediately point out the problem. We found several problems that made us wonder how the affected areas EVER worked! In addition to finding potential bugs, it also helps to enforce java best practices through its style and convention warnings. Initially, FindBugs found 269 problems. Through the course of the code scrubbing we were able to reduce the number of warnings significantly. It was fun to proudly claim responsibility for a drastic drop in the graph overnight.&lt;br /&gt;&lt;br /&gt;So how does all of this affect you? We will be integrating our changes into the svn repository at the &lt;a href="https://avatars.dev.java.net/"&gt;Java.net Avatars Project&lt;/a&gt;. The current HEAD revision is 1119 on the trunk. Anything beyond this will be the result of merging our changes branch with the trunk. This includes pretty prominent API changes, so if you have code already relying on the existing avatar system, it may need to be changed to cope with revisions after 1119. Following this we will be working to roll these changes into the &lt;a href="https://wonderland.dev.java.net/index2.html"&gt;Project Wonderland 0.5&lt;/a&gt; codebase. Stay tuned for more!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-7844757556053920235?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/7844757556053920235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=7844757556053920235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/7844757556053920235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/7844757556053920235'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/06/spring-cleaning.html' title='Spring Cleaning'/><author><name>Dahlgren</name><uri>http://www.blogger.com/profile/08389150079146528291</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp3.blogger.com/_X94C3f8w84U/SA39oVh7oMI/AAAAAAAAAAM/Nl0Q183vzX0/S220/me_professional2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_X94C3f8w84U/SkqEynlYb8I/AAAAAAAAABU/2wtmQSvUhXA/s72-c/CM+Capture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-2614156587188905875</id><published>2009-06-26T16:36:00.001-07:00</published><updated>2009-06-26T16:48:04.384-07:00</updated><title type='text'>Have a great weekend!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_IfgBGy6ZMsM/SkVbnrzNtlI/AAAAAAAAABs/ihguJ0pbLgk/s1600-h/weekEnd.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 252px;" src="http://3.bp.blogspot.com/_IfgBGy6ZMsM/SkVbnrzNtlI/AAAAAAAAABs/ihguJ0pbLgk/s400/weekEnd.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5351784469530261074" /&gt;&lt;/a&gt;This week we have been cleaning up code in the Avatar Animation System, all of the "smarts" that enabled our GUI tools to manipulate this fairly complicated system on a high level are now neatly accessible through utility API... we extended the documentation of the system and of course fixed plenty of bugs :)&lt;div&gt;With this positive note we wish everyone a great weekend!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-2614156587188905875?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/2614156587188905875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=2614156587188905875' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/2614156587188905875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/2614156587188905875'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/06/have-great-weekend.html' title='Have a great weekend!'/><author><name>Souliloquy</name><uri>http://www.blogger.com/profile/05176158090295555389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_IfgBGy6ZMsM/SKEhIbok42I/AAAAAAAAAAU/-9yUOqCCMSA/s1600-R/IMAGE_023.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IfgBGy6ZMsM/SkVbnrzNtlI/AAAAAAAAABs/ihguJ0pbLgk/s72-c/weekEnd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-6776781604401456447</id><published>2009-06-19T13:24:00.000-07:00</published><updated>2009-06-19T13:29:34.897-07:00</updated><title type='text'>More Avatar options</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv1AmNNdJI/AAAAAAAAABo/DBrGzxTa_j4/s1600-h/Picture+7.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 310px;" src="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv1AmNNdJI/AAAAAAAAABo/DBrGzxTa_j4/s320/Picture+7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5349138373037356178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0n_QYNbI/AAAAAAAAABg/cEQJM16IXrY/s1600-h/Picture+4.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 310px;" src="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0n_QYNbI/AAAAAAAAABg/cEQJM16IXrY/s320/Picture+4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5349137950264800690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0nhEFo9I/AAAAAAAAABY/Nb7O6Btti-M/s1600-h/Picture+3.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 310px;" src="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0nhEFo9I/AAAAAAAAABY/Nb7O6Btti-M/s320/Picture+3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5349137942160188370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0nTrLSiI/AAAAAAAAABQ/B1c5XfstmDM/s1600-h/Picture+2.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 310px;" src="http://2.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0nTrLSiI/AAAAAAAAABQ/B1c5XfstmDM/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5349137938566040098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0m12iHwI/AAAAAAAAABI/GfntPpOuw_o/s1600-h/Picture+1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 310px;" src="http://3.bp.blogspot.com/_l4c-x4Kc_tI/Sjv0m12iHwI/AAAAAAAAABI/GfntPpOuw_o/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5349137930560610050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-6776781604401456447?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/6776781604401456447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=6776781604401456447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/6776781604401456447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/6776781604401456447'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/06/more-avatar-options.html' title='More Avatar options'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjv1AmNNdJI/AAAAAAAAABo/DBrGzxTa_j4/s72-c/Picture+7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-3718551128680191229</id><published>2009-06-18T19:00:00.000-07:00</published><updated>2009-06-18T19:12:37.853-07:00</updated><title type='text'>Our Avatars</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_l4c-x4Kc_tI/Sjrzx2DA-_I/AAAAAAAAAA4/oe9nmJkrSqo/s1600-h/AvatarParty_06.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 254px;" src="http://4.bp.blogspot.com/_l4c-x4Kc_tI/Sjrzx2DA-_I/AAAAAAAAAA4/oe9nmJkrSqo/s320/AvatarParty_06.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5348855545103186930" /&gt;&lt;/a&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 282px; height: 320px;" src="http://1.bp.blogspot.com/_l4c-x4Kc_tI/Sjrz3GuUzcI/AAAAAAAAABA/Q9nGhgTurRw/s320/CM+Capture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5348855635479154114" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-3718551128680191229?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/3718551128680191229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=3718551128680191229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/3718551128680191229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/3718551128680191229'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/06/our-avatars.html' title='Our Avatars'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_l4c-x4Kc_tI/Sjrzx2DA-_I/AAAAAAAAAA4/oe9nmJkrSqo/s72-c/AvatarParty_06.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-7727809567761664998</id><published>2009-06-16T12:10:00.000-07:00</published><updated>2009-06-16T12:13:58.785-07:00</updated><title type='text'></title><content type='html'>&lt;div&gt;Cosmic Engine 2.0, based on MTGame (multithreaded system derived from jMonkeyEngine 2.0) will be made open source and released over the next few months in modules.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More news coming soon...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-7727809567761664998?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/7727809567761664998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=7727809567761664998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/7727809567761664998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/7727809567761664998'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2009/06/cosmic-engine-2.html' title=''/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-4524369027219471101</id><published>2008-08-01T09:51:00.000-07:00</published><updated>2008-08-01T09:57:07.700-07:00</updated><title type='text'>Lost in Space</title><content type='html'>It was never my intent that once the Cosmic engine had reached the public demo status that this blog and any other public development would stop.  But it did.  This is just a short note to say that in fact this will start beginning update regularly again that amazing new things will be disclosed and discussed here about coming updates to the Cosmic engine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-4524369027219471101?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/4524369027219471101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=4524369027219471101' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/4524369027219471101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/4524369027219471101'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2008/08/lost-in-space.html' title='Lost in Space'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-115258093197572808</id><published>2006-07-10T18:04:00.000-07:00</published><updated>2006-07-13T13:09:16.896-07:00</updated><title type='text'>Cosmic Engine Demo Release</title><content type='html'>&lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Well our beta is finally live.  You can give it a whirl at:&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;&lt;a href="http://www.cosmicbirdie.com/"&gt;www.cosmicbirdie.com&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;What can it say?  Well I'll start with the bad (since that is what most people will notice first) and then get to the good.&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Bad:&lt;/p&gt;&lt;p style="margin-bottom: 0in; font-family: arial;"&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;There's no game. Yeah it's a engine demo, 'nuff said.  Check back for more game later.&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in; font-family: arial;"&gt;It's buggy, oh yeah, it's beta.  Beta = buggy.  Any bug you find, we already know about it :-)  Putting this out was an effort in developmental transparency.  We wanted to get it out there to the people, it's been in closed rooms for what seems like forever.&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Speaking of transparency...&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Transparency isn't completely correct yet, most noticeably in the opening sequence when the text panel comes down.  Oh well that was a late addition.&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;There is no networking. WHAT you say?! That's right single player only (if you can even call it that).  Again this is because we set a deadline to make it public and that had to be turned off until we can set up a server to connect to.  As I wrote before, we are using DarkStar and our object message layer, so the networking is working fine.  THE DarkStar Man (&lt;a href="http://blogs.sun.com/gameguy"&gt;Jeff K&lt;/a&gt;.) is getting close to allowing us to hijack some Sun server loving, so networking will mark the next major milestone public release (and actually introduction playability as a game feature!)&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Performance.  There is ONE huge performance issue and here it is.  Because the ground is deformable, and I needed to work on adding features vs. this fix, all the geometry is dynamic all the time.  That is, it all must be moved across the bus and therefore certain views on certain hardware really hangs.  When the world is all static, 60hz is cleared on all target hardware, but as posted it's gonna slow down sometimes.  This is the biggest performance killer and it is an issue in how I am using Java3D.  The world needs to be set up not using J3DBuffer (NIO) or with a different J3D hint or something.  One reason I really wanted to get this out was so I could bother J3D guys about this one issue.&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Good:&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;X3D exports and loader are working famously, thanks much again to &lt;a href="http://www.flickertail.net/"&gt;Aaron &lt;/a&gt;and his &lt;a href="http://rawkee.sourceforge.net/"&gt;RawKee&lt;/a&gt; Maya X3D exporter.&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Physics and collisions.  They work for about 99% of the possible execution paths.  That is, you CAN break it if you try.  This is the kind of thing that just gets ever refined test after test.  If you want to break it, try this.  Hold down the &lt;ctrl&gt; key while driving. Maybe jump sometimes. Rise, Repeat.&lt;/ctrl&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Particles.  They work and are efficient.  They need more ark work and all the characters still have the same green feathers.  That's just dumb, I'll to get on fixing that one.&lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Deformable world.  Yeah baby, you can deform ANYTHING in the world. And you can break it up bad too, there is no limit. So this can bust collision, screw up physics, all that.  By the way, “r” reloads the world, i.e. Undoes your damage if you want to keep testing with out a complete exit/restart.&lt;/p&gt;&lt;p style="margin-bottom: 0in; font-family: arial;"&gt;The glow effect on the ground under the gryos.  This is was an important effect because it works basically like (fake) shadows would and shows a decent graphically capability.  I don't know of another J3D demo that shows that and its' too bad.  BTW you can toggle that with "o" (actually I just changed that, but I'll put it back tomorrow)&lt;br /&gt;&lt;/p&gt;   &lt;p style="margin-bottom: 0in; font-family: arial;"&gt;Many others too numerous to mention and that nobody cares about so I'm done for now.  Of course I'll be posting all kinds of fixes from here on out so you can watch these things slowly melt away in the near future, but in the meantime get over there and blast some space avian tail feathers!&lt;/p&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-115258093197572808?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/115258093197572808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=115258093197572808' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115258093197572808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115258093197572808'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2006/07/cosmic-engine-demo-release.html' title='Cosmic Engine Demo Release'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-115213809782807694</id><published>2006-07-05T15:16:00.000-07:00</published><updated>2006-07-05T16:50:25.626-07:00</updated><title type='text'>Cosmic Engine Demo Release Date Set</title><content type='html'>&lt;div style="font-family: arial;" class="quoteheader"&gt;&lt;a href="http://www.javagaming.org/forums/index.php?topic=14298.0"&gt;Quote from: kevglass on &lt;b&gt;Today&lt;/b&gt; at 01:34:04 PM&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: arial;" class="quote"&gt;3) Cosmic Birdie Demo - now I've played this, and its fun! Are we going to see the GDC/JavaOne demo release any time soon?&lt;br /&gt;...Kev&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Yes.&lt;br /&gt;&lt;br /&gt;I guess I can say this now, there will be a semi-public release after this holiday week. So I'll go ahead and commit it to Monday, July 10th.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;A couple notes though...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;This will be single player only with very little "game".  That is, the build will not allow networked play isn't really set into gmae round format.  It's "open" play in an arena level.  There are many reasons for this, but the main reason is for testing purposes.  Most people that will be testing will only need to get in and out and see what's happening with the graphics, physics, collision, motion, UI, and gameplay elements.  Also, the connecting and hosting UI is a mess and unusable for all but the internal team.  The next major public release will have playable networking.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-115213809782807694?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/115213809782807694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=115213809782807694' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115213809782807694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115213809782807694'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2006/07/cosmic-engine-demo-release-date-set.html' title='Cosmic Engine Demo Release Date Set'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-115159203363439002</id><published>2006-06-29T07:27:00.000-07:00</published><updated>2006-06-29T12:51:40.526-07:00</updated><title type='text'>Particle-Text System Update</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imilabs.com/Images/CB-text-sequence.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://imilabs.com/Images/CB-text-sequence-SM.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;It's been over a week since I posted about our text overlay system in development so I thought I would at least put up a quick update for the rest of the team and others interested out there.&lt;br /&gt;&lt;br /&gt;I have more than a simple prototype up and running and testing has moved from our engine viewer to the actual game run-time.  There was many interesting and nasty details to work out to get this into a usable "TextPanel" type object structure, and perhaps I will post about them sometime, but I doubt it :-).&lt;br /&gt;&lt;br /&gt;Anyway, I have the particle-text in panels that animate out into view and flip up (or could animate just about anyway we like).  Check out the sequence of screenshots showing this effect (click it for the full size image).  At this point I will be putting this aside now and moving back to finishing of the single player beta that needed this system for training messages, etc.&lt;br /&gt;&lt;br /&gt;I hope to put out the playable tech/demo after July 4th week.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-115159203363439002?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/115159203363439002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=115159203363439002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115159203363439002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115159203363439002'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2006/06/particle-text-system-update.html' title='Particle-Text System Update'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-115089304787457640</id><published>2006-06-21T03:38:00.000-07:00</published><updated>2006-06-22T09:06:29.536-07:00</updated><title type='text'>The Art and Science of Wheel Invention</title><content type='html'>&lt;span style="font-family:arial;"&gt;        I a&lt;span style="font-family:arial;"&gt;m getting closer to revisiting my first post but until then here are thoughts on my latest task...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;    - A word of caution, todays post makes heavy use of &lt;/span&gt;&lt;i style="font-family: arial;"&gt;italics,&lt;/i&gt;&lt;span style="font-family:arial;"&gt; “quotes”, gratuitous use of the words invent and wheel, and other devices (like this) to denote tone; this is a very vocal post because there is collision in terms between concrete and abstract throughout. I apologize in advance that I couldn't recite it to you personally.&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;        “&lt;/span&gt;&lt;a style="font-weight: bold; font-family: arial;" href="http://en.wikipedia.org/wiki/Reinventing_the_wheel"&gt;Reinventing the wheel&lt;/a&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt; is BAD!  Bad I tell you!” &lt;/span&gt;&lt;span style="font-family:arial;"&gt;(it's been pointed out since I first posted this that often someone telling you that is selling something)&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Well, &lt;/span&gt;&lt;i style="font-weight: bold; font-family: arial;"&gt;I&lt;/i&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt; won't tell you, but everyone else will. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;(&lt;a href="http://www.journalhome.com/codecraft/11785/"&gt;neither will this guy&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        I think the phrase "You shouldn't reinvent the whee&lt;/span&gt;l" (or something similar) is the real issue. To correctly apply the analogy of wheel production, I think what developers actually do is re&lt;i&gt;make a&lt;/i&gt; wheel, not re&lt;i&gt;invent&lt;/i&gt; the whole of the concept of a wheel (&lt;a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29"&gt;design patterns&lt;/a&gt; are more like inventing wheels, implementing the pattern is more like making wheels)&lt;br /&gt;&lt;br /&gt;And remaking a wheel is just fine.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    For artists this idea doesn't apply very often. Why is that? Are they naturally less likely to reinvent? No, it's simply because they don't equate making a new character (or “art”) as re&lt;i&gt;inventing&lt;/i&gt;&lt;span style="font-style: normal;"&gt; characters (or “art”).  They have the &lt;i&gt;idea&lt;/i&gt; of character in mind already, they just need to make a specific character (or object or world). Rarely does an artist reinvent &lt;/span&gt;&lt;i&gt;character&lt;/i&gt;&lt;span style="font-style: normal;"&gt;, and if they really did that, I can't see that as bad, that seems like a really amazing, interesting achievement.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-style: normal;"&gt;The problem is our game engine needs a decent glyph font overlay system. We've had overlays in different forms for a long time (items, speedometer, map, etc), but not an honest-to-goodness, any string, print to the screen, glyph-based text &lt;span style="font-style: normal;"&gt; (&lt;a href="http://www.angelcode.com/products/bmfont/"&gt;great texture tool for this&lt;/a&gt;) &lt;/span&gt;display needed for game-to-player messages. This project at the game level has reached an impasse and a text overlay system must be added. (many developers may be thinking, "you didn't have text overlays done yet! why am I reading this guy's crap!" but the fact is the overlay system had done the job for many demos in the past and did the job for the existing  game design.  It's true however that for a reusable engine this is desirable but then each game often reimplements at least part of this to make it totally customized - barring the small growth of UI middleware, but I digress...)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    And then there's that whole inventing of the wheels thing.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    So I searched, hunted, downloaded, tested; if you are a developer on the 'net these days you know the drill. Fortunately for me I only spent a good day on this process, having repeated this so many times before for other needed components I've learned to give up quickly (yet another form of reinventing the wheel, the wheel of finding wheels).  So you probably guessed it, I went ahead against all that is holy in the world of code and dogma, and...wait for it... REINVENTED the $%#%&amp;@ wheel. (this is not technically correct as per my opening remarks because I know what I wanted/needed, a glyph font overlay system which is the idea of “wheel” - but I just will have to write it - remake A wheel)&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;As usual in my experience when given enough time to really imagine and think about the problem, I start to mentally construct the wheel using some of what I know I have, extending that, moving things around, and above all &lt;i&gt;imagining&lt;/i&gt; the final product.  While dreading this diversion from my other seemingly more important development duties, I stumble upon a particular effect (this is in my imagination, mind you) that is so interesting, so compelling, so FUN that it really begins to drive my motivation.  And it reveals a solution path that in the end is far better than any other system I managed to examine earlier.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    When the player is done reading the glyph font messages, I want them to fall out of the box/bubble/overlay container right onto my character's head. That's it. It's so simple to state and imagine.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    Not so simple to code. Hmmmm, unless I use our particle system as the basis for the font system which is an obvious choice when you imagine a bunch of letters falling, which is exactly a particle system.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    And that is exactly what I did.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.imilabs.com/Images/CB_text_test_copy.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.imilabs.com/Images/CB_text_test_copy_SM.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imilabs.com/Images/CB_text_test_copy.jpg"&gt;Large image&lt;/a&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;    This series of images shows the text in action.  The first frames show the text typing out to the overlay area (which is the whole screen here) in 2D as expected.  Then I trigger the conversion to 3D space (each letter is a 3D particle but in screen space to start, so for example, t&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;he Z coordinates are 0.0).  The particles are unprojected out into 3D space (instantaneously, visually there is no change)  which ultimately means they move, scale and start falling, and then interacting with the game.  This effect is nearly as I want (the final version will have collision with the character so they can get annoyed but this behavior) and it could be called &lt;a href="http://www.allrpg.com/editorials/metagaming.php3"&gt;metagaming,&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.allrpg.com/editorials/metagaming.php3"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.gameology.org/node/578"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;like this.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;    So I have plenty of work still to do to get it really usable, and then even more to production level.  On the way though, my particle system has had a bit of an overall with many improvements and more to come to support the text system.  Incidentally, this isn't a all-equal size letter system like most.  Because of that nice &lt;a href="http://www.angelcode.com/products/bmfont/"&gt;AngelCode&lt;/a&gt; tool that properly packs the letters AND gives you the character data needed to lay them out, the visual quality is quite good.  &lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;    And I got to learn about &lt;a href="http://en.wikipedia.org/wiki/Kerning"&gt;kerning&lt;/a&gt;, which I'd never heard of and didn't know about, and gained me a bit more respect for people that work with fonts regularly.  There is a secret complexity and elegance there hidden away that you experience directly but never really know about – very much like code often has.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;    And in some since I reinvented the wheel.  I mean I &lt;i&gt;really&lt;/i&gt; reinvented the wheel.  I'm sure there are games that have this text effect, but I was not aware of them.  So since I was forced (choose?) to remake the wheel and having not really known the invention well and in going through the process I ended up with something a little different, but what I wanted none-the-less.  In fact, trying to get this effect with other systems was not possible.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;    So, it's true, we should try not to reinvent wheels.  &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;    Remaking them is just fine and often yields a better wheel.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;    And sometimes it really pays to remake a wheel because you just might reinvent it. (your mileage may vary)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-115089304787457640?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/115089304787457640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=115089304787457640' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115089304787457640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115089304787457640'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2006/06/art-and-science-of-wheel-invention.html' title='The Art and Science of Wheel Invention'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-115003673225517563</id><published>2006-06-11T07:38:00.000-07:00</published><updated>2006-06-12T04:54:22.010-07:00</updated><title type='text'>More on composite vs. inherited game objects</title><content type='html'>&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Hello again,&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;I will continue the interview form post I started last time soon. But since then I have been asked a few interesting questions about engine development in the JavaGaming.org forum so I will post an answer (at least part of it) here. &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;Here is the question that was posted (unedited):&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;The one that particularly got my attention was ww.gamearchitect.net one with the 3 series on scenegraph objects and such. It seems to me that most, if not all, of his concerns stem from bad design. For example "&lt;/span&gt;The Diamond of Death. What do you do if trigger objects are derived from game objects, and dynamic objects are derived from game objects, but you want a dynamic trigger object?"&lt;br /&gt;&lt;br /&gt;Why would a trigger be in the same group as a mesh or a skinned character? Technically, they are both "game object"(s); your just costing yourself unnecessary overhead...&lt;br /&gt;&lt;br /&gt;In the second GameObjects blog/article, he says "Using a directed acyclic graph instead of a tree, you can share objects and animation state across multiple locations in your world" which only begs the question, what is the difference between a directed acyclic graph and a tree? Conventional trees *are* directed acyclic graphs from what I have understood.&lt;br /&gt;&lt;br /&gt;"You'll have the same problem animating control points for higher-order primitives. Height fields, lights, volume fog and shadows are similarly likely to end up being awkward special cases.". Those seem to fit quite elegantly in the scheme of things from what ive read and seen...&lt;br /&gt;&lt;br /&gt;Apologies if it seems like ive put his blog/article under a microscope, but Im in the middle of making my own game engine and I thought i had the scenegraph element well and truly finished  &lt;img src="http://192.18.37.44/forums/Smileys/classic/smiley.gif" name="Graphic1" alt="Smiley" align="bottom" border="0" height="15" width="15" /&gt;&lt;br /&gt;&lt;br /&gt;PS. the reason I got Java involved in this because he mentions multiple inheritence in a few places&lt;/blockquote&gt; &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;And now my response...&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;As mentioned in the opening of the forum link I posted, try to get a hold of:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;"In the latest GameDeveloper Mag (March 2006), there was an article by Mick West titled "Evolve Your Hierarchy: Refactoring Game Entities With Components"....."&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;The article was one of the best short pieces on what I am talking about and what can be done.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;The component model doesn't really have anything to do with a scene graph (at least not directly) or Java. I use Java3D, which is a scene graph the rendering system, but my game objects are composite "groups"(the whole game object thing kind of gets blurry in the component model which is one reason why developers can be resistant to it). Of course there is some inheritance, you have to have it at least for consistent abstract object handles, but what you think of a "player" is no longer a game object type or even an object and behavior objects. It's a lose collection of components that do small independent parts and often don't even know about each other.  Inheritance (and multiple-inheritance are not used and/or needed).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;But I think the major different from a programmers perceptive is this; the game object (player, item, whatever) is not a class that is made in code at &lt;i&gt;compile-time&lt;/i&gt;, it is a collection of &lt;i&gt;run-time&lt;/i&gt; connected components. The compile-time vs. run-time change is felt the most in code since you can no longer go look up your player class and mess with it. You have to think differently about how to make objects and things happen. &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;The other reason for doing this is not obvious until you have a large enough game with inherited game objects and you start having difficulty deriving new types. With the component model you can "derive" (or in this case combine to form) new types at run-time, or load time, or and here's the real concrete direction for this, with scripts at run-time (or from a GUI tool that makes scripts and/or configuration files). That is the real key because as the inheritance system grows it gets heavier and heavier and slower, like quicksand, to develop with. It's a strange paradox as you have more capabilities in your engine it gets harder to use them (and this is especially true for a game logic programmer working atop this mess).&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;The component model (when done well) gets back development speed and versatility as well as adding in new run-time capabilities.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:arial;"&gt;How &lt;i&gt;exactly &lt;/i&gt;does it get back development speed and versatility? The short answer is it just does. The long answer will have to wait for another day.&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-115003673225517563?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/115003673225517563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=115003673225517563' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115003673225517563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/115003673225517563'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2006/06/more-on-composite-vs-inherited-game.html' title='More on composite vs. inherited game objects'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29472686.post-114986620138453668</id><published>2006-06-09T06:38:00.000-07:00</published><updated>2006-06-09T10:32:59.313-07:00</updated><title type='text'>Let us begin</title><content type='html'>&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;Introduction&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;Hello,&lt;br /&gt;This is my blog.&lt;br /&gt;More specifically this is my blog about developing the Cosmic Game Engine.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Even more specifically, this is my journal about the process of developing the &lt;i style=""&gt;Java&lt;/i&gt; based Cosmic Game Engine as an &lt;i style=""&gt;independent&lt;/i&gt; game developer at &lt;a href="http://imilabs.com"&gt;Immediate Mode Interactive (IMI)&lt;/a&gt; while also teaching the course in Engine Development in the Game Developement degree program at &lt;a href="http://www.fullsail.com"&gt;Full Sail&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    Ok, enough of that…&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    The reason I am making this blog is that often I go long periods of time without significant news to my associate developers as well as my virtual partners out on the ‘net while digging deep in the development pits.&lt;span style=""&gt;  &lt;/span&gt;Unfortunately silence does not imply activity, and so often it can seem as though I am off doing nothing (or something else) when in fact I am STILL working on the same project, but probably just more so!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    To begin with, I will make this post to bring everyone up to speed on what has been going on recently.  I will not give a complete history (perhaps someday) here, but just cover basically what has been happening since GDC of this year as that was the last major time most everyone involved or interested got caught up on this project.&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    As a general warning, this blog will probably get fairly technical from time to time, but for the most part it should be digestible by most of the people with which I am in regular contact.&lt;span style=""&gt;  &lt;/span&gt;It may at times also get “personal”, that is, I may need to explain some personal life activities/events since I am using some of that time developing this engine and sometimes THAT time will win out, for example weekends…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    For this first post, instead of just blabbing about what’s going on which for me tends to run on and on, and divert to tangents often confusingly, I have decided to try a different style.&lt;span style=""&gt;  &lt;/span&gt;I am going to write this in an interview format, that is, as if someone was interviewing me about the project.&lt;span style=""&gt;  &lt;/span&gt;Since I AM that someone interviewing me, the questions will be contrived, “loaded” and probably leading, but then that’s how I converse much of the time (a skill I developed from being a Full Sail teacher for 8 years).&lt;span style=""&gt;  &lt;/span&gt;One reason to do this is so that you can skip areas that aren’t of as much interest to &lt;span style="font-weight: bold;"&gt;you&lt;/span&gt; just by reading the question for that section.&lt;span style=""&gt;  &lt;/span&gt;Another reason is, it just seemed easier to write it that way today since I have so much to tell and it needs to be very organized to get it all out clearly and as concisely as possible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;Ok with all that said let’s begin&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;So what have you been working on since the GDC demo this year?&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    Several different components needed to finalize the Cosmic engine for the Cosmic Birdie racing combat game as well as a bit of the game code itself in an effort to complete a full release in time for the IGF in September.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Can you expand on which components you’ve been working on?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    In particular the networking has been my major effort since GDC although, there has been physics and collision work (mostly bug fixes and optimizations) as well as weapons fixes and allot of general refactoring hacky game objects into a better framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Ok then, what exactly is going on with the networking?&lt;/span&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    At GDC we showed our Cosmic Birdie demo running on the &lt;a href="https://games-darkstar.dev.java.net/"&gt;Sun Game Server (DarkStar)&lt;/a&gt;.&lt;span style=""&gt;  &lt;/span&gt;At that point it really was hacked into our game in no real scalable and/or extensible way.&lt;span style=""&gt; &lt;/span&gt;I basically got it working and that’s it.&lt;span style=""&gt;  &lt;/span&gt;Since then I have completely replaced any networking code from that demo with a more (...i..n..h..a..l..e...) production ready object based network messaging layer built on top of DarkStar.&lt;span style=""&gt;  &lt;/span&gt;Additionally, the core of this messaging system is local (not networked) and object based and is now used throughout the Cosmic engine code base.&lt;span style=""&gt;  &lt;/span&gt;This was part of a larger effort of converting the original hierarchical game object system to a more component based system like so many &lt;a href="http://www.gamearchitect.net/Articles/GameObjects1.html"&gt;other&lt;/a&gt; &lt;a href="http://www.drizzle.com/%7Escottb/gdc/game-objects_files/frame.htm"&gt;game&lt;/a&gt; &lt;a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=378753&amp;PageSize=25&amp;amp;WhichPage=1"&gt;engines&lt;/a&gt; have done.&lt;span style=""&gt;  &lt;/span&gt;That was also done since GDC.&lt;span style=""&gt;  &lt;/span&gt;That was the most entertaining part of this work because, basically when you make that kind of conversion it breaks everything for awhile, and it did (laughs).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    Additionally, getting the networking &lt;i style=""&gt;working&lt;/i&gt; means several things.&lt;span style=""&gt;  &lt;/span&gt;There are run-time game object communications (which get the focus allot of the time) but there is also the managing of the connections and player-game and entity creation.&lt;span style=""&gt;  &lt;/span&gt;DarkStar does some amazing server side stuff for you, almost none of which Cosmic Birdie (being a more player to player style game in this incarnation) takes advantage of now.&lt;span style=""&gt;  &lt;/span&gt;In fact in the latest build, CB runs against the public DarkStar release (using the MatchMaker, more on that later) with NO SERVER SIDE code added.&lt;span style=""&gt;  &lt;/span&gt;In the GDC build, we had a small server-side class handing out some IDs for the game but it was just hacked in that way.&lt;span style=""&gt;  &lt;/span&gt;After the refactoring and some development, I got the clients to operate as true P2P style clients, they just need the connection.&lt;span style=""&gt;  &lt;/span&gt;In the end, I’m sure we will be using some of the server-side stuff because we would really like to do some of the game object simulations there, and move towards a more persistent level sometime.&lt;span style=""&gt;  &lt;/span&gt;For this release though, we are not planning on that.&lt;span style=""&gt;  &lt;/span&gt;The game is meant to be as simple and fun as possible, with as little “jump-in cost” as possible, whether that be in learning curve, time to play etc, the typical constraints of a causal game.  I should say that althought this &lt;span style="font-style: italic;"&gt;game&lt;/span&gt; is meant to be causal, the &lt;span style="font-style: italic;"&gt;engine &lt;/span&gt;is being developed with the intent of much more complex and larger scale games.  The engine is the major effort because it will be the core technology that IMI will use for all future game development.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;Alright, then what is the current state of development?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;    Well, a complete report will be to long here and will have to come in pieces across several bogs.  Focusing on the networking part, within the last 24hrs I got the example MatchMaker code provided by the DarkStar group integrated and working with CB.&lt;span style=""&gt;  &lt;/span&gt;This was a major milestone and another reason I stopped to do this blog now.&lt;span style=""&gt;  &lt;/span&gt;We have a development environment where we have a running and dedicated server that we can test on or off the ‘net as well as a network of test machines for the clients.&lt;span style=""&gt;  &lt;/span&gt;For me, as a non-funded indie developer, that was a major accomplishment and this means several things that I will jot down in a bulleted form:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;For the server:&lt;/span&gt;&lt;/li&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;We have the latest DarkStar configured and running on the server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li&gt;We have a working build environment for server development as well as having had great support from the DarkStar team.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family:arial;"&gt;For the clients:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;We have our client working on the dedicated client machines.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;We have a working build environment for client development.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;The collection of Java APIs alone can be a real headache here sometimes (this is one of the reasons we decided to dump &lt;a href="https://joode.dev.java.net/"&gt;JOODE&lt;/a&gt; long ago), but the major ones, such as Java3D and DarkStar, are in good working order and stable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;Our in-house APIs have stabilized quite a bit, and for the scope of this game look to be nearing feature completeness with the exception of the animation system and sound f/x.&lt;span style=""&gt;  &lt;/span&gt;It seems as though the animation system will never be done to my liking :-) and  there is bascially no sound work done at this point, code or assests.&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-family:Arial;"&gt;    We have the MatchMaker client code hooked into the CB client.&lt;span style=""&gt;  &lt;/span&gt;I say hooked in because it will need allot of work to get it to production but it does work properly as far as I have been able to test.&lt;span style=""&gt;  &lt;/span&gt;After a little be more testing and such (I am hoping within a week) I should be able to set up a new release on the &lt;a href="http://www.immediatemodeinteractive.com/"&gt;IMILabs.com&lt;/a&gt; web site for beta testing among friends.&lt;span style=""&gt;  &lt;/span&gt;This will be the first really serious beta test of the project as a whole.&lt;span style=""&gt;  &lt;/span&gt;I imagine it will be pretty ugly, but I am still very much looking forward to it!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;                &lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;OK, well this has gone on long enough for now...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;Yes, I agree, this was a good start but there is much more to tell, let’s continue this interview in our next post!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;"&gt;L8r&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29472686-114986620138453668?l=cosmic-game-engine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cosmic-game-engine.blogspot.com/feeds/114986620138453668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29472686&amp;postID=114986620138453668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/114986620138453668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29472686/posts/default/114986620138453668'/><link rel='alternate' type='text/html' href='http://cosmic-game-engine.blogspot.com/2006/06/let-us-begin.html' title='Let us begin'/><author><name>Shawn Kendall</name><uri>http://www.blogger.com/profile/01720969435651957513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://imilabs.com/Images/shawn_kendall.jpg'/></author><thr:total>0</thr:total></entry></feed>
