<?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/'><id>tag:blogger.com,1999:blog-3717133688018454834.post2143310283285213650..comments</id><updated>2011-06-14T09:20:39.014+01:00</updated><category term='flash'/><category term='processing'/><category term='meetup'/><category term='courses'/><category term='javascript'/><category term='html5'/><category term='web'/><category term='multiplayer'/><category term='3d'/><category term='atari'/><category term='books'/><category term='confernces'/><category term='development'/><category term='free'/><category term='ActionScript'/><category term='amiga'/><category term='meta4orce'/><category term='github'/><category term='events'/><category term='art'/><category term='benchmarks'/><category term='open source'/><category term='creative commons'/><category term='inspiration'/><category term='XNA'/><category term='help'/><category term='papervision3d'/><category term='c#'/><category term='extendedplay'/><category term='iphone'/><category term='devon'/><category term='plymouth'/><category term='frameworks'/><category term='git'/><category term='gamedev'/><category term='tips'/><category term='animation'/><category term='rss'/><category term='source control'/><category term='podcasts'/><category term='eclipse'/><category term='xbox'/><category term='code'/><category term='freelance'/><category term='unity3d'/><category term='sprites'/><category term='fdt'/><category term='iain'/><category term='blogs'/><category term='flash on the beach'/><category term='code generation'/><category term='cornwall'/><category term='javafx'/><category term='demos'/><category term='25lines'/><category term='FlashDevelop'/><category term='reviews'/><category term='multiuser'/><category term='java'/><category term='speaking'/><category term='silverlight'/><category term='maths'/><category term='flexsdk'/><category term='2d'/><category term='fix your time step'/><category term='blitting'/><category term='games'/><category term='molehill'/><category term='geek'/><category term='away3d'/><category term='gamepad'/><category term='pv3d'/><category term='mvc'/><category term='character design'/><category term='game design'/><category term='flexbuilder'/><category term='monetisation'/><category term='fotb'/><category term='opinion'/><category term='software'/><category term='twitter'/><category term='scaleform'/><category term='design'/><category term='experimental'/><category term='what-if'/><category term='bunnies'/><category term='windowsphone7'/><category term='talks'/><category term='svn'/><category term='competitions'/><category term='oldschool'/><title type='text'>Comments on Iain Lobb: A code review of PewPew by Mike Chambers</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.iainlobb.com/feeds/2143310283285213650/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html'/><author><name>Iain</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' 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>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-2502849565418176100</id><published>2010-07-26T00:51:24.750+01:00</published><updated>2010-07-26T00:51:24.750+01:00</updated><title type='text'>Very nice break-down of the game. I very much like...</title><content type='html'>Very nice break-down of the game. I very much like the amount of detail you&amp;#39;ve included here, excellent work. I also learned about the tooltip option you mentioned in FlashDevelop; I&amp;#39;d done it before, but on accident, didn&amp;#39;t notice what was allowing it as I usually use // myself. Overall, excellent break-down, thanks for the good read, and thanks to Mike for sharing his code.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/2502849565418176100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/2502849565418176100'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1280101884750#c2502849565418176100' title=''/><author><name>Prince Porter</name><uri>http://princeporter.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-190848287'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-3736028491616592353</id><published>2010-07-23T21:06:56.292+01:00</published><updated>2010-07-23T21:06:56.292+01:00</updated><title type='text'>Also, Gamepad is rad. I don&amp;#39;t have anything to...</title><content type='html'>Also, Gamepad is rad. I don&amp;#39;t have anything to say about it beyond that. Your style is impeccable. Much cleaner than mine, which I don&amp;#39;t really have much pride in ;)&lt;br /&gt;&lt;br /&gt;Readable, functional and generous. It&amp;#39;s a wonderful utility. I gave up writing my own because of it.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/3736028491616592353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/3736028491616592353'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279915616292#c3736028491616592353' title=''/><author><name>Sunjammer</name><uri>http://www.blogger.com/profile/00515292174521109776</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-648873496'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-8605952140459653028</id><published>2010-07-23T21:03:25.530+01:00</published><updated>2010-07-23T21:03:25.530+01:00</updated><title type='text'>I wouldn&amp;#39;t commonly consider getting a code re...</title><content type='html'>I wouldn&amp;#39;t commonly consider getting a code review a good thing, mostly because hey, if you learn nothing from it and it becomes a religious debate, what good was it to anyone? We never did code reviews in any company I&amp;#39;ve worked for (I suspect due to them not really taking Flash seriously as a development challenge), but I&amp;#39;ve had third parties taking over code maintenance do them, often taking over code that was never even intended to be maintained in the first place. The results are harrowing.&lt;br /&gt;&lt;br /&gt;The best way to learn about your own style and where it sits in the ecosystem, i think, is to code with someone else and work together on projects as equals. Granted that&amp;#39;s also somewhat rare in our business, so those moments are to be cherished. It&amp;#39;s so much better to review decisions BEFORE you commit to them rather than look at them in retrospect and feel like a jackass when someone else calls you out on your mistakes.&lt;br /&gt;&lt;br /&gt;I dunno man. I think I might be antagonizing code reviews a little much, but I really believe there&amp;#39;s a time and place where they are valuable, and without context that isn&amp;#39;t it.&lt;br /&gt;&lt;br /&gt;It&amp;#39;s a rare project when you can look back at it and be completely happy with everything you did, which is why it&amp;#39;s so nice to go back with new knowledge, look at how you did things and recognize how you can now do them better. Sometimes your old solutions will actually impress you, I guarantee it :)&lt;br /&gt;&lt;br /&gt;We should make a game sometime, it&amp;#39;d be fun to compare techniques.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/8605952140459653028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/8605952140459653028'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279915405530#c8605952140459653028' title=''/><author><name>Sunjammer</name><uri>http://www.blogger.com/profile/00515292174521109776</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-648873496'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-8860337838186726456</id><published>2010-07-23T19:53:27.113+01:00</published><updated>2010-07-23T19:53:27.113+01:00</updated><title type='text'>Hi Andreas. Thanks for your input. I am not sorry ...</title><content type='html'>Hi Andreas. Thanks for your input. I am not sorry for offending you :)&lt;br /&gt;&lt;br /&gt;If you have worked at a company that actually does code reviews, then you are one of the lucky ones. Most of us are stuck coding away in a corner without a clue how other people work or better ways things could be done. &lt;br /&gt;&lt;br /&gt;There is an element of subjectivity in this of course, but isn&amp;#39;t that what makes the discussion interesting?&lt;br /&gt;&lt;br /&gt;I wasn&amp;#39;t trying to suggest that you shouldn&amp;#39;t use inheritance at all, just that a combination of polymorphism and composition is best. I&amp;#39;ve never  yet seen composition over-used. The problem with Mike&amp;#39;s code is the number of levels of inheritance rather than the fact that he is using it at all. Inheritance gives you code reuse within a project, but too much hierarchy absolutely makes your code harder move to another project. Imagine trying to add a ChaserEnemy from PewPew to another game. You&amp;#39;d also have to bring along all it&amp;#39;s parents including PewPewGameObject, etc, which you really don&amp;#39;t want in your new game.  Now if you had a flat structure where everything is just an Entity, you could port it across no problem. Or imagine if you wanted to reuse some functionality from Enemy in a class that doesn&amp;#39;t extend enemy, e.g. the PlayerShip. You will have to right the same code twice as Flash doesn&amp;#39;t have multiple inheritance. Check out Ben Garney&amp;#39;s articles about PushButtonEngine for some more info on why this is a good idea.&lt;br /&gt;&lt;br /&gt;Re. Signals, I use them because I like to have events as part of my code-contract/interface, so that they show up on autocompletion menus etc. That&amp;#39;s why for speed I suggested Turbo Signals, or just passing a reference to your main Game class to each entity and calling it&amp;#39;s methods directly. Native AS3 events just aren&amp;#39;t sexy, for all the reasons Robert Penner lists in his introduction to Signals.&lt;br /&gt;&lt;br /&gt;Agree with you 100% re. buttons on touch screen. Sliding between screens etc is much nicer.&lt;br /&gt;&lt;br /&gt;Re. doing a post-mortem on my old projects, that&amp;#39;s a notion too horrifying to even consider :)&lt;br /&gt;&lt;br /&gt;I am quite proud of my Open Source Gamepad project, and I would genuinely appreciate your thoughts (http://github.com/iainlobb/Gamepad) The hard part is getting someone to go to the effort of actually looking at your code!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/8860337838186726456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/8860337838186726456'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279911207113#c8860337838186726456' title=''/><author><name>Iain</name><uri>http://blog.iainlobb.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2101697386'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-7282484656738102072</id><published>2010-07-23T19:14:51.373+01:00</published><updated>2010-07-23T19:14:51.373+01:00</updated><title type='text'>Pretty cool article, though like most code reviews...</title><content type='html'>Pretty cool article, though like most code reviews I&amp;#39;ve seen/been subjected to, it often comes down to subjective beliefs, for instance composition vs inheritance. And every time I see signals pop up when performance is concerned I have to scratch my head; Performance intensive code has no business being event driven in the first place, and at that point the performance benefits to omitting native events become entirely negligible. Beyond that, a rudimentary observer pattern will have you covered to the max if you really need events and want messaging. The described scenario goes something like thousands of events make for lots of cloned event objects and therefore more left to GC and poorer performance, but I have no idea who would fully justify that kind of code in any project requiring fast real-time performance, or even dispatching that many events either. It&amp;#39;s just a weird edge case that I refuse to believe we actually struggle with.&lt;br /&gt;&lt;br /&gt;In Flash we don&amp;#39;t love inheritance because it &amp;quot;makes us feel like proper programmers&amp;quot;. We love it because it&amp;#39;s a fantastic tool and composition aside completely and utterly indispensable for anything resembling a sizable project. &lt;br /&gt;&lt;br /&gt;I find it a little odd that you point out that inheritance makes for less reusable code, which i just can&amp;#39;t agree with; Poor planning is what makes for less reusable code. I agree that excessive inheritance doesn&amp;#39;t bode well for anything, but composition and inheritance go hand in hand; It&amp;#39;s not an either-or proposition.&lt;br /&gt;&lt;br /&gt;Formal code reviews (I realize this is informal ;P) are really only useful if both sides of the table have intimate knowledge of the goals, time frame and history of the code in question. For instance when reviewing CHANGES to a product, and evaluating them to ensure the quality and stability of the product isn&amp;#39;t compromised. When it boils down to dude A talking about dude B&amp;#39;s code without any context, I have to admit I actually find it a tad offensive. &lt;br /&gt;&lt;br /&gt;Another pet peeve of mine is reliance on on-screen &amp;quot;buttons&amp;quot; for touchscreen control. This isn&amp;#39;t &amp;quot;optimized for touch screens&amp;quot;, it&amp;#39;s &amp;quot;shoehorned into touch screens&amp;quot;. Touch UI has nothing to do with buttons, and the more designers choose to go with that paradigm the worse the world is off for it. &lt;br /&gt;&lt;br /&gt;End rant :) I&amp;#39;d love to see you do a post mortem of one of your own games next, perhaps one you did a year or so ago, with the same granularity.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/7282484656738102072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/7282484656738102072'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279908891373#c7282484656738102072' title=''/><author><name>Andreas</name><uri>http://www.blogger.com/profile/00515292174521109776</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-648873496'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-6763594566461033616</id><published>2010-07-23T17:17:23.578+01:00</published><updated>2010-07-23T17:17:23.578+01:00</updated><title type='text'>Awesome write up.

Im not going to go over all of ...</title><content type='html'>Awesome write up.&lt;br /&gt;&lt;br /&gt;Im not going to go over all of the points, but I did have a few clarifications.&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;For entities there is an inheritance chain of MovieClip &amp;gt; GameObject &amp;gt; PewPewGameObject &amp;gt; Enemy &amp;gt; ChaserEnemy. I&amp;#39;ve used this kind of approach on many games, and it works up to a point, but it doesn&amp;#39;t make your code very reusabl&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;I completely agree with you on this, and this is one of the main things I meant when I talked about over engineering. If / when I do another game, I will almost certainly not use inheritance so extensive for game items. It really leads to a lot of complexity and refactoring as you develop the game.&lt;br /&gt;&lt;br /&gt;Transitions between screens : i actually originally had this in about a year ago, but had to remove them for performance reasons. However, they should work fine now on the new android devices.&lt;br /&gt;&lt;br /&gt;I use a circle based collision detection, which as you noticed is not always exactly accurate. This was again done for performance (on the iphone). I actually had versions of the game over the past year which used just about every collision detection strategy imaginable. I suspect, that, once again, using pixel perfect collision detection would work just fine on the android devices (maybe ill add that back in).&lt;br /&gt;&lt;br /&gt;Ill fix the &amp;quot;include hidden layers&amp;quot; issue. &lt;br /&gt;&lt;br /&gt;Anyways, great write up. This is why I released to code. I really wanted to help generate this type of discussion.&lt;br /&gt;&lt;br /&gt;mike chambers&lt;br /&gt;&lt;br /&gt;mesh@adobe.com</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/6763594566461033616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/6763594566461033616'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279901843578#c6763594566461033616' title=''/><author><name>mesh</name><uri>http://www.blogger.com/profile/07740410294497148919</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-749655787'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-4104780206519588805</id><published>2010-07-23T16:48:00.655+01:00</published><updated>2010-07-23T16:48:00.655+01:00</updated><title type='text'>Nice post Iain.

I like your point on composition ...</title><content type='html'>Nice post Iain.&lt;br /&gt;&lt;br /&gt;I like your point on composition vs excessive inheritance.  I see this all the time along with overuse (abuse!) of interfaces.  It seems like some people think more OOP = better.&lt;br /&gt;&lt;br /&gt;I disagree with you on your suggestion of passing game entities a reference to the main game class.  To me this is just tighter coupling which should be avoided.  I think events or signals (as you mentioned) are preferable to this.&lt;br /&gt;&lt;br /&gt;Thanks for the code Mike!  I always learn something new when I look at other people&amp;#39;s code.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/4104780206519588805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/4104780206519588805'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279900080655#c4104780206519588805' title=''/><author><name>Dave Reynolds</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1052312238'/></entry><entry><id>tag:blogger.com,1999:blog-3717133688018454834.post-8838411792410430742</id><published>2010-07-23T15:30:01.109+01:00</published><updated>2010-07-23T15:30:01.109+01:00</updated><title type='text'>Hi Iain, 

great post, thank you for this - I&amp;#39;...</title><content type='html'>Hi Iain, &lt;br /&gt;&lt;br /&gt;great post, thank you for this - I&amp;#39;ve been meaning to review this code so thanks for saving me the trouble! And hats off to Mike - I still find it scary revealing my source to the world :) &lt;br /&gt;&lt;br /&gt;Framework included in the source? Totally agree. We&amp;#39;d use SVN externals to do this. You can include one SVN repo&amp;#39;s folder within another, and even specify a revision. Not sure how you&amp;#39;d do this with GIT though, someone mentioned submodules. &lt;br /&gt;&lt;br /&gt;And totally agree re hidden layers / guides. Use guides! &lt;br /&gt;&lt;br /&gt;I don&amp;#39;t mind the app class in the root, at least it&amp;#39;s quick to find. My personal preference is to name it after the app rather than Main - we&amp;#39;re not Java coders ;-) &lt;br /&gt;&lt;br /&gt;Agree re the control mechanism - it&amp;#39;s actually quite hard to get touch screen joystick control right and many Flash games really suffer from this on mobile (the fact you can&amp;#39;t use cursor keys sadly renders most Flash games unplayable on mobile). One game that&amp;#39;s got it really right is geometry wars on iPad and iPhone. Not sure about the directional firing but the motion controller with the left hand is spot on. &lt;br /&gt;&lt;br /&gt;Totally agree re linking code to MovieClips - we just don&amp;#39;t do it anymore and it greatly helps the collaborative process between art and code. &lt;br /&gt;&lt;br /&gt;I think you get a little picky when it comes to transitions, I guess it would benefit from extra polish in that area but not that important. And interesting points about other types of polish, particles etc. I think you&amp;#39;d start to find the limitations of the mobile devices if you went too crazy in those areas, but should def try! &lt;br /&gt;&lt;br /&gt;And instant death really isn&amp;#39;t a problem if the rest of the playability is adjusted for that. Call me old fashioned if you like! &lt;br /&gt;&lt;br /&gt;But thanks again for a great write up and thanks Mike for allowing us to delve around in your private space :-) &lt;br /&gt;&lt;br /&gt;Seb</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/8838411792410430742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3717133688018454834/2143310283285213650/comments/default/8838411792410430742'/><link rel='alternate' type='text/html' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html?showComment=1279895401109#c8838411792410430742' title=''/><author><name>Seb Lee-Delisle</name><uri>http://sebleedelisle.com</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iainlobb.com/2010/07/code-review-of-pewpew-by-mike-chambers.html' ref='tag:blogger.com,1999:blog-3717133688018454834.post-2143310283285213650' source='http://www.blogger.com/feeds/3717133688018454834/posts/default/2143310283285213650' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1698035065'/></entry></feed>
