tag:blogger.com,1999:blog-34836899285051743722024-03-18T19:51:41.381-07:00Jason Leon's Blog: Now with more Agilevideo game development and other such odds and ends.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.comBlogger80125tag:blogger.com,1999:blog-3483689928505174372.post-61022286819285124082012-05-15T10:35:00.000-07:002012-05-24T16:06:55.451-07:00HTML5 Game<div class="separator" style="clear: both; text-align: center;">
<a href="https://encrypted-tbn2.google.com/images?q=tbn:ANd9GcTgHxvzjCu3Pxj6Wu3TJi72o1Bl4lKdmAUpLR66X0IOlhTK19hq" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="204" src="https://encrypted-tbn2.google.com/images?q=tbn:ANd9GcTgHxvzjCu3Pxj6Wu3TJi72o1Bl4lKdmAUpLR66X0IOlhTK19hq" width="204" /></a></div>
<br />
I experimented with the HTML5 canvas tag and thought it would be interesting to share what came of that experiment. I ended up building out a blitting engine. Here's an example of a demo which targets iPhones that was put together for a client: <a href="http://www.jasonleon.com/tests/brandissimo/lc/">Game Demo</a>.<br />
<br />
<b>DISCLAIMER: Audio for iOS is horrible. We may end up removing sound from the game all together.</b><br />
<b><br /></b>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-78787801012810830352012-01-31T12:24:00.000-08:002012-01-31T16:07:27.085-08:00iBonsai: Social Game Design Concept<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6K-oSXRjq0qfiyPLhFAfXGno8hZdD9OpiihcZGsm5ysZBto4L7pXf46HNpPVXhku6pH6XyZJMLLlJaicsc5JWLDsKJY0EtB-IRn02twKSZWdBalKxV8uIE0096TW1aCs8PHWgtJ2d_FQ/s1600/logob%2526w_v1.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 146px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6K-oSXRjq0qfiyPLhFAfXGno8hZdD9OpiihcZGsm5ysZBto4L7pXf46HNpPVXhku6pH6XyZJMLLlJaicsc5JWLDsKJY0EtB-IRn02twKSZWdBalKxV8uIE0096TW1aCs8PHWgtJ2d_FQ/s320/logob%2526w_v1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5703908634533779458" /></a><br /><br />A few years ago with the success of FarmVille, I had an idea to create a social game that revolved around the care of plants. There are plenty of isometric farming games!! I know, I know but mine is different. I've killed many bonsai trees in my time but it's not for a lack of trying to keep them alive. I'm also a fan of <a href="http://jasoneleon.blogspot.com/search/label/brownian%20trees">procedurally generated patterns or designs</a>. My game concept marries the two.<br /><br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYwS9P1-pJTnz97naom_gIwcpn5r4KFaBM02aLjXGbPEqi-JdkpdMbdckwqKaLdQHzkCF-nMXPie7tVQoNRGCXk29lXl-8VaN4OiQFcyLDtSSMKMnVV8l833EsogeZVzmpWbaGch4N8ZQ/s1600/trees.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYwS9P1-pJTnz97naom_gIwcpn5r4KFaBM02aLjXGbPEqi-JdkpdMbdckwqKaLdQHzkCF-nMXPie7tVQoNRGCXk29lXl-8VaN4OiQFcyLDtSSMKMnVV8l833EsogeZVzmpWbaGch4N8ZQ/s320/trees.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5703900305740662578" /></a><br /><br />I created that mash-up of trees above with the prototype that a few developers and I put together back in January of 2011. I think it's safe to say that we're not actively working on the project, though we had a blast iterating on it back then. <br /><br />I wanted the game to feel like something put together by the <a href="http://en.wikipedia.org/wiki/Wii_Sports">Wii Sports</a> team. Those games do a fantastic job of rewarding the player for very small achievements. It was also important that, though the game was 2D, the trees needed to feel alive with human-like qualities. We made it so trees would droop when the were undernourished or lacked the proper amount of attention. Alternatively when happy, the branches would playfully bounce after being fed or put in good light. <br /><br />Since I'm not doing anything with the idea, I thought I'd share the quick design document that I put together to get the team on the same page. It's really just the skeleton of a game based off of a few brainstorming sessions. See what you think:<br /><br /><a href="https://docs.google.com/open?id=0B_Dq9eCCdF5-MWFhNTZjM2UtMzNjZS00MzJkLTk2ZWYtOGQ2YWJjZDhhMWJk "><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 126px; height: 122px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3BfoHqGgQHWoJd_zUCI1dLl5dksV_hH3DeOS5lYBQkgMjPT6QTAqF9lb-yK3Bi0L1sQfmMJSSAI0a3bYpsm0m_UenXMwm4fBMKT049NJZoCWgQjAPEhnM4g0hQKS0zaMdmzJL1nlTgNs/s320/design_doc.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5703920526963461234" /></a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-79783819440190137342012-01-27T13:04:00.001-08:002012-01-28T16:01:37.221-08:00Replacing Waterfall with Agile<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Bum7KuBhpqGx4aiz7n1JWg6jHKG-8ZtlMDL_ZbXGNUYt9dM02mH0BLmP33_rQXkqAIkeduhQzjZZNK5_4bqpt4P6Di_0XPlWzPh10JO_8NGGJtU0nKkjWvIBNa5X7uW9WqL7aBSKeR4/s1600/trash_waterfall.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 284px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Bum7KuBhpqGx4aiz7n1JWg6jHKG-8ZtlMDL_ZbXGNUYt9dM02mH0BLmP33_rQXkqAIkeduhQzjZZNK5_4bqpt4P6Di_0XPlWzPh10JO_8NGGJtU0nKkjWvIBNa5X7uW9WqL7aBSKeR4/s320/trash_waterfall.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5702503441330028050" /></a><br /><br /><blockquote><span style="font-style:italic;">“We cannot change anything until we accept it. Condemnation does not liberate, it oppresses.” </span>- Carl Gustav Jung</blockquote><br /><br />The <a href="http://en.wikipedia.org/wiki/Waterfall_model">Waterfall model</a> is rigid and doesn't deal well with new parameters, especially when they're introduced late in the game. It also doesn't empower our team members to self organize. Run a few projects with it and you'll certainly agree. Agile methodologies, on the other hand, were designed to iterate and adapt to change efficiently. They also obliterate micromanagement.<br /><br />I've been asked about best practices in transitioning to agile project management a few times in the last two weeks so I figured I'd drop a few ideas out for general consumption. Agile methodology utilizes the most powerful tools that I've come across for getting my projects out the door on time and underbudget. And, it's easy to implement once you get the basics down. Of course, you must be open minded for this new system because it is drastically different from the sequential model. I started off with that Jung quote because it's important to be positive while trying something new and it's equally important to, at least while testing, set aside what you currently hold to be self evident in order to have the best chance for success. In this article, I'm going to give you some pointers on how to get the agile ball rolling in your company. I'm going to assume that you're currently using the Waterfall model and I want you to remember that...<br /><br /><blockquote><span style="font-style:italic;">“There is nothing wrong with change, if it is in the right direction.” </span>- Winston Churchill</blockquote><br /><br />First off, you should have a cursory knowledge of agile before you read this. I'm going to go out on a limb and assume that you're already familiar. If not, no problem! <a href="http://jasoneleon.blogspot.com/2011/10/scrum-101.html">Try this post to get the basics</a>.<br /><br />A company that has a long history of sequential development will, most likely, have a hard time transitioning away from the rigors of upfront documentation and copious Gantt chart updating. Companies steeped in these traditions need to be gracefully guided into agile production. Anything less than a slow merge will end in failure or, worse yet, misgivings about agile itself.<br /><br />You can always tell when a team has had agile forced down their throats without an experienced coach to see them through. These folks don't want to touch anything new with a ten foot pole but can you blame them? It's not rewarding to modify your workflow only to have to go back to what you were doing previously. This is wasted time, annoying, and can be demoralizing.<br /><br />There are many reasons that an agile transition may not work. Mike Cohn is one of the best agile coaches in the business and has a great insight to share regarding a major stumbling block that many new agile teams will face.<br /><br /><blockquote><span style="font-style:italic;">"I've personally witnessed several failed agile adoptions that could have been prevented. The first was in a company that had spent more than a million dollars on its transition effort. Executives brought in outside trainers and coaches and hired five people into an "Agile Office" to which new Scrum teams could turn for advice. The company's failure was the result of thinking that the implications of adopting Scrum would be restricted to only the development organization. The executives who initiated this transition thought that educating the supporting developers would be sufficient. They failed to consider how Scrum would touch the work of salespeople, the marketing group, and even the finance department. Without changes to these areas, organizational gravity pulled the company back where it had started."</span>- Mike Cohn, Succeeding with Agile</blockquote><br /><br />We all need to be on board to make a new style of management work. This includes our <a href="http://en.wikipedia.org/wiki/Scrum_(development)#Ancillary_roles">stakeholders</a>. My first suggestion to those that want to attempt agile is to get a coach and have that person start by educating your stakeholders on how they can best play their part. Change comes fastest when it starts at the top.<br /><br />A coach may not be financially viable for your situation. There are plenty of fantastic books out there. If you go the book route, then read it cover to cover twice and feverishly take notes. Once you feel that you're ready to teach the concepts in the book, then you're ready to implement them.<br /><br />You may even try banding together a <a href="http://en.wikipedia.org/wiki/Community_of_practice">community of practice (CoP)</a> with others interested in crossing over to agile before you go full bore. With a CoP you would share ideas on how to effectively integrate new ideas as well as come to a consensus on what a good kick off project may be. I'll talk more about picking that project in a bit.<br /><br />Here are a few recommendations on books that I really enjoyed. First, you've got to read Cohn's <span style="font-weight:bold;">Succeeding With Agile</span> of which I already quoted once above. This is a great book because it deals with introducing agile into an environment that has preexisting frameworks.<br /><br /><a href="http://ecx.images-amazon.com/images/I/51GZu9qtbDL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA160_.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 160px; height: 160px;" src="http://ecx.images-amazon.com/images/I/51GZu9qtbDL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA160_.jpg" border="0" alt="" /></a><br /><br /><span style="font-weight:bold;">The Art of Agile Development</span><br /><br />This book is equal parts about Extreme Programming and Scrum. It's very different from Mike's book in that it sometimes gets its point across by telling fictional tales of possible situations.<br /><br /><a href="http://ecx.images-amazon.com/images/I/41i8YtY6bzL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/41i8YtY6bzL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg" border="0" alt="" /></a><br /><br /><span style="font-weight:bold;">Agile Game Development with Scrum</span><br /><br />Finally, this is the holy grail of Scrum books for Game Development. Clinton Keith was mentored by Mike Cohn who wrote the first book that I mentioned. Clinton was originally from High Moon Studios and could sort of be credited with popularizing agile for the industry.<br /><br /><a href="http://ecx.images-amazon.com/images/I/51fJKLM-AxL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 115px; height: 115px;" src="http://ecx.images-amazon.com/images/I/51fJKLM-AxL._SL160_PIsitb-sticker-arrow-dp,TopRight,12,-18_SH30_OU01_AA115_.jpg" border="0" alt="" /></a><br /><br />Now that you have a coach or are armed with the knowhow, pick a project that isn't in the limelight. Yes, a low priority project that isn't going to have the eye of Mordor on it. The reason being is that a limelight project already has enough pressure as it is. And, heaven forbid, you don't have a clean execution your first time out, then you'll be joining the misgiving crew mentioned above.<br /><br />A good first project should not be time sensitive or you'll surely default to your old system at the first sign of trouble. I prefer a first project to be a new feature, ideally something void of legacy code. Also, try not to pick a project that has a lot of dependencies or that relies on shared resources/talent.<br /><br />Make sure that everyone shares a common lexical structure for what you're trying to achieve. For instance if you're going with Scrum, then be sure that all of the stakeholders understand what it means to be a stakeholder. If they don't get what <a href="http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig#Agile_project_management">Pigs and Chickens</a> is all about, then you're not going to be happy with the outcome. So, get the definitions for all roles and responsibilities defined up front and be sure that there is mutual buy-in from all parties.<br /><br />Buy-in, Mike Cohn talks a bit about this in Succeeding with Agile. I believe Shane Warden, of The Art of Agile, does as well so rest assured that I'm not the only one who abides by this stuff. Find someone in each camp to champion agile for their respective discipline. The more open minds, bonus points if they're respected influencers, you have will only result in a smoother adoption. Respected colleagues that support the effort are more valuable than gold. They help people that are on the fence about agile to give it a shot.<br /><br />Be sure to give the whole metamorphosis some time to play out too. Rome wasn't built in a day and neither was effective project management. Agile enables you to fail fast which implies that you may fail at some point. This is a good thing because we're getting the data on what isn't working while we still have time and resources to do something about it. And as you know, the <a href="http://en.wikipedia.org/wiki/Scrum_(development)#Sprint_retrospective.5B16.5D">retrospective process</a> is there to help us evaluate and modify accordingly. Allow for a few blunders when you schedule your test run. How to schedule is a much longer conversation and out of the scope of this article. However, all of the books above have solid advice on the subject.<br /><br />Quantitative data is important and it goes a long way in convincing the nonbelievers. You'll want to record your results and compare them to what you were doing previously. Sure, you'll want to start tracking <a href="http://en.wikipedia.org/wiki/Velocity_(software_development)">velocity</a>; but, if you're new to an agile process like Scrum, then you won't have anything to benchmark against. So pick a few basic stats. Try tracking number of meetings, duration of those meetings, number of bugs found/fixed, etc. You'll know what is most important to your company. Select five or six pain-points and get ready to optimize. Done correctly, agile will blow the doors off of sequential for reliable release planning, stable tested code, steady customer feedback, and time efficiency in general. Dr. Jeff Sutherland, a co-creator of Scrum, has even gone on record in saying that:<br /><br /><blockquote><a href="http://scrum.jeffsutherland.com/2004_05_01_archive.html"><span style="font-style:italic;">“If you look at most corporate meetings you will see 50-80% excess overhead. These are the meetings that Scrum eliminates on day 1 if done properly.” </span>– Dr. Jeff Sutherland</a></blockquote><br /><br />My last tip is to avoid using any fancy agile software solutions to start with. There are wonderful tools out there but why increase your learning curve? You can add those tools into the mix later. Remember the first declaration from the Agile Manifesto:<br /><br /><blockquote>Individuals and interactions over processes and tools - <a href="http://agilemanifesto.org/">Agile Manifesto</a></blockquote><br />Scrum can be run effectively with nothing more than a stack of index cards and cork board. Do yourself a favor and only add solutions that truly save you time. <div><br /></div><div>That's it. So to recap:<br /><ul><li>Understand the rules before you play</li><li>Allocate enough time for a proper test</li><li>Get everyone on the same page</li><li>Seek out influencers in each discipline to champion</li><li>Pick a project that isn't in the limelight to start</li><li>Prove your point with quantitative analysis</li><li>Individuals and interactions over processes and tools</li></ul><br />Hopefully these suggestions will aid you on your way to making game development fun and efficient!<br /><br /><br /><br /></div>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com2tag:blogger.com,1999:blog-3483689928505174372.post-66934493280004181522012-01-19T10:02:00.001-08:002012-01-21T15:54:33.333-08:00JavaScript 30 day RetrospectiveIt's been about a month since I began my javascript deep dive. I'm ready to take a short break from the subject but I thought it would be fun to write up a retrospective and then post a demo. <br /><br /><span style="font-weight:bold;">Pre-Production</span><br /><br />My prior experience with JS was one of cut and paste. I had never really needed to build anything substantial with it. However like many developers, I naively felt that I could just jump into scripting with it. I found that brute force was definitely not the way to go. Before jumping in I, at least, picked up a copy of JavaScript the Definitive Guide:<br /><br /><a href="https://encrypted-tbn2.google.com/images?q=tbn:ANd9GcQ75TnHHAjttoGTMvAZs427NL6fplW7XejLzG7UuivN5WJdYBct"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 144px; height: 188px;" src="https://encrypted-tbn2.google.com/images?q=tbn:ANd9GcQ75TnHHAjttoGTMvAZs427NL6fplW7XejLzG7UuivN5WJdYBct" border="0" alt="" /></a><br /><br />I'm fluent in AS3 which is held to the same <a href="http://www.ecma-international.org/">ECMA Standards</a> as JS. However, the languages are far from similar. They both include the basic structures that you'd expect from any language (arrays, objects, variables, etc.). But one stark contrast is that AS3 has classes built in whereas JS doesn't. JS uses <a href="http://en.wikipedia.org/wiki/Prototype-based_programming">prototypal inheritance</a> instead of classical. At one time back when I was using AS2, I knew a thing or two about the subject but those days have long since passed. <br /><br />An odd thing about JS is its lack of <a href="http://publib.boulder.ibm.com/infocenter/comphelp/v111v131/index.jsp?topic=%2Fcom.ibm.xlc111.aix.doc%2Flanguage_ref%2Fcplr013.html">block scoping</a> which ends up resulting in the use of <a href="http://stackoverflow.com/questions/111102/how-do-javascript-closures-work">closures</a> to maintain references to data. Suffice it to say that it takes some getting used to. <br /><br /><span style="font-weight:bold;">Rapid Prototype: first iteration</span><br /><br />I skimmed through the aforementioned book but still didn't feel that I had a grasp on JS best practices. It's a great book that covers the language as a whole but doesn't really go into detail on how to use the it effectively. Regardless, I took what I learned and started production on a simple game. I went with the card game High Low. I figured that it was a good choice because I didn't need much art. Via Google, I found a spritesheet similar to this: <br /><br /><a href="http://dev.kingkool68.com/war/classic-playing-cards.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 50%; height: 20%;" src="http://dev.kingkool68.com/war/classic-playing-cards.png" border="0" alt="" /></a><br /><br />Where to start? That's what you always ask yourself when you start a project like this. Well, I wanted to start blitting as quickly as possible so set about building something<a href="http://jasonleon.com/apps/casino/12_23_2011/"> ( __ click here to see!!__ )</a> that would do that. It didn't take all that long to get that working. However, during my research on how to emulate class construction, I ran across some musing about best practices in JS by <a href="http://www.crockford.com/">Douglas Crockford</a>. Which inspired me to read his book. He wrote JavaScript the Good Parts:<br /><a href="https://encrypted-tbn3.google.com/images?q=tbn:ANd9GcRfIye1wUiUoPJWqBR_bYqymNGRJAoYEkQP1wWFWJzc9XTAR5xx"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 144px; height: 188px;" src="https://encrypted-tbn3.google.com/images?q=tbn:ANd9GcRfIye1wUiUoPJWqBR_bYqymNGRJAoYEkQP1wWFWJzc9XTAR5xx" border="0" alt="" /></a><br /><br /><span style="font-weight:bold;">Rapid Prototype: second iteration</span><br /><br />Armed with Crockford's take on JS. I decided to refactor everything that I had built. Among Crockford's many contributes, he's credited with popularizing the <a href="http://yuiblog.com/blog/2007/06/12/module-pattern/">Module Pattern</a> in JS. I used a slightly more advanced version of this for the core of my application. Here's the psuedocode version from Crockford's book:<br /><br /><pre> <br /> var constructor = function (spec, my) {<br /> var that, other private instance variables; <br /> my = my || {};<br /> <br /> Add shared variables and functions to my <br /> <br /> that = a new object; <br /> <br /> Add privileged methods to that <br /> <br /> return that;<br /> }<br /></pre><br /><br />The pattern basically creates an object that allows for private and public access to methods and variables. It also gives you a unique way to implement inheritance. This is good because javascript doesn't give you this functionality out of the box. Everything in JS is globally scoped and accessible by default. My research project definitely didn't require this sort of structure but I'm just used to thinking with private and public members and it was some good practice.<br /><br />Of note, I was put off by the void of a proper namespace, such as I'm used to in classical langs. So, I used a solution similar to this (see below) to create a single object that I could use to keep my code separate from other JS that may end up on a page:<br /><pre><br />/***************<br />* Call this at the top of a file and pass in your desired namespace<br />* Example: NS.provide('GAME');<br />* this will give you the ability to add to that NS<br />* Example: GAME.gGameObject = function () {};<br />**************/<br />NS.provide = function() {<br /> var a=arguments, o=null, i, j, d;<br /> for (i=0; i<a.length; i=i+1) {<br /> d=a[i].split(".");<br /> o=window;<br /> for (j=0; j<d.length; j=j+1) {<br /> o[d[j]]=o[d[j]] || {};<br /> o=o[d[j]];<br /> }<br /> }<br /> return o;<br />};<br /></pre><br /><br />This also allowed me to separate my JS files and maintain a unique namespace. I'm not sure if there is a better way to handle it but it worked for my needs. <br /><br />After all that, I knocked out what you'll see below pretty quick. My goal was to build a game with multiple states, a dynamic UI, programmatically generated animation, and some basic sprite sheet handling. The main menu state has 200+ animated entities with a stable framerate which is pretty rad. <br /><br />The code isn't commented very well but it's functional. Here's what I ended up with:<br /><br /><iframe src ="http://jasonleon.com/apps/casino/1_17_2012/" width="100%" height="480" scrolling="no"><br /><p>Your browser does not support iframes.</p><br /></iframe><br /><br />It's definitely not anywhere close to finished but I learned a great deal by building it!Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-60012919341549120142011-12-28T18:44:00.000-08:002012-01-19T09:05:53.504-08:00Javascript Sine Curve AnimationThe winds of change are in the air and it seems that you simply must know javascript to remain relevant. I've been keeping myself busy with a few o'reilly books lately. Here's an exercise from JavaScript Graphics Supercharged:<br /><br /><iframe src ="http://www.jasonleon.com/tests/sinwave/" width="100%" height="325" scrolling="no"><br /><p>Your browser does not support iframes.</p><br /></iframe><br /><br />Pretty neat, eh? <br /><br />JavaScript by itself isn't all that tricky. However, I've found the dom and cross-browser compatibility incredibly annoying. It also seems that there are thousands of frameworks and libraries floating around that people swear by. It's hard to tell who is truly touting the best practice. This results in learning way more conventions and syntaxes than should be necessary.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com2tag:blogger.com,1999:blog-3483689928505174372.post-19756719498488685552011-10-18T12:19:00.000-07:002011-10-19T09:36:42.226-07:00Scrum: Retrospective QuestionsClinton Keith, in Agile Game Development with Scrum (pg 79), lists the three questions that should be asked in every retrospective as:<br /><br />1) What things should we stop doing? <br /><br />2) What should we start doing? <br /><br />3) What is working well that we should continue doing? <br /><br />These are solid questions that are straight to the point and that match the simplicity of the <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1128">Daily Scrum questions</a>. However, what do you do if there aren't any contributions? After reading <a href="http://www.gamasutra.com/view/news/37856/GDC_Online_Carbines_Jeremy_Gaffneys_Rules_For_Being_A_Good_Boss.php">this article</a> on Gamasutra, I got to thinking about just that. I've been in meetings that aren't active and they're a drag. Therefore, I believe that having a few canned questions to get things going isn't a bad idea. This is especially true for teams that are new to scrum. <br /><br />Before I dive too deep, I recommend the above article to anyone that is looking for some good advice on how to run an interview. I'll explain how this ties into sprint reviews in a second. In the article, Jeremy Gaffney offers some ideas that will help folks being interviewed as well as those that conduct them. <br /><br />Here were my takeaways: <br /><br /><br /><blockquote>-First, the quality of the interview is in the quality of the questions that you ask.<br /><br />-Second, the value of a candidate is found in what they find valuable. <br /><br /></blockquote><br /><br />From the article...<br /><br /><blockquote>“Ask questions for which there are no uninteresting answers,” Gaffney said. For example, a producer may ask, “Who’s the last person you fired?” He explained, “What you care about is digging out an interesting [aspect] of their past.”</blockquote><br /><br />Asking someone who they've fired is an interesting approach to reach the core of a candidate. However, my vote would be to keep things slightly more positive. You could try something like: <br /><br /><blockquote><i>- What was your biggest success and how would you go about replicating it?</i><br /><br /><i>- Can you give me an example of a situation where you were certain that you were going to miss a deadline and what you did to dampen the impact? </i><br /><br /><i>- What are the most useful habits that a team member can exhibit?</i></blockquote><br /><br />Now then, this all parallels into a retrospective because the same rules apply. Let's think about what we're trying to get out of the retrospective in the first place. Well, this <a href="http://www.scrumalliance.org/pages/scrum_ceremonies">ceremony</a> is the closure of the feedback loop. It's only logical that we'd want to inspect what occurred during the iteration to see if there were any lessons learned. <br /><br /><blockquote><i>- What did we learn?</i></blockquote><br /><br />That question by itself isn't going to make the conversation flood in. How about...<br /><br /><blockquote><i>- While building the onboarding tutorial, were there any aspects that you would like to revisit in the next iteration?</i><br /><br />or <br /><br /><i>- While building the onboarding tutorial, what optimizations did you make to your workflow that helped you along the way? </i></blockquote><br /><br />Use the Sprint Backlog as the springboard to target meaningful data points. The goal being to key in on specifics with an eye on finding value that the project or team will benefit from. Asking quality questions can surface improvement issues/technical debt, new useful techniques, bottlenecks, and product insights. A good retrospective will have each and every team member walk away with a new technique to try or insights on how to improve efficiency. To create a culture of sharing is essential in building a successful team.<br /><br />RE: canned retrospective questions, here are some to get you going!<br /><br /><blockquote>While doing Sprint Backlog Item (SBI), what aspect was most challenging and why? What would make it less? <br /><br />If you had to rebuild SBI, what approach would you take next time around? <br /><br />What beneficial optimization to workflow did you make during this sprint? <br /><br />What new resources would have improved our production cycle? <br /><br />Were there any heavy refactors necessary this time around? If so, why? <br /><br />Did you read any informative articles that inspired some change which directly effected this sprint? <br /><br />Analyzing the problems and impediments from last sprint, have any similar issues resurfaced this time around? <br /></blockquote><br /><br />I think you get the point. The goal is to get the conversation moving and to see what we can learn from one another and, thus, help us all make life that much easier.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-9189851138139804962011-10-04T11:20:00.001-07:002011-10-04T14:17:00.238-07:00SCRUM 101Here's a quick presentation that I put together that discusses the history of SCRUM and its mechanics. It's ment as an overview and not the definitive explanation. <br /><br />Whether you're a software engineer, a QA tester, a producer, or an executive that manages development you would benefit greatly by implementing some sort of Agile project management. <br /><br />I hope you find it useful. <br /><br /><iframe width="440" height="315" src="http://www.youtube.com/embed/VPgzrjTt-eI" frameborder="0" allowfullscreen></iframe>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-92075783335224535502011-07-20T17:28:00.001-07:002011-10-26T19:00:51.660-07:00Out of Memory Error in Flash Builder 4Out of memory errors are no fun! Perhaps I can help you fix yours?<br /><br /><span style="font-weight:bold;">Problem:</span> You're developing an AIR application with a significant (150+) number of embedded assets and you're using FB4. Eventually, you'll add the straw that breaks the camel's (compiler's) back and you'll start getting:<br /><br /><span style="font-style:italic;color:red">An internal error occurred during: "Building workspace". Java heap space</span><br /><br /><span style="font-weight:bold;">Solution: </span> The issue is with FB4's compiler and the way it handles large numbers of [embed]s... The only way around the OOM error is to off load the assets to run time, rather than compile time.<br /><br />In my project, I created separate swfs for imgs, snd/music, CSVs and loaded them @ run time which contained static embeds. No more OOM! W00t!<br /><br />Another good idea, you can also bump up the default memory allocations for FB/Eclipse in general. <a href="http://polygeek.com/2496_flex_improve-flash-builders-performance-by-updating-your-eclipse-ini-file">Here's a description on how to do that. </a><br /><br />Lastly, here's a quick and dirty AssetMgr class that will load in a swf and give access to its contents. This will get you started on the aforementioned solution. (Much thanks to <a href="http://stackoverflow.com/questions/6195131/asset-management-in-adobe-air-for-a-2d-game">Ian's response on Stackoverflow</a> for giving me this suggestion!)<br /><br /><pre name="code" class="actionscript3"><br /><br />package{<br /><br />import flash.display.Loader;<br />import flash.display.LoaderInfo;<br />import flash.events.Event;<br />import flash.net.URLRequest;<br />import flash.system.ApplicationDomain;<br /><br /><br />/**<br />* <p>This Asset Manager class loads a swf and gives access to its embeded class objects.</p><br />* <br />* <p>AUTHOR : Jason Leon</p><br />* <p>CREATION DATE : July 21, 2011</p><br />* <br />*/<br /><br />public class AssetMgr {<br /> private var _appDomains:Array = []; <br /> private static var _instance:AssetMgr; <br /> private var _ready:Boolean = false;<br /> // path to asset lib<br /> private const SWF_PATH:String = "swf/AssetLIB.swf";<br /><br /> public function AssetMgr(){}; <br /><br /> /*********************************************************<br /> * retrieve instance<br /> * *****************************/<br /> public static function getInstance():AssetMgr {<br /> return _instance = (_instance ? _instance : new AssetMgr()) as AssetMgr;<br /> }<br /><br /> /*********************************************************<br /> * initialize <br /> * @Desc: must complete before assets are accessed<br /> * *****************************/<br /> public function init () : void { <br /> var loader:Loader = new Loader();<br /> loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleAssetsLoaded);<br /> <br /> var request:URLRequest = new URLRequest(SWF_PATH);<br /> loader.load(request);<br /> }<br /><br /> /*********************************************************<br /> * Handle payload<br /> * @Desc: saves Loader data to _appDomains obj<br /> * *****************************/<br /> private function handleAssetsLoaded (event:Event) : void { <br /> var appDomain:ApplicationDomain = LoaderInfo(event.target).applicationDomain;<br /> _appDomains[SWF_PATH] = appDomain;<br /> _ready = true;<br /> }<br /><br /> /*********************************************************<br /> * Request Assets from saved Loader data<br /> * @Param 1: assetName is the literal name of the asset you want to access<br /> * @Param 2: fileName is the literal name of the loader assets (example: SWF_PATH)<br /> * *****************************/<br /> public function getAsset (assetName:String, fileName:String) : Class {<br /> if (_ready) {<br /> var assetFileAppDomain:ApplicationDomain = ApplicationDomain(_appDomains[fileName]);<br /> var assetClassDefinition:Class = assetFileAppDomain.getDefinition(assetName) as Class;<br /> return assetClassDefinition;<br /> } else {<br /> throw new Error("initialization has not completed"); <br /> }<br /> }<br />}<br />}<br /></pre><br /><br />Is this not what you're after? You may also want to look <a href="http://bugs.adobe.com/jira/browse/FB-21556">into this thread on adobe's site</a> for your OOM needs... It was not the issue that I ran into but did help narrow it down so I could find my solution.<br /><br />[NOTE: There is a cap to how many [embed] tags you can include in each swf library you create. I haven't bothered to count to see what the limit is but I've certainly run across it so beware.]Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-68407853901469740842011-03-30T22:21:00.000-07:002011-07-21T12:49:15.394-07:00Local DB Tutorial (sqlite)I just followed this tutorial for sqlite and found it useful! Perhaps you will as well? <br /><br /><a href="http://www.adobe.com/devnet/air/flex/quickstart/articles/simple_sql_database.html">http://www.adobe.com/devnet/air/flex/quickstart/articles/simple_sql_database.html</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-70450029288458655542011-02-21T20:33:00.000-08:002011-02-21T20:34:28.754-08:00adobe air framerate throttlingGood and short article on framerate throttling: <br /><br /><a href="http://www.adobe.com/devnet/air/flex/articles/framerate_throttling.html">http://www.adobe.com/devnet/air/flex/articles/framerate_throttling.html</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-70951762189213900082011-01-26T13:00:00.000-08:002012-01-19T09:06:57.289-08:00FlashDevelop, Flash Builder 4, & SVNRecently, I began work on a project that originated via an engineer utilizing FlashDevelop. I personally love FlashDevelop (open-source all the way!) but, since my move to Mac, I have been unwilling to use it in VM and instead have gone with Flash Builder 4.<br /><br />FB4 does not recognize FlashDevelop projects which makes getting started a little challenging. So after I pulled the codebase from SVN, I was left with a bit of a conundrum. FB4 wouldn't recognize the file that I wanted to select as the default application. How do I compile? <br /><br />I googled around and couldn't find any immediately relevant help articles. Here is what I did, hope it helps: <br /><br />- Create a new ActionScript project in FlashBuilder and set name and location (workspace) to be identical to your repository checkout. <br /><br />- Delete the code-generated default class file<br /><br />- Open the .actionScriptProperties file<br /><br />- Edit the applications node with:<br /><br /><applications><br /> <application path="your-desired-class-file-name.as"/><br /></applications> <br /><br />- FB4 should now allow you to compileJason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com1tag:blogger.com,1999:blog-3483689928505174372.post-15990999002639257362011-01-25T14:41:00.001-08:002011-01-25T14:57:26.534-08:00Sun Flares in AS3Here's a little AS3 mimic of undulating sun flares using the drawing API. There are two different drawing styles, pointed or curved, which are modified via the ALT view btn. The slider controls the strength of the rays. <br /><embed src="http://www.jasonleon.com/tests/sunFlare/SunTest.swf" quality="high" width="800" height="600" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-14256915272459218912011-01-04T11:38:00.001-08:002011-01-04T22:06:00.225-08:00Chroma Key Experiment<a href="http://www.jasonleon.com/tests/chromakey/" target="_blank"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 259px; height: 242px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3Op3x0f5Rne0bfm3i60fa_VdyZfq8XZhCI-NbjxA-VI46LUu7Mew81IsPhwiIA0X5ULRFv92QQXNUzT0kqm1nQ1PfOK_yRB0WfGGuE-G8zQVCjQRGh5mD8v7RtHXen2r1Fzpy7RA2Jk0/s320/chromakey.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5558418881512274658" /></a><br /><br />I did this experiment about a year and a half ago. I wanted to see if I could set up a green screen, capture a human walk cycle, and implement it into a flash game. <br /><br /><span style="font-weight:bold;">[be sure to click on the game screen before attempting to move the avatar]</span><br /><br /><a href="http://www.jasonleon.com/tests/chromakey/" target="_blank">http://www.jasonleon.com/tests/chromakey/</a><br /><br />The process I used to extract the background for my walk cycle is called <a href="http://en.wikipedia.org/wiki/Chroma_key" target="_blank">Chroma key compositing</a>. It's the same trick that the local news uses to show the weather (wo)man in front of a weekly forecast. <br /><br />I made my green screen background with green felt. Just a tip, you'll need a ton of light sources. I had the equivalent of 4 flood lights which wasn't powerful enough to eliminate all of the shadows. Shadow was what caused the distortion that surrounds the edges of my avatar.<br /><br />All in all, fun project. I never really had time to mess with it further but there are certainly some neat concepts that could come from it.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-48382421738523986712010-12-24T12:17:00.000-08:002011-07-21T12:40:32.710-07:00Fun iPhone Programming Book<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bignerdranch.com/img/book/iphone-cover.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://www.bignerdranch.com/img/book/iphone-cover.png" border="0" alt="" /></a><br /><br />I started reading a new book by the folks @ <a href="http://bignerdranch.com"> The Big Nerd Ranch </a>and I have to say I'm enjoying it. <br /><br />You need to be comfortable with C in order to get much out of it. But, if that's the case, you're up and coding in the first chapter! I had a simple quiz app built and on my iPhone after reading 20 pages.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-83706242356576569742010-12-14T10:43:00.000-08:002010-12-14T16:16:37.921-08:00Inside Social Games review of KogamuThe project I'm currently working on was just written up on a prominent gaming blog. Check it out here: <br /><br /><a href="http://www.insidesocialgames.com/2010/12/14/preview-playdoms-kogamu-an-action-mmo-for-facebook/">http://www.insidesocialgames.com/</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-34730953097084279132010-11-10T09:09:00.001-08:002011-07-21T12:42:14.437-07:00Shattering a bitmapMore work with fractals.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jasonleon.com/tests/shatterBitmap/ShatterTest.swf"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 268px; height: 219px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMrKX_bPbmekACsoW8uThn9y3qLVQU82xi2Rb29SUSyOBk_hbv4Ut7pF_d-P0v_r4Wf0UAVw4s16lQluyziFacvJQnDDrd9A12l5MLMMdyfM3AUfVD-dgM8vo-1xi3UOWvvz4nnQmMyzY/s320/shatterImage.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5537969521234752274" /></a><br /><br />I generate shards of a source image by recursively branching over-top it, after which, I create a mask out of the voided space and then copy the source bitmapData to those voids. <br /><br />Very convincing effect!<br /><br /><a href="http://www.jasonleon.com/tests/shatterBitmap/ShatterTest.swf">Go here to see the prototype. Click the sprite to see the effect.</a><br /><br />You'll need to click on the sprite to shatter it :)Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-63856725621544984212010-11-05T01:10:00.000-07:002010-11-05T09:11:14.083-07:00Brownian Tree with AS3I've been messing around with fractals lately. Here's a fun test I put together:<br /><br /><embed src="http://jasonleon.com/tests/brownianTree/FractalTreeTest.swf" quality="high" width="600" height="600" align="center" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed><br /><br />My inspiration came from <a href="http://rosettacode.org/wiki/Brownian_tree#C">here</a>!Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-86368009714649054822010-11-02T09:08:00.001-07:002011-07-21T12:45:59.317-07:00Particle System<a href="http://jasonleon.com/tests/bloodParticleSystem/bloodParticleSystem_v2.swf"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 318px; height: 306px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie59HU-ufDCZZuhfJDkYbTrAWr_fjc__P_vgUgi9487vLKr5y8kyUmbyhMvfFacfTG_nUQDKhwnuTBtzGB7QvLrwoLXPm7Wz4Hp0ULCJpQhUDxaHp8y8TTo0xsL-mzUYdnFde9_0PYjCs/s320/particleSystem.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5534985148227995874" /></a><br /><br />So, I'm working on this game and they were using a super cheesy decal system to depict bullet impacts on NPCs. I came up with this app as a test to see what a pixel blood particle sys could look like:<br /><br /><span style="font-weight:bold;">[Instructions: Produce a projectile by clicking anywhere on the left half of the screen. If the projectile comes in contact with the sprite, a particle emitter will be placed at the point of impact.]</span><br /><br /><a href="http://jasonleon.com/tests/bloodParticleSystem/bloodParticleSystem_v2.swf">Try It Out Here!</a><br /><br />I did a couple more passes of optimization for what went into production but, regardless, I'm still happy with this test. You'll see roughly 150 particles moving about at 50 FPS, not bad.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-70718940501221343132010-10-30T16:42:00.000-07:002010-10-30T18:49:38.230-07:00Sierpinski Carpet with AS3After stumbling across this wikipedia article: <a href="http://en.wikipedia.org/wiki/Sierpinski_carpet">http://en.wikipedia.org/wiki/Sierpinski_carpet</a>, I thought the world would be a better place if I ported it to AS3. <br /><br />I'm not sure what you'll use this for but, in case you needed one, here's a Sierpinski Carpet class!<br /><br />Impress your friends with stylish images such as this!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7xp2XUkKnvZJN7zwHR_r3i32MBb9nwnHO856Iu61VxMZc1iW8N6gE_oCrZYFUWp54GinQcCkxZTdDXzEAAB20gVlvgyljWfJdCOn9a53bvig1qqPWR28ZmERCsSiTsJM50cVqVt59JMk/s1600/SierpinskiCarpet.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 318px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7xp2XUkKnvZJN7zwHR_r3i32MBb9nwnHO856Iu61VxMZc1iW8N6gE_oCrZYFUWp54GinQcCkxZTdDXzEAAB20gVlvgyljWfJdCOn9a53bvig1qqPWR28ZmERCsSiTsJM50cVqVt59JMk/s320/SierpinskiCarpet.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5533990056470701490" /></a><br /><br />SWF here: <br /><a href="http://www.jasonleon.com/tests/sierpinskiCarpet/SierpinskiCarpet.swf">example</a><br /><br />SRC here: <br /><br /><a href="http://www.jasonleon.com/src/sierpinskiCarpet/IsSierpinskiCarpetFilled.as">IsSierpinskiCarpetFilled.as</a><br /><br /><a href="http://www.jasonleon.com/src/sierpinskiCarpet/SierpinskiCarpet.as">default app file (SierpinskiCarpet.as)</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-1903993130761005952010-09-21T15:09:00.001-07:002010-09-21T15:11:49.052-07:00BitwiseI do apologize for the brevity of my blog posts over the last few months... I've been slammed!<br /><br />This post will be no exception... However, here are two links that, when used together, will make for some interesting reading and experimentation:<br /><br /><a href="http://www.gamedev.net/reference/articles/article1563.asp">http://www.gamedev.net/reference/articles/article1563.asp</a><br /><br /><a href="http://lab.polygonal.de/2007/05/10/bitwise-gems-fast-integer-math/">http://lab.polygonal.de/2007/05/10/bitwise-gems-fast-integer-math/</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-85751008282695645042010-08-27T14:49:00.000-07:002010-08-27T14:50:43.825-07:00createGradientBox MethodThis is neat... he helps us visualize how the parameters of the createGradientBox Method actually affect the outcome: <br /><br /><a href="http://polygeek.com/1676_flex_creategradientbox-explorer">http://polygeek.com/1676_flex_creategradientbox-explorer</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-590461677011709442010-07-20T17:58:00.000-07:002010-07-20T17:59:52.854-07:00undocumented AS3 goodnessThese are useful: <br /><br /><a href="http://jpauclair.net/2010/02/10/mmcfg-treasure/">http://jpauclair.net/2010/02/10/mmcfg-treasure/</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-32413557286825387252010-07-12T12:19:00.000-07:002010-07-12T14:33:23.028-07:00BitmapData TestI've become interested in bipmapdata so I started a series of tests to see what it was capable of... I though that this test was neat... it demos 300 points randomly bouncing round the screen. <br /><br />Click anywhere to start them animating and click again to reset:<br /><br /><a href="http://www.jasonleon.com/tests/bitmapTests/randomPixels.swf">http://www.jasonleon.com/tests/bitmapTests/randomPixels.swf</a>Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-46006730351675842102010-07-07T16:25:00.001-07:002010-07-07T16:29:21.888-07:00JSON validatorI'm a giant fan of using <a href="http://www.json.org/">JSON</a> for communicating client to server. I was introduced to this fun tool today!<br /><br /><a href="http://www.jsonlint.com/">http://www.jsonlint.com/</a><br /><br />It's nice for making sense of what you're deserializing.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0tag:blogger.com,1999:blog-3483689928505174372.post-52674467764496494912010-07-07T11:18:00.000-07:002010-07-08T15:49:37.585-07:00HTML5 is coming up<a href="http://www.kesiev.com/akihabara/">http://www.kesiev.com/akihabara/</a><br /><br />I'm definitely going to try a test project. The games on kesiev's site run very well. My initial criticism of building games in HTML5 was that all of the prototypes that I had seen prior were slow and jittery. These games, however, are far from that.Jason Leon, CSMhttp://www.blogger.com/profile/00763725126878140374noreply@blogger.com0