<?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-8910792561448956603</id><updated>2011-08-03T09:42:55.141-07:00</updated><category term='space'/><category term='server'/><category term='flash'/><category term='puremvc'/><category term='tile based'/><category term='papervision'/><category term='actionscript'/><category term='smartfox'/><category term='demo'/><category term='3d'/><category term='tile engine'/><category term='as3'/><title type='text'>AS3 Tile Engine Dev</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-5750763621986683394</id><published>2010-04-21T19:03:00.000-07:00</published><updated>2010-04-21T20:01:01.922-07:00</updated><title type='text'>Counting down.</title><content type='html'>The countdown to the Nadir beta is underway, but in the mean time, we are able to show you some of the new updated graphics. This week, we will be busy updating some of the games environments. Previously, the environment textures in our original examples had been created by another artist and had been used to create a proof of concept. They were always going to change and when we did update them, we were able to create a much deeper, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;immersive&lt;/span&gt; environment. This was mostly due to the increase in the environment resolution. Fig. 1. shows a Nebula scene with an enemy ship ahead.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_akxhGrxyBMc/S8-ym2XZijI/AAAAAAAABQw/7S6p8_fi6us/s1600/new_nebula_texture.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 148px;" src="http://2.bp.blogspot.com/_akxhGrxyBMc/S8-ym2XZijI/AAAAAAAABQw/7S6p8_fi6us/s200/new_nebula_texture.png" alt="" id="BLOGGER_PHOTO_ID_5462781253522131506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Fig. 1. Inside a gas giant with a ship in the distance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We are also beginning to add graphics to our menu screens. We wanted a subtle yet engaging title screen so after some initial designs we were able to create some concept art for the title screen. We wanted movement in this screen so we have used a filter to provide a subtle overlaying motion effect. Fig. 2. shows our initial title screen concept art.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/S8-wxyWGGjI/AAAAAAAABQo/HdfoofEIa7A/s1600/title_screen.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/S8-wxyWGGjI/AAAAAAAABQo/HdfoofEIa7A/s200/title_screen.png" alt="" id="BLOGGER_PHOTO_ID_5462779242398226994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Fig. 2. Concept art for the Nadir title screen&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We have started work on the concept art for the HUD. We wanted to get a modern or futuristic feel to the HUD so we started looking at some of the new laser technologies being used in modern cars. We also looked at some of the movie interpretations of futuristic HUD interfaces and decided that we would try to get the feeling that the HUD was being projected onto the inside of your cockpit windshield. We really liked the effect of a semi transparent, neon hue and this started to evolve into the following concept screenshot, Fig. 3.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/S8-1oc6897I/AAAAAAAABQ4/JeqAVCIIghI/s1600/further_hud_design.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 112px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/S8-1oc6897I/AAAAAAAABQ4/JeqAVCIIghI/s200/further_hud_design.png" alt="" id="BLOGGER_PHOTO_ID_5462784579586553778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Fig. 3. Developing the HUD&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We want to thank everyone who has already contacted us about our beta program, I suspect that you guys will be beating us at our own game in no time. There are still available beta test slots open for anyone who would like to join in with us from June 1st 2010. To be part of the beta testing team, simply drop us an message from this &lt;a href="http://digital-glue.com/contact.php"&gt;contact form&lt;/a&gt; and we will get back to you.&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Paluk&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-5750763621986683394?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/5750763621986683394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2010/04/counting-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/5750763621986683394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/5750763621986683394'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2010/04/counting-down.html' title='Counting down.'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_akxhGrxyBMc/S8-ym2XZijI/AAAAAAAABQw/7S6p8_fi6us/s72-c/new_nebula_texture.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-3958387914655200363</id><published>2010-04-14T16:48:00.000-07:00</published><updated>2010-04-14T18:13:32.318-07:00</updated><title type='text'>Nadir Beta Testing Announcement</title><content type='html'>Today, I am happy to announce that, as described in our previous post, we have been working on a new browser title. This game is called &lt;span style="font-weight: bold;"&gt;Nadir&lt;/span&gt; and is a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;multi player&lt;/span&gt;, 3D space shooter where you take control of a space craft and engage in a dog fight style battle in timed rounds.&lt;br /&gt;&lt;br /&gt;Luckily for you, we have decided to conduct open beta testing of the game from the 1st June 2010.&lt;br /&gt;&lt;br /&gt;If you are interested in becoming a beta tester, you my apply by dropping us a message (including a contact address) at our &lt;a href="http://digital-glue.com/contact.php"&gt;contact page&lt;/a&gt;. A shortlist will be made and, if successful we will send you instructions of how to access the game, along with your username and password.&lt;br /&gt;&lt;br /&gt;To give you an idea of the game (very early and poor quality), here is the game in action: &lt;a href="http://www.youtube.com/watch?v=v7QUBAdTdTo"&gt;http://www.youtube.com/watch?v=v7QUBAdTdTo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Paluk&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-3958387914655200363?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/3958387914655200363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2010/04/nadir-beta-testing-announcement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/3958387914655200363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/3958387914655200363'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2010/04/nadir-beta-testing-announcement.html' title='Nadir Beta Testing Announcement'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-7026088256777894246</id><published>2010-04-13T04:42:00.000-07:00</published><updated>2010-04-14T15:00:48.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puremvc'/><category scheme='http://www.blogger.com/atom/ns#' term='smartfox'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='space'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Sharp shooter</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_akxhGrxyBMc/S8RZBNKKOSI/AAAAAAAABPw/V9VX96m6Ruk/s1600/ship_complete.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 122px;" src="http://1.bp.blogspot.com/_akxhGrxyBMc/S8RZBNKKOSI/AAAAAAAABPw/V9VX96m6Ruk/s200/ship_complete.png" alt="" id="BLOGGER_PHOTO_ID_5459586525526898978" border="0" /&gt;&lt;/a&gt;After a development delay making my own C.V. website, teaching some programming and doing a short contract. I am currently learning the more in depth workings of the Smartfox Client Server technologies and I have decided to create an initial, smaller, more simple game, to better understand the development process of creating such a large Flash project on my own.&lt;br /&gt;&lt;br /&gt;I have based my initial game design on a multi player dog fight, where users log in, enter or create a new game room and then fly around and shoot their opponents. This will make use of some of the core technologies that I will base my time based game on. The games are timed and a user may enter the game at any time during an air battle, similar to the technique used in games such as the multi player, Call of Duty 4. I have used the PureMVC framework to create my overall architecture, Smartfox for the back end comms, I have included database drivers and written custom log in and server side extensions. For the 3D ships, I created a low poly ship in Blender, exported it as a 3D Studio Max model. I then textured it in Paint Shop Pro 7.04.&lt;br /&gt;&lt;br /&gt;The server is now communicating positional data to all other users in a given room, this will allow the simple interpolation of positional values since there are no obstacles within this space environment.&lt;br /&gt;&lt;br /&gt;The most difficult part up to now has been PureMVCs state machine integration, since I think it has a relativly steep learning curve, however once mastered, it's invaluable. Smartfox is great, but lacks a neat way of handling event objects without wrapping existing SFSEvent objects. This makes it neccessary to know (or learn) the SFSEvent objects' API, since there is no auto completion for this type of object in FlashDevelop.&lt;br /&gt;&lt;br /&gt;Overall, creating such an advanced game in Flash is proving to be very enjoyable. I am having fun working on it, I'm learning alot and everything seems to be on track and will, undoubtably, be a great first step to bringing these technologies together for my MMORPG.&lt;br /&gt;&lt;br /&gt;I have included a few screen shots of my development process below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_akxhGrxyBMc/S8RgCnV4kVI/AAAAAAAABQQ/HJRslBz45qg/s1600/ship_texture_design2.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 112px;" src="http://1.bp.blogspot.com/_akxhGrxyBMc/S8RgCnV4kVI/AAAAAAAABQQ/HJRslBz45qg/s200/ship_texture_design2.png" alt="" id="BLOGGER_PHOTO_ID_5459594246316659026" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_akxhGrxyBMc/S8Re9hCdnBI/AAAAAAAABP4/2ReK6kvZY_c/s1600/comms_screenshot3.png"&gt; &lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_akxhGrxyBMc/S8RfSejygxI/AAAAAAAABQA/Oy1o25Um_oc/s1600/browser_join_game.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/_akxhGrxyBMc/S8RfSejygxI/AAAAAAAABQA/Oy1o25Um_oc/s200/browser_join_game.png" alt="" id="BLOGGER_PHOTO_ID_5459593419325342482" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_akxhGrxyBMc/S8Re9hCdnBI/AAAAAAAABP4/2ReK6kvZY_c/s1600/comms_screenshot3.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/_akxhGrxyBMc/S8Re9hCdnBI/AAAAAAAABP4/2ReK6kvZY_c/s200/comms_screenshot3.png" alt="" id="BLOGGER_PHOTO_ID_5459593059213614098" border="0" /&gt;&lt;/a&gt;  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_akxhGrxyBMc/S8RfjotBukI/AAAAAAAABQI/bnfR35z5tyw/s1600/brower_in_game.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/_akxhGrxyBMc/S8RfjotBukI/AAAAAAAABQI/bnfR35z5tyw/s200/brower_in_game.png" alt="" id="BLOGGER_PHOTO_ID_5459593714106219074" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/S8Y6zaNJ9AI/AAAAAAAABQg/D_wq742yUik/s1600/ship_in_nebula2.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 112px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/S8Y6zaNJ9AI/AAAAAAAABQg/D_wq742yUik/s200/ship_in_nebula2.png" alt="" id="BLOGGER_PHOTO_ID_5460116253115544578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Gary :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-7026088256777894246?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/7026088256777894246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2010/04/sharp-shooter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/7026088256777894246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/7026088256777894246'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2010/04/sharp-shooter.html' title='Sharp shooter'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_akxhGrxyBMc/S8RZBNKKOSI/AAAAAAAABPw/V9VX96m6Ruk/s72-c/ship_complete.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-3651504127508929541</id><published>2009-05-08T13:07:00.000-07:00</published><updated>2009-05-08T13:55:24.849-07:00</updated><title type='text'>Quick blitting, matrices and deformations</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_akxhGrxyBMc/SgSTQihcIaI/AAAAAAAABO0/1ugRDLwCrVM/s1600-h/blitting_with_deformation.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_akxhGrxyBMc/SgSTQihcIaI/AAAAAAAABO0/1ugRDLwCrVM/s400/blitting_with_deformation.png" alt="" id="BLOGGER_PHOTO_ID_5333549771067761058" border="0" /&gt;&lt;/a&gt;I've been busy working on some of the blitting techniques that I spoke about sometime earlier in this blog. I have concentrated on making things quick and flexible and arrived at a point where I can blit around 1800 tiles at 60fps using my fast drawing method or a couple of hundred tiles that can be ran through a matrix with rotations and scaling applied. There is still alot of room for optimizations in the later but I aim to have a rounded off blitting system within the next few weeks. I will be concentrating on getting some of the more advanced features impemented over this time. I will then need to make some decisions about the tile engine itself. This will include a few main areas such as the intended audience of the tile engine and its format, its requirement within my MMORPG, what technologies I wish to use along side my tile engine, such as external libraries, image creation programs and how my own workflow will benefit from these. Do I need to create custom editors and tile tools for such things as pallette mapping, how will my environments be created etc... there are many considerations.&lt;br /&gt;&lt;br /&gt;As you see in the screenshot above, I am applying tiles to a single bitmap image allowing me to do some cool things such as deformations, exporting screenshots in PNG or JPG formats and various other things usually associated with C++ development on more highend systems. I have also started to develop the time-based animation part of the library which will use trigonometry to apply velocities to entities to determin their positions using the clients maximum possible framerates.&lt;br /&gt;&lt;br /&gt;Gary Paluk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-3651504127508929541?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/3651504127508929541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/05/quick-blitting-matrices-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/3651504127508929541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/3651504127508929541'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/05/quick-blitting-matrices-and.html' title='Quick blitting, matrices and deformations'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_akxhGrxyBMc/SgSTQihcIaI/AAAAAAAABO0/1ugRDLwCrVM/s72-c/blitting_with_deformation.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-2856635488381141684</id><published>2009-04-30T05:34:00.000-07:00</published><updated>2009-05-01T06:22:31.078-07:00</updated><title type='text'>Java extensions in SmartFox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_akxhGrxyBMc/Sfmc0vxyv6I/AAAAAAAABOk/xb94t65yTXY/s1600-h/images2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 128px; height: 94px;" src="http://4.bp.blogspot.com/_akxhGrxyBMc/Sfmc0vxyv6I/AAAAAAAABOk/xb94t65yTXY/s200/images2.jpg" alt="" id="BLOGGER_PHOTO_ID_5330464063962136482" border="0" /&gt;&lt;/a&gt;So... I want to build the logic of my game on the server, it needs to be quick and I also need to access a MySQL database to store information about my players. What do I do? I could use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PHP&lt;/span&gt; / ASP etc but there is a more secure &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;option&lt;/span&gt;. These are known as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SmartFox&lt;/span&gt; extensions.&lt;br /&gt;&lt;br /&gt;Extensions for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SmartFox&lt;/span&gt; can be written in AS1, Java or Python. Since the Server itself is written in Java and I have been advised to use Java. A friend and I opened up &lt;a href="http://www.eclipse.org/downloads/"&gt;Eclipse&lt;/a&gt; and setup a new workspace, we grabbed a copy of the MySQL drivers and made an attempt to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;log in&lt;/span&gt; on my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SmartFox&lt;/span&gt; application, get data from the MySQL database and return the data to the player. After a short time we had it working. There were a few steps in order to make this happen and luckily these are outlined in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SmartFox&lt;/span&gt; Server documentation files.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Smartfox&lt;/span&gt; allows the use of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ActionScript&lt;/span&gt; objects which make moving data to and fro very neat. I think that this is an &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;extremely&lt;/span&gt; useful and powerful concept which I will continue to learn and hopefully I'll be writing the server logic to my game very soon.&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Paluk&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-2856635488381141684?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/2856635488381141684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/java-extensions-in-smartfox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/2856635488381141684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/2856635488381141684'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/java-extensions-in-smartfox.html' title='Java extensions in SmartFox'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_akxhGrxyBMc/Sfmc0vxyv6I/AAAAAAAABOk/xb94t65yTXY/s72-c/images2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-647426745615206593</id><published>2009-04-27T15:39:00.000-07:00</published><updated>2009-04-27T17:49:29.869-07:00</updated><title type='text'>Drawing API and back to PureMVC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/SfZLN3ublrI/AAAAAAAABOc/Up5dPde5Lr8/s1600-h/pure_mvc.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 144px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/SfZLN3ublrI/AAAAAAAABOc/Up5dPde5Lr8/s200/pure_mvc.jpg" alt="" id="BLOGGER_PHOTO_ID_5329529910708639410" border="0" /&gt;&lt;/a&gt;After some R&amp;amp;D of various types of tile based engines I started work on a simple bitmap drawing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;API&lt;/span&gt;. I had deduced that nearly all tile engine require tiles, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;tilesets&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;tilemaps&lt;/span&gt; so I drew up some class diagrams and started coding. As you may imagine I aim to make the tile engine render as quickly as possible so I took measures to keep things fast. First of all I did not use Sprites as the foundation of the tiles &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;in fact&lt;/span&gt; I use only one &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;display object datatype&lt;/span&gt; and that is a bitmap. The bitmap defines my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;tileset&lt;/span&gt; and stores the width and height of the tiles within it. I can create Tile objects from this class or by passing a reference of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;tileset&lt;/span&gt; to an instance of a Tile class. The tile class simply acts as a pointer on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;tileset&lt;/span&gt; meaning that a tile doesn't contain any graphic at all.&lt;br /&gt;&lt;br /&gt;I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;bench marked&lt;/span&gt; my early engine by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;blitting&lt;/span&gt; 1400 tiles of 50&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;px&lt;/span&gt; * 50&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;px&lt;/span&gt; to a secondary bitmap and got a steady 60fps on my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;dev&lt;/span&gt; machine (The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;swf&lt;/span&gt; was running at 60fps). I used a primary and secondary buffer by using the bitmap lock( ) and unlock( ) functionality. I have optimizations to make but this was a good benchmark and led me to making a demo that used large areas of alpha transparency. This also showed good performance but there is a many optimizations I wish to make so I will provide benchmark test results after I make these changes.&lt;br /&gt;&lt;br /&gt;Today I set up a new project environment in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;FlashDevelop&lt;/span&gt; and I started to work on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;PureMVC&lt;/span&gt; framework in order to create a basic structure for my game project. I also spent time looking over a couple of tutorials regarding &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;UI&lt;/span&gt; implementations since I want to build from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;FlashDevelop&lt;/span&gt; rather than having to build my app from the Flash &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;IDE&lt;/span&gt;. Even though I have worked on and contributed to the AS2 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;PureMVC&lt;/span&gt; framework,  I ported both the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;AsyncCommands&lt;/span&gt; classes and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;StateMachine&lt;/span&gt; classes from AS3 a few months ago, I do have more to learn about the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;UI&lt;/span&gt; outside of the Flash IDE and I will need to keep reading since most tutorials are written in Flex or &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_23"&gt;exceptionally&lt;/span&gt; vague.&lt;br /&gt;&lt;br /&gt;Anyway, as soon as I get the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;UI&lt;/span&gt; implementation how I want it I will start to roll out some technical demos but until then I'm going to keep reading vague tutorials until something clicks :D&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Paluk&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-647426745615206593?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/647426745615206593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/drawing-api-and-back-to-puremvc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/647426745615206593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/647426745615206593'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/drawing-api-and-back-to-puremvc.html' title='Drawing API and back to PureMVC'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_akxhGrxyBMc/SfZLN3ublrI/AAAAAAAABOc/Up5dPde5Lr8/s72-c/pure_mvc.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-1669277669760465063</id><published>2009-04-24T17:21:00.000-07:00</published><updated>2009-04-24T18:02:37.249-07:00</updated><title type='text'>Papervision + many sprites = slooooooow</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_akxhGrxyBMc/SfJbfdCaoJI/AAAAAAAABOU/mXan9EdjxiQ/s1600-h/car_crash.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 141px;" src="http://4.bp.blogspot.com/_akxhGrxyBMc/SfJbfdCaoJI/AAAAAAAABOU/mXan9EdjxiQ/s200/car_crash.jpg" alt="" id="BLOGGER_PHOTO_ID_5328421905061552274" border="0" /&gt;&lt;/a&gt;After finally getting a 300&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;tris&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;COLLADA&lt;/span&gt;&lt;/span&gt; file imported into my 3Dworld, I duplicated it about 20 times and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;immediately&lt;/span&gt; started to see a significant slowdown in the flash client. I was still running the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;skybox&lt;/span&gt;&lt;/span&gt; demo but I hadn't even added the world tiles. I had suspected that this would be the case and means that I have &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;eliminated&lt;/span&gt; the concept of using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;papervision&lt;/span&gt; to create a fully 3D tile  environment in Flash. The main reason for this is that I wish to have many sprites handled in my tile engine and lagging graphics are simply unacceptable so now I have decided to look at a few other common tile engine models. Pseudo 3D tile engines, top down perspective and an isometric perspective.&lt;br /&gt;&lt;br /&gt;I have the weekend ahead of me so I'm sure that I'll be able to get some good R&amp;amp;D done over the next couple of days. I shall be looking more into isometric engines since they are great for pseudo 3D visualization but they can also be made to run very quickly.&lt;br /&gt;&lt;br /&gt;Gary Paluk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-1669277669760465063?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/1669277669760465063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/papervision-many-sprites-slooooooow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/1669277669760465063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/1669277669760465063'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/papervision-many-sprites-slooooooow.html' title='Papervision + many sprites = slooooooow'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_akxhGrxyBMc/SfJbfdCaoJI/AAAAAAAABOU/mXan9EdjxiQ/s72-c/car_crash.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-9161206744373690181</id><published>2009-04-22T17:20:00.000-07:00</published><updated>2009-04-22T17:58:27.942-07:00</updated><title type='text'>Papervision Skybox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_akxhGrxyBMc/Se-0Wvq4GlI/AAAAAAAABOM/hfJw5C5k8hI/s1600-h/skybox.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 176px;" src="http://4.bp.blogspot.com/_akxhGrxyBMc/Se-0Wvq4GlI/AAAAAAAABOM/hfJw5C5k8hI/s200/skybox.jpg" alt="" id="BLOGGER_PHOTO_ID_5327675187049011794" border="0" /&gt;&lt;/a&gt;Tonight I set about getting the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;COLLADA&lt;/span&gt;&lt;/span&gt; model rendered in Blender. No sooner had I created my model and tried to export it, Blender popped up a message saying that I needed Python installed in order to export. I find this a bit strange since &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;COLLADA&lt;/span&gt;&lt;/span&gt; is a simple XML file so I'm not sure why this is a drama. I downloaded and installed Python and played around with the settings in an attempt to export my model. Anyway, to cut a long story short, I wasn't having any luck. Rather than not make a blog post today I continued on with a little bit of code that I wrote in my lunch break at work earlier.&lt;br /&gt;&lt;br /&gt;I had created a cube example with and I decided I would progress it into a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;skybox&lt;/span&gt; demo. The purpose of a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;skybox&lt;/span&gt; it to give a 3D panoramic view of an environment by attaching images onto the inside of a very large cube or sphere &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;primitive&lt;/span&gt;. The games 3D environment sits inside this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;skybox&lt;/span&gt; and moves relative to the player camera and never rotates. This means you can never &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;arrive&lt;/span&gt; at the face of the actual cube itself and will give the illusion that there are constant objects or scenery that appears to be very far into the distance.&lt;br /&gt;&lt;br /&gt;I started with my cube and created a materials list consisting of six panoramic images. I then mapped each image to it's relevant face on the cube. This is very simple but it is important to note that the cube must not draw the faces that might obscure your view since then you must always be looking at the inside of the box. You must also map the images to the inside faces of the cube.&lt;br /&gt;&lt;br /&gt;This was a really fun thing to do and I think it creates a great effect. It would be possible to improve this demo by changing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;viewport&lt;/span&gt;&lt;/span&gt; render modes and increasing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;tri&lt;/span&gt;&lt;/span&gt; count on the cubes polygons but I will wait till I make the real thing.&lt;br /&gt;&lt;br /&gt;Until then you can check out the demo &lt;a href="http://www.digital-glue.com/demos/pv3d/skybox/bin/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Paluk&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/8910792561448956603-9161206744373690181?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/9161206744373690181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/papervision-skybox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/9161206744373690181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/9161206744373690181'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/papervision-skybox.html' title='Papervision Skybox'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_akxhGrxyBMc/Se-0Wvq4GlI/AAAAAAAABOM/hfJw5C5k8hI/s72-c/skybox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-7328379894229086561</id><published>2009-04-21T14:32:00.000-07:00</published><updated>2009-04-21T18:29:10.245-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='papervision'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>PaperVision 3D Tile demo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/Se5MmkyAmOI/AAAAAAAABOE/e1QcAYNK--k/s1600-h/3d_environment.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 180px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/Se5MmkyAmOI/AAAAAAAABOE/e1QcAYNK--k/s200/3d_environment.jpg" alt="" id="BLOGGER_PHOTO_ID_5327279634818046178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This evening I managed to get some work done in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PaperVision&lt;/span&gt; 3D. This was really nice to play around with and obviously it gives instant visual results to marvel at. As I said in an earlier post I want to create &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;COLLADA&lt;/span&gt; models as tiles but first I thought that I might test out the initial rendering speed of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;PaperVision&lt;/span&gt; with various numbers of planes to get an idea of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PaperVisions&lt;/span&gt; rendering speeds. I was pretty happy to see that I had added 400 planes before I started to see any real &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;noticeable&lt;/span&gt; slowdown. This was somewhere in the region of what I had expected, so I'm happy with my first test results.&lt;br /&gt;&lt;br /&gt;You can see a demo &lt;a href="http://www.digital-glue.com/demos/pv3d/bin/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The above demo shows just a grid of plane primitives with random height values. I then rotate the main camera that I offset from the map slightly. I'm sure that there is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;a lot&lt;/span&gt; to learn about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;PV&lt;/span&gt;3&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Ds&lt;/span&gt; render pipelines so once I'm up to speed I might be able to make things run a bit faster but I can already see potential here to keep on experimenting. Soon, I will also look at storing tiles in proxy objects in order to cache the tile data for reuse when I come to moving the camera but my next step is to get a simple textured cube exported from Blender.&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Paluk&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-7328379894229086561?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/7328379894229086561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/papervision-3d-tile-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/7328379894229086561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/7328379894229086561'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/papervision-3d-tile-demo.html' title='PaperVision 3D Tile demo'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_akxhGrxyBMc/Se5MmkyAmOI/AAAAAAAABOE/e1QcAYNK--k/s72-c/3d_environment.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-7864337130675271248</id><published>2009-04-20T16:51:00.000-07:00</published><updated>2009-04-20T17:26:17.141-07:00</updated><title type='text'>Web Server active</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/Se0LDZTqk7I/AAAAAAAABN8/aPJLqqFsNas/s1600-h/earth_white_background.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 199px; height: 200px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/Se0LDZTqk7I/AAAAAAAABN8/aPJLqqFsNas/s200/earth_white_background.jpg" alt="" id="BLOGGER_PHOTO_ID_5326926087210046386" border="0" /&gt;&lt;/a&gt; Today I got a few hours to work on a couple of fun things. First up, I continued to get &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SmartFox&lt;/span&gt;&lt;/span&gt; server set up and had some success in making my desktop machine run as a web server. The purpose of this was to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;eliminate&lt;/span&gt; an unknown and to allow beta testers to run the tile engine application client from my web server. This was a nice move forwards since I've never set something up like this before (I had to jump through hoops with router settings &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;dyndns&lt;/span&gt;&lt;/span&gt; setting etc), but it's all working well and I got to use my amazing 'enter room' application to verify it working over the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Internet&lt;/span&gt; and some friends came and entered the room &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;lol&lt;/span&gt;&lt;/span&gt;. As you can imagine this wasn't very interactive but It didn't matter, it proved that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SmartFox&lt;/span&gt;&lt;/span&gt; Server was handling the connections as it should.&lt;br /&gt;&lt;br /&gt;Next up, relating more to the tile engine, I checked out the latest version of &lt;a href="http://blog.papervision3d.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PaperVision&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. I'm guessing that anyone reading this now may be wondering why I'm looking at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;PaperVision&lt;/span&gt;&lt;/span&gt; but I'm still exploring the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;possibilities&lt;/span&gt; of various technologies in which to base the final tile engine. I have dabbled in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;PaperVision&lt;/span&gt;&lt;/span&gt; before but only a simple tutorial but I have written a simple 3D engine before. Although it was &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;limited&lt;/span&gt; it did apply a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;transformation&lt;/span&gt; matrix to handle the vector data and camera views, it had simple back face culling and a very simple demo can be found &lt;a href="http://www.digital-glue.com/testing/test_02.swf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I will probably spend tomorrow evening attempting to export some simple &lt;a href="https://collada.org/mediawiki/index.php/Main_Page"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;COLLADA&lt;/span&gt;&lt;/a&gt; data from &lt;a href="http://www.blender.org/"&gt;Blender&lt;/a&gt;. Ideally, I hope to get some sort of simple grid array of planes rendered and if I can add a simple texture then I'll be more than happy and if I can add some movement then &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;that would&lt;/span&gt; be even better. I'll keep you posted.&lt;br /&gt;&lt;br /&gt;Gary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Paluk&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-7864337130675271248?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/7864337130675271248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/web-server-active.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/7864337130675271248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/7864337130675271248'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/web-server-active.html' title='Web Server active'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_akxhGrxyBMc/Se0LDZTqk7I/AAAAAAAABN8/aPJLqqFsNas/s72-c/earth_white_background.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-770970192385604319</id><published>2009-04-19T16:18:00.000-07:00</published><updated>2009-04-19T16:55:23.916-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='tile based'/><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='smartfox'/><category scheme='http://www.blogger.com/atom/ns#' term='tile engine'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>You are now connected</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/Seuy02m67eI/AAAAAAAABN0/TJd6q_uBu5E/s1600-h/hub.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 154px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/Seuy02m67eI/AAAAAAAABN0/TJd6q_uBu5E/s200/hub.jpg" alt="" id="BLOGGER_PHOTO_ID_5326547605377445346" border="0" /&gt;&lt;/a&gt;Today I got to sit down with SmartFox server and get my teeth into making something happen and I'm glad to say that I did make something happen. I mostly played around with the SFS API and got to know it a little. I setup some connections. I ran clients over my home network, wrote an app that showed people entering a room, allowed users to create rooms etc so I'm happy that everything makes sense and is going smoothly.&lt;br /&gt;&lt;br /&gt;Couple of little things about the SmartFox Server API that can get slightly annoying...There is only one type of event object, good old SFSEvent, that holds specific data for what should be abstracted event data, instead you access the events param object. Whilst this is not such a bad thing, it's not correct and the other thing is that the AS3 examples are all written in flex  so I found myself looking at the AS2 code, cross referencing it with AS3 syntax from the API docs and then finally I laid down some code. These are minor issues though and other than these, the API is intuative and well documented so overall very nice to work on.&lt;br /&gt;&lt;br /&gt;I am slowly moving towards sending data objects over to other users and then i'll be looking at interpolation techniques. This should allow the movement of player sprites over laggy connections to be kept smooth and keep things looking nice. This will use the time-based techniques that I spoke about in my earlier post.&lt;br /&gt;&lt;br /&gt;Gary Paluk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-770970192385604319?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/770970192385604319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/you-are-now-connected.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/770970192385604319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/770970192385604319'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/you-are-now-connected.html' title='You are now connected'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_akxhGrxyBMc/Seuy02m67eI/AAAAAAAABN0/TJd6q_uBu5E/s72-c/hub.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-3455831336996911647</id><published>2009-04-18T09:20:00.000-07:00</published><updated>2009-04-18T10:48:42.086-07:00</updated><title type='text'>SetInterval and time based animation</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_akxhGrxyBMc/Sen-FOi9lBI/AAAAAAAABNs/1sPvhWOZBU4/s1600-h/confused.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_akxhGrxyBMc/Sen-FOi9lBI/AAAAAAAABNs/1sPvhWOZBU4/s200/confused.jpg" alt="" id="BLOGGER_PHOTO_ID_5326067400099861522" border="0" /&gt;&lt;/a&gt;I'm starting to see a trend around the Flash community about time based animation in Flash and members stating that setInterval is the equivalent of time-based animation. This is incorrect so here is where I answer the questions once an for all.&lt;br /&gt;&lt;br /&gt;SetInterval is called on an Event.ENTER_FRAME event if it has expired. This means that a target client running at 5fps has the potential to loose 19ms ( or even more with application lag) per frame. The real concept is to actively look at how much time has passed between the last frame update and the current frame update, we will then have a figure to use to do our time based math, so here is the code:&lt;br /&gt;&lt;br /&gt;&lt;code class="prettyprint"&gt;&lt;br /&gt;package  {&lt;br /&gt; &lt;br /&gt; import flash.display.DisplayObject;&lt;br /&gt; import flash.display.Sprite;&lt;br /&gt; import flash.utils.getTimer;&lt;br /&gt; import flash.utils.Timer;&lt;br /&gt; import flash.events.TimerEvent;&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt;  * ...&lt;br /&gt;  * @author Gary Paluk&lt;br /&gt;  */&lt;br /&gt; public class TimeBasedAnimation extends Sprite {&lt;br /&gt;  &lt;br /&gt;  [Embed(source = '../lib/sprite_sheet1.png')]&lt;br /&gt;  private var m_SpriteSheet: Class;&lt;br /&gt;  private var m_Timer: Timer;&lt;br /&gt;  private var m_UpdateInterval: int;&lt;br /&gt;  private var m_sprite: DisplayObject;&lt;br /&gt;  &lt;br /&gt;  public function TimeBasedAnimation( ) {&lt;br /&gt;   m_Timer = new Timer( 20 );&lt;br /&gt;   m_Timer.addEventListener( TimerEvent.TIMER, onTimer );&lt;br /&gt;   m_Timer.start( );&lt;br /&gt;   m_sprite = new m_SpriteSheet( );&lt;br /&gt;   addChild( m_sprite );&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  private function onTimer( event: TimerEvent ): void {&lt;br /&gt;   var totalInterval: int = ( getTimer( ) - m_UpdateInterval ) ;&lt;br /&gt;   // move the sprite at 50 pixels per second&lt;br /&gt;   m_sprite.y += 50 * ( totalInterval / 1000 );&lt;br /&gt;   m_UpdateInterval = getTimer( );&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Gary Paluk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-3455831336996911647?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/3455831336996911647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/setinterval-and-time-based-animation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/3455831336996911647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/3455831336996911647'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/setinterval-and-time-based-animation.html' title='SetInterval and time based animation'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_akxhGrxyBMc/Sen-FOi9lBI/AAAAAAAABNs/1sPvhWOZBU4/s72-c/confused.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-114574105831278153</id><published>2009-04-18T06:13:00.000-07:00</published><updated>2009-04-18T07:40:29.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tile based'/><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='tile engine'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>A Serving of SmartFox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_akxhGrxyBMc/SenSbRB60fI/AAAAAAAABNk/wr9E_Uf20Lg/s1600-h/dedicated+servers.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 192px; height: 200px;" src="http://3.bp.blogspot.com/_akxhGrxyBMc/SenSbRB60fI/AAAAAAAABNk/wr9E_Uf20Lg/s200/dedicated+servers.jpg" alt="" id="BLOGGER_PHOTO_ID_5326019400212074994" border="0" /&gt;&lt;/a&gt;Last night I dived into the world of SmartFox server. I've always wanted to use a socket server for a Flash game and about 5 years ago I managed to make a simple 2 player, turn-based game with a nice guy over at the &lt;a href="http://board.flashkit.com/board/forumdisplay.php?f=5"&gt;FlashKit forums&lt;/a&gt; called random10122. Anyway, we played it a few times and it was fun but it was built without any rooms or lobby areas so users would of had to have ran the server on thier own machines thus it was never a viable project. Today, however, we have quite a few options; &lt;a href="http://www.smartfoxserver.com/"&gt;SmartFox&lt;/a&gt;, &lt;a href="http://www.unionplatform.com/"&gt;Union&lt;/a&gt;, &lt;a href="http://www.electrotank.com/ElectroServer/"&gt;ElectroServer&lt;/a&gt; and others. These servers are much more complete than the one that our old game was built on and since my tile game will be built with a multi-user system in mind I started looking at the different APIs. A friend of mine is currently working on a game built on SmartFox server, so his advice weighs out the differences in the APIs and I'm going forward with SFS.&lt;br /&gt;&lt;br /&gt;This might seem like I'm going off track from tile engines, but bare with me. The main point of this topic getting introduced here is that I needed to identify the separation between the engine and the control system and also identify where they may cross over. This has a lot of bearing on many factors especially the collision detection and if multiple sprites can be controlled from various locations with PCs of various performances and latency thrown in for good measure then the earlier I think about this the better.&lt;br /&gt;&lt;br /&gt;I'm going to start with the PC speeds issue. If over in the Venezuelan capital, Caracus, some kid is playing on their 500MHz Celeron ( jealous friends ) and some MIT computer science guru on his 80 core IBM super computer both decide to play my game at the same time, will there be a difference in frame rate? Yes.&lt;br /&gt;&lt;br /&gt;What I need to do is make the sprites reposition based on the time that has passed between the renderings rather than using an Event.ENTER_FRAME event. This will have 2 positive impacts on the game, firstly, we can now make the game update the graphics as fast as the machine will allow us too and of course it will fix the PC performance issue.&lt;br /&gt;&lt;br /&gt;So, If our sprite is to move 10 pixels per second in a straight line and our computer is updating the screen every 200ms, we can safely say that 1000 ms / 200 ms = 5 updates in that 1 second duration. Now we can now move our sprite by 10 pixels / 5 updates = 2 pixels per update. This is termed time-based animation and will be at the heart of my tile engine and will be my first project to fully incorporate this style of rendering graphics.&lt;br /&gt;&lt;br /&gt;Gary Paluk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-114574105831278153?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/114574105831278153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/serving-of-smartfox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/114574105831278153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/114574105831278153'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/serving-of-smartfox.html' title='A Serving of SmartFox'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_akxhGrxyBMc/SenSbRB60fI/AAAAAAAABNk/wr9E_Uf20Lg/s72-c/dedicated+servers.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8910792561448956603.post-2001802809349400474</id><published>2009-04-17T08:10:00.000-07:00</published><updated>2009-04-17T10:08:41.168-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tile based'/><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='tile engine'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>In the beginning...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_akxhGrxyBMc/SeiwkIDa95I/AAAAAAAABNQ/ZIBbmSo2ebQ/s1600-h/117475912_3fd9d3884d.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_akxhGrxyBMc/SeiwkIDa95I/AAAAAAAABNQ/ZIBbmSo2ebQ/s200/117475912_3fd9d3884d.jpg" alt="" id="BLOGGER_PHOTO_ID_5325700694049224594" border="0" /&gt;&lt;/a&gt;I am embarking on a rewrite of an AS2 &lt;a href="http://www.blipzo.com/video/lithium_demo.htm"&gt;tile engine&lt;/a&gt; that I made in March 2008 whilst I was sunning myself in Thailand. Since then I worked at a small Flash development company making betting games where I spent some time learning design patterns, the PureMVC framework and AS3. In fact the company I worked for allowed me to contribute to PureMVC with ports of the ASyncCommands and StateMachine classes :D&lt;br /&gt;&lt;br /&gt;I'm starting a new year stint working on my own full time project and it shall require an AS3 tile engine. I've been involved with tile engines since the very early Flash days ( Flash 4 ) where MCs were used to represent tiles but Flash has evolved a lot since then and now that AS3 and its DisplayObject data types are available there is a much more realistic concept of creating a tile engine with the capabilities of it being able to run the other required parts such as pathfinding &amp;amp; line of sight algorythms, AI routines, battle mechanics and time-based animation routines... the list goes on.&lt;br /&gt;&lt;br /&gt;Today is just an introduction and I'm simply performing R&amp;amp;D over at &lt;a href="http://www.gamedev.net/reference/list.asp?categoryid=44"&gt;GameDev&lt;/a&gt; but I shall be posting progress reports and info regarding the build of this engine but I can give you an insight to my thoughts so here goes.&lt;br /&gt;&lt;br /&gt;The first part of this project is to research fast ways of doing things, luckily for me it seems that the method of copying pixels that I used in my old tile engine has been tested thouroughly and I was on the right track since Michael Grundvig of &lt;a href="http://www.electrotank.com/"&gt;Electotank&lt;/a&gt; had done some testing with the same &lt;a href="http://www.electrotank.com/junk/mike/flash/copyPixel/"&gt;copypixel technique&lt;/a&gt; that I used in my AS2 engine and his findings confirmed that it is a very fast method for drawing images to the screen.&lt;br /&gt;&lt;br /&gt;Next up, my new design pattern knowledge came into play when I was looking at the way that older machines used a block of memory to store the tiles. Back then tile structs were created to point at the positions in memory that a particular tiles data existed at. My thoughts were to do the same thing. I could create a Tileset object to act like a memory block that holds a DisplayObject. Tile objects could then be instantiated with a reference to its Tileset object. The Tileset object is in charge of the tiles height and width meaning that a Tile object has no graphical asset to hold and no knowledge of its width or height, this should be very fast and easy on RAM allocation.&lt;br /&gt;&lt;br /&gt;I am going to check out some source code of other tile engines to determine how they have approached this and I will let you know my findings in my next post.&lt;br /&gt;&lt;br /&gt;Have fun and keep checking back :D&lt;br /&gt;&lt;br /&gt;Gary Paluk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8910792561448956603-2001802809349400474?l=tileengine.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tileengine.blogspot.com/feeds/2001802809349400474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tileengine.blogspot.com/2009/04/in-beginning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/2001802809349400474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8910792561448956603/posts/default/2001802809349400474'/><link rel='alternate' type='text/html' href='http://tileengine.blogspot.com/2009/04/in-beginning.html' title='In the beginning...'/><author><name>Gary Paluk</name><uri>http://www.blogger.com/profile/13456210439907262487</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_akxhGrxyBMc/SeiwkIDa95I/AAAAAAAABNQ/ZIBbmSo2ebQ/s72-c/117475912_3fd9d3884d.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
