<?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-1109055551036769632</id><updated>2012-02-04T18:25:15.023+01:00</updated><category term='Car Handling Physics Tilting Banking'/><category term='Car'/><category term='Particles'/><category term='PickUps Curves Math'/><category term='Math Function'/><category term='Physics'/><title type='text'>Xform Game Development</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default?start-index=101&amp;max-results=100'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>127</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6249032534109200297</id><published>2012-02-03T18:11:00.003+01:00</published><updated>2012-02-04T18:25:15.028+01:00</updated><title type='text'>Time is ticking!</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hello all!&lt;br /&gt;&lt;br /&gt;Today a new blog about the "snowboard game with cars"! First of all, for anyone that goes skiing or snowboarding: don't try this when you get the chance to do it... Only if you are really that good:) &lt;br /&gt;Last week I had a week off and went skiing and the first day I tried a barrel roll myself and didn't end up that well. Didn't broke anything, but it hurt, haha. I was skiing downhill and making my turns, only somehow I lost my balance and my ski got stuck in the snow. So I went airborne, made a nice barrel roll and landed on my side in the snow! From that moment I knew that I don't need to so some tricks like in the "snowboard game with cars"!&lt;br /&gt;&lt;br /&gt;Taking the ramp! &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OKJRYpzKJDw/TywTL2ttuLI/AAAAAAAAAMI/on3tB-kV4Fo/s1600/DSC01929%2B-%2Bkopie.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://3.bp.blogspot.com/-OKJRYpzKJDw/TywTL2ttuLI/AAAAAAAAAMI/on3tB-kV4Fo/s200/DSC01929%2B-%2Bkopie.JPG" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Ok, enough about my holiday! Let's talk about the game. :) &lt;br /&gt;It's almost finished! I know you all can't wait to see it, but you still need to wait a little longer. Currently we are working on some minor issues that has to be done. Many things have to be tested and fixed if it's bugged. So my work/task/todo list is quite big, because all of the things that has to be done. &lt;br /&gt;So for example we had this nasty bug at the finish, when you should go back to the menu from the track. All animations were playing twice as fast and when one ends, the game crashed and you weren't able to continue, so you had to restart the game! Double checked the function, but just couldn't find the error..&lt;br /&gt;So finally after some testing/debugging hours I finally found what went wrong. The function was called from a button what is pretty normal. Only when you hit that button so fast that it didn't even got the chance to delete himself he would trigger the function twice. So after this bug I could fix some other bugs that were related to this one.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9F6rok2B_jo/TywUb6Ug1-I/AAAAAAAAANQ/SM2snVGHkYs/s1600/DSC01915.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/-9F6rok2B_jo/TywUb6Ug1-I/AAAAAAAAANQ/SM2snVGHkYs/s400/DSC01915.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Greetings,&lt;br /&gt;&lt;br /&gt;Michael&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/02/time-is-ticking.html" data-send="false" data-show-faces="false" data-width="450"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6249032534109200297?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6249032534109200297/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/02/time-is-ticking.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6249032534109200297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6249032534109200297'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/02/time-is-ticking.html' title='Time is ticking!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-OKJRYpzKJDw/TywTL2ttuLI/AAAAAAAAAMI/on3tB-kV4Fo/s72-c/DSC01929%2B-%2Bkopie.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-3274983478124291392</id><published>2012-01-27T16:12:00.001+01:00</published><updated>2012-01-27T16:29:21.328+01:00</updated><title type='text'>The Big "Xform: Start Of 2012" Quiz</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hi all,&lt;br /&gt;&lt;br /&gt;2012 is only one month old and it started good! For us it started&amp;nbsp;with the launch of our newest games: Traffic Slam 2!&lt;br /&gt;We're very proud of it, because it's our second Flash 3D game. And it worked out very well. Try it yourself here: &lt;a href="http://www.agame.com/game/traffic-slam-2.html"&gt;http://www.agame.com/game/traffic-slam-2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or watch the trailer here: &lt;a href="http://www.youtube.com/watch?v=U4inNhHGIdI"&gt;http://www.youtube.com/watch?v=U4inNhHGIdI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course this isn't the only project that we've worked on during this first month. In fact, we're never working on just only one project. Unfortunately, I can't give&amp;nbsp;too much details about the upcoming projects for 2012, but they're going to be great!&lt;br /&gt;But I do want to share our current projects with you, so with this blog I will give you a sneak preview:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Welcome to the Jungle&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--22tdMyuJfo/TyK5bSP27-I/AAAAAAAAALU/7vILAmA9uf0/s1600/1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="110" src="http://2.bp.blogspot.com/--22tdMyuJfo/TyK5bSP27-I/AAAAAAAAALU/7vILAmA9uf0/s200/1.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Ain't No Mountain High Enough&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Bxp9BySqA_o/TyK5kym2dHI/AAAAAAAAALc/JdJcniqLq0c/s1600/2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="101" src="http://1.bp.blogspot.com/-Bxp9BySqA_o/TyK5kym2dHI/AAAAAAAAALc/JdJcniqLq0c/s200/2.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Space Jam&lt;/strong&gt;  &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--t20QE-jf_A/TyK6hIPNsoI/AAAAAAAAAL0/uZCup1LJQTU/s1600/3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://4.bp.blogspot.com/--t20QE-jf_A/TyK6hIPNsoI/AAAAAAAAAL0/uZCup1LJQTU/s200/3.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Le Carnaval des Animaux (Finale)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-iuV2WfPLvTI/TyK6pKtNedI/AAAAAAAAAL8/W6Zg5ZXqytI/s1600/4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="109" src="http://2.bp.blogspot.com/-iuV2WfPLvTI/TyK6pKtNedI/AAAAAAAAAL8/W6Zg5ZXqytI/s200/4.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Can you guess on which games we're working? &lt;br /&gt;Another hint: they do&amp;nbsp;contain either explosions or cars!&lt;br /&gt;&lt;br /&gt;Answers will be revealed in the upcoming months.&lt;br /&gt;And many, many more games to come... So I keep you posted!&lt;br /&gt;&lt;br /&gt;- Shirley&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/big-xform-start-of-2012-quiz.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-3274983478124291392?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/3274983478124291392/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/big-xform-start-of-2012-quiz.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3274983478124291392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3274983478124291392'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/big-xform-start-of-2012-quiz.html' title='The Big &quot;Xform: Start Of 2012&quot; Quiz'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--22tdMyuJfo/TyK5bSP27-I/AAAAAAAAALU/7vILAmA9uf0/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8020985314563557914</id><published>2012-01-25T11:18:00.003+01:00</published><updated>2012-01-25T11:52:03.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PickUps Curves Math'/><title type='text'>Flying pickups</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Dear readers,&lt;br /&gt;&lt;br /&gt;For one of our new games we have flying pickups which move towards the player when an enemy is killed. The kind of movement we want is shown in the image below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Tty9dTQBgVo/Tx_UqTLdLsI/AAAAAAAAAKg/NwXlkOUWf2o/s1600/PickUpMovement.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="244" width="320" src="http://4.bp.blogspot.com/-Tty9dTQBgVo/Tx_UqTLdLsI/AAAAAAAAAKg/NwXlkOUWf2o/s320/PickUpMovement.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;What's important about this movement is that it has a nice curve to it. The problem here is: how do we get this curve given that the starting and end position of the curve are different each time because they depend on where the player and the enemy are. Also the maximum height of the curve should be easy to change.&lt;br /&gt;&lt;br /&gt;I've split the problem into two components: movement of point A to point B on the XZ coordinates and the movement on the Y coordinate as can be seen in the images below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oba6if_iuGU/Tx_VWMPDDmI/AAAAAAAAAKs/xx4Rqg7fSag/s1600/PickUpMovementXZ.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="300" width="300" src="http://1.bp.blogspot.com/-oba6if_iuGU/Tx_VWMPDDmI/AAAAAAAAAKs/xx4Rqg7fSag/s320/PickUpMovementXZ.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fyTs6udgTd8/Tx_VcWUjLDI/AAAAAAAAAK4/BUkm8hlh4Zg/s1600/PickUpMovementY.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="291" src="http://2.bp.blogspot.com/-fyTs6udgTd8/Tx_VcWUjLDI/AAAAAAAAAK4/BUkm8hlh4Zg/s320/PickUpMovementY.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As you can see the movement in XZ coordinates is a simple line segment (linear interpolation between A and B).&lt;br /&gt;The movement in Y coordinates is however not as simple (the height of the end point B happens to be fixed at 0.5). But this curve looks oddly familiar. Indeed, in (&lt;a href="http://xformgamedevelopment.blogspot.com/2011/10/math-problem.html"&gt;one of my earlier blog posts&lt;/a&gt;) I wrote about how Pieter needed a function with certain properties. Now a few months later it seems I need a similar kind of function, just a little but more dynamic as the height of the curve is now a variable as well as the starting point Ay. Again we want to find the a, b and c coefficients of the second degree polynomial f(x) = ax^2 + bx + c. So we go back to pen and paper and calculate a, b and c as a function of H and Ay (and t which is the point where f(t) = H). Here's a photo of the calculations, they're similar to the calculations I described in the earlier blog post.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TRZ6XLkhJKk/Tx_VkxkEQyI/AAAAAAAAALE/v9VOMz99njM/s1600/Calculations.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="200" width="144" src="http://1.bp.blogspot.com/-TRZ6XLkhJKk/Tx_VkxkEQyI/AAAAAAAAALE/v9VOMz99njM/s200/Calculations.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Calculating the a, b and c coefficient of the second degree polynomial function.&lt;br /&gt;&lt;br /&gt;Also a minor correction on our previous blogpost: if you want to see the flying souls move up, you need to scroll the texture (UV coordinates) down and not up. Otherwise the flying souls move down into the ground.&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/flying-pick-ups.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8020985314563557914?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8020985314563557914/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/flying-pick-ups.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8020985314563557914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8020985314563557914'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/flying-pick-ups.html' title='Flying pickups'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Tty9dTQBgVo/Tx_UqTLdLsI/AAAAAAAAAKg/NwXlkOUWf2o/s72-c/PickUpMovement.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Utrecht, Nederland</georss:featurename><georss:point>52.0901422 5.109664899999984</georss:point><georss:box>52.035271200000004 5.020493899999984 52.1450132 5.198835899999985</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1721125246156053870</id><published>2012-01-20T17:59:00.001+01:00</published><updated>2012-01-20T18:21:15.230+01:00</updated><title type='text'>Scroll down please</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Developing browser based games has the drawback that we generally can't use too much animations or effects. The reason for this is that they take too long to create or simply cost too much processing power which slows down a game. &lt;br /&gt;&lt;br /&gt;But we do want our games too look good and not too static. You can imagine it's kind of dull looking when there is nothing animated or moving in a game environment. &lt;br /&gt;Luckily for us there is a simple animation trick which can be used an a variety of ways to add "life" to a scene! It's actually one of the oldest tricks of the trade.......scrolling!&lt;br /&gt;&lt;br /&gt;Scrolling a texture/image over an 3D object or plane can be simply done by animating the objects UVW coordinates.&lt;br /&gt;&lt;br /&gt;Momentarily I'm working on an update of Go Kart Go which will have new characters, tracks and some updates of the old tracks. One of the new tracks has a spooky ghostship theme. For this track I wanted the souls of dead pirates to come out of the ground and move up into the sky. I used the scrolling technique to achieve this effect. &lt;br /&gt;&lt;br /&gt;First I created a vertically tiling souls texture (with transparency) and mapped it onto a 3D plane object. Scrolling the texture (UVW coordinates) vertically up accross the plane will move the souls.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MvqQPk3hOLs/Txmc5t7nl-I/AAAAAAAAAJ8/w6E7FBP2GI0/s1600/ScrollingSouls.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://1.bp.blogspot.com/-MvqQPk3hOLs/Txmc5t7nl-I/AAAAAAAAAJ8/w6E7FBP2GI0/s320/ScrollingSouls.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I placed a few of these objects in the scene and modified the mesh to get a cool "wave" effect on the souls. This looks especially good when a few of these soul planes are placed behind each other.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0aKkSBqQ1Q0/TxmdB4IeuqI/AAAAAAAAAKI/IY5ndJqh1hQ/s1600/Scroll.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://1.bp.blogspot.com/-0aKkSBqQ1Q0/TxmdB4IeuqI/AAAAAAAAAKI/IY5ndJqh1hQ/s320/Scroll.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YOw5kBH1x5k/TxmdFzOTe6I/AAAAAAAAAKU/jzaJGsnJ8jM/s1600/ScrollWire.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://2.bp.blogspot.com/-YOw5kBH1x5k/TxmdFzOTe6I/AAAAAAAAAKU/jzaJGsnJ8jM/s320/ScrollWire.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are countless ways a scrolling texture can be used. For Go Kart Go it's used for flowing water and lava, turbo pads, dust particles, rain, moving clouds, smoke and (of course) the souls!&lt;br /&gt;&lt;br /&gt;Cheers, &lt;br /&gt;Matt&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/scroll-down-please.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1721125246156053870?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1721125246156053870/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/scroll-down-please.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1721125246156053870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1721125246156053870'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/scroll-down-please.html' title='Scroll down please'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MvqQPk3hOLs/Txmc5t7nl-I/AAAAAAAAAJ8/w6E7FBP2GI0/s72-c/ScrollingSouls.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1176791554370788196</id><published>2012-01-18T16:04:00.002+01:00</published><updated>2012-01-18T16:13:39.440+01:00</updated><title type='text'>Frostbitten Mountain 1</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hello all!&lt;br /&gt;&lt;br /&gt;A quick update about the awesome "snowboard game with cars". &lt;br /&gt;The last couple of months I've been working on the tracks. The tracks are subdevided in 3 mountains. Every mountain has their own settings, assets, etc.&lt;br /&gt;&lt;br /&gt;One mountain has an Austria mountain idea (a famous country for people of Europe to have the winter sport holidays). This mountain is a sort of tutorial mountain where you get to learn this game. My main goal for this mountain was to get this mountain friendly and fun to ride on and not hard, pointy rocks, deep clifs or other craziness.&lt;br /&gt;&lt;br /&gt;For this mountain I've made some typical things you see when you go skiing, snowboarding, or whatever. So there is this Ski lift hanging over the track here and there, some wooden cabins in areas where there are trees, some typical Austrian/German buildings and more!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-aIArSn20veM/TxbZRSsYxrI/AAAAAAAAAJk/RbKwWd8buVA/s1600/Untitled-2.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="168" width="320" src="http://2.bp.blogspot.com/-aIArSn20veM/TxbZRSsYxrI/AAAAAAAAAJk/RbKwWd8buVA/s320/Untitled-2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here is a screenshot of the buildings in my 3Ds max viewport without textures. I started to do some research, finding reference etc, making some mockup textures to modify those later. Then I start making the assets, first I make them look realistic like I told before in the blog about the Pick-up. After this I cartoonify the whole bunch to get them the look I want. Then I update the texture where I need to. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-B9Jd27NrLdQ/TxbaIvzuBXI/AAAAAAAAAJw/11O_gT1tdeQ/s1600/Untitled-02.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="229" width="320" src="http://1.bp.blogspot.com/-B9Jd27NrLdQ/TxbaIvzuBXI/AAAAAAAAAJw/11O_gT1tdeQ/s320/Untitled-02.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hails,&lt;br /&gt;Eugene&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/frostbitten-mountain-1.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1176791554370788196?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1176791554370788196/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/frostbitten-mountain-1.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1176791554370788196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1176791554370788196'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/frostbitten-mountain-1.html' title='Frostbitten Mountain 1'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-aIArSn20veM/TxbZRSsYxrI/AAAAAAAAAJk/RbKwWd8buVA/s72-c/Untitled-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6430332488201418594</id><published>2012-01-11T09:23:00.001+01:00</published><updated>2012-01-11T10:03:15.176+01:00</updated><title type='text'>Finalizing mockups</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hello!&lt;br /&gt;&lt;br /&gt;Past few weeks I've been working on multiple projects, but want to give you guys an update on my previous blog. The levels I was talking about a few weeks ago are nearing completion. I managed to get all of the 9 mockups up and running in time. It was a bit of a rush though.&lt;br /&gt;&lt;br /&gt;Our game/level designer took the game for a spin and gave me feedback on things to change. We discussed things like the overall 'shape' or 'direction' of a level. This image should explain what I mean by 'direction':&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-j88up_COVtY/Tw1GX7CfjzI/AAAAAAAAAJM/ihJE-hakByc/s1600/Direction.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="195" width="320" src="http://2.bp.blogspot.com/-j88up_COVtY/Tw1GX7CfjzI/AAAAAAAAAJM/ihJE-hakByc/s320/Direction.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When having a specific setting for a set of levels, for example a jungle environment, it is important that the player instantly recognizes each individual level despite having the same art assets and setting. Next to the 'direction' and 'shape' of the level a different weather/sky setting is also very important. In addition to these basic design guidelines each level should have a specific landmark which amplifies the difference between the levels in the same environment setting even more.&lt;br /&gt;&lt;br /&gt;The next step was to finalize the mockups and implement the changes. I usually divide this process in several smaller ones. For example, I always start with the big things first. In this case, I fixed the ' direction' of the levels first if necessary. Also finalizing the specific landmarks per level could be placed in the list of 'big-things-to-do-first'.&lt;br /&gt;&lt;br /&gt;At this point every level has the correct shape/direction and landmark we want them to have. Since these levels are for a semi-platformer kind of game the levels need.. platforms! Some of the mockups already had some, but it was far from what it should be in the final levels. I made a set of 'platforms' for every environment setting. This is an example of a platform set in the desert setting:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iBPGGvO9bG0/Tw1GYQ1iQLI/AAAAAAAAAJc/kwrDH4__cnU/s1600/PlatformSet.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="227" width="320" src="http://3.bp.blogspot.com/-iBPGGvO9bG0/Tw1GYQ1iQLI/AAAAAAAAAJc/kwrDH4__cnU/s320/PlatformSet.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The last step artwise is to add small objects such as crates, plants/foliage and other background element. These little objects have pretty much no effect on the gameplay, but it is important that they're there. They are the final touches. &lt;br /&gt;&lt;br /&gt;If you've been following our facebook page you might know that there are some new xform games coming out soon. All I can say is that I'm very excited about all of them and can't wait to play them myself! :) Keep an eye on our facebook page for the latest updates!&lt;br /&gt;&lt;br /&gt;Greetings,&lt;br /&gt;Joep&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/finalizing-mockups.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6430332488201418594?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6430332488201418594/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/finalizing-mockups.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6430332488201418594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6430332488201418594'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/finalizing-mockups.html' title='Finalizing mockups'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-j88up_COVtY/Tw1GX7CfjzI/AAAAAAAAAJM/ihJE-hakByc/s72-c/Direction.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2864668478814933592</id><published>2012-01-06T16:40:00.002+01:00</published><updated>2012-01-06T17:02:36.023+01:00</updated><title type='text'>Can't live without them!</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hello all!&lt;br /&gt;&lt;br /&gt;It's been a while since my last post, so a quick update. In some earlier posts, people blogged about a "snowboard game with cars" about some awesome stuff! And I am also working on that project, so here another "snowboard with cars" blog! The game is getting there week by week. We still got nice ideas we have to implement, but first something about animations!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tZLdZerj_70/TwcUvOQ-15I/AAAAAAAAAJA/9aaN56GpWm4/s1600/SnowboardCar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-tZLdZerj_70/TwcUvOQ-15I/AAAAAAAAAJA/9aaN56GpWm4/s320/SnowboardCar.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Last couple of weeks I implemented all the animations for the menu and interface screens that are all designed by Matthew. It was the first time for me to implement animations for 2d screens, so I had to do some research! In the mean time I made notes for all the animations that has an In/Out animation in the scenes. So I made a big list something like the lists Shirley blogged about a couple of weeks ago! So finally I found out how everything works out and I could finally start animating those screens. &lt;br /&gt;It's important to make a list if you got multiple objects that have to be animated. Otherwise you will end up with models that won't show when needed or in the wrong scene.&lt;br /&gt;&lt;br /&gt;So after a while it was going pretty well and I felt pretty good about it. Only then I noticed I wasn't even halfway. Nah, it was pretty fun besides all the timing and special animations that Matt created. &lt;br /&gt;So now we got some cool animations for our Interface and Menu instead of just switching the models on and off! Most of them are pretty simple, but you get used to it very quickly. But&amp;nbsp;it's quite important because it's weird to imagine a car driving on the road with wheels that dont spin unless it's year 3594 and we got some awesome floating stuff:P&lt;br /&gt;&lt;br /&gt;Greetings,&lt;br /&gt;&lt;br /&gt;Michael&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/cant-live-without-them.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2864668478814933592?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2864668478814933592/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/cant-live-without-them.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2864668478814933592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2864668478814933592'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/cant-live-without-them.html' title='Can&apos;t live without them!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-tZLdZerj_70/TwcUvOQ-15I/AAAAAAAAAJA/9aaN56GpWm4/s72-c/SnowboardCar.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7080746537525742147</id><published>2012-01-02T18:00:00.003+01:00</published><updated>2012-01-03T10:30:27.075+01:00</updated><title type='text'>Animated Crowd</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The past few days we've been working on our "snowboard game with cars" finish setting which is some kind of stadium filled with animated crowd. We didn't have a lot of time for all this so we used some shortcuts to create this. &lt;br /&gt;&lt;br /&gt;One of the most important things to keep in mind when making a crowd is that it must look like there are a lot of individual people. In our game we have 12 different people to make up our crowd. But instead of creating 12 new 3D models we took the games original characters, just two, made some slight mesh changes (a bit fatter, smaller, etc.) and changed the textures. &lt;br /&gt;&lt;br /&gt;For most of the textures only the colors were changed. We also switched/removed some hats. The results can be seen below, they look quite varied don't they?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-B2hU6vUZtcs/TwHhN1Fv1lI/AAAAAAAAAIc/8-Bo3bm6qIA/s1600/MaxScene.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="164" width="320" src="http://2.bp.blogspot.com/-B2hU6vUZtcs/TwHhN1Fv1lI/AAAAAAAAAIc/8-Bo3bm6qIA/s320/MaxScene.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Using these 3D characters in-game to make up the crowd wouldn't be a good idea and most likely cost a lot performance. Instead we chose to display the crowd as an animated texture with four frames. We've made one texture which holds all of the animations frames, these frames are mapped onto planes and are switched in-game by animating the texture coordinates.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8u4W4-M4gTc/TwHhjiogNDI/AAAAAAAAAIo/zy21Q1bVwNI/s1600/CrowdFrames.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="297" width="320" src="http://2.bp.blogspot.com/-8u4W4-M4gTc/TwHhjiogNDI/AAAAAAAAAIo/zy21Q1bVwNI/s320/CrowdFrames.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And finally we've placed the crowd planes in the stadium resulting in this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KlfRmwUbWYo/TwHiOxmOCuI/AAAAAAAAAI0/tCKziH7Ph2M/s1600/CrowdFinished.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="141" width="320" src="http://1.bp.blogspot.com/-KlfRmwUbWYo/TwHiOxmOCuI/AAAAAAAAAI0/tCKziH7Ph2M/s320/CrowdFinished.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Cheers, Matt&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2012/01/animated-crowd.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7080746537525742147?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7080746537525742147/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/animated-crowd.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7080746537525742147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7080746537525742147'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2012/01/animated-crowd.html' title='Animated Crowd'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-B2hU6vUZtcs/TwHhN1Fv1lI/AAAAAAAAAIc/8-Bo3bm6qIA/s72-c/MaxScene.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5939165802599101452</id><published>2011-12-23T17:08:00.002+01:00</published><updated>2011-12-23T17:10:57.135+01:00</updated><title type='text'>Xmas at Xform</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LF3RKo5V_UE/TvSmgDV2LoI/AAAAAAAAAIQ/rFFPTHGOPWc/s1600/XformChristmas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/-LF3RKo5V_UE/TvSmgDV2LoI/AAAAAAAAAIQ/rFFPTHGOPWc/s400/XformChristmas.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="messageBody" data-ft="{&amp;quot;type&amp;quot;:3}"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We wish everybody a merry Chrismas and of course a great 2012! Filled with free games! Greets from everyone here at Xform!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;- Diederik, Pieter, Matthew, Joep, Stijn, Eugène, Michael and Shirley&lt;/span&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/12/xmas-at-xform.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5939165802599101452?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5939165802599101452/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/xmas-at-xform.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5939165802599101452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5939165802599101452'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/xmas-at-xform.html' title='Xmas at Xform'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-LF3RKo5V_UE/TvSmgDV2LoI/AAAAAAAAAIQ/rFFPTHGOPWc/s72-c/XformChristmas.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-9169414975552973778</id><published>2011-12-14T13:33:00.001+01:00</published><updated>2011-12-14T13:52:49.215+01:00</updated><title type='text'>Making meters and New Kids!</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hello!&lt;br /&gt;&lt;br /&gt;Past few days I've been, literally as we call it.. 'Making meters'. Which means that I've been concentrating myself rather more on quantity than quality. My job for this week is to create 9 mockup levels for a new project. Priority number one for me was to get it done as quickly as possible, so that the programmers could continue developing the game itself.&lt;br /&gt;&lt;br /&gt;I started by blocking out the levels with 3D tiles we already had from another project. This saved me a lot of time. Using the tiles I was able to block out the 9 mockups. My main focus was.. well to be honest getting myself 9 mockup levels up and running at the end of the week in the first place.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-muC1v0VWxNc/TuiXXWF8YpI/AAAAAAAAAH4/QaH0q1fJgVU/s1600/Desert.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="180" width="320" src="http://4.bp.blogspot.com/-muC1v0VWxNc/TuiXXWF8YpI/AAAAAAAAAH4/QaH0q1fJgVU/s320/Desert.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Then, our Game/Level designer is the one to decide if a mockup level's design is good enough or not. He then gives feedback on what to change and add or remove from the mockup. I mean things like: Making the level longer/shorter, making the level going uphill or downhill, adding trees, removing trees, adding/removing a rock here and there etc. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7tPiiA3VkiI/TuiXennsX9I/AAAAAAAAAIE/1XvlT36-CaM/s1600/Jungle.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="180" width="320" src="http://1.bp.blogspot.com/-7tPiiA3VkiI/TuiXennsX9I/AAAAAAAAAIE/1XvlT36-CaM/s320/Jungle.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The next step is to finalize the mockups into final levels. This is what I'm currently working on. Trying to change/improve the mockups as much and as fast as possible following the feedback the designer gave me. I'm not able to work on the placement of every rock or tree.. since the final levels should be done this Friday.. And with this project we really have little time to do it. So having the 9 levels all operational is priority number one :)! &lt;br /&gt;&lt;br /&gt;Last night we all went to the movie 'New Kids: Nitro'. This movie is uhm.. not sure how to describe this..  strange, hilarious and fun. I think you need to be Dutch to understand it. Anyway, it is about a group of friends who live in a small town called 'Maaskantje'. They are to say the least, not the smartest and wisest people on the planet and they are in a fight with a near by town called 'Schijndel'. Maybe you just have to see it for yourself, see the trailer below:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/XFuGtQ4WHm4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;-- Joep&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/12/making-meters-and-new-kids.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-9169414975552973778?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/9169414975552973778/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/making-meters-and-new-kids.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9169414975552973778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9169414975552973778'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/making-meters-and-new-kids.html' title='Making meters and New Kids!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-muC1v0VWxNc/TuiXXWF8YpI/AAAAAAAAAH4/QaH0q1fJgVU/s72-c/Desert.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8526858762203808025</id><published>2011-12-09T16:38:00.002+01:00</published><updated>2011-12-09T17:40:53.020+01:00</updated><title type='text'>Shoot those cyborgs to bits!</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;Hello everyone!&lt;br /&gt;&lt;br /&gt;This is my first post for the blog so I will introduce myself. I’m Michael, new programmer at Xform, started at the same time as Eugene and also worked on the same projects. It’s no coincidence that we started at the same time, because we are brothers. We studied together and done most of our projects together. Also we did our first internship together at Xform. And since then we got ruined by them. And there is no way to undo that so, only one option remains.. Join them!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Hi9O8aWKDLE/TuIpxMk_J6I/AAAAAAAAAHg/yWfUIlk1TvE/s1600/ProbotectorII.jpg" imageanchor="1" style="clear:right; float:right; margin-left:1em; margin-bottom:1em"&gt;&lt;img border="0" height="240" width="256" src="http://4.bp.blogspot.com/-Hi9O8aWKDLE/TuIpxMk_J6I/AAAAAAAAAHg/yWfUIlk1TvE/s320/ProbotectorII.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;So we started our first project "Earth A.D."! Uhh?! "Earth A.D." yeah also known as "Shootin’ Cybertrash".  The idea was to create the best "web based side scrolling gun and run action shooter game"! A side scroller which has the elements of the good old NES/SNES games.. A game which you really need to play over and over again to become good at. Remember positions of pickups, weapons, enemies. So basically hard as hell, but super fun to play. Can't remember how many games I played on those consoles but some of those titles I do remember. One of those games which also is our main reference is "Contra"! That franchise is super awesome, play as "Rambo" with a HUGE gun and shoot everything  to damnation! Every alien, robot or evil being will be blown to bits with your super gun that can switch from normal fire to a flamethrower/ rocket launcher etc.. Took a while to finish it on the NES but it was worth it. Still got the game for my NES, still play it sometime to just get the feeling back of the good old games :P &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6bdJ-L1lSUU/TuIoXbIQPzI/AAAAAAAAAHU/NTlD4t5Uw-g/s1600/ShootinCybertrash_Screenshot03.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="180" width="320" src="http://2.bp.blogspot.com/-6bdJ-L1lSUU/TuIoXbIQPzI/AAAAAAAAAHU/NTlD4t5Uw-g/s320/ShootinCybertrash_Screenshot03.png" /&gt;&lt;/a&gt;&lt;/div&gt;But enough about "Contra", I was talking about "Shootin Cybertrash"! Hell yeah! We got some nice reference for the game and a nice idea about it. So then "Earth A.D." was created..&lt;br /&gt;We wanted to make it even more difficult then "Contra", so we started to make some mockups with hordes of enemies.."Serious Sam" but then side scrolling :P You think the first level is hard now? In the beginning it was insane! Overdid it too much so we redid it until a hard level was created, but not too impossible :) After a while we needed a more catchy name so "Earth A.D." became "Shootin Cybertrash"! &lt;br /&gt;&lt;br /&gt;Some tips.. Just play it a lot and learn their actions and try to dodge their bullets, it's possible, go and see the trailer below! And play the game &lt;a href="http://www.shockwave.com/gamelanding/shootin-cybertrash.jsp"&gt;here&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=9f3oBNyn3as"&gt;http://www.youtube.com/watch?v=9f3oBNyn3as&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good luck!&lt;br /&gt;&lt;br /&gt;Michael&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/12/hello-everyone-this-is-my-first-post.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8526858762203808025?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8526858762203808025/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/hello-everyone-this-is-my-first-post.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8526858762203808025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8526858762203808025'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/hello-everyone-this-is-my-first-post.html' title='Shoot those cyborgs to bits!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Hi9O8aWKDLE/TuIpxMk_J6I/AAAAAAAAAHg/yWfUIlk1TvE/s72-c/ProbotectorII.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-9061292586249600789</id><published>2011-12-02T17:17:00.001+01:00</published><updated>2011-12-02T17:22:47.136+01:00</updated><title type='text'>Let that camera roll!</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Hi all!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I'm back. With a brand new post. About fans. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Not the ones that are standing outside right now, waiting for us to leave the office, screaming our names real loud while taking pictures. But the ones that are truly dedicated to our games.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Fanbase&lt;/b&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Yesterday&amp;nbsp;we were&amp;nbsp;having a social media meeting. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We have these meetings on regular intervals to evaluate and schedule the online activities of Xform. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;One of the recurrent topics is our fanbase.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A few months ago I posted about the importance of your target audience. Knowing who your target audience is is really important during the development process. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;But after the game is released it's still interesting to follow them. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;You can track down all kind of info by using site statistics. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;But another way to learn more about them is to&amp;nbsp;listen what they say. Or even more interesting...&amp;nbsp;see what they create!   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-k71xXy3xB5E/TtjthTrrQrI/AAAAAAAAAHI/q2lpkfWFL78/s1600/BRYT.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="163" src="http://1.bp.blogspot.com/-k71xXy3xB5E/TtjthTrrQrI/AAAAAAAAAHI/q2lpkfWFL78/s320/BRYT.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Burnin' Rubber Fanvids&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;strong&gt;Uploading our content&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;A fun way to take a closer look at the Xform fanbase is to spend some time on YouTube. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If you start watching our game trailers on this channel you will also notice a huge variety of homemade fanvideos from our players. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;There are Xform&amp;nbsp;gameplay videos, reviews and How To's. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;They differ considerably in length and quality, but that doesn't matter. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The fact that someone takes the time to create a (simple) video about your game to share it with others is very flattering. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;In fact, it's like a tribute.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;How to... Defeat the baboon boss in Rhino Rush:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/cfWnPGAtYTo/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cfWnPGAtYTo&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/cfWnPGAtYTo&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Area Zero review: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial;"&gt;(You don't have to understand the language to hear that this guy is really excited!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/COFvj2lkDgY/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/COFvj2lkDgY&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/COFvj2lkDgY&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;And of course some gameplay footage of the extremely popular Burnin' Rubber series:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/HJ4tuSy_KLI/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HJ4tuSy_KLI&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/HJ4tuSy_KLI&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;strong&gt;The value of fanvids&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The biggest value of a fanvid is that it shares your game content. It's a way of free publicity.&amp;nbsp;This means&amp;nbsp;it can attract new players to your game. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Any publicity will do. In fact a negative review of your game can attract even more&amp;nbsp;players, because they want to check by themselves if a game is really that bad. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;An interesting thing happened with the&amp;nbsp;Burnin' Rubber videos that show game glitches. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Apparently people find it funny to&amp;nbsp;see things that go wrong.&amp;nbsp;Because instead of keeping talking about these glitches,&amp;nbsp;other fans started to upload their&amp;nbsp;Burnin' Rubber&amp;nbsp;glitches as well!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Another important thing is that&amp;nbsp;fans start to communicate with eachother through the videos. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;They leave&amp;nbsp;comments, ask for help or&amp;nbsp;give tips and tricks. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Based on their discussions you can find out what they like or don't like about your game. And you can use this information for new games.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;We noticed that some of our games have a lot of fanvids, others have less. And&amp;nbsp;of course we&amp;nbsp;want to know why this is. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;So the next weeks I'm going to do some more research on this subject. &lt;/span&gt;&lt;span style="font-family: Arial;"&gt;But now... it's weekend time! &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;Feel free to add new Xform fanvids to YouTube. We love them. The more the better!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;- Shirley&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/12/let-that-camera-roll.html?spref=tw" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-9061292586249600789?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/9061292586249600789/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/let-that-camera-roll.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9061292586249600789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9061292586249600789'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/12/let-that-camera-roll.html' title='Let that camera roll!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-k71xXy3xB5E/TtjthTrrQrI/AAAAAAAAAHI/q2lpkfWFL78/s72-c/BRYT.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7172712133337334504</id><published>2011-11-30T17:29:00.001+01:00</published><updated>2011-11-30T17:47:02.557+01:00</updated><title type='text'>Transformation pipeline and reverse</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Dear readers,&lt;br /&gt;&lt;br /&gt;In my current project I needed to have a ray from the camera on the point where the mouse was on the screen. The problem here is: how do we get a three dimensional ray from a 2 dimensional point?&lt;br /&gt;&lt;br /&gt;To understand how this is done, you need to know a little about the transformation pipeline, these are a couple of matrices together which convert a vertex position in 3D to a point position on the screen.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JC3ogwAUtE4/TtZYmAlEeyI/AAAAAAAAAG0/2JEcUF9GoEs/s1600/transformationPipeline.gif" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="122" width="320" src="http://1.bp.blogspot.com/-JC3ogwAUtE4/TtZYmAlEeyI/AAAAAAAAAG0/2JEcUF9GoEs/s320/transformationPipeline.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;The transformation pipeline.&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;To specify viewing, modeling, and projection transformations, you construct a 4x4 matrix M, which is then multiplied by the coordinates of each vertex v in the scene to accomplish the transformation. The viewing and modeling transformations specified are combined to form the modelview matrix, which is applied to the incoming object coordinates to yield eye coordinates. Next, if you've specified additional clipping planes to remove certain objects from the scene or to provide cutaway views of objects, these clipping planes are applied. After that the projection matrix is applied to yield clip coordinates. This transformation defines a viewing volume: objects outside this volume are clipped so that they're not drawn in the final scene. After this perspective division is done to produce normalized device coordinates. Finally, the transformed coordinates are converted to window coordinates by applying the viewport transformation. The dimensions of the viewport can be manipulated to cause the final image to be enlarged, shrunk, or stretched.&lt;br /&gt;&lt;br /&gt;Now when we wish to get a three dimensional ray from a 2 dimensional point, we go the other way around all the way to the eye coordinates. What we actually get is a 3 dimensional point located on the near plane of the viewing volume, but from this we can calculate a ray from the camera.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3qR01VIkDxI/TtZYmVwa6rI/AAAAAAAAAHE/YzM2NmjObS0/s1600/pointtocamray.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="134" width="320" src="http://4.bp.blogspot.com/-3qR01VIkDxI/TtZYmVwa6rI/AAAAAAAAAHE/YzM2NmjObS0/s320/pointtocamray.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Point (sx,sy) on screen, to point (wx,wy,wz) and ray from camera.&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/11/transformation-pipeline-and-reverse.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7172712133337334504?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7172712133337334504/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/transformation-pipeline-and-reverse.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7172712133337334504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7172712133337334504'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/transformation-pipeline-and-reverse.html' title='Transformation pipeline and reverse'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-JC3ogwAUtE4/TtZYmAlEeyI/AAAAAAAAAG0/2JEcUF9GoEs/s72-c/transformationPipeline.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-158991601693876897</id><published>2011-11-29T17:19:00.004+01:00</published><updated>2011-11-30T12:17:09.402+01:00</updated><title type='text'>What's the name of the game?</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;When starting a new game project we usually make up a working title without putting any good thought into it, often it's just the first thing that comes to mind or just something stupid/generic.&lt;br /&gt;&lt;br /&gt;Some working title examples of our games are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Blaster" for "Area Zero" &lt;i&gt;(nice and generic)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;"Super Racert" - "Power Driving" &lt;i&gt;(Yes the "t" is intended)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;"Super Kart Game" for "Go Kart Go! Turbo" &lt;i&gt;(Super Mario Kart was already taken apparently)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;"DressUp Game" for "Girly Trends 3D" &lt;i&gt;(another great generic working title)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;"Joep VS The army of the Damned" for "Army of the Damned" (&lt;i&gt;for the record: Joep is our technical artist)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;"Ground Zero" for "Traffic Slam" &lt;i&gt;(Guess we can't use that name anymore since 9-11)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;"Jetski Game" for "Hydro Storm" &lt;i&gt;(Couldn't use the term Jetski in the name because it's originally a brand name)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To come up with a working title is easy but to come up with a final name can be quite hard, this is also the case for our "snowboard game with cars" we're currently developing.&lt;br /&gt;&lt;br /&gt;Last week I needed to update the game logo which currently reads "Auto Games" to a more final design, I needed the game's final name to do this. In order to come up with a name all Xform employees have the opportunity send in suggestions which for 99 percent are totally stupid or unusable like "&lt;i&gt;Super Car Olympics 2011 Deluxe Edition&lt;/i&gt;". &lt;br /&gt;&lt;br /&gt;We do collect all these suggestions and start making lists with associative words. For example we know the game takes place on snow covered mountain tops so words like "snow, piste, mountain, snowstorm, deep, cliff, steep" are written down in a list.&amp;nbsp;When the list is completed we start mixing these words and making different combinations and see or they match the game.&lt;br /&gt;&lt;br /&gt;For "Auto Games" we came up with "Snow Stunt Heroes", this name focuses games stunts and drivers instead of the cars. The word snow is added to give a hint in what sort of environment the game takes place.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-v3BV2TxW7Cw/TtUFUnEoxwI/AAAAAAAAAGc/KVpDUlIcDYY/s1600/BLog.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/-v3BV2TxW7Cw/TtUFUnEoxwI/AAAAAAAAAGc/KVpDUlIcDYY/s400/BLog.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Finally the client has to approve this title, we'll know if this is the games final name at the end of this week, otherwise we're back to making lists.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Matt&lt;/div&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/11/whats-name-of-game.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-158991601693876897?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/158991601693876897/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/whats-name-of-game.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/158991601693876897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/158991601693876897'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/whats-name-of-game.html' title='What&apos;s the name of the game?'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-v3BV2TxW7Cw/TtUFUnEoxwI/AAAAAAAAAGc/KVpDUlIcDYY/s72-c/BLog.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6151484694867367168</id><published>2011-11-23T16:58:00.001+01:00</published><updated>2011-11-23T18:23:59.102+01:00</updated><title type='text'>Pickup Convertible!</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Hello all!&lt;br /&gt;&lt;br /&gt;Last couple of weeks I have been working on the super awesome snow game with cars! It will rock! &lt;br /&gt;&lt;br /&gt;I’m going to show you one of the cars I have been working on. &lt;br /&gt;&lt;br /&gt;The idea was to have a big car in the game like a truck or a pick-up.&lt;br /&gt;First I started to look for some reference before rushing into 3DS Max.  &lt;br /&gt;&lt;br /&gt;After collecting tons of pictures of pick-up trucks I’ve chosen a couple pictures to be my main reference. Now I can finally start modelling the pick-up truck!&lt;br /&gt;I used a blue print of a pick-up truck for the silhouette.  &lt;br /&gt;After this I added some details, bumpers, rear lights, front window, etc.  &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-svY_dER309A/Ts0VT6yIv5I/AAAAAAAAAF4/FHSk5Mni2HY/s1600/Untitled-6.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="213" width="320" src="http://3.bp.blogspot.com/-svY_dER309A/Ts0VT6yIv5I/AAAAAAAAAF4/FHSk5Mni2HY/s320/Untitled-6.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now the most fun part of all! I had to “Cartoonify” it! Hehe. &lt;br /&gt;First I had to take of the roof! And make it a Pick-up convertible, &lt;br /&gt;ever saw something like that? :P&lt;br /&gt;&lt;br /&gt;To make things more Cartoony, I had to make things out of proportion, &lt;br /&gt;over exaggerated some details.  &lt;br /&gt;To give it a big and clumsy look, I made the bumpers way bigger, added a broken license plate, made the lights and side bars bigger. &lt;br /&gt;I added two vertical truck exhausts for a more tougher look.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PUZBKXeQU_8/Ts0VZetHiFI/AAAAAAAAAGE/yDqrV7q34Xw/s1600/Untitled-5.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="186" width="320" src="http://4.bp.blogspot.com/-PUZBKXeQU_8/Ts0VZetHiFI/AAAAAAAAAGE/yDqrV7q34Xw/s320/Untitled-5.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Sg8qd7Qc28E/Ts0VdaUdiII/AAAAAAAAAGQ/x8quHKERxmY/s1600/Untitled-4.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="221" width="320" src="http://2.bp.blogspot.com/-Sg8qd7Qc28E/Ts0VdaUdiII/AAAAAAAAAGQ/x8quHKERxmY/s320/Untitled-4.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;And this is the screenshot of the outcome when I was done! &lt;br /&gt;The texture will do the rest and finishes the job. &lt;br /&gt;But you will see that later!&lt;br /&gt;&lt;br /&gt;And now back to work!&lt;br /&gt;&lt;br /&gt;Hails, &lt;br /&gt;Eugène&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/11/pickup-convertible.html" data-send="false" data-width="450" data-show-faces="false"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6151484694867367168?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6151484694867367168/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/pickup-convertible.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6151484694867367168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6151484694867367168'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/pickup-convertible.html' title='Pickup Convertible!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-svY_dER309A/Ts0VT6yIv5I/AAAAAAAAAF4/FHSk5Mni2HY/s72-c/Untitled-6.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8344585113320931926</id><published>2011-11-17T09:01:00.003+01:00</published><updated>2011-11-21T15:41:16.235+01:00</updated><title type='text'>Character animation</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Dear readers,&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;This week I've been working on character animations for our top secret SSX-with-cars project.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Character animations in 3D are most of the time done by using a relatively simple skeleton, matching the general shape of the character's mesh. These skeletons include all of the important joints that are needed to create the required deformations. The mesh of the character itself is linked to such skeleton. When a bone moves, the related vertices of the mesh move with it. The proces of linking the vertices of a mesh to such a skeleton and the creation of a skeleton itself is called &amp;nbsp;'rigging'.&amp;nbsp;After the character model is rigged properly, we can animate it.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/-xRtytX1xEZs/TsS_N9olayI/AAAAAAAAAFs/Yk8mUuGZ2hE/s1600/skeleton.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://4.bp.blogspot.com/-xRtytX1xEZs/TsS_N9olayI/AAAAAAAAAFs/Yk8mUuGZ2hE/s320/skeleton.gif" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;The animations are created by making keyframes of the skeleton, not the mesh. A keyframe in 3D is basically a pose of the skeleton at a specific time. I always start by creating the most extreme poses of the animation. For example, I was working on an animation where two characters were highfive-ing:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1HxmwOP1Ubs/TsS9qDuhHTI/AAAAAAAAAFk/8eNbHOGwepY/s1600/animation.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="242" src="http://4.bp.blogspot.com/-1HxmwOP1Ubs/TsS9qDuhHTI/AAAAAAAAAFk/8eNbHOGwepY/s320/animation.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Click to see animated GIF&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;I created the starting pose and the pose where the two hit eachother with their hands. These two keyframes are seperated by empty frames. The computer calculates the motion between these poses/keyframes. At this point we only have the motion and timing of the animations but it is far from finished. The motions of a bone from one keyframe to another can be displayed by showing its trajectory. These are pretty much straight, from one point in 3D to another. But when having the highfive animation, I want the arms to swing. Therefor I have to adjust the trajectory. This can be done by adding extra keyframes in between. This adjusts the curve of the motion. Most of the time I use only one extra frame, because adding too much frames can cause jittering and unsmooth motion.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;- Joep&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/11/character-animation.html" data-send="false" data-width="450" data-show-faces="true"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8344585113320931926?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8344585113320931926/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/character-animation.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8344585113320931926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8344585113320931926'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/character-animation.html' title='Character animation'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-xRtytX1xEZs/TsS_N9olayI/AAAAAAAAAFs/Yk8mUuGZ2hE/s72-c/skeleton.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-4701948596579213991</id><published>2011-11-11T12:14:00.002+01:00</published><updated>2011-11-21T15:46:54.145+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Car Handling Physics Tilting Banking'/><title type='text'>Faking car physics</title><content type='html'>&lt;div id="fb-root"&gt;&lt;/div&gt;&lt;script&gt;(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Dear readers,&lt;br /&gt;&lt;br /&gt;Today I'm going to write about faking car physics, in particular adding a sense of weight to the car. What I mean by this is as follows: when you see a car breaking you'll notice how the car tilts forward as the center of mass moves forward. In the same way when a car accelerates you'll see how it tilts backwards. Likewise when a car turns left, it banks rights and vice versa. See these images:&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MuVrJ5E1sqg/Tr0CW6eGppI/AAAAAAAAAFU/I2qSFWAXUmg/s1600/CarTiltForward.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="97" src="http://2.bp.blogspot.com/-MuVrJ5E1sqg/Tr0CW6eGppI/AAAAAAAAAFU/I2qSFWAXUmg/s320/CarTiltForward.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Car tilting forward&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rpB1txKH1zk/Tr0CXfeqQYI/AAAAAAAAAFY/vgyrxaiSd3E/s1600/CarTiltsSideways.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="http://3.bp.blogspot.com/-rpB1txKH1zk/Tr0CXfeqQYI/AAAAAAAAAFY/vgyrxaiSd3E/s200/CarTiltsSideways.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Car tilting sideways&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;To fake this effect I'm applying two extra forces on the car: one force that lifts the car and one force that pushes the car down. The trick is to find the proper points.&lt;br /&gt;See the following image:&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pNGbww8pJxI/Tr0CWUIq6jI/AAAAAAAAAFM/ZUZUshVDtBM/s1600/CarAppliedForces.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="166" src="http://4.bp.blogspot.com/-pNGbww8pJxI/Tr0CWUIq6jI/AAAAAAAAAFM/ZUZUshVDtBM/s400/CarAppliedForces.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Applying a lifting force (arrow up) and pushing force (arrow down).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Here we have a lifting and pushing force that are moved along the red circle. The lifting force is always directly on the opposite side of the pushing force on the circle. In this particular situation we are pushing the nose down and lifting the back which corresponds to a car that is decelerating. Other situations can be done in the same manner.&lt;br /&gt;&lt;br /&gt;So now, given the car speed in global coordinates, how do we find where we position the lifting (and pushing force)? First we store the difference in speed between the last frame and the current frame: this is our deceleration/acceleration vector and determines where we are going to apply our force. This vector should be in car space (not global space) and determines where we apply the lifting force. The larger the length of the deceleration/acceleration vector the stronger the lifting force. At exactly the other side (simply multiply the position of the lifting force by -1) we apply pushing force with the same strength.&lt;br /&gt;&lt;br /&gt;This should already work nicely, but a problem with the circle is that the car is longer than it is wide, as a result if we apply the same forces the car will bank too much and even flip the car. So we have to correct for this by either changing the forces when they're applied near the side of the car or change the circle to an ellipsoid. Either should work fine.&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;br /&gt;&lt;br /&gt;&lt;div class="fb-like" data-href="http://xformgamedevelopment.blogspot.com/2011/11/faking-car-physics.html" data-send="false" data-width="450" data-show-faces="true"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-4701948596579213991?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/4701948596579213991/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/faking-car-physics.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4701948596579213991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4701948596579213991'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/faking-car-physics.html' title='Faking car physics'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-MuVrJ5E1sqg/Tr0CW6eGppI/AAAAAAAAAFU/I2qSFWAXUmg/s72-c/CarTiltForward.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Utrecht, Nederland</georss:featurename><georss:point>52.09205199932039 5.115999502452837</georss:point><georss:box>52.08921849932039 5.112609002452837 52.09488549932039 5.119390002452837</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1832023304362262847</id><published>2011-11-04T16:43:00.002+01:00</published><updated>2011-11-05T14:49:38.076+01:00</updated><title type='text'>The things that you (need to) do</title><content type='html'>Today I want to tell you something about&amp;nbsp;task management. Maybe it's not the most exciting subject, but it's something (game) projects simply can't do without.&lt;br /&gt;And in the end...&amp;nbsp;you're glad you're using&amp;nbsp;it! &lt;br /&gt;&lt;br /&gt;But first I like to start with an update about the good stuff of the Xform life this week:&lt;br /&gt;- Watching Gremlins during our lunch breaks.&lt;br /&gt;-&amp;nbsp;Eating some very delicious cake. &lt;br /&gt;- Our intern Sander passed his drivers test.&lt;br /&gt;- We found a dead rat in our office. &lt;br /&gt;- We're working on 6 new awesome browsergames!&lt;br /&gt;&lt;br /&gt;And with this last point we're back on topic: task management.&amp;nbsp;Because Xform is a small company, most of the time the people here are working on more than one game project. &lt;br /&gt;When working on a project, for you it can be quit simple to remember what you have to do and in what order. But when you're part of a team not only your tasks that need to be done. Everyone has his own list of activities.&amp;nbsp;This means you'll need someone that can keep the overview. And for our game projects it's my job to do that. Sounds easy. It's not. 'Cause when there's too much to do (and believe me, there always is) it can get quite a mess. &lt;br /&gt;For example: at this moment we're working on one of our new car games. Although there are just a few days before we reach&amp;nbsp;the Beta milestone, there are still 36 tasks to do. Try to memorize 36 things that need to be done, in the right order. You simply can't. That's why we use Intervals,&amp;nbsp;project management software that helps me to control all tasks and milestones.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-DEkpCwIqGxw/TrQHaIQzwtI/AAAAAAAAAFE/hrwfdSIeuhE/s1600/2424198118_7307ebac5e.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-DEkpCwIqGxw/TrQHaIQzwtI/AAAAAAAAAFE/hrwfdSIeuhE/s200/2424198118_7307ebac5e.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;To manage&amp;nbsp;tasks&amp;nbsp;you need to know exactly:&lt;br /&gt;1. What needs to be done.&lt;br /&gt;2. Who has to do it.&lt;br /&gt;3. When it must be completed.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Tasks always take time. Even the small ones. And it's those little activities that are&amp;nbsp;easy to forget.&amp;nbsp;When you start with task management it feels weird to schedule tasks that only take less than half an hour. But they're part of the project, so they need to be managed as well.&lt;br /&gt;That's why we at Xform&amp;nbsp;don't only schedule our milestones. We schedule every (!)&amp;nbsp;single, little task. This&amp;nbsp;gives&amp;nbsp;me a&amp;nbsp;complete overview of the entire project and I can easily see what's finished and what still needs to to be done.&lt;br /&gt;&lt;br /&gt;In between all the management stuff, I still find some time to create the game trailers.&lt;br /&gt;Here's the one of Area Zero:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/OElnkr5ZhaQ/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OElnkr5ZhaQ&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/OElnkr5ZhaQ&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Play&amp;nbsp;the game&amp;nbsp;&lt;a href="http://www.miniclip.com/games/area-zero/en/"&gt;here&lt;/a&gt; and have a nice weekend!&lt;br /&gt;&lt;br /&gt;- Shirley&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1832023304362262847?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1832023304362262847/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/things-that-you-need-to-do.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1832023304362262847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1832023304362262847'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/11/things-that-you-need-to-do.html' title='The things that you (need to) do'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-DEkpCwIqGxw/TrQHaIQzwtI/AAAAAAAAAFE/hrwfdSIeuhE/s72-c/2424198118_7307ebac5e.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7419520072440368250</id><published>2011-10-31T17:23:00.001+01:00</published><updated>2011-10-31T17:33:16.820+01:00</updated><title type='text'>Stunt Double</title><content type='html'>&lt;div style="font-family: arial; font-size: small;"&gt;A few posts back I mentioned we were working on a new game prototype which was basically a downhill ski-game with a special twist. Well the special twist is that in this game you're driving a car downhill while slaloming, grinding and jumping insane ramps!! It's like SSX but with cars!&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;The prototype proved to be quite fun to play so we got a go on this project.&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;There was one problem we've soon noticed while playing the prototype: the car stunts looked a bit boring when the cars only turned, rolled and twisted in the air. It missed that extra wow factor you need in an "extreme sports" game like this.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;Another problem is that cars can't really give the player any feedback when&amp;nbsp;successfully&amp;nbsp;performing a stunt, we could have shown some sparks or particles but that wouldn't look very impressive.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;Then someone here got the ingenious idea to turn the cars into&amp;nbsp;cabriolets&amp;nbsp;and put two characters inside. Now we're not only limited to car stunts but we can also add character stunts and even combine them. This change made the game instantly more fun to play and by adding the characters we can give the player much more feedback by making them wave, cheer and shout. It also adds to the overall arcady feel of the game.&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="font-family: arial; font-size: small; margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ub03182_Vd0/Tq7KL2j7-5I/AAAAAAAAAE8/ccVM1oBcjjE/s1600/BlogImage.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="268" src="http://2.bp.blogspot.com/-Ub03182_Vd0/Tq7KL2j7-5I/AAAAAAAAAE8/ccVM1oBcjjE/s400/BlogImage.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Work in progress image of the two characters inside a dummy car.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="font-family: arial; font-size: small;"&gt;One of the drawbacks is that this decision does add to the complexity of the game, beside relatively simple the car animations we also have to animate two separate characters which also have to interact with the car and each other. We do think this extra effort will set this game apart and make it much more attractive and fun to play, I guess we'll know in a few weeks when the game is released.&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;-Matt&lt;/div&gt;&lt;div style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7419520072440368250?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7419520072440368250/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/stunt-double.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7419520072440368250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7419520072440368250'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/stunt-double.html' title='Stunt Double'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ub03182_Vd0/Tq7KL2j7-5I/AAAAAAAAAE8/ccVM1oBcjjE/s72-c/BlogImage.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6549145134792811922</id><published>2011-10-26T16:04:00.002+02:00</published><updated>2011-10-26T16:40:24.386+02:00</updated><title type='text'>Shootin’ Cybertrash!</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;Hello all!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;Let me first introduce myself, my name is Eugène and I now work at Xform for several months as a 2D/3D Artist and it’s a hell of a job! :D &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;&amp;nbsp;I’m going to tell you about my first project here. It is an unannounced game, not released yet. I am not sure if I can talk about it or show much of it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;But what I can tell it’s a “&lt;/span&gt;&lt;span lang="EN-US"&gt;Browser Based Side Scrolling Gun and Run Action Shooter&lt;/span&gt;&lt;span lang="EN-GB"&gt;” game with 3D graphics! We tried to give you &amp;nbsp;the feeling that you are playing an old school 2D Shooter game of the Nes/Snes era! So expect a difficult game! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;It takes place in a destroyed Earth and you have to make your way through hordes of enemies and tons of explosions with a kick ass character! This game will rock! Ha! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;For this project I’ve been working &amp;nbsp;on the levels, menu’s, modelling and texturing stuff, placing dummies (enemies in game) etc.&amp;nbsp; In every level you will face enemies, hard jumps, upgrades &amp;nbsp;and more. Some enemies are placed &amp;nbsp;in really sneaky places where you don’t expect them! &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;Here is a sneak peak of one of the levels. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4j_f3lYmfpA/TqgQivMggLI/AAAAAAAAAEc/4qpYrFguDAE/s1600/SCTLevel2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-4j_f3lYmfpA/TqgQivMggLI/AAAAAAAAAEc/4qpYrFguDAE/s400/SCTLevel2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;This is a print screen of my viewport in 3DS Max. You can see some dummies which are in the game enemies. The big blue boxes are “camera triggers”.&amp;nbsp; If u pass these objects (you won’t see them in game so don’t worry)&amp;nbsp; the camera will zoom towards or away from the player to gain a better view of your surroundings and what lies ahead. The explosive objects.... I think those things don’t need any explanation of what they do!&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qOjL490AnMk/TqgQvx1C2VI/AAAAAAAAAEk/-yDtgLzxSM8/s1600/SCTMenu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://3.bp.blogspot.com/-qOjL490AnMk/TqgQvx1C2VI/AAAAAAAAAEk/-yDtgLzxSM8/s400/SCTMenu.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt; &lt;/span&gt;&lt;span lang="EN-GB"&gt; &lt;/span&gt;&lt;span lang="EN-GB"&gt; &lt;/span&gt;&lt;span lang="EN-GB"&gt; &lt;/span&gt;&lt;span lang="EN-GB"&gt; &lt;/span&gt;&lt;span lang="EN-GB"&gt;This game is going to be called “Shootin’Cybertrash”. We will keep you updated about this project. And wish you all good luck in completing this hard game hehe, when it is released of course. &lt;/span&gt;&lt;span lang="EN-GB" style="font-family: Wingdings;"&gt;J&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;span lang="EN-GB"&gt;Well this was a little introduction of myself and the game where I’ve been working on.&amp;nbsp; Next time I’m going to talk about the project where I’m working on now.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;Greetings,&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-GB"&gt;Eugène&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6549145134792811922?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6549145134792811922/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/shootincybertrash.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6549145134792811922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6549145134792811922'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/shootincybertrash.html' title='Shootin’ Cybertrash!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4j_f3lYmfpA/TqgQivMggLI/AAAAAAAAAEc/4qpYrFguDAE/s72-c/SCTLevel2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-3156936551580000342</id><published>2011-10-19T17:29:00.000+02:00</published><updated>2011-10-19T17:29:26.760+02:00</updated><title type='text'>Jumps!</title><content type='html'>&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;This week I've been working on a 3d mockup environment for a new  project. It is going to be a car game. I can't tell you that much about  it yet though.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;The game does feature big jumps, they are actually a  big part of the game. These jumps should be easy, spectacular and  inviting for the player to take. The player should be able to just drive  on a ramp, perform the jump and land almost perfectly on the other end  without much of trouble to continue driving. It was my job to test  several jump setups using the mockup to see what kind of distances,  heights and speeds we should use. We also wanted the jumps not to be too  low in height, it should look spectacular!&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;The first step I took was to gather information of  what we already got. I already had a test version of the game with the  main physics up and running, so I could check how the car behaves on the  mockup. I knew that our car has a certain speed at the moment of  jumping, behaves in a certain way in the air and while landing. I was  not able to change the car speeds/handling for this test. I started by  just setting up a simple jump over an imaginary river or cliff. I used  big numbers to quickly test what works and what doesn't. For example,  the first jump I made was planned to be 10 meters in length. This jump  felt way to short, I instantly jumped over the landing zone. Therefor I  increased the length by, easy numbers, 10 meters. So now I had a jump of  20 meters in length.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-azXLDunYW_w/Tp7ssobcNhI/AAAAAAAAAEU/QLSpUpEYvgg/s1600/image.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="199" src="http://2.bp.blogspot.com/-azXLDunYW_w/Tp7ssobcNhI/AAAAAAAAAEU/QLSpUpEYvgg/s320/image.jpg" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;This was already more like it, but still a bit to  short. Most of the time I still landed to far over the landing zone, so  the distance wasn't far enough and I increased it by another 10 meters.  This did the trick and I was now able to land pretty much perfect in the  planned landing zone. However I wasn't pleased by the height of the  jump, it wasn't high enough. I started tweaking the ramp, to get more  height out of it. First I tried 'straight' &amp;nbsp;ramps, not curved. This  worked fairly well but gave a harsh ' bump' while driving on the ramp  when it got steeper. Curved ramps was the solution, and gave the car a  smooth ride into the air.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;Now the jump was looking good and it felt 'big'.  However changing the height of the jump also influences the jump  distance. I reduced the jump length by 5 meters, and reduced the angle  of the ramp slighty which gave a perfect jump with good height. The hard  part is to give the player enough air time to enjoy the view as well as  making the jump not to short in length. I hope to be able to tell you  more about this game soon, it is going to be a pretty interesting  project :)!&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;-Joep &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-3156936551580000342?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/3156936551580000342/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/jumps.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3156936551580000342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3156936551580000342'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/jumps.html' title='Jumps!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-azXLDunYW_w/Tp7ssobcNhI/AAAAAAAAAEU/QLSpUpEYvgg/s72-c/image.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-4468176407330359732</id><published>2011-10-13T09:52:00.000+02:00</published><updated>2011-10-13T09:52:13.442+02:00</updated><title type='text'>Skidmarks!</title><content type='html'>&lt;div class="MsoNoSpacing"&gt;Hi!&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;It’s been a long time since I wrote something. Too be honest I didn’t have anything worthwhile to write about as I was hands deep in deploying our new augmented reality kart racer. Play it on &lt;a href="http://www.redbullformulaface.com/"&gt;www.redbullformulaface.com&lt;/a&gt;. It is great fun!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;At the moment I have a bit more time to look into other things. A couple of years ago we did a small kart game (&lt;a href="http://www.shockwave3d.com/gamepage.cfm?id=794"&gt;http://www.shockwave3d.com/gamepage.cfm?id=794&lt;/a&gt;) which was extremely fun to work on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;The last few years we occasionally put some time into expanding it, so we have quite some stuff lying around to make a ‘new’ game. Well, we’re not actually remaking it… it is not really a sequel… it is more a ‘rebuild’ with additional stuff. Nevertheless, it was time to finally upgrade and implement skidmarks!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QJAHutRooHQ/TpaWwcLYnSI/AAAAAAAAAEE/_4B58Eflr-0/s1600/Skidmark.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-QJAHutRooHQ/TpaWwcLYnSI/AAAAAAAAAEE/_4B58Eflr-0/s400/Skidmark.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;I’ve been tackling skidmarks for quite a while now. I found it to be harder than I would like. Not really the technique behind it, but more in an Adobe Director kinda way. There were three options I looked into.&lt;/div&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo1; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;1.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="LTR"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Create small transparent planes at the bottom of each wheel. Place them each frame or after a certain threshold distance compared to its last stored position.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo1; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;2.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="LTR"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Draw into a texture. Have an additional texture layer and paint in it where the wheels are. If you have a lightmap texture you could also draw into that one, I think.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l1 level1 lfo1; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;3.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="LTR"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;Build a mesh trail. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;Honestly I didn’t do any real stress testing on the first two as I already knew they weren’t really viable. Although I’d really like solution 2. In the end there shouldn’t be any performance issues on how many skidmarks you have and above all they will be displayed indefinitely! Solution 1 and 3 need to be ‘tempered’ so performance won’t drop too much. &lt;span&gt;&amp;nbsp;&lt;/span&gt;Unfortunately, I still think it might be too slow to do any additional raycasting and lookups to know where you should draw into the texture. Furthermore, you can’t directly draw to any texture in the VRAM in Director, so when updating skidmarks you constantly have to send the texture to the VRAM as well. You’d also want a decent texture resolution or else your skidmarks would look like huge blobs. All in all this will cost too much CPU power and performance will drop. A cool solution, but currently not feasible. I went with the 3&lt;sup&gt;rd&lt;/sup&gt; option.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;A couple of our games feature rockets. The rockets leave a trail behind when fired. I used this as a base to create a skidmark feature. The very first version of this effect would rebuild an entire mesh each frame (or each update). Meaning the mesh could become very large, complex and time consuming to update. I rebuild this effect with two optimizations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo2; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;1.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="LTR"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;The mesh uses a maximum amount of vertices and faces. It is created as a long segmented plane. I build this mesh beforehand (or sometimes I store more of them to be used and reused) so we can avoid any performance drop when creating a skidmark. The downside is that the mesh and detail is limited. So a trail or skidmark cannot be very long. The mesh will also get 2 sets of texturecoordinates (and a new shader). The first layer is a tileable texture. The second one a transparent texture (a gradient), so we can fade the trail at the end.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo2; text-indent: -18.0pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span lang="EN-US"&gt;&lt;span&gt;2.&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="LTR"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;All vertices are initially placed at the location where they should spawn. Each frame (or update) all 2 vertices (of each segment) will get the position of the 2 vertices (previous segment) &lt;span&gt;&amp;nbsp;&lt;/span&gt;before them in their vertex list. So i.e. vertex 5 and 6 will get position 3 and 4. The only exceptions are vertex 1 and 2. This will be set to the source of the trail/skidmark. So each update we 'move' the mesh 'along' the previously stored positions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin-left: 36.0pt; mso-list: l0 level1 lfo2; text-indent: -18.0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TBH6y3_5s6Y/TpaWwsSRBlI/AAAAAAAAAEM/Z96PNvCl9m8/s1600/SkidmarkWireframe.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://1.bp.blogspot.com/-TBH6y3_5s6Y/TpaWwsSRBlI/AAAAAAAAAEM/Z96PNvCl9m8/s400/SkidmarkWireframe.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-xcSmTdl9Y1k/TpaWmGozsOI/AAAAAAAAAD8/c5IZ_qGJ7L8/s1600/Skidmarks.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-xcSmTdl9Y1k/TpaWmGozsOI/AAAAAAAAAD8/c5IZ_qGJ7L8/s400/Skidmarks.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;These updates made it much faster. So ‘fast’ that at my current work machine I can have multiple sets of skidmarks for 8 cars at the same time. Not sure if this will make it into the final game, but it is worth testing &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: Wingdings;"&gt;&lt;span&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing"&gt;&lt;span lang="EN-US"&gt;-Pieter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-4468176407330359732?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/4468176407330359732/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/skidmarks.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4468176407330359732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4468176407330359732'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/skidmarks.html' title='Skidmarks!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QJAHutRooHQ/TpaWwcLYnSI/AAAAAAAAAEE/_4B58Eflr-0/s72-c/Skidmark.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8621012008331541058</id><published>2011-10-05T11:01:00.002+02:00</published><updated>2011-10-05T13:49:04.439+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Math Function'/><title type='text'>A math problem</title><content type='html'>Dear readers,&lt;br /&gt;&lt;br /&gt;Today I'd like to write about a little math problem. Pieter came to me asking if I could find a function with some desired properties. To give a simple example of why this could be useful: Suppose you want to make an animation of an object bouncing by simply changing the y position of the object. For this you could use a function that given a certain time in the animation returns you a number which you can use as the y position of the object. You can easily control the animation by adjusting the function and you can also easily skip to any part of the animation.&lt;br /&gt;&lt;br /&gt;Now for the problem: Pieter wanted a function f(x) where the following properties hold: f(0) = 1, f(10) = 10 and somewhere between x = 0 and x = 10, let's call this t, the function should reach it maximum point at 12, so f(t) = 12. The image below shows the function he was roughly looking for:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LURpsu__nOg/TowbIkvAuLI/AAAAAAAAAD0/KUZCGSB2vEU/s1600/MathProblem.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-LURpsu__nOg/TowbIkvAuLI/AAAAAAAAAD0/KUZCGSB2vEU/s1600/MathProblem.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The red line shows the possible function. The blue dots represent f(0) =  1 and f(10) = 10. The green line represent y = 12 where the function  should reach it's maximum, we call this value t.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Now we could of course use a spline that is fitted to the function, but this is not as efficient (or as fun) as a parabola. A parabola is a second degree function of the form: f(x) = ax^2 + bx + c. So how do we find the a, b and c values? We start by substitution of the desired points. For f(0) = 1, this becomes: f(0) = c = 1. So c = 1, that was easy. Now for f(10) = 10: f(10) = 100a + 10b + 1 = 10, simplified to: 100a + 10b = 9. We have 2 variables here and only 1 equation, to solve for a and b we will need another equation. The problem now is that we don't know a third point which would give us another equation. We could try to just guess a point, for example f(6) = 12, but the resulting function will not have it's maximum at y = 12, but higher.&lt;br /&gt;&lt;br /&gt;The crucial thing here is to realize that when we reach a maximum the derivative of the function in that point is exactly 0. For a parabola the derivative is of the form: f&lt;i&gt;'&lt;/i&gt;(x) = 2ax + b. We can use this to get another equation as we want to reach our maximum at t (it does not matter where t lies as long as it's between 0 and 10). So we want that f&lt;i&gt;'&lt;/i&gt;(t) = 0. Using substitution we get: f&lt;i&gt;'&lt;/i&gt;(t) = 2at + b = 0. Good, now we have the 2nd equation we were looking for and can solve for a and b you might think. But unfortunately we've added another variable t, so now we have 3 variables and 2 equations! That didn't seem to help us very much then... But wait :) Let us now try to express a and b using t. Using the equations 100a + 10b = 9 and 2at + b = 0, we can express b as b = -2at, plug this into the first equation to get 100a - 20at = 9, from which we get that a = 9 / (100-20t). We can then substitute a into b = -2at to get b = -18t/(100-20t). So now we have our a and b expressed as t to get the following function: f(x) = (9 / (100-20t)) x^2 -18t / (100-20t) x + 1.&lt;br /&gt;&lt;br /&gt;Now remember that t is the point where the function has its maximum which we want to be at 12, we can express this as: f(t) = 12. From this we get another equation: f(t) = (9 / (100-20t)) t^2 -18t / (100-20t) t + 1 = 12. We simplify this and get: -9t^2 + 220t - 1100 = 0. We solve this using the abc-formula and obtain two values for t, namely t1 = 7.011 and t2 = 17.43. Clearly t2 is not between 0 and 10, so we pick t = t1 = 7.011. We then plug t in to a and b and get the final function: f(x) = -0.22377 x^2 + 3.13769 x + 1. Which can be seen here:&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MvoWbllR1cM/TowbJSVVkOI/AAAAAAAAAD4/4WcOs394DRA/s1600/MathProblem2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-MvoWbllR1cM/TowbJSVVkOI/AAAAAAAAAD4/4WcOs394DRA/s1600/MathProblem2.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The final function with the desired properties: f(x) = -0.22377 x^2 + 3.13769 x + 1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;-- Stijn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8621012008331541058?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8621012008331541058/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/math-problem.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8621012008331541058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8621012008331541058'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/10/math-problem.html' title='A math problem'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-LURpsu__nOg/TowbIkvAuLI/AAAAAAAAAD0/KUZCGSB2vEU/s72-c/MathProblem.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5668296936009978329</id><published>2011-09-22T15:19:00.000+02:00</published><updated>2011-09-22T15:19:59.689+02:00</updated><title type='text'>Level of detail</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;This week I worked on some bugs of the robot shooter. There was a descent list of fixes, tweaks and optimalizations after the first QA session. The last one, optimalization is what I want to talk about today. In this case I want to look into simple, or high level optimalizations.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;First some theory to start with. Games in general are rendered realtime to your screen and displayed using 'pixels'. Imagine having a 3D model displayed close to the camera. It fills up a lot of pixels with its shape, texture and polygons, because it is relatively close to the camera. We could say that how closer the 3D model is towards the camera, the more pixels it uses to display itself. Since it uses so many pixels, we are able to see all of the details of the model.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;Now, when moving the 3D model away from the camera, it eats up less pixels to draw itself. Sounds logic right? This means that a single pixel on our display covers up some of the detail we have in the 3D model. We could say that the model is less detailed displayed than it actually is. While it is still being processed the sameway, with all of its details. Which actually costs performance. Therefor we could replace the model by lower resolution version of itself, if the model is on a certain distance. A system like this could be called a 'LOD', or 'Level Of Detail', system.&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://www.blogger.com/goog_977680816"&gt;&lt;img border="0" height="250" src="http://i105.photobucket.com/albums/m221/osart/porco8.jpg" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;Model and image by &lt;a href="http://osart3d.wordpress.com/"&gt;Owen Shepherds&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;In our robot shooter it is possible to turn on pixel shaders, which is render bit slower than the regular hardware shaders. In fact, when playing with a descent amount of enemies displayed on the screen using these pixel shaders, there is a noticable delay. We had the same problem in 'Army of the Damned'. Pieter wrote a little 'LOD' system which switches shaders on enemy models. They switch between the regular shader and the pixel shader. This speds up the game a lot and is barely noticable (visual wise) for the user. Since we had the same issues in the robot shooter I took Pieter's system and made it work with the robots. This, as expected, improved the peformance.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;There are some drawbacks though. The system in this example uses 'distance to the camera' checks to know what to do. Distance checks can be expensive too, and sometimes can be even more expensive than just rendering extra polygons or models with a bit more complex shaders. But keep in mind that these LOD systems don't require to be updated every frame, which can also speed things up. It is all about finding the balance between direct optimalizations and LOD systems.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;-Joep&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5668296936009978329?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5668296936009978329/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/level-of-detail.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5668296936009978329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5668296936009978329'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/level-of-detail.html' title='Level of detail'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-3446113550337818353</id><published>2011-09-09T14:50:00.000+02:00</published><updated>2011-09-09T14:50:00.834+02:00</updated><title type='text'>Xform Games - Gotta play 'em all</title><content type='html'>&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Hi all,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The last couple of weeks we are very busy completing some of our bigger projects.&lt;br /&gt;And because I think they all deserve a lot of attention and everyone should play them, I like to update you&amp;nbsp;on our latest releases. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Army of the Damned&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;First of all there is Army of the Damned, the first person zombie shooter that many of us already have written about. The game was released on&amp;nbsp;August 10th&amp;nbsp;in two editions: a less gory version on Shockwave.com and a bloody version on AddictingGames.com.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Check the Army of the Damned official trailer:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/fDyXRyXBFm4/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fDyXRyXBFm4&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/fDyXRyXBFm4&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;And&amp;nbsp;you can play the game &lt;a href="http://www.addictinggames.com/shooting-games/army-of-damned-game.jsp"&gt;here&lt;/a&gt;. &lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;(Don't worry,&amp;nbsp;it's a link to the bloody version!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;strong&gt;Red Bull Formula Face&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Secondly, last week Red Bull Formula Face (our super secret&amp;nbsp;project) was launched. &lt;br /&gt;A game totally different then our zombie shooter, because you won't see any blood.&amp;nbsp;And it's&amp;nbsp;not just a kart racing game. It's a kart racing game with mimic tracking! Yes, you&amp;nbsp;have to&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;control the game with your face.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Of course,&lt;/span&gt; we alse made a trailer for this one:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/mkCKTrcmka8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mkCKTrcmka8&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/mkCKTrcmka8&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; And&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;don't forget to play at&amp;nbsp;&lt;a href="http://www.redbullformulaface.com/"&gt;RedBullFormulaFace.com&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;strong&gt;Robot Shooter&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;As third, we are working on a Robot Shooter. You can scroll&amp;nbsp;down this page&amp;nbsp;for some preview images.&amp;nbsp;This game isn't released yet, but we work hard to bring&amp;nbsp;you&amp;nbsp;this awesome free&amp;nbsp;online shooter as soon as possible. You may expect this new&amp;nbsp;game in a few weeks.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Between all our busy schedules we still found a little time for a trip to Cologne, to visit Gamescom.  It was a long, long, but really great day! With a lot of games. And beer!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rXM014T9cSs/TmoBzWYTycI/AAAAAAAAADs/AKvqGuGIym0/s1600/IMG_0793.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-rXM014T9cSs/TmoBzWYTycI/AAAAAAAAADs/AKvqGuGIym0/s320/IMG_0793.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-family: Arial;"&gt;Grüße aus Köln!&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;- Shirley&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-3446113550337818353?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/3446113550337818353/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/xform-games-gotta-play-em-all.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3446113550337818353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3446113550337818353'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/xform-games-gotta-play-em-all.html' title='Xform Games - Gotta play &apos;em all'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-rXM014T9cSs/TmoBzWYTycI/AAAAAAAAADs/AKvqGuGIym0/s72-c/IMG_0793.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5032452848637109140</id><published>2011-09-09T10:14:00.001+02:00</published><updated>2011-09-09T10:14:24.976+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Particles'/><title type='text'>Particles again!</title><content type='html'>Dear readers,&lt;br /&gt;&lt;br /&gt;The last post by Pieter was also about particles, but as I'm working with different software we have to redo some of the particle work. I'll go a bit deeper into the details of the implementation.&lt;br /&gt;&lt;br /&gt;First of all a particle is a simple quad (but in general doesn't have to be) which always faces the camera. To make particles always face the camera we could calculate the transform needed for it to exactly face the camera. But doing this for all particles on screen is a bit expensive. Instead we simply take the rotation values of the camera and apply it to all particles. The effect of this is that not all particles are exactly facing the camera but they are roughly and the difference is not really noticable and it's a lot cheaper CPU-wise.&lt;br /&gt;&lt;br /&gt;Second, the spawning and deleting of particles is expensive. Instead we're using a particle pool. In this particle pool there are only unused particles (not in the scene). Whenever we need to spawn a particle we take it from the particle pool, assign properties and add it to the scene. When the particle has to be removed, we're not going to delete it, but we return it to the particle pool. In this way we avoid the expensive operation of spawning and deleting particles.&lt;br /&gt;&lt;br /&gt;Third, particles often fade out by using changing the alpha (transparency). Currently the only way we can change the alpha is by changing the material. In this case it would mean we cannot share the material across particles as changing the alpha of one particle would change the alpha of all particles. Using one material per particle would be possible but is very expensive as per material it requires shader program switches on the GPU. So we want one material for all particles but still change the alpha per particle, what now? Well, we can still change the UV coordinates of the particle (quad) and have different images with different alpha settings. We do this by using one large image which has several smaller images in it, see image below. For the first image we change the UV Coordinates to be between 0 and 0.125 (on the 'x' axis), for the second image between 0.125 and 0.25, etc. This functionality is also useful for animation.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QdFiRiPsxDY/TmnKo0sO8ZI/AAAAAAAAADo/npH98GHgiRk/s1600/UVAnimation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="50" src="http://2.bp.blogspot.com/-QdFiRiPsxDY/TmnKo0sO8ZI/AAAAAAAAADo/npH98GHgiRk/s400/UVAnimation.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Until next time!&lt;br /&gt;-- Stijn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5032452848637109140?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5032452848637109140/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/particles-again.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5032452848637109140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5032452848637109140'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/particles-again.html' title='Particles again!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-QdFiRiPsxDY/TmnKo0sO8ZI/AAAAAAAAADo/npH98GHgiRk/s72-c/UVAnimation.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5136346912973041563</id><published>2011-09-05T16:11:00.000+02:00</published><updated>2011-09-05T16:11:02.295+02:00</updated><title type='text'>Faking a complex 3D background</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;For our latest game we wanted to create an impressive looking start screen where a camera moves around the main character in a "frozen" 3D environment. We wanted the environment to look detailed with lots of enemies and action going on, but we also wanted to keep the&amp;nbsp;file-size&amp;nbsp;small and&amp;nbsp;complexability&amp;nbsp;low to keep the&amp;nbsp;downloadtime&amp;nbsp;short&amp;nbsp;and system performance high.&lt;/div&gt;&lt;div&gt;We&amp;nbsp;tackled these issues by creating a scene where only the main character and some small effects are true 3D models and where the rest of the environment is displayed as a panoramic texture mapped onto a sphere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A panoramic texture can easily be rendered in 3ds Max using the Panorama Exporter which can be found in the Utilities panel. The result is a distorted looking image which looks normal when mapped onto a sphere and when viewed from the spheres center. The images below display the rendered panorama image and the Photoshop edit which was used for the final scene.&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-4iKSGCi_MDM/TmTVj6Jdv1I/AAAAAAAAADI/PyLDsqK9fHA/s1600/EnvironmentOriginalTexture.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-4iKSGCi_MDM/TmTVj6Jdv1I/AAAAAAAAADI/PyLDsqK9fHA/s400/EnvironmentOriginalTexture.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: left;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7pp0Zz82bdA/TmTVt1qJZ-I/AAAAAAAAADM/CI1fCokn_Us/s1600/EnvironmentTexture.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-7pp0Zz82bdA/TmTVt1qJZ-I/AAAAAAAAADM/CI1fCokn_Us/s400/EnvironmentTexture.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: left;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;The next image displays the final 3D scene for the start screen.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-SNtG6zr9B4I/TmTVuU_YiZI/AAAAAAAAADQ/GY-g-g1yFG8/s1600/FinalMaxScene.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://4.bp.blogspot.com/-SNtG6zr9B4I/TmTVuU_YiZI/AAAAAAAAADQ/GY-g-g1yFG8/s400/FinalMaxScene.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here the panoramic texture has been mapped onto a sphere, the spheres bottom has been flattened so it won't look like the 3D character is hoovering above the floor. A plane with the characters shadow is placed below the character to make it fit better into the scene. There are also some extra objects like bullet streaks, impacts and a big muzzle flash coming from the characters gun which&amp;nbsp;exaggerate&amp;nbsp;the 3D effect when moving the camera. The cameras cannot be moved outside of the sphere and moving the cameras closer to the center results in less distortion of the panoramic image.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some screens of the final result.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-pb3RPeKqgPE/TmTVujV-i2I/AAAAAAAAADU/VjSW0zM1Chc/s1600/Screen1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://3.bp.blogspot.com/-pb3RPeKqgPE/TmTVujV-i2I/AAAAAAAAADU/VjSW0zM1Chc/s400/Screen1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-ImUWrKTkrsM/TmTVvsp0NaI/AAAAAAAAADg/VrDGqLT1SKw/s1600/Screen6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/-ImUWrKTkrsM/TmTVvsp0NaI/AAAAAAAAADg/VrDGqLT1SKw/s400/Screen6.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-15S6TEl6Kvk/TmTVvS4XVdI/AAAAAAAAADc/bZ6yUBZClIU/s1600/screen5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-15S6TEl6Kvk/TmTVvS4XVdI/AAAAAAAAADc/bZ6yUBZClIU/s400/screen5.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers Matt&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5136346912973041563?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5136346912973041563/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/faking-complex-3d-background.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5136346912973041563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5136346912973041563'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/09/faking-complex-3d-background.html' title='Faking a complex 3D background'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-4iKSGCi_MDM/TmTVj6Jdv1I/AAAAAAAAADI/PyLDsqK9fHA/s72-c/EnvironmentOriginalTexture.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2495220413617393092</id><published>2011-08-24T08:31:00.000+02:00</published><updated>2011-08-24T08:31:18.545+02:00</updated><title type='text'>Technical Talk</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;NL&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="--&gt;    &lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;!--[endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable	{mso-style-name:Standaardtabel;	mso-tstyle-rowband-size:0;	mso-tstyle-colband-size:0;	mso-style-noshow:yes;	mso-style-priority:99;	mso-style-qformat:yes;	mso-style-parent:"";	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;	mso-para-margin-top:0cm;	mso-para-margin-right:0cm;	mso-para-margin-bottom:10.0pt;	mso-para-margin-left:0cm;	line-height:115%;	mso-pagination:widow-orphan;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	mso-ascii-font-family:Calibri;	mso-ascii-theme-font:minor-latin;	mso-fareast-font-family:"Times New Roman";	mso-fareast-theme-font:minor-fareast;	mso-hansi-font-family:Calibri;	mso-hansi-theme-font:minor-latin;	mso-bidi-font-family:"Times New Roman";	mso-bidi-theme-font:minor-bidi;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;During the development of Army of the Damned we also started another first person shooter project. The plan is to create a similar game like the zombie game, but with a more arcade type of gameplay and graphics. Today I want to talk about how we are going to do the 'Shooting' in this game. You might think, 'Well it is a first person shooter just like all the others, so what is the point of discussing this?', which in fact is pretty much true. But what we want to do is make all of the bullets visible. Not just instant hits, as we did in the zombie game. The main reason for this is to amplify the arcade feel of the game. It also changes the experience slightly, because it takes a slight amount of time for the bullet to hit it's target. &lt;br /&gt;&lt;br /&gt;The technical difficulty of these visual bullets doesn't come with the bullets themselves. They just function on their own. When spawned they move forwards, if they hit something they die. And while a bullet is 'a life', it is visible to the player. &lt;br /&gt;The problem comes when shooting the bullets, or better said, spawning the bullets, from the first person perspective. Normally what you can do to 'shoot' from a first person camera, is just to shoot a ray down the center of the camera's transform into the 3D world. If it hits anything create a bullet hole, hit an enemy or something else depending on what the ray hits. But when having visual bullets, and a visual weapon in view where the bullet appears to be coming from it isn't that simple. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This figure shows our problem:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/-syTqeqC47zk/TlSaIOFdwII/AAAAAAAAADA/I2SHEqlU9VY/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-syTqeqC47zk/TlSaIOFdwII/AAAAAAAAADA/I2SHEqlU9VY/s320/1.png" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;If we just spawn a bullet at the end of the weapon's barrel, and shoot it in the direction the barrel is facing it will never get to the target the player's aiming for. It does go in the correct direction in general, but this will be unusable when having targets on a decent distance. It will also look very strange because the fired bullets won't move towards the displayed crosshair in the interface, which makes the crosshair in fact pretty useless. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/-6BRR6xhS6BM/TlSaIQxbIqI/AAAAAAAAADE/YJRQ7O7k6L8/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-6BRR6xhS6BM/TlSaIQxbIqI/AAAAAAAAADE/YJRQ7O7k6L8/s320/2.png" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;The solution is to shoot a ray first from the camera, the same way you would do when shooting 'directly'. This should give you some sort of intersection point in 3d space. Then it is time to cheat a little. The bullet we are about to create should spawn at the end of the barrel, but not be pointed in the same direction as the barrel. Instead it should be pointed at the intersection point we got from the ray. This will make sure that bullets always travel towards the target or object the player is aiming at. It will look correct because the bullets will always move towards the crosshair in 3D space. &lt;br /&gt;&lt;br /&gt;The only problem occours when the first ray fails. We don't have a reference point. A simple but yet effective solution to this problem is to calculate a intersection point far a way from the camera. And then point the bullet to that new location. &lt;br /&gt;&lt;br /&gt;Until next time,&lt;/span&gt;       &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;-Joep &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="color: #888888;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #888888;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2495220413617393092?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2495220413617393092/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/08/technical-talk.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2495220413617393092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2495220413617393092'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/08/technical-talk.html' title='Technical Talk'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-syTqeqC47zk/TlSaIOFdwII/AAAAAAAAADA/I2SHEqlU9VY/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7246561546494428107</id><published>2011-08-05T17:52:00.002+02:00</published><updated>2011-08-05T18:08:53.604+02:00</updated><title type='text'>Pimping art for stills and print</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div&gt;The past week we've been finalizing our zombie shooter "Army of the Damned". At this stage we need to prepare the artwork for marketing and print purposes, which of course has to look much better then in-game screenshots or standard renders and also must have a much higher resolution. Luckily I took this into account when creating the game's main menu which&amp;nbsp;in-game&amp;nbsp;is displayed at a resolution of 800x450. For this image I tripled the size to 2400x1350 pixels, which is more then enough for what we want to do with it. &amp;nbsp;&lt;/div&gt;&lt;div&gt;It's always good to figure out what you want to achieve with the image before starting on the artwork, this will keep you from creating art which in the end you don't need.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For this image I wanted to show a detailed player character, some zombies closing in on him and a plane dropping a bomb in the background while keeping in mind the title and menu would be displayed on top. I also wanted the image&amp;nbsp;to have a grindhouse look. After some quick layout&amp;nbsp;sketches&amp;nbsp;I posed the 3D characters and rendered an image which can be seen below.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-ScL1ovnSWp0/TjwPppaLJ3I/AAAAAAAAACw/UnUEVKt-WRE/s1600/1Render.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/-ScL1ovnSWp0/TjwPppaLJ3I/AAAAAAAAACw/UnUEVKt-WRE/s400/1Render.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you might have noticed the rendered image looks a bit bland, the big zombie on the left has too little contrast and there is no clear&amp;nbsp;light-source, no problem we're going to fix all this in&amp;nbsp;Photoshop!&lt;/div&gt;&lt;div&gt;First we need to determine where the light comes from, in this case most of it will come from the explosion in the background. In Photoshop I placed a layer on top of the character where I painted the lit areas with an orange color and set the layer to color dodge.&amp;nbsp;&lt;/div&gt;&lt;div&gt;On another layer I painted the shadow area's with a dark color and set the layer to multiply.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-CWNeSXe9TVg/TjwP1GOtEwI/AAAAAAAAAC0/GeOue9GATMk/s1600/2RenderAdjustments.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-CWNeSXe9TVg/TjwP1GOtEwI/AAAAAAAAAC0/GeOue9GATMk/s400/2RenderAdjustments.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next I added the background which is composed out of a sky, mountain, plane and explosion image. I also added some smoke coming form the gun muzzle.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-bOrm4I2q9L8/TjwP7rYY3VI/AAAAAAAAAC4/QzrkvgrKaZU/s1600/3AddBackGround.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-bOrm4I2q9L8/TjwP7rYY3VI/AAAAAAAAAC4/QzrkvgrKaZU/s400/3AddBackGround.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The image is getting there but it still looks too clean and the background looks too detached from the foreground. First I added some noise on top of the image and a "scratched film" layer to make the whole thing look old.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you look&amp;nbsp;closely you might notice the left side of the image has a red hue and the right side a green hue (red=bad guys, green=good guy). This is achieved by adding layer on top set to color dodge (of soft light) and lightly using a red and green brush.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Finally I placed another layer on top which is set to overlay, with a white brush I painted over the area's which needed to be more brightly lit. These where mainly the explosion area and the players chest.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/-WLf-a9vIQhs/TjwQRn5SvhI/AAAAAAAAAC8/hngZMCcmdcw/s1600/4NoiseAndColorCorrection.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/-WLf-a9vIQhs/TjwQRn5SvhI/AAAAAAAAAC8/hngZMCcmdcw/s400/4NoiseAndColorCorrection.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's how you pimp an image!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers, Matt&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7246561546494428107?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7246561546494428107/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/08/pimping-art-for-stills-and-print.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7246561546494428107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7246561546494428107'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/08/pimping-art-for-stills-and-print.html' title='Pimping art for stills and print'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ScL1ovnSWp0/TjwPppaLJ3I/AAAAAAAAACw/UnUEVKt-WRE/s72-c/1Render.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-102734773008345964</id><published>2011-07-27T10:41:00.001+02:00</published><updated>2011-07-27T10:43:13.025+02:00</updated><title type='text'>The zombies are coming..</title><content type='html'>&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Hello!&lt;br /&gt;&lt;br /&gt;Time for another blogpost  today. First of all I want to bring some good news.. Our zombie shooter  is nearing completion, it is almost done! Last week we did some  playtesting to find and fix bugs and glitches. But we actually  couldn't stop playing the game itself! Stay tuned, the trailer is coming  soon ;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/-LpoArNV_Bwg/Ti_OxfwUC6I/AAAAAAAAACo/MDQUk9Dya0E/s1600/Screenshot04.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/-LpoArNV_Bwg/Ti_OxfwUC6I/AAAAAAAAACo/MDQUk9Dya0E/s400/Screenshot04.jpg" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Screenshot Zombie Shooter&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;The playtesting, or QA (Quality Assurance), is very important. A  game, when released, should work. And not just be filled with bugs.  During this process bugs are found and listed to be fixed after the QA  session. If someone encounters a bug while testing. He or she creates a  so called 'QA Ticket'. The bug or glitch is explained in the description  of the ticket and also the steps to reproduce the bug are written down.  This in particulary is important, because the programmer who's going to  fix the bug can reproduce it for debugging. Imagine something very  simple like this:&lt;br /&gt;&lt;br /&gt;Problem: The sound isn't muted when pressing 'Mute Sound' in the options menu. &lt;/span&gt;  &lt;span style="font-size: small;"&gt;&lt;br /&gt;Procedure: 1. Start the game 2. Go to the 'Options' screen 3. Clik the 'Mute Sound' button. &lt;br /&gt;&lt;br /&gt;This  is a straight forward bug, and probably not so hard to find and fix.  Bugs that occour during gameplay are much thougher to reproduce.  Sometimes the player needs to be at a specific location within the game  world. If so, we add a screenshot to the 'QA Ticket'. So the programmer  can go to that location in-game, and follow the steps to reproduce the  bug. Instead of starting a process of 'Trial and error' just to  reproduce the bug in the first place.&lt;br /&gt;&lt;br /&gt;The next step is to fix the bugs ofcourse. First the blocker ones,  the bugs that cause game freeze's or prevent the player from making  progress. What I mean by 'Making process'; A gate for example that  should open after some actions, and it doesn't. The player is then not  able to walk through it towards the end of the level, and thus not able  to finish the level. Then the other critical bugs are fixed. Such as  sound/music bugs, graphic issues, getting behind the boundaries of a  game level where the player shouldn't be etc.  &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;If the blocker and critical bugs are fixed, a new QA session is  behing held. The QA process starts again until the game is ready for  release.  &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;Happy QA'ing ;)!&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;-Joep&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-102734773008345964?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/102734773008345964/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/zombies-are-coming.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/102734773008345964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/102734773008345964'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/zombies-are-coming.html' title='The zombies are coming..'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-LpoArNV_Bwg/Ti_OxfwUC6I/AAAAAAAAACo/MDQUk9Dya0E/s72-c/Screenshot04.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7877292349482377844</id><published>2011-07-15T16:15:00.006+02:00</published><updated>2011-07-15T17:24:44.627+02:00</updated><title type='text'>Tell me who you are</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;NL&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:Standaardtabel;  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Hello developers/fans/people who accidentally landed on this site,&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Today we have tested one of our new games, which is (surprisingly) a super secret game.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Of course this is a very interesting process. If you like to read more about test days, you can read about it in &lt;a href="http://xformgamedevelopment.blogspot.com/2011/03/test-day.html"&gt;an earlier post&lt;/a&gt; of Stijn. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;But unfortunately for this project there's not much to tell, because the game is such a big secret. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Instead of boring you by telling how great this game is going to be and that you can play it really soon, I like to tell you about something else: target audiences.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:arial;" &gt;Target audiences? Why?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;As you may already know, at Xform we like to make games that we ourselves love to play. But that doesn’t mean we don’t listen to our player base. We just want to know who they are, where they are from and why they especially like to play our games.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Target audiences are very important. For every product. For every game. Whether you are creating console games, mobile games or browser based games, you need to know what kind of people (are going to) play your games.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Are they kids or adults? Male or female? At what age? When do they play games and how much time do they spend on it? Do they play alone or with friends?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Knowing who they are and what they like is very valuable information when making a game. It’s most common to use this information for marketing and promotional activities, but you can also use it for game design.&lt;br /&gt;This doesn’t mean you should base the entire game production on target audience facts. After all game development is a creative process and it is fun to surprise your audience with things they don’t expect. But, for example, if you know that your type of game is mostly being played by people that do not spend more than half an hour per day on gaming, then it doesn’t make sense to create levels with loads of side quests and fights that will take at least two hours to finish. Although this may seem quite obvious, there are just too many games that don’t match with their target audience.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;You can also use your target audience analyses to treat your audience on extras like special enemies or funny easter eggs. They will appreciate it!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=" font-weight: bold;font-family:arial;" &gt;How to define my target audience?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;To define your target audience you have to do research. And of course there are millions of options to start with this.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;If you have a lot of money you can spend it on an exclusive research institute that will do all the work for you. Or you can hire some specialists and start a research department at your own office. Unfortunately, at Xform we don’t have this opportunity yet. We have to do the research by ourselves, which is actually very interesting.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;My advice for starting with your research is to keep it small and simple. Stay close to your company and take advantage of all the information about game target audiences that already exists. Believe me, you can spend hours on reading books and web articles about this. Now it’s your task to find out which information is valuable for your game.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;If this is the first game you’re working on you might start to take a closer look at similar games from the same type of platform. What kind of people play this games? They might want to play your game too.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;When you already developed some games you can also do research on these games. Find out what’s the target audience from your previous games. Internet offers you some interesting tools that might be useful for this. Every social media site has an option to track down user data and information from your fans.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;We also started to use Google Analytics for our Xform website to see who are interested in our company and games. So now we can see how many and for how long people visit our site, if they were looking for something in particular or that they just &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;accidentally&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt; stumbled upon it.&lt;br /&gt;A lot of information might surprise you. I didn’t know most of the visitors on our homepage are from Brazil:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:100%;"&gt; &lt;span style="mso-ansi-language:EN-US" lang="EN-US"&gt; &lt;/span&gt;  &lt;/span&gt;&lt;span style="font-family:arial;font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:arial;font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-3xe_HnJK1pQ/TiBOPrLn17I/AAAAAAAAACk/-y4G_V7Ed3I/s1600/Xform%2BSite.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/-3xe_HnJK1pQ/TiBOPrLn17I/AAAAAAAAACk/-y4G_V7Ed3I/s320/Xform%2BSite.png" alt="" id="BLOGGER_PHOTO_ID_5629585565409597362" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;visits on the Xform website (last two weeks)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:arial;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Have a nice weekend!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;- Shirley&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7877292349482377844?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7877292349482377844/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/tell-me-who-you-are.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7877292349482377844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7877292349482377844'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/tell-me-who-you-are.html' title='Tell me who you are'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3xe_HnJK1pQ/TiBOPrLn17I/AAAAAAAAACk/-y4G_V7Ed3I/s72-c/Xform%2BSite.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5479031473337385949</id><published>2011-07-13T16:55:00.004+02:00</published><updated>2011-07-13T17:15:30.433+02:00</updated><title type='text'>Replay fun</title><content type='html'>Dear readers,&lt;br /&gt;&lt;br /&gt;I've been working on another car game and last friday afternoon after doing some boring stuff I felt like doing something fun and that could be done quickly: a replay function. None of our games currently have this, but for the game I'm doing now I think it would really add something.&lt;br /&gt;&lt;br /&gt;Before we can replay anything of course we need to record. The first thing that comes to mind is to simply store our key input and on replay the stored key input is used as input for the car. But as we're using a physics engine which I don't trust to be deterministic (the same input results in the same output) it would lead to a different replay which of course is not what we want.&lt;br /&gt;&lt;br /&gt;Another approach which is easy and sure to work is to store the transforms of the car each frame in a list and when on replay simply go through the list and setting the car model to the stored transform. This is what I currently do and it works well. But let's analyze it. We're running at 30 frames per second and thus storing 30 transforms per second. For each minute of replay we store 30 * 60 = 1800 transforms. Assuming each transform is stored as a 4x4 matrix of floats, so 16 floats at 4 bytes per float: 64 bytes per matrix. And so for each minute of replay 1800 * 64 = 115200 bytes. Considering today's RAM capacity in computers this is peanuts. But this of course is only for a single car and additional actions have not been recorded (for example car damage, firing of weapons, etc). One way to reduce the size of the replay list would be to store the transform every X frames and interpolate between transforms, although you do lose accuracy with this approach. Another way is to only store transforms when they've changed 'enough' with respect to the previously stored transform. In this way a car that does not move would not cause the replay list to increase in size.&lt;br /&gt;&lt;br /&gt;With a replay you can think of simply watching what you (or someone else) did. Currently I implemented it as a replay while you're playing: like a ghost rider (See image below). In this way you get the feeling you are competing which in my opinion adds to the fun and I hope the option will be there when we release the game.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();}  catch(e) {}" href="http://3.bp.blogspot.com/-hkvBF8wu4n0/Th2yJRSeCuI/AAAAAAAAACE/ytrDYXUV0i0/s1600/BMXGhost.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 160px;" src="http://3.bp.blogspot.com/-hkvBF8wu4n0/Th2yJRSeCuI/AAAAAAAAACE/ytrDYXUV0i0/s320/BMXGhost.png" alt="" id="BLOGGER_PHOTO_ID_5628850981612423906" border="0" /&gt;&lt;/a&gt;&lt;center style="font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;Image from 'BMX Ghost'. A ghost rider is shown displaying the best round  you previously played.&lt;/span&gt;&lt;/center&gt;&lt;br /&gt;-- Stijn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5479031473337385949?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5479031473337385949/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/replay-fun.html#comment-form' title='2 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5479031473337385949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5479031473337385949'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/replay-fun.html' title='Replay fun'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-hkvBF8wu4n0/Th2yJRSeCuI/AAAAAAAAACE/ytrDYXUV0i0/s72-c/BMXGhost.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2701978542792922120</id><published>2011-07-13T16:47:00.003+02:00</published><updated>2011-07-13T16:54:55.553+02:00</updated><title type='text'>New prototype</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-J4OSMMjmNIc/Th2weZj3SBI/AAAAAAAAAB8/N81dVJzSsTk/s1600/BlogImage.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 226px;" src="http://4.bp.blogspot.com/-J4OSMMjmNIc/Th2weZj3SBI/AAAAAAAAAB8/N81dVJzSsTk/s400/BlogImage.jpg" alt="" id="BLOGGER_PHOTO_ID_5628849145586862098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-PfdMx8Vlnho/Th2wT6l4pzI/AAAAAAAAAB0/PSSs4PaTqFU/s1600/BlogImage.jpg"&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="  ;font-family:arial;font-size:small;"  &gt;Hi all,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A few weeks back Stijn started programming a new game prototype which is basically a downhill ski-game with a special Xform twist. Last Monday I was put on the project to create a track and some (temporary) graphics for this prototype. The game just needs to look and play good enough to get a good impression of what the final product could be, therefore I won't put a lot of time in designing and fine-tuning the track. I'll keep you guys updated on this project when (and if) it goes into full-development.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers, Matt&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2701978542792922120?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2701978542792922120/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/new-prototype.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2701978542792922120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2701978542792922120'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/new-prototype.html' title='New prototype'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-J4OSMMjmNIc/Th2weZj3SBI/AAAAAAAAAB8/N81dVJzSsTk/s72-c/BlogImage.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8325120843788651160</id><published>2011-07-05T21:07:00.002+02:00</published><updated>2011-07-05T21:12:43.408+02:00</updated><title type='text'>New Game Sneak Preview</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-l3GjUirMdtA/ThNhyF-UMVI/AAAAAAAAABs/S3nZWROM8fw/s1600/PreloaderPreview.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 400px; FLOAT: left; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5625947872740782418" border="0" alt="" src="http://2.bp.blogspot.com/-l3GjUirMdtA/ThNhyF-UMVI/AAAAAAAAABs/S3nZWROM8fw/s400/PreloaderPreview.jpg" /&gt;&lt;/a&gt; When you don't have anything to write about you can always post a super secret screen of an upcoming game! &lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Greets,&lt;br /&gt;&lt;br /&gt;Diederik&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8325120843788651160?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8325120843788651160/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/new-game-sneak-preview.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8325120843788651160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8325120843788651160'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/07/new-game-sneak-preview.html' title='New Game Sneak Preview'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-l3GjUirMdtA/ThNhyF-UMVI/AAAAAAAAABs/S3nZWROM8fw/s72-c/PreloaderPreview.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6868353213446844618</id><published>2011-06-29T16:26:00.003+02:00</published><updated>2011-06-29T16:51:59.407+02:00</updated><title type='text'>Baking data..</title><content type='html'>&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;color:black;"&gt;During development of the zombie shooter we were &lt;/span&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;experiencing an increasing amount of loading times due to all of the new features which got added. This isn't unusual, since it is something logic as cause and effect. But the loading times were getting a bit too long. So we decided to take a look at it to find out where we possibly could find a speed up.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;Some technical systems in the game use a lot of data calculated/generated during the loading stage, which takes time. One of those is the pathfinding system which uses the most data at the moment. It generates all of the node data needed for the zombies to walk from A to B during startup. As you can imagine, having a decent amount of nodes to be processed every time the game loads up takes time. Too much time in fact for our needs. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;So how to solve this. Since it is a system which is 'calculating' things to be stored in the computer's memory for realtime use after loading, it is possible to capture this calculated/generated data. The trick is to save this generated data and store it in some sort of file from where it can be loaded directly during startup of the game.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;Now having the data we need saved in a file, it doesn't need to be recalculated/regenerated anymore during loading. We could say, the (navigation) data is baked into a file. With the data already present in a file, it is possible to directly load the data into the computer's memory instead of calculating it first during startup. This is much faster than calculating/generating the data on every startup of the game.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;The main drawback of doing things like this is the need of recalculating and saving data everytime something relevant to that data has changed in the game. The plan is to create a system which automatically detects changes, or at least is possible to force into a mode where the already saved data needs to be overwritten by new generated data. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;A lot of technical talk, hopefully next post some more images ;)&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin: 0cm 0cm 0pt; font-family: arial;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: EN-US;font-size:100%;color:black;"  lang="EN-US" &gt;-Joep&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6868353213446844618?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6868353213446844618/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/baking-data.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6868353213446844618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6868353213446844618'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/baking-data.html' title='Baking data..'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-950686540302233207</id><published>2011-06-22T17:45:00.007+02:00</published><updated>2011-06-22T17:59:26.178+02:00</updated><title type='text'>Particle stuff!</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;Hi all,  &lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;Unfortunately, most of the time I am working on ‘secret’ projects or projects on which we simply cannot share as much as we would like. So this post will be about something I am doing in my ‘spare’ time. At least what is left of it ;)&lt;br /&gt;&lt;br /&gt;As some of you might know I am a big fan of everything that involves particles. Especially explosions!&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;Unfortunately, Adobe Director’s own particle system doesn’t really suit my needs. It is ok for a lot of quick things but for the games we make it is a little outdated. For example; you cannot rotate or animate particles individually and you don’t have any blending options (additive blending) yet. Finally, there is no general time or speed multiplier for the entire particle system. Our games sometimes feature slow motion and so we’re unable to dynamically change the speed and lifetime of the system. All in all it was time for our own particle system. So about 10 games ago (more or less,..) I decided to create my own particle system from scratch.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;At this time, 10 games later, I still haven’t got a perfect particle system up and running. Mostly because I noticed early on that creating a system that could do everything that I (or one of my colleagues) &lt;/span&gt;&lt;span style="mso-spacerun:yes;font-size:85%;" &gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;want is simply not possible. The variations are impossible to count.&lt;/span&gt;&lt;span style="mso-spacerun:yes;font-size:85%;" &gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Furthermore, as I can’t go as low-level as the default Adobe Director particle systems I run into performance problems.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;So as we speak we have a default particle system class which handles general particle behavior and when we need an additional&lt;/span&gt;&lt;span style="mso-spacerun:yes;font-size:85%;" &gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;or new effect we simple use this one as a base for new particle classes. The default setup handles birth, life, texture animation (if necessary), position, rotation and scale. For the transform properties we also have speed and direction. The slightly more advanced ‘default’ ;) version also does drag, gravity and wind. Each frame the particles are updated until they reach the end of their life after which the are deleted. When all particles are deleted the particle system cease to exists. For most particle systems we use planes (simple 2 triangles forming a square) on which we display the animated (texture). However, we could also use other types of geometry (which we could even add to the physics solution). With the basic setup we can pretty much build any possible particle system we need and can do everything the default system can’t. The biggest and perhaps the only downside is that bigger, more complex system can cause too much of a performance drain.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;So to end this post a couple of short cases of particle effects based upon the base particle class.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;1. Particle trail&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;Sometimes you want a consistent trail of particles with a constant size. You cannot spawn a new particle each frame, because;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;a. The distanced travelled can exceed the particle size and thus creating gaps&lt;br /&gt;b. In slowmotion this would mean lots of particles would be spawned at almost the same place.&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;For this system I calculate the distance and direction between the systems current position and previous one. If this exceeds the size of the particle (with buffer)&lt;/span&gt;&lt;span style="mso-spacerun:yes;font-size:85%;" &gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;I fill the distance travelled with particles (not forgetting to update all particle settings accordingly).&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-Keh428URQ9U/TgIQ6YOvuoI/AAAAAAAAABM/vh0Rn6cxzOU/s1600/ParticleTrail.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://1.bp.blogspot.com/-Keh428URQ9U/TgIQ6YOvuoI/AAAAAAAAABM/vh0Rn6cxzOU/s400/ParticleTrail.jpg" alt="" id="BLOGGER_PHOTO_ID_5621073880034556546" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;2. ‘Volume’ explosions&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;It always bothered me that our previous explosions always start from a single point and move outwards. While this would work perfectly for a grenade it always looks weird with bigger objects. I could spawn a explosion particle system and update it instantly at how it would look over 10 frames or so. I experimented with this, but I simply wanted an explosion to fill up the object. There were a couple of options. Iterate through all vertices of an object and spawn a particle at that world position. Still something I would like to test ;) but I didn’t expect this to be very fast. So for a quicker solution I opted to use the volume of the bounding of the object to define particle positions using a 3d grid. As I store bounding boxes of available meshes anyway this could be done fairly easy. You could say this won’t look nice with weird irregular shaped object and I agree ;) Nevertheless, most of it is blocked by smoke and fire and it all looks cool anyway!&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-FtsM4kbgF3M/TgIRGiawicI/AAAAAAAAABU/nH0GJvB_K1w/s1600/Explosion.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://3.bp.blogspot.com/-FtsM4kbgF3M/TgIRGiawicI/AAAAAAAAABU/nH0GJvB_K1w/s400/Explosion.jpg" alt="" id="BLOGGER_PHOTO_ID_5621074088927726018" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;I am off now!&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;Cheers&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt;&lt;span style="font-size:85%;"&gt;Pieter&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;" class="MsoNoSpacing"&gt; &lt;/p&gt;  &lt;p style="font-family: arial;" class="MsoNoSpacing"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-950686540302233207?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/950686540302233207/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/particle-stuff.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/950686540302233207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/950686540302233207'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/particle-stuff.html' title='Particle stuff!'/><author><name>Xform Game Development</name><uri>http://www.blogger.com/profile/02878710518107529982</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-cqEkTgCuo50/Tf9AM1CHpCI/AAAAAAAAAAQ/PuFyd_oyEQY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Keh428URQ9U/TgIQ6YOvuoI/AAAAAAAAABM/vh0Rn6cxzOU/s72-c/ParticleTrail.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1190088415739981760</id><published>2011-06-17T17:35:00.002+02:00</published><updated>2011-07-06T08:47:27.647+02:00</updated><title type='text'>Pleased to meet you</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style=" ;font-family:Arial,Helvetica,sans-serif;font-size:small;"  &gt;Hi all!&lt;br /&gt;&lt;br /&gt;First of all, let me introduce myself. My name is Shirley, brand new production manager at Xform.&lt;br /&gt;The previous 7 weeks felt like having a crash course in game production management.&lt;br /&gt;Having my roots in theatre and media, working in the games industry is totally refreshing.&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style=" ;font-family:Arial,Helvetica,sans-serif;font-size:small;"  &gt;Although I have some experience in project management, managing an entire game production is new for me. But I really like it and day by day I am learning more about the production process.&lt;br /&gt;For me the best way to learn is through practice. And that is why I am lucky to join Xform at this time of the year. At this moment we are working on several game projects and they are all very different.&lt;br /&gt;&lt;br /&gt;Besides scheduling, meetings, reading and writing documents for these games, I also did some video editing.&lt;br /&gt;So with this post I proudly present this teaser trailer. Please sit back and enjoy:&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" src="http://2.gvt0.com/vi/S14IRz3sMaY/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/S14IRz3sMaY&amp;amp;fs=1&amp;amp;source=uds"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;embed src="http://www.youtube.com/v/S14IRz3sMaY&amp;amp;fs=1&amp;amp;source=uds" type="application/x-shockwave-flash" height="266" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;span style=" ;font-family:Arial,Helvetica,sans-serif;font-size:small;"  &gt;&lt;br /&gt;&lt;br /&gt;Yes, that's our Zombie Shooter game, which can be played online soon. So stay tuned!&lt;br /&gt;&lt;br /&gt;- Shirley&lt;br /&gt;&lt;br /&gt;P.S. If you know any good books about game production and -management, please let me know. :)&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1190088415739981760?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1190088415739981760/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/please-to-meet-you.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1190088415739981760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1190088415739981760'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/please-to-meet-you.html' title='Pleased to meet you'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5028452259890951926</id><published>2011-06-15T15:00:00.003+02:00</published><updated>2011-06-15T17:10:55.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Car'/><category scheme='http://www.blogger.com/atom/ns#' term='Physics'/><title type='text'>Car physics</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear readers,&lt;br /&gt;&lt;br /&gt;It's been a while since I wrote. In the meantime I've been working on some racing games about which I cannot say much. What I can tell you about is how our cars are (roughly) implemented. First let's briefly explore an idea, evaluate it and then improve upon it.&lt;br /&gt;&lt;br /&gt;We start with creating a rigid body: a physics object with properties such as mass, friction, linear velocity, etc. This rigid body collides with other physic objects such as our track. So let's create a rigid body (without the wheels for simplicity of explaining) with the shape of a car as shown below (sliding on ground):&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-69zC4fX1MsU/TfiqFfTk4fI/AAAAAAAAANo/My7M7FDdGKM/s1600/CarSlideHover.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="248" src="http://1.bp.blogspot.com/-69zC4fX1MsU/TfiqFfTk4fI/AAAAAAAAANo/My7M7FDdGKM/s320/CarSlideHover.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Sliding and hovering&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;To move the car forward we can impulse the car in the direction it is facing. And to turn left or right we can apply an angular impulse. Tada! Done! Well no, not quite. One issue for example is that the car would regularly spin around wildly as it is moving over the track. This is because the car is constantly colliding with the track and the physic engine reacts upon the collisions with unwanted results.&lt;br /&gt;&lt;br /&gt;To avoid the collisions we make the car hover over the track instead of sliding on it. One way to do this is by shooting a ray from the center of the car straight down (red arrow) and when the track is within the hover distance we impulse the car back up (countering gravity). In this way collisions are avoided (and we get a nice bounce effect as well) but when driving over the track we'd still have collisions when driving up a slope. We can avoid this by shooting more rays: from the four places of the wheels (blue arrows). We could even take this idea further and shoot multiple rays per wheel as shown below, but shooting rays is not for free and requires CPU cycles.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SXEhERjG6rM/TfiqIN4Yw6I/AAAAAAAAANs/cYLMP06ox4A/s1600/ManyRaysWheel.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="195" src="http://2.bp.blogspot.com/-SXEhERjG6rM/TfiqIN4Yw6I/AAAAAAAAANs/cYLMP06ox4A/s200/ManyRaysWheel.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Shooting multiple rays per wheel&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This is a rough and simplified explanation of how our cars work and it works quite well for our needs.&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5028452259890951926?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5028452259890951926/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/dear-readers-its-been-while-since-i.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5028452259890951926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5028452259890951926'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/dear-readers-its-been-while-since-i.html' title='Car physics'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-69zC4fX1MsU/TfiqFfTk4fI/AAAAAAAAANo/My7M7FDdGKM/s72-c/CarSlideHover.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-5756639718288370765</id><published>2011-06-10T18:09:00.001+02:00</published><updated>2011-06-10T18:11:33.831+02:00</updated><title type='text'>Lightmaps</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;For the zombie shooter we're currently working on we want to have an atmospheric environment with light and dark areas. This is hard to achieve with directors/shockwaves default lighting system. It's possible to place some realtime Omi lights but only a few can be used and they won't give the result we're looking for.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/-bdi0c4n1WMA/TfJBHGZCyHI/AAAAAAAAANc/brb0PcPYVHw/s1600/NoLightmaps.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://2.bp.blogspot.com/-bdi0c4n1WMA/TfJBHGZCyHI/AAAAAAAAANc/brb0PcPYVHw/s320/NoLightmaps.jpg" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;Instead of realtime lights we've decided to use lightmaps to tint the environment. A lightmap is simply put an extra texture image which contains the "baked" light information of a 3D scene.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/-2Yn0lqCjiGM/TfJBPJCQZgI/AAAAAAAAANg/lIrbiSdB230/s1600/LightmapTexture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-2Yn0lqCjiGM/TfJBPJCQZgI/AAAAAAAAANg/lIrbiSdB230/s320/LightmapTexture.jpg" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;Once the lightmap image has been made it can be superimposed on top of the 3D models original Diffuse texture giving the result as seen below. As you can see the color nuances of the lightmap image are transferred to the environment mesh.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: x-small;"&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/-g1GXyfwH-C8/TfJBaiqzMFI/AAAAAAAAANk/y75SUPkJZVc/s1600/Lightmaps.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://2.bp.blogspot.com/-g1GXyfwH-C8/TfJBaiqzMFI/AAAAAAAAANk/y75SUPkJZVc/s320/Lightmaps.jpg" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;That's it for this post.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;Cheers,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;Matt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-5756639718288370765?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/5756639718288370765/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/lightmaps.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5756639718288370765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/5756639718288370765'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/lightmaps.html' title='Lightmaps'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-bdi0c4n1WMA/TfJBHGZCyHI/AAAAAAAAANc/brb0PcPYVHw/s72-c/NoLightmaps.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8970076506109002094</id><published>2011-06-01T14:10:00.000+02:00</published><updated>2011-06-01T14:10:19.123+02:00</updated><title type='text'>Long time no see</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;NL&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:Standaardtabel; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;&lt;div class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;span style="color: black;"&gt;It has been a while since our last blog update. And no... we weren't on holiday past few months! ;) &lt;br /&gt;In fact we've been working on our new projects. One of them is our new upcoming zombie game! Shooting zombies from the first person perspective&lt;/span&gt;&lt;span style="color: black;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;span style="color: black;"&gt; At the beginning of this project I've been working mostly on the 3D models. The zombies themselves, but also on the environment in which the game takes place. But the past 3 weeks I did some programming. My main focus was the zombie AI. Which is, at first thought, not so hard... Just walk to your target to eat it's brains!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-y6tmHWHTDTQ/TeYo9fBn7rI/AAAAAAAAANY/PFf3BVYzk_c/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://3.bp.blogspot.com/-y6tmHWHTDTQ/TeYo9fBn7rI/AAAAAAAAANY/PFf3BVYzk_c/s400/1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;The main challenge was to create a system which guides the zombies through the environment without bumping/walking in to walls and other obstacles. Once again I got back my pathfinding system from Panic at the Zoo (PATZ), which worked pretty good in that game. But for this game it had it's drawbacks. &lt;br /&gt;PATZ's pathfinding is grid based, not node based. Which wasn't a big deal since the environment of PATZ was small. But with the zombie project we want to have a bigger and more organical (not squarish, as with grid based systems) kind of space to work with. Therefore I decided to write a new pathfinding system which uses a node network based on a 3d mesh. A so called 'Navigation Mesh'.&lt;br /&gt;&lt;br /&gt;To keep it short, each vertex in a so called 'Navigation Mesh' is a node, and the triangulation of the mesh for example, determines the node's connections. Since the nodes have connections and positions in 3D space it is possible to calculate paths between them. Currently the basic zombie AI is working and it is already pretty scary to see all of those zombies walking towards you...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black;"&gt;Also, check out &lt;a href="https://www.facebook.com/pages/Xform-Zombie-Game/189270534457578"&gt;our brand new Facebook page&lt;/a&gt; about this project! :)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black;"&gt;&lt;a href="https://www.facebook.com/#%21/pages/Xform-Zombie-Game/189270534457578"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: black;"&gt;-Joep&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8970076506109002094?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8970076506109002094/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/long-time-no-see.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8970076506109002094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8970076506109002094'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/06/long-time-no-see.html' title='Long time no see'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-y6tmHWHTDTQ/TeYo9fBn7rI/AAAAAAAAANY/PFf3BVYzk_c/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2137780454010646657</id><published>2011-04-04T08:43:00.000+02:00</published><updated>2011-04-04T08:43:42.685+02:00</updated><title type='text'>Creating a simple race track</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OSuEgh6hPkE/TZln_YQ4PdI/AAAAAAAAAMU/Quv3_DhOLFc/s1600/1_RaceTrackProfile.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="166" r6="true" src="http://4.bp.blogspot.com/-OSuEgh6hPkE/TZln_YQ4PdI/AAAAAAAAAMU/Quv3_DhOLFc/s320/1_RaceTrackProfile.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;In this blogpost I'm going to show you how to build a simple racetrack using two splines and a texture using loft in 3d studio max. With this method you can build and texture a track in no time and have a lot of options to adjust and edit your track without messing up the mesh or the UVW coordinates.&lt;br /&gt;First we need to create the shape of the track using a spline, next we need to determine the profile of the road also using a spline. In this example I've made a shape that resembles the profile of the road and the sidewalk.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-yCuNZlLNi_U/TZloD8V4IHI/AAAAAAAAAMY/Vkw38cpZVWo/s1600/2_Shapes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" r6="true" src="http://4.bp.blogspot.com/-yCuNZlLNi_U/TZloD8V4IHI/AAAAAAAAAMY/Vkw38cpZVWo/s320/2_Shapes.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now we are going to create the track using loft. First select the track spline, go to the Create tab and select "Compound Objects" in the drop down menu. Now press the Loft button and change Instance to Copy in the Creation Method menu. Now press the Get Shape button and select road profile spline. The result can be seen in the image below. &lt;br /&gt;Turn off automatic banking in the Skin Parameters menu, we'll add the banking manually&lt;br /&gt;Note: Sometimes its necessary to flip the objects normals. There is a flip normals option in the Skin Parameters menu.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fOyEvljKpxc/TZloIblQZ_I/AAAAAAAAAMc/aY7dwxIFc8A/s1600/3_loft.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" r6="true" src="http://4.bp.blogspot.com/-fOyEvljKpxc/TZloIblQZ_I/AAAAAAAAAMc/aY7dwxIFc8A/s320/3_loft.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;A big advantage of the loft is that it automatically creates usable UVW coordinates. Now create a road texture and apply it to the track mesh. You can set the tiling of the texture in the Surface Parameters menu, now tile the texture until it looks ok.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0Q3jdTh4sQA/TZloMHHcWfI/AAAAAAAAAMg/HBKyNCTPizU/s1600/4_Texture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" r6="true" src="http://2.bp.blogspot.com/-0Q3jdTh4sQA/TZloMHHcWfI/AAAAAAAAAMg/HBKyNCTPizU/s320/4_Texture.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;And what if you have done all this and you're just not happy with your track shape? No worries it can easily be adjusted without messing things up. To edit the spline expand the Loft menu by clicking on the Plus icon in front of the Loft text (see image below). Now hilight Path, as you can see Editable Spline appears below, now click Editable Spline and start editing you shape. In this example I've raised some of the vertexes to give the track some higher parts. When you're done exit the Editable Spline menu and go back to the Loft.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-zuYZuQv2kfY/TZloPl95gzI/AAAAAAAAAMk/HMr7W3bbJG8/s1600/5_Height.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" r6="true" src="http://3.bp.blogspot.com/-zuYZuQv2kfY/TZloPl95gzI/AAAAAAAAAMk/HMr7W3bbJG8/s320/5_Height.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now we'll add some banking to the corners, this can be done using the Twist option in the Deformations menu. Here you can determine the banking of each part of the track.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-S1UH6Tf0VKk/TZloU8CaU5I/AAAAAAAAAMo/9xKKExde-Y4/s1600/6_Deformations.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" r6="true" src="http://3.bp.blogspot.com/-S1UH6Tf0VKk/TZloU8CaU5I/AAAAAAAAAMo/9xKKExde-Y4/s320/6_Deformations.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Fiddle around with all the options in the Loft menu to see what they do. Here's a close up image of the end result.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-4eaVaSU1xsE/TZloX91E8wI/AAAAAAAAAMs/l-HriYv9DwI/s1600/7_TrackFinished.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" r6="true" src="http://1.bp.blogspot.com/-4eaVaSU1xsE/TZloX91E8wI/AAAAAAAAAMs/l-HriYv9DwI/s320/7_TrackFinished.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;That's it for this post, &lt;br /&gt;Cheers Matt&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2137780454010646657?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2137780454010646657/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/04/creating-simple-race-track.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2137780454010646657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2137780454010646657'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/04/creating-simple-race-track.html' title='Creating a simple race track'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-OSuEgh6hPkE/TZln_YQ4PdI/AAAAAAAAAMU/Quv3_DhOLFc/s72-c/1_RaceTrackProfile.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6697594357589732813</id><published>2011-03-18T18:49:00.000+01:00</published><updated>2011-03-18T18:49:40.674+01:00</updated><title type='text'>Test Day</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Dear readers,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Today is the test day for one of our games. Luckily it's not my game being tested as it always provides some stress. As a tester you have to try to find bugs by trying many actions. If at a certain point you encounter a bug you have to remember what actions you did that led you to the bug. Then you try to reproduce the bug. If you can't reproduce it then you either forgot to do an action or the bug is very subtile or time-related. We also tag our bugs with priority. Naturally a bug that prevents game progress is a bug of high priority. Bugs like "this button has the wrong text" should be fixed but are of lower priority. Other bugs like the one shown in the screenshot below (where an explosion decal is partly in air) are not very useful to commit as they won't be fixed due to it being too hard to fix. Removing it all together however would cause lack of detail (you'd miss it).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-YCON32RZkUQ/TYObIBVMCNI/AAAAAAAAAMQ/2ssHwSsfKmw/s1600/DecalBug.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" r6="true" src="https://lh4.googleusercontent.com/-YCON32RZkUQ/TYObIBVMCNI/AAAAAAAAAMQ/2ssHwSsfKmw/s320/DecalBug.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;An explosion decal is partly in air.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Luckily I didn't find many bugs in the part I was testing or perhaps I didn't test well enough (there are endless combinations) :P&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Calibri;"&gt;-- Stijn&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6697594357589732813?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6697594357589732813/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/test-day.html#comment-form' title='2 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6697594357589732813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6697594357589732813'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/test-day.html' title='Test Day'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-YCON32RZkUQ/TYObIBVMCNI/AAAAAAAAAMQ/2ssHwSsfKmw/s72-c/DecalBug.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7102229352837331137</id><published>2011-03-17T18:16:00.000+01:00</published><updated>2011-03-17T18:16:15.004+01:00</updated><title type='text'>Happy face....sad face.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;It has been a while but here's finally another blogpost by Matthew. After some nagging, begging and harassing programmer Stijn approved one of my "feature requests" (probably just to get me off his back). The feature that got approved was some relatively simple face animation for the player character of Rhino Rush. The Rhino only needed some basic expressions like smile, fear, hurt etc. Here's how we set it up.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-gE9x9iUkejQ/TYJBY46tkUI/AAAAAAAAAMM/JXqdgz1mh5g/s1600/FaceAnimation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="282" r6="true" src="https://lh3.googleusercontent.com/-gE9x9iUkejQ/TYJBY46tkUI/AAAAAAAAAMM/JXqdgz1mh5g/s320/FaceAnimation.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Stijn finally added some code to dynamically switch between the expression meshes. Even these few expressions give the rhino much, much more character. Looking at the end results gave us both a happy face expression. :)&lt;br /&gt;&lt;br /&gt;Matthew&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7102229352837331137?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7102229352837331137/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/happy-facesad-face.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7102229352837331137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7102229352837331137'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/happy-facesad-face.html' title='Happy face....sad face.'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-gE9x9iUkejQ/TYJBY46tkUI/AAAAAAAAAMM/JXqdgz1mh5g/s72-c/FaceAnimation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2407786652760541900</id><published>2011-03-16T09:35:00.000+01:00</published><updated>2011-03-16T09:35:36.271+01:00</updated><title type='text'>Something new</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;Hello readers!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;&amp;nbsp;As you might know modern console games use a lot of pixel and vertex shaders to draw their 3D worlds and characters. Slowly we also want to go in this direction with our own games. But this comes with a lot of technical difficulties, also seen the platform we're developing on.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;Today I made a 3d model for Pieter to do some tests with. It has 'next-gen' specs (although you could call it 'current gen' these days). It uses a diffuse, normal and specular map.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-D04qx-T3M_8/TYB2Hc_agkI/AAAAAAAAAMI/UNpfFk5Y1xU/s1600/Fusebox.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" r6="true" src="https://lh4.googleusercontent.com/-D04qx-T3M_8/TYB2Hc_agkI/AAAAAAAAAMI/UNpfFk5Y1xU/s320/Fusebox.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;First I made a rough highpoly version of the fusebox. Which I used later to get the basic normals information from. I made the main shape out of some 'plate' like elements, as it would have been constructed in real life. I kept the rest of the highpoly simple and added all of the smaller normalmap details during the texturing stage.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;It was nice to be working on something new, something we don't usually do. Normalmaps are always some kind of magic to me, makes everything pop so much more :)!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;;"&gt;-Joep&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2407786652760541900?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2407786652760541900/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/something-new.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2407786652760541900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2407786652760541900'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/something-new.html' title='Something new'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-D04qx-T3M_8/TYB2Hc_agkI/AAAAAAAAAMI/UNpfFk5Y1xU/s72-c/Fusebox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1762750619580886909</id><published>2011-03-14T17:08:00.000+01:00</published><updated>2011-03-14T17:08:50.349+01:00</updated><title type='text'>Still alive!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Hi all,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;A short, but important update. We’re still alive! &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: Wingdings;"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;As Stijn told you in his previous post it has been very busy for all of us in the last few weeks. I it is not likely that this will change any time soon,&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;but this also means that we’ll have some cool stuff coming up/out quite soon!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Rhino Rush will be released soon on a portal near you and we got a nifty first person shooter thingy planned. Definitely keep an eye out on this one as it will push Shockwave to its limits. There will not be a cooler and visually more impressive online first person shooter on the webZ!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Currently I am finishing up an update of one of our hit games which needs to be tested internally at the end of this week. Not really looking forward to it as it’ll mean everybody will be shouting and screaming at me about things that aren’t working/unclear or are, simply put, ‘stupid’. Sigh… &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;anyways…&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;To end on a positive note. Diederik, Matthew and myself were at the GDC at San Francisco and we had a great time, met a lot of cool people and drank some beers &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Wingdings; mso-ansi-language: EN-US; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-char-type: symbol; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-symbol-font-family: Wingdings;"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;It was a good visit and based on this we have some cool things to look out for this year. From now on we’ll update the development blog more regularly again so, if somebody is out there, keep checking for updates!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-ENfYSuAOJto/TX49fMv8F0I/AAAAAAAAAME/Fcs6BGohY00/s1600/SanFran2011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" q6="true" src="https://lh3.googleusercontent.com/-ENfYSuAOJto/TX49fMv8F0I/AAAAAAAAAME/Fcs6BGohY00/s320/SanFran2011.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Cheers,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Pieter&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1762750619580886909?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1762750619580886909/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/still-alive.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1762750619580886909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1762750619580886909'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/still-alive.html' title='Still alive!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-ENfYSuAOJto/TX49fMv8F0I/AAAAAAAAAME/Fcs6BGohY00/s72-c/SanFran2011.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1369645715282414988</id><published>2011-03-11T18:00:00.000+01:00</published><updated>2011-03-11T18:00:19.815+01:00</updated><title type='text'>Rhino Rush Wrap Up</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Dear readers,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;It's been a while since any of us has written anything (and I for one am deeply ashamed for all of us (and especially for Matthew! ;D)) but don't worry Xform is still alive!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;The past few weeks have been busy for all of us, but I'll let the others inform you about that ;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;The platform game I've been working is now pretty much ready for release and to this end I'd like to treat our dear readers to an exclusive shot which is my personal favorite.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-u6lPenq4Btc/TXpU79zHMhI/AAAAAAAAAL4/5jM8Rc1x3Lg/s1600/animated.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" q6="true" src="https://lh5.googleusercontent.com/-u6lPenq4Btc/TXpU79zHMhI/AAAAAAAAAL4/5jM8Rc1x3Lg/s320/animated.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;This animated image is a APNG-file, internet explorer might not play it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;So I've been working on the last few fixes and cleaning the code up a little here and there (removing code/comments that got obsolete during development and small optimizations). There are some things that in hindsight I would do differently but you really shouldn't make too much changes to the game when you're close to a release as it might have more side-effects/bugs than you originally think. And then you'll have to fix those and you lose a lot of time. There are still some things that bother me and Matthew but we don't have time to change them. Expect a post on the official release of the game soon!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Calibri;"&gt;-- Stijn&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1369645715282414988?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1369645715282414988/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/rhino-rush-wrap-up.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1369645715282414988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1369645715282414988'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/03/rhino-rush-wrap-up.html' title='Rhino Rush Wrap Up'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-u6lPenq4Btc/TXpU79zHMhI/AAAAAAAAAL4/5jM8Rc1x3Lg/s72-c/animated.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6690620110567758182</id><published>2011-02-04T17:40:00.000+01:00</published><updated>2011-02-04T17:40:28.840+01:00</updated><title type='text'>Shoot the crate</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Dear readers,&lt;br /&gt;&lt;br /&gt;Let's talk about something different than the platform game I'm working on. Last week one of our interns had a problem with the physics engine. The scenario was as follows: We're playing a character in first person style and we're holding a gun. We can walk around in the world and there are some non-static crates: if you bump into these they will move. This is all handled by the physics engine itself, there is no effort required by us to set forces or anything. Nice. But now we want that when we aim our gun at the crate and shoot, that the crate receives an impact and moves and spins realistically.&lt;br /&gt;&lt;br /&gt;One solution here is to actually create a bullet and make it follow the path along our crosshair. As to whether this is a good solution I'm not too sure: bullets have to travel at high velocities which is something that could 'bug' the physics engine and unrealistic events might occur. I'm not sure this would occur as we haven't tried this solution. Additionally you'll need to create and delete the bullet (on impact) as well as keeping track of it: what happens when we fire the bullet into the sky (i.e. there is no impact, the bullet flies)? The bullet wouldn't get removed. Although you'd probably have to shoot a lot of bullets into the air before you'll notice a performance drop, it's sloppy. So you'd either have to give each bullet a lifetime as well and update it and remove it when its lifetime runs out or seal the world so bullets will always impact. This could all be done, but it's a bit of a hassle and as I said you might get unexpected results. Let's explore another solution.&lt;br /&gt;&lt;br /&gt;Solution two is to immediately apply an impulse ourselves. So we cast a ray along our crosshair and get the first intersection. If this intersection is with a crate then we'll apply a force on it. But to apply a force on the crate the physics engine requires us to give a point on the crate and an impulse. Our impulse is whatever we like: for a small caliber gun we could give small impulse and the crate will move just a little. The problem here is that the physics engine requires us to give a point on the crate in it's local coordinates, whereas our intersection point is a point of world coordinates (see image below).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_c2acN0yT_wA/TUwrRZBX5tI/AAAAAAAAALw/rR-J1fRkXEg/s1600/WorldLocalCoords.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="128" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TUwrRZBX5tI/AAAAAAAAALw/rR-J1fRkXEg/s320/WorldLocalCoords.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Here W is the center of world (0,0,0), while C is the center of crate (0,0,0) in its local coordinates. Ray r is the ray along our crosshair and I is the point of intersection.&lt;br /&gt;&lt;br /&gt;As said, intersection I is returned to us in world coordinates, while we need it in the crate's local coordinates. You might think "Ok, so just take I and substract C (in world coordinates) from it", but this is only correct when the crate isn't rotated. Rotation needs to be taken into account as well because if we take the same crate and rotate it 90 degrees, you'll still have the same intersection point, but a different local coordinate. To get the correct local coordinate of the intersection we need to look at the transform of the crate. The transform is a matrix M which determines the model's position, rotation and scale with respect to its parent (in this case the world). When the model is drawn to the screen all of its vertices are multiplied by the matrix M to get to the world position. So what we need is the opposite: the inverse of matrix M. The inverse of matrix M is a matrix M' that satisfies: M * M' = ID where ID is the identity matrix (that matrix with 0's everywhere except on its diagonal it has 1's). Multiplying the identity matrix by a vector will result in the same vector: there's no change. Multiplying the inverse matrix M' of the crate by C (in world coordinates) will give us the local coordinates of the crate. Hence if we multiply the inverse matrix M' by the intersection I given to us in world coordinates we obtain the intersection in the crate's local coordinates, which is exactly what we want. We pass it to the physics engine and it works perfectly :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TUwri8hL-RI/AAAAAAAAAL0/wGhfYDICSfQ/s1600/WorldLocalCoords2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="175" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TUwri8hL-RI/AAAAAAAAAL0/wGhfYDICSfQ/s320/WorldLocalCoords2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Multiplying M by the Ilocal position brings us to the Iworld position. Multiplying M' by the Iworld position brings us back to the Ilocal position.&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6690620110567758182?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6690620110567758182/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/02/shoot-crate.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6690620110567758182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6690620110567758182'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/02/shoot-crate.html' title='Shoot the crate'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TUwrRZBX5tI/AAAAAAAAALw/rR-J1fRkXEg/s72-c/WorldLocalCoords.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-872120423422366788</id><published>2011-01-31T17:37:00.000+01:00</published><updated>2011-01-31T17:37:23.918+01:00</updated><title type='text'>Level Design Pitfalls!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_c2acN0yT_wA/TUbkLBYBMPI/AAAAAAAAALo/LanFXLxnH8A/s1600/leveldesignblog.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" s5="true" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TUbkLBYBMPI/AAAAAAAAALo/LanFXLxnH8A/s320/leveldesignblog.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Hi all!&lt;br /&gt;&lt;br /&gt;As you might know, we're in the middle of designing levels for our 2D/3D platformer. Here's my top 5 of biggest frustrations when playing through some of the levels that may require some more work:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Are we there yet?&lt;/strong&gt;&lt;br /&gt;If I stop to get a cup of coffee before I reach the end, your level is too long! Watch other people play your level and keep track of how long they take to finish. It's easier to add a piece of level than to remove if it's too boring!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. I'm lost!&lt;/strong&gt;&lt;br /&gt;Some levels have areas that are so generic that the player loses any sense of orientation. A good remedy for this is to avoid scattering enemies, obstacles or background elements too much across your level.&lt;br /&gt;It's best to create groups of particular elements in one particular corner so that player will remember and recognize it. Also avoid multiple paths that lead to the same place if you find your test players going the wrong way. If you have to resort to the use of big flashing pink arrows or minimaps to point players in the right direction, you're in trouble.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Dead end? WTF?&lt;/strong&gt;&lt;br /&gt;Have you ever walked through a level and suddenly reached an unexpected dead end? You probably took a wrong turn somewhere without even knowing it. A player should be able to guess that a path is a sidetrack and that it will hopefully lead him to some extra goodies. Important is that the goodies are there of course. Not a ...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Surprise death. Again!&lt;/strong&gt;&lt;br /&gt;If I jump of a ledge because there's nowhere obvious to go next, I don't expect to land in some sort of death trap. In fact, make sure I always know and see where to go next!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Unfair punishing of mistakes.&lt;/strong&gt;&lt;br /&gt;If I don't make a jump because of bad timing and need to make some jumps to retry, that's okay. When I need to redo the entire level, I will get annoyed very very fast. Come to think of it, being able to skip to the end of the level by falling down a platform is a bit of a problem as well.&lt;br /&gt;&lt;br /&gt;To wrap it up:&lt;br /&gt;For some classic examples of bad level design (and some good laughs), try to make your may through some review videos of the Angry Video Game Nerd on &lt;a href="http://www.cinemassacre.com/category/avgn/"&gt;http://www.cinemassacre.com/category/avgn/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For even more hilarious fun look at some videos of a game called 'I Wanne Be The Guy'. A legendary game that has multiple very surprizing deathtraps in each level.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;-- Diederik&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-872120423422366788?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/872120423422366788/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/level-design-pitfalls.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/872120423422366788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/872120423422366788'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/level-design-pitfalls.html' title='Level Design Pitfalls!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TUbkLBYBMPI/AAAAAAAAALo/LanFXLxnH8A/s72-c/leveldesignblog.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-525666004391176913</id><published>2011-01-24T16:31:00.004+01:00</published><updated>2011-01-24T16:34:32.758+01:00</updated><title type='text'>Nothing to tell you...</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;Hi all,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;It has been almost two months since my last post… Oops :S Normally I switch posts with Diederik each week, but somehow this got mixed up. The holidays and some of my days off didn’t help either. Nevertheless, I am back with another post and nothing to tell you… &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;At the moment we have 4 projects in development. 2 of them are TOP-Secret. The other 2 are already regularly mentioned on this blog; Panic at the Zoo and our 3d-platform game (title will be revealed soon).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;I am working on one of the TOP-Secret projects. It seems like I am always working on these as others can always mention or show something. They only thing I can tell you it is going to be awesome,.. once again… and that is related to racing and cars,… once again. This project shouldn’t take too long anymore as I am already on it for the last few weeks so hopefully some cool detailed screenshots in the next month or so.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNoSpacing" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;For now I leave you with the most awesome water racing game on the web,.. with explosions&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US;"&gt;&lt;span style="font-family: Calibri;"&gt;! &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" s5="true" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TT2aW2slvWI/AAAAAAAAALk/sDdHx62Bgh0/s1600/HydroStormLogo.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;a href="http://www.shockwave.com/gamelanding/hydrostorm.jsp"&gt;Play it here!!&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri;"&gt;- Pieter&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-525666004391176913?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/525666004391176913/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/nothing-to-tell-you.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/525666004391176913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/525666004391176913'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/nothing-to-tell-you.html' title='Nothing to tell you...'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TT2aW2slvWI/AAAAAAAAALk/sDdHx62Bgh0/s72-c/HydroStormLogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-4242216376231207929</id><published>2011-01-21T10:21:00.004+01:00</published><updated>2011-01-21T10:32:59.669+01:00</updated><title type='text'>Xform Interns</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Xform isn't a huge EA like game company, instead it's a company made out of a handful of dedicated people who enjoy to play and create games. Because we're such a small team we always have a bunch of lucky interns who assist us in creating the necessary game art. Right from the start of their internship they're involved in creating game assets and that doesn't mean they only have to model crates and oil drums. We usually give them a task they can sink their teeth into like modelling, unwrapping and texturing a car or a character. They have to create it from start to finish, in the process we guide them and give our uncensored comments on their work (which means we stand behind them and shout "UGLY"). In some cases they have to start over, but always with a better end result in mind. For the interns it's always satisfying to see the art they've made in the actual finished game.&lt;br /&gt;&lt;br /&gt;Right now we're working on a platform game and one of our interns; the bearded Remco, was responsible for modelling, texturing, rigging and animating a baboon enemy. He did struggle at some points, but instead of taking the work out of his hands we let him work on it until we we're happy with the result. Finally yours truly made some minor adjustments and corrections. You can see the end result in the image below.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TTlPrmV0atI/AAAAAAAAALg/Rx8PRiLjqjk/s1600/Baboon.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TTlPrmV0atI/AAAAAAAAALg/Rx8PRiLjqjk/s320/Baboon.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Matt&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/xform-interns.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-4242216376231207929?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/4242216376231207929/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/xform-interns.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4242216376231207929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4242216376231207929'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/xform-interns.html' title='Xform Interns'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TTlPrmV0atI/AAAAAAAAALg/Rx8PRiLjqjk/s72-c/Baboon.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7668866620548636431</id><published>2011-01-19T13:17:00.002+01:00</published><updated>2011-01-19T13:19:28.649+01:00</updated><title type='text'>Almost time to panic!</title><content type='html'>As you might have noticed we've announced the time management game! Panic At The Zoo is pretty much done. I still have some minor tweaks, balancing and bugs left to do before it can be released.&lt;br /&gt;&lt;div class="MsoNormal" style="margin-bottom: 12pt;"&gt;&lt;br /&gt;We are probably going to launch the game (few weeks after the first release) in different languages too. This will be a last though job to complete. All of the text displayed in the game is dynamic. They are actually textures created through our 'Text Texture' generator made by Pieter. The system needs several variables before it is able to create a 'TextTexture'. For example, a font, text style, text size and of course the text characters themselves are needed. This texture is then drawn using a mesh which defines the text field. The system also supports automatic text wrapping, resizing and some other tricks to make the text fit inside such text fields. Which comes in very handy when dealing with texts in different languages. Something can be short in english.. but may be very long in another language, which causes trouble.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TTbV8QprWvI/AAAAAAAAALc/PCydzPEWKZk/s1600/Imagejoepie.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="169" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TTbV8QprWvI/AAAAAAAAALc/PCydzPEWKZk/s320/Imagejoepie.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;Before I get on with the localisation system, I'm going to create the final build of the english version of Panic At The Zoo.. Fingers crossed :)!&lt;br /&gt;&lt;br /&gt;- Joep&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/almost-time-to-panic.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7668866620548636431?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7668866620548636431/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/almost-time-to-panic.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7668866620548636431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7668866620548636431'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/almost-time-to-panic.html' title='Almost time to panic!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TTbV8QprWvI/AAAAAAAAALc/PCydzPEWKZk/s72-c/Imagejoepie.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6526951988924654828</id><published>2011-01-19T11:12:00.000+01:00</published><updated>2011-01-19T11:12:03.690+01:00</updated><title type='text'>Panic at the Zoo trailer!</title><content type='html'>Here it is, the Panic at the Zoo trailer!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/zc71N_dKVnA/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zc71N_dKVnA&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/zc71N_dKVnA&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Keep an eye out for the free Panic at the Zoo game, when it releases next week on all major portals worldwide!&lt;br /&gt;&lt;br /&gt;-- Erik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6526951988924654828?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6526951988924654828/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/panic-at-zoo-trailer.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6526951988924654828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6526951988924654828'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/panic-at-zoo-trailer.html' title='Panic at the Zoo trailer!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8918505144480511607</id><published>2011-01-18T13:34:00.002+01:00</published><updated>2011-01-18T13:35:42.605+01:00</updated><title type='text'>Panic at the Zoo trailer and GDC 2011</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This week I’m working on the trailer for our upcoming time-management game: Panic at the Zoo. I’ll make sure to do a dedicated post here once it’s actually finished, with a link to the youtube video on the Xform channel. The video is turning out very much like the game; hectic, but a lot of fun. As Xform is a company dominated by male employees, I’m very curious what the ladies think of this time management game (known as a genre dominated by female players) and the trailer I’ve made. Xforms’ strength lies predominantly in the production of arcade type genres, but definitely shouldn’t be limited to only these racing and shooting games. The true test will be when the game hits the portals next week and everyone will get a chance to play the game.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.gdconf.com/"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TTWIYVlQ1WI/AAAAAAAAALU/WwxQG4Wa0XQ/s1600/gdc11.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I’m also working on a Xform show reel for the upcoming &lt;a href="http://www.gdconf.com/"&gt;Game Developer Conference 2011&lt;/a&gt;. This will highlight some of last year’s best Xform releases in a very short trailer. If you’re planning to attend the GDC, please visit the Holland Pavilion for a glimpse of Xforms’ latest work or if you have any business you would like to discuss, contact us at directly &lt;a href="mailto:info@xform.nl"&gt;info@xform.nl&lt;/a&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Stay tuned for the Panic at the Zoo trailer!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;-- Erik&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8918505144480511607?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8918505144480511607/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/panic-at-zoo-trailer-and-gdc-2011.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8918505144480511607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8918505144480511607'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/panic-at-zoo-trailer-and-gdc-2011.html' title='Panic at the Zoo trailer and GDC 2011'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TTWIYVlQ1WI/AAAAAAAAALU/WwxQG4Wa0XQ/s72-c/gdc11.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6842293585998880363</id><published>2011-01-14T15:38:00.008+01:00</published><updated>2011-01-14T15:42:36.290+01:00</updated><title type='text'>Stick to the path</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;span id="goog_1546718386"&gt;&lt;/span&gt;&lt;span id="goog_1546718387"&gt;&lt;/span&gt;Dear readers,&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;As I mentioned last week I'm continuing work on the boss level of our platform game. One particular problem I was facing is that the boss has to follow a certain path. This path is shown in the image below.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="font-family: inherit; margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TTBfWmAenxI/AAAAAAAAALM/-RLwbNCwMtg/s1600/BossPath.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TTBfWmAenxI/AAAAAAAAALM/-RLwbNCwMtg/s320/BossPath.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span lang="EN-US" style="font-size: xx-small;"&gt;The purple line shows the path the boss should follow in this level&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;In physics straight paths are fairly easy to do, but paths like this are a lot harder (as far as I know). You might apply the correct forces at every point on the path so the boss exactly follows the path, but when the player character is blocking the path, the boss will slightly be pushed off the path. Then you'll have to compensate in order for the boss to continue to follow the path. I suppose it's not impossible, but I do foresee many fine-tuning problems. Therefore I chose to use a spring-like solution. But first we have to get the path into our program. For this I use a bezier curve. Unfortunately the program we program in does not support bezier curves. Instead I create the curve in a 3D editor (the same with which we design our levels) and at every X distance along the curve place a marker.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="font-family: inherit; margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TTBfsEYHxnI/AAAAAAAAALQ/C5x0mtGOHt8/s1600/BossPathPoints.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="68" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TTBfsEYHxnI/AAAAAAAAALQ/C5x0mtGOHt8/s320/BossPathPoints.png" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span lang="EN-US" style="font-size: xx-small;"&gt;Markers placed at every 0.1 distance along the curve&lt;/span&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span lang="EN-US"&gt;Then in-game I read all markers and use these to attach a spring between this point and the boss each frame. As a result the boss will follow the path and even when it gets slightly off-path because the player is in the way, the springs will automatically pull it back to the path.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;-- Stijn&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/stick-to-path.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6842293585998880363?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6842293585998880363/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/stick-to-path.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6842293585998880363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6842293585998880363'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/stick-to-path.html' title='Stick to the path'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TTBfWmAenxI/AAAAAAAAALM/-RLwbNCwMtg/s72-c/BossPath.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-295161560046738266</id><published>2011-01-11T10:54:00.001+01:00</published><updated>2011-01-11T10:56:28.702+01:00</updated><title type='text'>Developing our business</title><content type='html'>At this point in time there’s a lot that might happen for Xform in the coming year. Two new games are coming up that don’t fit in the traditional Xform line-up, because they’re not racing/shooting or even post-apocalyptic jetski games (this genre composed at least 10% of last year’s lineup :). As has been mentioned on this blog a lot by the developers already; we’re working on a time management game: “Panic at the Zoo” and a traditional platform game in the style of Super Mario Bros 3.&lt;br /&gt;&lt;br /&gt;To get these out there in the world of gameportals and all those crazy flash game sites can be a real challenge. For a start, most sites only deal with Flash-based games and Xform games are made for the Shockwave plugin. The difference between these two is mainly that shockwave handles 3D games a lot better, whereas it’s a lot faster to develop in Flash, the 2D games that you see for this plugin can be as basic as they come. With gameplay consisting of banging the space bar repeatedly.&lt;br /&gt;&lt;br /&gt;The market for high quality 3D browser based games is confusing to say the least, but the market is definitely there. Our upcoming games have been met with a mixed reception online, but there are people interested. We hope the gamers will enjoy these so much when they come out and appreciate the difference in quality with other, crappier games that they’ll become avid Xform fans.  As for what might be in store for the company this year, there’ll be more high quality games in different, but also the tried and truste&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;d Xform genres.&lt;/span&gt;&lt;span style="font-family: inherit; line-height: 115%;"&gt; &lt;span lang="EN-US"&gt;Games for new platforms and new ways to play our games are also coming up! &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;A good way to see our latest games, wherever they might appear online is through our &lt;a href="http://www.xform.nl/"&gt;website &lt;/a&gt;or on our &lt;a href="http://www.facebook.com/#%21/pages/Xform/142441869112797"&gt;facebook &lt;/a&gt;page!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.xform.nl/"&gt;&lt;img border="0" height="217" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TSwnnxNDS-I/AAAAAAAAALI/eQl6fY7TuWo/s320/Blogbusinessdevelopment.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;-- Erik&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/developing-our-business.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-295161560046738266?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/295161560046738266/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/developing-our-business.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/295161560046738266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/295161560046738266'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/developing-our-business.html' title='Developing our business'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TSwnnxNDS-I/AAAAAAAAALI/eQl6fY7TuWo/s72-c/Blogbusinessdevelopment.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8110236008260631354</id><published>2011-01-07T17:16:00.001+01:00</published><updated>2011-01-07T17:17:24.430+01:00</updated><title type='text'>Alas, no moving platforms</title><content type='html'>Dear readers,&lt;br /&gt;&lt;br /&gt;In about 6 weeks from now the platform game should be finished and there is still much to do. Yesterday our interns Ruben and Remco started working on levels for the platform game. They will have to make levels with the current available functionality. We noticed however that some more functionality would make the game more fun. After having a meeting about this, one of the desired functionalities was moving platforms. I have experimented with moving platforms before and written a blog about it before. Of course back then the program was much simpler. The moving platforms work, but there are little things like animations going wrong when on a moving platform or being pushed off the platform when it starts moving the other way. All these things are fixable with some amount of work, but with the risk of messing up other things which previously worked fine. For this reason and with our deadline in mind we decided it's better to leave moving platforms out. If there is time left then I'd like to look at again because moving platforms definitely make the game more fun. But it's better to have a game with few features that works decently than a game with many features that works crappy. So I'll be working on other features instead and of course more boss levels.&lt;br /&gt;&lt;br /&gt;Here is one of the levels Remco is working on:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_c2acN0yT_wA/TSc8RW-igUI/AAAAAAAAALE/MuE4v1WGDcM/s1600/LevelLayout.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TSc8RW-igUI/AAAAAAAAALE/MuE4v1WGDcM/s320/LevelLayout.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/alas-no-moving-platforms.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8110236008260631354?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8110236008260631354/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/alas-no-moving-platforms.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8110236008260631354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8110236008260631354'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/alas-no-moving-platforms.html' title='Alas, no moving platforms'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TSc8RW-igUI/AAAAAAAAALE/MuE4v1WGDcM/s72-c/LevelLayout.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2388094750555164867</id><published>2011-01-06T16:37:00.002+01:00</published><updated>2011-01-06T16:50:38.325+01:00</updated><title type='text'>Panic!</title><content type='html'>Today we can finally reveal you guys the official title for the "Time Management Game" we've been working on the past few months. It's called......Panic at the Zoo! Right now it's seems the game is just about done, but as you might know it only seems that way. There are always loads of small things to adjust, fix or add and all those things can keep you quite busy. While Joep is perfecting his code I'm finalizing the textures, cutscene images and doing some miscellaneous adjustments. I also need to create and compile some assets which will be used for marketing the game (banners, posters, thumbnail images etc.). Luckily I can use a lot of the game's original artwork which have been made as high resolution images and are scaled down for the game. Scaling down artwork for the final game also has another advantage, it will look much sharper then when it's created in the original size. &lt;br /&gt;&lt;br /&gt;Finally I'll treat you with a screen of the Main Menu of Panic at the Zoo. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TSXhnHtzwII/AAAAAAAAALA/bqVZQ_2TDLU/s1600/BlogPanicAtTheZoo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TSXhnHtzwII/AAAAAAAAALA/bqVZQ_2TDLU/s320/BlogPanicAtTheZoo.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Matthew&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/panic.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2388094750555164867?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2388094750555164867/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/panic.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2388094750555164867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2388094750555164867'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/panic.html' title='Panic!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TSXhnHtzwII/AAAAAAAAALA/bqVZQ_2TDLU/s72-c/BlogPanicAtTheZoo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-9044924009834683127</id><published>2011-01-05T15:36:00.001+01:00</published><updated>2011-01-05T15:42:13.430+01:00</updated><title type='text'>Balancing the zoo</title><content type='html'>I made good progress with the so called 'Panic Mode' in the time management game. Currently it is fully playable from start to end. Also all of the trophy functionality in the panic mode is done. &lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TSSBP2IM9wI/AAAAAAAAAK8/B6aa73ooWG8/s1600/20110105image.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TSSBP2IM9wI/AAAAAAAAAK8/B6aa73ooWG8/s320/20110105image.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;From now on I'm going to work on the balance and tweaking of the panic mode. This is harder than it may look. There are a lot of variables to set to make everything work. Imagine all of the animal timelines and visitor timelines to be written down. We want full control of the game with a random feeling. Therefor we use pre defined 'demand' timelines for the animals. These timelines determine their demands during the game. For example; We want the monkey to ask for a banana after 10 seconds. The visitors are also semi random. The amount of visitors and visitor types are pre defined per game session. But the moment when the visitors need to be spawned, is influenced by the player's descisions and play style.&lt;br /&gt;&lt;br /&gt;Working with partly fixed data gives me a lot of control over the different game situations while playing. It does make the game less random though.&lt;br /&gt;&lt;br /&gt;-- Joep&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2011/01/balancing-zoo.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-9044924009834683127?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/9044924009834683127/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/balancing-zoo.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9044924009834683127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9044924009834683127'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2011/01/balancing-zoo.html' title='Balancing the zoo'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TSSBP2IM9wI/AAAAAAAAAK8/B6aa73ooWG8/s72-c/20110105image.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6489510760768490888</id><published>2010-12-29T16:04:00.000+01:00</published><updated>2010-12-29T16:04:33.239+01:00</updated><title type='text'>Building a new world</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;NL&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:Standaardtabel; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;&lt;div class="MsoNormal"&gt;Hello readers!&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I had a few days off this week so I don't have much to tell about time management game's progress. Instead I want to talk about the process we used creating the Burnin Rubber 4 environments a while ago. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The first step to take is to create a so called 'mockup' of the environment or 'world'. This stage is very important, mistakes made here are hard to fix later on. The city mockup of Burnin Rubber 4 was done by creating a large flat plane with a basic roadmap texture on top. Basic box shapes were added to define some architecture and buildings. Simultaneously the environment was tested by driving through the mockup world. This gives a rough idea of what the distances are and what size of world we're dealing with.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TRtNXgHftzI/AAAAAAAAAK0/ycuiRpLbv_A/s1600/image2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TRtNXgHftzI/AAAAAAAAAK0/ycuiRpLbv_A/s320/image2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;For Burnin Rubber 4 it was very important that the road mesh was perfect. By road mesh I mean everything that has to do with the 'floor' or ground the player is driving on. It can be a real pain to create all those roads, there are more than you'd think there are. I created a so called 'construction set' to make this process quicker and more enjoyable as well.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;These pieces all 'tile' with each other. Building the roads with these pre defined meshes saves a lot of time. And I really mean a LOT! Too often I see people trying to create something similar by creating such roads poly by poly. I agree it works, but it is really time consuming. Even if you're done with the modelling work you still have to do the unwrapping. Bye bye time...&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_c2acN0yT_wA/TRtNdl04GBI/AAAAAAAAAK4/AW9Lu_25ER4/s1600/image3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TRtNdl04GBI/AAAAAAAAAK4/AW9Lu_25ER4/s320/image3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The process of building environments or art assets in general using this technique is called modular modelling / modular design.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;--Joep&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6489510760768490888?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6489510760768490888/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/building-new-world.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6489510760768490888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6489510760768490888'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/building-new-world.html' title='Building a new world'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TRtNXgHftzI/AAAAAAAAAK0/ycuiRpLbv_A/s72-c/image2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7940520132484219367</id><published>2010-12-28T15:42:00.003+01:00</published><updated>2010-12-28T15:45:24.334+01:00</updated><title type='text'>2010 Online game of the year</title><content type='html'>&lt;span lang="EN-US"&gt;I hope you all have had a very nice Christmas! This year seems to be a lot more hectic with the holidays being in the weekend. You really need those two extra days as a bonus on top of the weekend, this year we even have new years day in the weekend too. That’s just not right…&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;As you’re reading this &lt;a href="http://www.shockwave.com/gamelanding/hydrostorm.jsp"&gt;Hydro Storm&lt;/a&gt; has moved up to the third spot on the &lt;a href="http://www.shockwave.com/home.jsp"&gt;shockwave.com&lt;/a&gt; “most played” section of the homepage. In varying compositions, Xform games continue to dominate the chart with at least 150.000 players for our games every single day.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This is something that isn’t bound to stop in the near future, so let’s hope 2011 will give us a lot more plays on the site (don’t forget to tell all of your friends to play our games!). It’s only fair that with all these plays and clicks we have two nominations for ‘online game of the year 2010’. Both Burnin’ Rubber 4 and Race to Rome have been nominated. We would appreciate it very much if you guys would like to help us make either Burnin’ Rubber 4 or Race to Rome the online game of the year on &lt;a href="http://www.shockwave.com/home.jsp"&gt;shockwave.com&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.shockwave.com/online/special/best-online-games-2010.jsp"&gt;&lt;img border="0" height="110" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TRn2X1pPhmI/AAAAAAAAAKw/jieX4kZHbPA/s320/top102010.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.shockwave.com/online/special/best-online-games-2010.jsp"&gt;So cast your vote here!&lt;/a&gt; And of course: thanks to all of you guys for playing like crazy all year! &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;-- Erik&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/2010-online-game-of-year.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7940520132484219367?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7940520132484219367/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/2010-online-game-of-year.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7940520132484219367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7940520132484219367'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/2010-online-game-of-year.html' title='2010 Online game of the year'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TRn2X1pPhmI/AAAAAAAAAKw/jieX4kZHbPA/s72-c/top102010.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1815670505630612946</id><published>2010-12-24T15:37:00.005+01:00</published><updated>2010-12-24T15:54:29.187+01:00</updated><title type='text'>Boss Level</title><content type='html'>Dear readers,&lt;br /&gt;&lt;br /&gt;Last Friday me and Joep needed a decent version of our games and we're given a list of issues that we should change/fix. We did our best, but weren't satisfied at the end of the day. So Monday and Tuesday we continued fixing bugs. The newest addition to my platform game is the boss level. About two weeks ago we had a meeting discussing the behaviour of the boss (a baboon). The baboon has certain modes. A mode is for example to chase after the player or to taunt. A very common sight in platform games (and which we also do) is that after hitting the boss a couple of times, the boss will start doing something else to break the monotony. This we call a phase. Phases exist of a list of modes together with their duration. The modes in the list are then played sequentially and cycle when at the end. So phase one can be described as (ChasePlayer, 10seconds), (Taunt, 1 second). In this way it's very easy to adjust a phase.&lt;br /&gt;&lt;br /&gt;I did have some trouble getting it to work decently with physics. Sometimes I could get stuck and I would have to restart the level which is unacceptable of course. Placing new physic objects is also a delicate matter: if the new physic object overlaps with an existing physic object you'll get unexpected results. It all seems to work nicely now so the next step will be creating more levels and enemies. Here's a little preview of the baboon:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TRSwATrDT4I/AAAAAAAAAKo/ZuwACuMDjiw/s1600/BaboonBoss.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TRSwATrDT4I/AAAAAAAAAKo/ZuwACuMDjiw/s1600/BaboonBoss.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(In case you're wondering: the black bar on his eyes is intentional as we don't like to give everything away. He's not a sex offender in our game or anything. Don't worry...)&lt;br /&gt;&lt;br /&gt;Have a Merry Christmas!&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/boss-level.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1815670505630612946?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1815670505630612946/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/boss-level.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1815670505630612946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1815670505630612946'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/boss-level.html' title='Boss Level'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TRSwATrDT4I/AAAAAAAAAKo/ZuwACuMDjiw/s72-c/BaboonBoss.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6224003383572617677</id><published>2010-12-23T16:00:00.002+01:00</published><updated>2010-12-23T16:02:02.954+01:00</updated><title type='text'>A special Animal</title><content type='html'>As we are nearing the deadline for the Zoo time management game and the holidays we at Xform have to push extra hard to finish all the work. Last week we decided the Zoo game should have a few extra animals to make the game more varied and interesting. I won't give them all away but there's one I would like to reveal to you. It's a special animal which is very near to our heart here at Xform. At the beginning of this year I went together with Pieter and Diederik to the Game Developers Conference in San Francisco. Of course we had to do some business there, but the main reason we went there was to have some fun. So where in San Francisco do you go to have fun......the Zoo!! After a long taxi ride we eventually arrived at the Zoo which is located near the west coast. We were all psyched up to see some magnificent animals but couldn't help feeling disappointed once we entered the zoo. It seemed like the animals had an off day, they where lying around doing nothing not even bothering to look up when we passed by. We came across a kangaroo which seemed more dead then alive, an ice bear in the middle of a depression and a seal that should have died a decade ago. But then something happened, we came across a cage which seemed empty at first, so we looked around to find the animal which belonged there. And there it was lying in the corner looking at us with his cute little eyes, this animal was clearly happy to see us as probably most visitors would pass him by without a notice. It was a Tapir, it looked like a bastard child of a hippo and a guinea pig, we immediately felt connected with this animal so we hanged around the cage for a while and took some pictures to remember him by.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_c2acN0yT_wA/TRNjszwwRrI/AAAAAAAAAKg/suBRQRVJnug/s1600/TapirSFO.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TRNjszwwRrI/AAAAAAAAAKg/suBRQRVJnug/s400/TapirSFO.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is why we unanimously decided the Tapir should make it to the Zoo game as a special animal. Below you can see some concept art, just now I've finished the 3D model, unwrap and bones setup. I'll post you guys a screen shot of the final tapir when it's done. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_c2acN0yT_wA/TRNj2jHUQ9I/AAAAAAAAAKk/4FNt3qtabxc/s1600/TapirConcept.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="219" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TRNj2jHUQ9I/AAAAAAAAAKk/4FNt3qtabxc/s320/TapirConcept.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We'll be returning to San Francisco next year to visit the GDC and when we can find the time we'll be meeting up again with our favorite tapir.&lt;br /&gt;&lt;br /&gt;-Matthew&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/special-animal.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6224003383572617677?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6224003383572617677/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/special-animal.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6224003383572617677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6224003383572617677'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/special-animal.html' title='A special Animal'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TRNjszwwRrI/AAAAAAAAAKg/suBRQRVJnug/s72-c/TapirSFO.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2946946862790396879</id><published>2010-12-22T14:36:00.002+01:00</published><updated>2010-12-22T14:38:57.699+01:00</updated><title type='text'>Stressing in the zoo!</title><content type='html'>&lt;div class="MsoNormal"&gt;The time management game is getting better and better. Last week I solved a lot of (small) bugs and worked on the flow of the game. I also made a new build of the game to be attacked by some of the people over here in the search of bugs. Next up is the 'arcade' mode. You might think, arcade mode in a time management kind of game?.. Yes! The time management game will feature a more action based gameplay mode. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TRH-SeSZsAI/AAAAAAAAAKc/LabWgKIfC1s/s1600/imagejoep.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TRH-SeSZsAI/AAAAAAAAAKc/LabWgKIfC1s/s400/imagejoep.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The arcade mode will generally be the same gameplay as the player will face in the campaign mode. But it will be much much harder. For a start, the player will begin right in the middle of a 'game situation', instead of gently building up to the rush of visitors and demanding animals. The animals will need a lot more attention and the zoo will be more crowded during the arcade mode. This will force the player to make it's decisions faster. When finishing a 'day' or 'stage' during the arcade mode, the player will advance to the next one. If the player doesn't meet the current 'day' or 'stage' targets and the end of the game session, it is game over.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The arcade mode will be unlocked if a player finishes the normal campaign. During the arcade mode the player is able to find some hidden objects and unlock trophies only unlockable in the arcade mode.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;-- Joep&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/stressing-in-zoo.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2946946862790396879?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2946946862790396879/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/stressing-in-zoo.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2946946862790396879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2946946862790396879'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/stressing-in-zoo.html' title='Stressing in the zoo!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TRH-SeSZsAI/AAAAAAAAAKc/LabWgKIfC1s/s72-c/imagejoep.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8010036577615886842</id><published>2010-12-22T10:56:00.000+01:00</published><updated>2010-12-22T10:56:29.840+01:00</updated><title type='text'>Hydro Storm has arrived!</title><content type='html'>The storm has arrived! Sweeping across &lt;a href="http://shockwave.com/"&gt;shockwave.com&lt;/a&gt; like a torrent of explosions and post-apocalyptic water racing mayhem! &lt;br /&gt;&lt;br /&gt;I present to you: &lt;a href="http://www.shockwave.com/gamelanding/hydrostorm.jsp"&gt;Hydro Storm!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/zIwYs_hunyQ/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zIwYs_hunyQ&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/zIwYs_hunyQ&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Hope you like the trailer, check out the game &lt;a href="http://www.shockwave.com/gamelanding/hydrostorm.jsp"&gt;here!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- Erik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8010036577615886842?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8010036577615886842/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/hydro-storm-has-arrived.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8010036577615886842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8010036577615886842'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/hydro-storm-has-arrived.html' title='Hydro Storm has arrived!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-1936151340333186593</id><published>2010-12-21T14:31:00.006+01:00</published><updated>2010-12-21T14:39:15.811+01:00</updated><title type='text'>A storm is coming...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TRCrtd6cT7I/AAAAAAAAAKY/fIU0P0ds1YA/s1600/waterworld_089.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TRCrtd6cT7I/AAAAAAAAAKY/fIU0P0ds1YA/s400/waterworld_089.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Today our newest game will be released. I’m saying “will be” because the launch will take place in the United States of America and the day starts there as our European working day draws to a close. To “blow the whistle” now would be a bit premature. That’s why I’ll make sure to have a trailer posted here tomorrow in a special blogpost/newsblast on top of the normal one. Of course, I’ll also post a link to a playable version of the game. I mean, that’s the great thing about gaming in your browser right? Instant playability!&lt;br /&gt;&lt;br /&gt;Meanwhile, I’ll be drafting a press release for the game and will include some cool screenshots to send out tomorrow. On top of that we really want people to review our game! We’re currently looking around online to send everyone we can a heads up of our newly released game. But, of course we would like to see our game reviewed as much as possible (we believe in the quality you see). Are you someone who reviews browser- or online games? Are you familiar with someone or a site that does this (well)? Please let us know, we would love to see our games reviewed on your site. If you have any info that might help us out, please &lt;a href="mailto:erik@xform.nl"&gt;send me an email.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Keep checking &lt;a href="http://www.shockwave.com/"&gt;www.shockwave.com&lt;/a&gt; for our newest game and while you’re there, check out all of our cool games like the Burnin’ Rubber series and Redline Rumble Revolution. Let’s see if we can claim the nr.1 spot on the site again for a while…&lt;br /&gt;&lt;br /&gt;-- Erik&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/storm-is-coming.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-1936151340333186593?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/1936151340333186593/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/storm-is-coming.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1936151340333186593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/1936151340333186593'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/storm-is-coming.html' title='A storm is coming...'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TRCrtd6cT7I/AAAAAAAAAKY/fIU0P0ds1YA/s72-c/waterworld_089.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8011367758574873618</id><published>2010-12-20T17:13:00.001+01:00</published><updated>2010-12-20T17:14:30.292+01:00</updated><title type='text'>Turning 2D into 3D: Level creation</title><content type='html'>In one of Stijn's earlier posts you guys could read about how we're doing the level editing for our platform game. He has created a custom 'tool' that enables us to do the level editing retro style. How cool is that. The last few days, I tested it out a bit and it all seems to work!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TQ-AoX10oMI/AAAAAAAAAKU/cUzgvye4bj4/s1600/2dto3d.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TQ-AoX10oMI/AAAAAAAAAKU/cUzgvye4bj4/s320/2dto3d.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Our level creation workflow now looks like this:&lt;br /&gt;&lt;br /&gt;1. Build level in 2D editor, export to data file.&lt;br /&gt;2. Import data file and build 3D world in 3D modeling package. Export 3D world to 3D file.&lt;br /&gt;3. Test in game.&lt;br /&gt;Back to the 2D editor to make adjustments, until the basic level shape is okay. Then, we can add enemies and pickups to the level and test that some more. If that is fine we can finalize the level (make it look prettier!).&lt;br /&gt;&lt;br /&gt;It might seem an awkward way to do things (and of course it would be really cool if step 2 was totally automated). But in fact, being able to make adjustments in a 2D editor turns out to be a real timesaver. Especially since it's very nasty to make size changes in 3D (keeping the mapping of the objects correct).&lt;br /&gt;&lt;br /&gt;That's it for now!&lt;br /&gt;&lt;br /&gt;-- Diederik&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/turning-2d-into-3d-level-creation.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8011367758574873618?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8011367758574873618/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/turning-2d-into-3d-level-creation.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8011367758574873618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8011367758574873618'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/turning-2d-into-3d-level-creation.html' title='Turning 2D into 3D: Level creation'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TQ-AoX10oMI/AAAAAAAAAKU/cUzgvye4bj4/s72-c/2dto3d.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7372347996450189666</id><published>2010-12-15T13:44:00.006+01:00</published><updated>2010-12-15T13:48:11.218+01:00</updated><title type='text'>A lot of little things</title><content type='html'>Since my post last week I've been working on a lot of small things. Mainly fixing some interface related issues. Some icons were displayed when they shouldn't. There was a major issue with the minigames where some interface elements were or weren't displayed at all. I also worked on the options screen and some 'dialogues' which pop up when the player unlocks a trophy for example. I used the slider system from Stijn to create the sound and music volume sliders in the options screen.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TQi2t8tCA3I/AAAAAAAAAKM/0rlJz26eokI/s1600/20101215_image1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TQi2t8tCA3I/AAAAAAAAAKM/0rlJz26eokI/s320/20101215_image1.jpg" width="320" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This week I also worked on the game's intro 'cinematics'. The time  management game features a small story, which is being told before  playing. It is displayed using still images accompanied with some text.  There are also some extra elements which 'blink' to make some stills  more clear.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TQi21X7LATI/AAAAAAAAAKQ/XrhVykNFidk/s1600/20101215_image2.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TQi21X7LATI/AAAAAAAAAKQ/XrhVykNFidk/s320/20101215_image2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;image1&gt;&lt;/image1&gt;&lt;image1&gt;&lt;image2&gt;&lt;br /&gt;Currently all of the still images (made by Matthew!) are in the intro sequence. The timing between the images still needs tweaking. Also the texts to display in the intro haven't been finalized. For now it is ok, this friday we'll need to have a new build of the game. And there are still a lot of other things to do too...&lt;/image2&gt;&lt;/image1&gt;&lt;br /&gt;&lt;image1&gt;&lt;image2&gt; &lt;br /&gt;-- Joep&lt;br /&gt;&lt;/image2&gt;&lt;/image1&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/lot-of-little-things.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7372347996450189666?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7372347996450189666/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/lot-of-little-things.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7372347996450189666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7372347996450189666'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/lot-of-little-things.html' title='A lot of little things'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TQi2t8tCA3I/AAAAAAAAAKM/0rlJz26eokI/s72-c/20101215_image1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-6124662055192169118</id><published>2010-12-14T10:27:00.002+01:00</published><updated>2010-12-14T11:30:22.789+01:00</updated><title type='text'>Rush Beta/New Kids Turbo!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This week we’ll be rushing to make a new version of our platform game for this Friday. At this point both of our newest games will be ready to go out for evaluation just before the Christmas work slump kicks in. I’ve heard some companies even close their offices for the entire month of December, lucky them… The bigger the company is you work for, the more they’ll be influenced by other companies’ schedules. This whole feeling that working in between the holidays is useless gets reinforced because there’s no one to do business with. This spirals into an escalating scale of being unable to do anything at all, possibly aided by a large train defect that will pop up every other day during the harsh weather. This results in a numbing effect for those involved that makes working very useless indeed. You start thinking: let’s work again when this whole mess is over…&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I think that’s a good thing, go ahead and forget the capitalist institutions that rule us all for a few days and celebrate life and love while eating till your stuffed! But, when you’re a small developer life is completely different….&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;There’s no one to blame for not working here at Xform, the work will have to be finished anyway. We’re not dependant on other businesses like the big corporations are. Our production results are what we make of it and responsibility is carried by everyone almost equally. No use in shoving your tasks onto someone else’s desk, it will wind up right back on yours the next day.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;This week almost everyone at Xform will have to work on one project in order for it to get to a more playable state next Friday. I’m not directly involved in producing any assets normally, but I’ll be finishing the trailer for our aquatic racing project this week, so in a way, I’ll be part of production for a week. On top of that, I’ll be responsible for making sure that everyone can do their job and have all the tools that they need to do their job, and of course that they’re not malnourished (a lot).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Today is still special though. We’re going to check out the New Kids: Turbo! movie in the theaters. It’s almost impossible to describe to a foreigner how these characters fit into Dutch society, but believe me, you can find them in real life if you look hard enough. They’re funny as hell and it’s going to be crazy! Check out the trailer, kut:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/SiivSAh18-U/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SiivSAh18-U&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/SiivSAh18-U&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Untill next week!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;-- Erik&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/rush-betanew-kids-turbo.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-6124662055192169118?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/6124662055192169118/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/rush-betanew-kids-turbo.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6124662055192169118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/6124662055192169118'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/rush-betanew-kids-turbo.html' title='Rush Beta/New Kids Turbo!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7721228704772965483</id><published>2010-12-10T15:19:00.003+01:00</published><updated>2010-12-10T15:25:21.561+01:00</updated><title type='text'>Minigame sneak preview</title><content type='html'>Dear readers,&lt;br /&gt;&lt;br /&gt;This week the minigames for the time management game have been finished. I've worked on the giraffe and monkey minigame. In the giraffe minigame the player has to tickle the giraffe's neck causing him to laugh which will allow you to give him medicine. The animations for it are very funny (Good job, Joep). The only thing we're still missing is a laughing giraffe sound. Here's a little sneak preview:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TQI2sGwmsWI/AAAAAAAAAKI/S49vCfHkcYU/s1600/minigame.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TQI2sGwmsWI/AAAAAAAAAKI/S49vCfHkcYU/s320/minigame.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The monkey minigame and the other minigames our intern Richard made you'll see when the game is ready which shouldn't be too long from now.&lt;br /&gt;&lt;br /&gt;Now that the minigames are finished I'm back to working on the platform game. I'm currently working on a boss level, coding the boss behavior. Unfortunately I don't have boss animations or even poses yet. This means I can code the behaviour but visually you won't see too much, which makes it harder for me to see if the behaviour is right. Next week the beta version should be ready, I'm not sure we'll make it though. But I'll let you know next week :)&lt;br /&gt;&lt;br /&gt;-- Stijn&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/minigame-sneak-preview.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7721228704772965483?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7721228704772965483/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/minigame-sneak-preview.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7721228704772965483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7721228704772965483'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/minigame-sneak-preview.html' title='Minigame sneak preview'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TQI2sGwmsWI/AAAAAAAAAKI/S49vCfHkcYU/s72-c/minigame.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-4211904024446303794</id><published>2010-12-08T09:41:00.006+01:00</published><updated>2010-12-08T10:29:16.704+01:00</updated><title type='text'>Unlock them all!</title><content type='html'>Many games today feature so called 'Trophies' or 'Achievements'. Also some of our own games have them. The time management game won't be an exception. While playing, the player can unlock trophies. For example, by delivering 10 banana's to the monkey, or by filling up 10 buckets with water. Hopefully this will give the game a higher replay value. People have to play the game more than once to unlock all the trophies. These will be saved locally on your computer. So after you've played, you can comeback and play again without losing your progress :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TP9Eqd6LcwI/AAAAAAAAAKE/HXhehzhqDoo/s1600/Image.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TP9Eqd6LcwI/AAAAAAAAAKE/HXhehzhqDoo/s320/Image.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In the time management game there will be around 25 trophies to unlock. Varying from simple ones, such as delivering 10banana's to a monkey and trophies which are very hard to unlock. Finishing the complete game with a perfect score for example. To manage these I created a system which keeps track of each trophy's progress. I started by creating a data array which contained a list of trophies and their states, locked or unlocked. This was of course the easy part of the system. Nothing fancy. The difficult and cool part of the system is a second array which keeps track of each trophy's progress. All the trophies have different 'Goals'. So they can't use the same 'progress' data all the time. Therefor each trophy's progress is a unique list. This list consists out of 2 values. One value determines the target 'Score' of the specific trophy. We can say, the target of the 'BananaTrophy' = 10. The player has to deliver 10 banana's to unlock the 'BananaTrophy'. Then the other value in the list is the progress, or better said, the amount of banana's delivered in the game. When the player delivers a banana the progress value of the 'BananaTrophy' gets increased. Once per frame I run a function to check if there are any trophies that have enough progress to meet the target. If so, the trophy gets unlocked and the player gets a notification.&lt;br /&gt;&lt;br /&gt;Doing it this way makes it very manageable for me to see if a trophy gets unlocked, is unlocked, is almost unlocked etc etc. Since it is dynamic and not 'hardcoded' it can be expanded without much of a trouble. One thing that has to be hardcoded though is the part where the trophy's progress value gets increased. &lt;br /&gt;&lt;br /&gt;-- Joep&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/unlock-them-all-many-games-today.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-4211904024446303794?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/4211904024446303794/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/unlock-them-all-many-games-today.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4211904024446303794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4211904024446303794'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/unlock-them-all-many-games-today.html' title='Unlock them all!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TP9Eqd6LcwI/AAAAAAAAAKE/HXhehzhqDoo/s72-c/Image.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8215006922115495334</id><published>2010-12-07T14:10:00.010+01:00</published><updated>2010-12-07T14:15:00.388+01:00</updated><title type='text'>Trailers and explosions!</title><content type='html'>&lt;span lang="EN-US"&gt;&lt;a href="http://www.youtube.com/user/xformgames"&gt;Trailers &lt;/a&gt;tend to be great tools to highlight how cool your game is. Trailers for Xform games have one big attraction: explosions! That’s pretty much always the main feature of our games and logically, also our trailers. I’ll be working on a trailer for our most recent game in the coming weeks. Finally, our action-packed, highly exciting, aquatic racing game extravaganza is only a few weeks from release.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Of course, I want the trailer to reflect the highlights for our most recent effort. So explosions will be the main ingredient for the movie. These explosions will indeed be caused by weapons, which will play a major role in the form of pick-ups during the race to shoot your opponents with. And in turn for them, to shoot you with if you’re in the lead…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TP4xP2_I6LI/AAAAAAAAAKA/4x9RKm7L6fw/s1600/HydroStorm-2010-12-07-13-54-05-79.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TP4xP2_I6LI/AAAAAAAAAKA/4x9RKm7L6fw/s400/HydroStorm-2010-12-07-13-54-05-79.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;Next up are the environments, which, together with the explosions will be the stars of the game as they’ll play host to lots of secrets and shortcuts. Actually they’ll be the scenes for huge, massive, epic, explosions themselves! How that will work out, you’ll have see for yourself once it releases in a few weeks time (don’t worry, we’ll keep you updated on the actual release date right here). Or you can simply check out the trailer &lt;a href="http://www.youtube.com/user/xformgames"&gt;here&lt;/a&gt; very soon! We’re really interested in how people will like our new release…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;So stay tuned for more news on our newest release and the accompanying trailer in the coming weeks. I’ll keep you guys updated as much as I can!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;-- Erik&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/trailers-and-explosions.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-8215006922115495334?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/8215006922115495334/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/trailers-and-explosions.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8215006922115495334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/8215006922115495334'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/trailers-and-explosions.html' title='Trailers and explosions!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TP4xP2_I6LI/AAAAAAAAAKA/4x9RKm7L6fw/s72-c/HydroStorm-2010-12-07-13-54-05-79.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-3192722202109258408</id><published>2010-12-06T21:44:00.002+01:00</published><updated>2010-12-07T10:55:20.864+01:00</updated><title type='text'>Beat the rush! Join us now!</title><content type='html'>It's that time of year again! No, not the holidays! It's internship season! For us, it's all about working through loads of applications and portfolios looking for programming or art talent. As you know, we're pretty lazy folk at Xform. So, if there are any crazy people out there considering applying, here are some tips to make our (and your) life just a bit easier.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Application&lt;/b&gt;&lt;br /&gt;At Xform, we always ask for a proper motivational mail, an up-to-date C.V. and, most importantly, relevant and accessible portolio work. So don't call us and expect to be hired at the end of the conversation. And don't let your school do all the work for you either! &lt;br /&gt;The mail should be a short introduction to you and what you do. Why are you applying at Xform and not some other company? What is your goal after you finish your education? If it isn't landing a job in gamedevelopment, don't bother; internships are scarce as is!&lt;br /&gt;It's always good to have previous fulltime work experience. Even if it isn't in the games-industry. So be sure to list everything on your C.V. All information should be good (providing an incorrect telephone number doesn't make a good first impression). Please state if you're a boy or a girl (to avoid emberassing situations)!&lt;br /&gt;Have a place on the web to display your work. It should be easy to navigate and it should work, doesn't matter if it's your own fancy website or a personal space on a community site. Make sure that the stuff you show is good enough and works (even though that might limit quantity). If you've worked on a lot of team-efforts, make clear what your attribution was. And please: have a proper non-idiotic email address.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Interview&lt;/b&gt;&lt;br /&gt;Okay, so we want to meet you in person. Be on time. We really appreciate nice color prints of your work. Also, don't hesitate to bring crappy older work. It can give us a good idea of where you started out from and how fast you learn. If you really need to bring a notebook, make sure the battery is full and you have the stuff you want to show ready (and tested!). Don't worry too much about things we might ask. It's all about getting a good idea if someone fits in the team or not.&lt;br /&gt;At least try to make an effort not to come across as a total moron. Unless of course, if you ARE a total moron. Then it's good that we get an honest early warning.&lt;br /&gt;The most important thing is that you get a good impression of what working at Xform is about. We usually give a small tour and an impression of what we're working on and how we do it. Remember, it could be the place you'll be spending a lot of time, so don't hesitate to ask if you're curious. Please let us know if you have special needs or diseases! Don't think you'll surprise us though ;).&lt;br /&gt;&lt;br /&gt;Can't wait for your &lt;a href="mailto:erik@xform.nl"&gt;mail!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- Diederik&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/beat-rush-join-us-now.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-3192722202109258408?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/3192722202109258408/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/beat-rush-join-us-now.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3192722202109258408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3192722202109258408'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/beat-rush-join-us-now.html' title='Beat the rush! Join us now!'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-9088155178359802631</id><published>2010-12-03T11:42:00.001+01:00</published><updated>2010-12-03T11:43:00.612+01:00</updated><title type='text'>A change of project</title><content type='html'>Dear readers,&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This monday I was told at our weekly meeting that I was to work on a different project than the platform game I have been working on. This came as a surprise to me and I wasn't sure if I was happy about it. It's like when you work on your personal project, abandon it for a few weeks and then come back to it, only to find that you forgot the details/bugs of your project. Comments in the code usually help you to get back in to the project faster, which is why I always try to comment my code, even code that seems rather trivial at the time. But at the same time, a change is nice and when I get back to the platform game there will hopefully be more art available as our artists are continuing work on it.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;As Joep mentioned, I'm now working on 2 minigames in the time management game and they're coming along nicely. In the process of making these minigames we found we needed a graphical user interface slider. As sliders are common in user interfaces I made a script which attempts to deal with sliders in a generic way so it can be used across multiple projects. Usually sliders are used either horizontally or vertically, but in our game we have a slider that's placed diagonally. So to keep it generic it would be best to have a slider that can be placed in any orientation. The problem then is when we move the slider to find a correct slider position based on our mouse position. In a horizontal and vertical slider this would just be to take the x- and y-coordinate of the mouse respectively, but in an arbitrary orientation both mouse coordinates need to be taken into account. We do this by projecting the mouse cursor on to the slider (see image): projecting a point on a line in such a way that the distance is minimal (the angle between the slider line and the line between the projected point and the mouse cursor point is 90 degrees). &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TPjINLa0WcI/AAAAAAAAAJ8/R6Q35auhWQI/s1600/Slider2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_c2acN0yT_wA/TPjIM7sG4VI/AAAAAAAAAJ4/JxU9UrJqDV8/s1600/Slider1.png" /&gt;&amp;nbsp;&amp;nbsp; &lt;img border="0" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TPjINLa0WcI/AAAAAAAAAJ8/R6Q35auhWQI/s1600/Slider2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In the images the slider defines the line segment which is shown as a solid red line. The line segment is part of a line, shown as a dotted red line. The line is parameterized with t in such a way that the start of the line segment is associated with t=0 and the end of the line segment is associated with t=1. When projecting we obtain a t value which corresponds to the projected point P. When 0 &amp;lt;= t &amp;lt;= 1 then the projected point is on the line segment. When t &amp;lt; 0 or t &amp;gt; 1 then the projected point is outside the line segment and we set t to 0 and 1 respectively to keep the slider button on the slider. In this way you can define a slider in any rotation and it will still work correctly :)&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;-- Stijn&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/change-of-project.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-9088155178359802631?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/9088155178359802631/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/change-of-project.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9088155178359802631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/9088155178359802631'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/change-of-project.html' title='A change of project'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c2acN0yT_wA/TPjIM7sG4VI/AAAAAAAAAJ4/JxU9UrJqDV8/s72-c/Slider1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7624577984572840346</id><published>2010-12-02T11:37:00.003+01:00</published><updated>2010-12-02T11:39:41.809+01:00</updated><title type='text'>Color Correction on textures PART TWO</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;Hi All,&lt;br /&gt;&lt;br /&gt;Finally I have found the time again to write you guys a blog post, the past few weeks have been very busy as we've been finalizing the "water race game". One of the major tasks we have to do at the end of each project is the color correction of the textures, Diederik already wrote a post on how this is done on a single image, I would like to show you guys one way of color correcting multiple instances of the same image in one file. &lt;br /&gt;&lt;br /&gt;For our game we need the same set of four water particle images for each track, but they all have to be color corrected to match the environment of each track. One of the most common ways to do these kind of tasks is to create Photoshop Actions for each image, but I would like to show you another way to adjust multiple images at once. This is how I did it for the water particles:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TPd1ZCJ_4XI/AAAAAAAAAJs/qlGqxHfwSyk/s1600/PSDfile.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="220" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TPd1ZCJ_4XI/AAAAAAAAAJs/qlGqxHfwSyk/s400/PSDfile.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Click on the images for larger versions!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;I created a Photoshop file and imported the images that needed to be corrected, in this case four water particle images, and turned each image into a Smart Object. Next I aligned and placed them into a Group Folder which I gave the name of the first race track. I also set the folder blend mode to Normal (instead of the default Pass Trough). This prevents adjustment layers placed in this group to affect layers outside of this group. Next I paced a Gradient Map Adjustment layer (for color correction) inside the track Group Folder and on top of the Smart Objects. So in this case the Gradient Map only affects the Smart Objects inside the Group Folder. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;At this point the color correction for the first track was done now I only needed to create a copy of the Group Folder for each Track, move the whole folder so the images don't overlap and do some color correction by adjusting each copy of the Gradient Map Adjustment Layer.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TPd2SJKVSwI/AAAAAAAAAJw/Zo9J4tr5VEs/s1600/SaveForWeb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TPd2SJKVSwI/AAAAAAAAAJw/Zo9J4tr5VEs/s400/SaveForWeb.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;Now I have one big Photoshop file which contains the corrected water particles for all the games tracks, but how will I save this into multiple images? Here’s where Photoshops Slice tool comes in Handy. With his tool you can mark and name area's (slices) in your Photoshop file which can be saved as multiple images in just one go ( It’s amazing!) by using the Save for Web and Devices option. Finally Just copy each image in the right directory and we're done.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TPd2b6hDHbI/AAAAAAAAAJ0/tHhLqjQctqM/s1600/Files.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TPd2b6hDHbI/AAAAAAAAAJ0/tHhLqjQctqM/s400/Files.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;Setting up a file like this can take some time, but once it's done it can make your life a lot easier.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;Cheers, Matt &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/color-correction-on-textures-part-two.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7624577984572840346?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7624577984572840346/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/color-correction-on-textures-part-two.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7624577984572840346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7624577984572840346'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/color-correction-on-textures-part-two.html' title='Color Correction on textures PART TWO'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TPd1ZCJ_4XI/AAAAAAAAAJs/qlGqxHfwSyk/s72-c/PSDfile.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-2605829011872297486</id><published>2010-12-01T13:28:00.008+01:00</published><updated>2010-12-01T17:11:09.934+01:00</updated><title type='text'>The other way around: 3D to 2D..</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Last week we were experimenting with minigames in the time management game. To see if this kind of variation of gameplay would add anything good to the game. In my opinion it works very well, also the other guys over here think it is a good idea to have them. So this week we decided to keep them and continue to work on the other minigames. Stijn is going to help me and Richard to get these done.&lt;br /&gt;&lt;br /&gt;Today I'm working on the interface mockups for the minigames. Our interfaces are actually 3D objects, instead of 2D bitmaps. The interface objects are rendered 'on top' of the camera in the game.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_c2acN0yT_wA/TPY_Ik5w-VI/AAAAAAAAAJo/-CEUMsTACxs/s1600/Image1.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="283" src="http://1.bp.blogspot.com/_c2acN0yT_wA/TPY_Ik5w-VI/AAAAAAAAAJo/-CEUMsTACxs/s320/Image1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Imagine these 3D objects which represent buttons and frames etc, to be connected together in specific order. Also known as a parent-&amp;gt;child hierarchy. &lt;br /&gt;For example. Imagine a small object called 'Options'. Every button/frame which to has to be displayed in the options screen is a child of this object. In the game we use a function to hide or show one complete parent-&amp;gt;child tree. To show the 'Options' screen in this example, we only have to 'Unhide' or show the 'Options' root. Which then shows all of it's childs too, the complete options screen.&lt;br /&gt;&lt;br /&gt;This makes it much easier to manage menu's, popups, option screens etc. It is critical though to have the 3D file which contains all of this hierarchy information well organized. One wrong link and the system won't work correctly.&lt;br /&gt;&lt;br /&gt;-- Joep&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;span style="font-size: small;"&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/12/other-way-around-3d-to-2d.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-2605829011872297486?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/2605829011872297486/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/other-way-around-3d-to-2d.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2605829011872297486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/2605829011872297486'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/12/other-way-around-3d-to-2d.html' title='The other way around: 3D to 2D..'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c2acN0yT_wA/TPY_Ik5w-VI/AAAAAAAAAJo/-CEUMsTACxs/s72-c/Image1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7790569618785308143</id><published>2010-11-30T17:18:00.003+01:00</published><updated>2010-11-30T17:30:13.600+01:00</updated><title type='text'>From Marketing to Production</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;As the snow begins to fall and mass hysteria sweeps the nation over a bit of frozen water, we all start work with ice cold enthusiasm here at the Xform offices. Even the mice seem to be too cold to come out and grab our breadcrumbs. The end of the year is always the perfect time for a bit of contemplation on what has happened in the last year. Mainly because there’s nothing else to do of course. I’m staying inside as much as I can from now on, but before I get cabin fever I want to reflect on some videogame related memories and thoughts for the future.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I started in videogames as a writer. I was so bored with the movie theory I had to read for my study (“Film- and Television sciences” at the University of Amsterdam) that I decided to apply my own &amp;nbsp;theories to videogames. Videogames played a very small role in the curriculum as a part of “New Media” the major (nowadays you would call it a Master) I decided to follow.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I ended up at a Dutch television show about videogames for an internship. It’s a show called &lt;a href="http://www.gamekings.tv/"&gt;Gamekings &lt;/a&gt;and they still make damn good television now. These guys were really cool and I enjoyed my time there very much. I learned a lot about work and life in general there and made some good friends. Plus, I got to travel all over the world as a cameraman on location.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;After that I made a clean break there, because it felt wrong staying there not knowing what I really wanted (as always with me). I ended up at now defunct Playlogic International N.V. as a Product Manager. My first experience with an actual “office space” got me depressed for a while. But I did see potential in the company at that time and felt the motivation to push on. After 2,5 years I jumped ship just in time and joined Xform. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Now it’s time to switch my work once again, from marketing into hardcore production. I think videogame production suits me the best, because marketing involves too much lying and betraying your conscience in general, not a strong point for me. Being part of a real production company, seeing how products get made and actually get finished is a great experience. &amp;nbsp;Plus, more importantly, you actually get to see the fruits of your labor, once you put something in you’re instantly rewarded with the result of what you do. I’ve had contacts with production at all times during my marketing times and always wanted to know everything about the project. In marketing you’re always treated as someone who doesn’t know what it takes to make a game and your requests are always greeted with a very deep sigh. I think I’ve always known how it works a bit, because I’ve worked in television production, but at Xform I can finally see it firsthand. Browsergame production is actually the most hands on I’ve ever seen videogame production work. It’s production in its purest form and at Xform &amp;nbsp;games tend to be pure fun.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TPUjpETA9dI/AAAAAAAAAJk/m6Jfywx5JyI/s1600/videogame.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TPUjpETA9dI/AAAAAAAAAJk/m6Jfywx5JyI/s320/videogame.jpg" width="228" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;-- Erik &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/11/from-marketing-to-production.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7790569618785308143?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7790569618785308143/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/from-marketing-to-production.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7790569618785308143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7790569618785308143'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/from-marketing-to-production.html' title='From Marketing to Production'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TPUjpETA9dI/AAAAAAAAAJk/m6Jfywx5JyI/s72-c/videogame.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-687296344686768216</id><published>2010-11-29T14:43:00.001+01:00</published><updated>2010-11-29T14:53:30.305+01:00</updated><title type='text'>Office Space Invaders</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;Bad news! We had a break-in this weekend. Another one…&lt;br /&gt;&lt;br /&gt;A couple of months ago we were also ‘targeted’ and all of our game consoles were taken. This time nothing is missing,.. Fortunately… The door to one of our offices was kicked in, but the only valuable thing in there is a TV and it is probably too heavy to carry anyways. Nevertheless, it is a pain in the ***. The door needs to be fixed, a visit from the cops, etc. All sorts of time-consuming tasks you don’t need or want when starting a new week on Monday morning. &lt;br /&gt;&lt;br /&gt;Honestly, I don’t really care that much if they would take the PS3 again as long as the leave our computers alone. When something like this happens it always reminds you of making sure your work is properly backed up and safely stored. Thankfully, we've always done this since the beginning. Not only by making regular hardcopy backups (DVD storage and external hard disks), but also by storing your work on multiple computers at work and at home (using file versioning software). So if things go wrong again we’ll always have the most recent developments versions of all of our projects. It is a shame you have to keep this all in mind. Making sure that whatever happens; theft, fire, airstrikes, alien invasions (I am blaming the aliens for this one), nuclear detonations and earthquakes your work is never gone. Wouldn’t want to start Burnin Rubber 4 from scratch again…&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TPOtR5S-ymI/AAAAAAAAAJg/ntVXy-c1i5U/s1600/OfficeSpaceInvaders.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TPOtR5S-ymI/AAAAAAAAAJg/ntVXy-c1i5U/s1600/OfficeSpaceInvaders.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Well, to end this post on a positive note. This week we will be starting to work on an update of one of our&amp;nbsp;games. Of course I can’t tell you anything about it, only that it is going to be awesome! Again… ;)&lt;br /&gt;&lt;br /&gt;--Pieter&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/11/office-space-invaders.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-687296344686768216?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/687296344686768216/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/office-space-invaders.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/687296344686768216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/687296344686768216'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/office-space-invaders.html' title='Office Space Invaders'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TPOtR5S-ymI/AAAAAAAAAJg/ntVXy-c1i5U/s72-c/OfficeSpaceInvaders.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-3485066754819407333</id><published>2010-11-26T16:58:00.004+01:00</published><updated>2010-11-26T17:03:08.098+01:00</updated><title type='text'>Turning 2D into 3D</title><content type='html'>Dear readers,&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I've been waiting for artists to continue my work on the platform game, but they were all put on other projects. So it was just me working on the platform game, which is not very exciting. In the meantime I've been working a little bit on a side-project, something that would be useful for the level designers. The levels for our platform game are in 3D and currently our artist Matthew has little bits and pieces that he has to copy and put together to make a level. Only in the 3D program we're using this is not a fast process. Matthew suggested using a 2D tile-program and then converting the 2D tiles to 3D as in the 2D tile-program you can create the level much faster. Good idea, but easier said than done of course. So I investigated a little to see if it would be doable within a short amount of time because if it takes me more time than Matthew gains by it then it might not be worth doing. But I was able to do it within one day and it works nicely and gives us a quick and easy way to make levels. The level designer no longer has to attach vertices himself or detach the grass objects on top. On conversion I also made it so that each disconnected piece of ground becomes an object which makes the game run more efficiently (as we can choose not to display ground objects which are not in the player's view). The level designer will still have to place custom items manually in the 3D program, but the 2D is very nice for quick prototyping.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Test level designed in 2D map editor:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TO_ZHOHOEaI/AAAAAAAAAJY/P-dSoRa_lyI/s1600/MapIn2D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TO_ZHOHOEaI/AAAAAAAAAJY/P-dSoRa_lyI/s320/MapIn2D.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&amp;nbsp;Converted to 3D:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TO_ZHssSD_I/AAAAAAAAAJc/6ziNi8wK1UI/s1600/MapIn3D.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TO_ZHssSD_I/AAAAAAAAAJc/6ziNi8wK1UI/s320/MapIn3D.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think I took more time programming this than if it was all done manually, but I learned more about scripting in the 3D design-program we're using plus the names of objects are always correct. So it's very useful :)&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;-- Stijn&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/11/normal-0-21-false-false-false-nl-x-none.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-3485066754819407333?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/3485066754819407333/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/normal-0-21-false-false-false-nl-x-none.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3485066754819407333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/3485066754819407333'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/normal-0-21-false-false-false-nl-x-none.html' title='Turning 2D into 3D'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TO_ZHOHOEaI/AAAAAAAAAJY/P-dSoRa_lyI/s72-c/MapIn2D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7046053091387556960</id><published>2010-11-24T10:54:00.002+01:00</published><updated>2010-11-24T10:55:33.422+01:00</updated><title type='text'>Minigame Mayhem</title><content type='html'>&lt;div class="MsoNormal" style="margin-bottom: 12pt;"&gt;The time management game is making good progress. We are entering the final stage of development. Which doesn't mean that there is less work to do. We took a look at the game to see how it plays at this moment. How long it keeps us interested and entertained while playing. In my opinion the game is pretty solid already. But we decided to add a little more to get some variation in the gameplay. At this point most of the 'Levels' you can play feel pretty much the same. They vary in difficulty but the gameplay is generally the same. This is where we want to make a change. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TOzgnV-VyvI/AAAAAAAAAJU/J7k8_5PF-zc/s1600/blogminigame1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TOzgnV-VyvI/AAAAAAAAAJU/J7k8_5PF-zc/s320/blogminigame1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;Diederik came up with the idea of adding minigames. Imagine collecting a bucket and a brush. Then fill the bucket with water and take it to an animal to wash it. The minigame to play could be to wash an animal within a certain time limit. Washing for example, could be done by dragging over the animal with a brush as cursor. When the player succeeds, extra points are awarded. This way we 'break' the straight forward point and click gameplay of the main game.&lt;br /&gt;&lt;br /&gt;The first 'wash' minigame is currently working with mockup graphics. It seems to blend into the game pretty good. If it works out as planned we probably keep this in the final game. And of course, add more different minigames.&lt;br /&gt;&lt;span style="color: #888888;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #888888;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #888888;"&gt;&lt;span style="color: black;"&gt;-- Joep&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/11/minigame-mayhem.html" show_faces="true" width="450"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7046053091387556960?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7046053091387556960/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/minigame-mayhem.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7046053091387556960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7046053091387556960'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/minigame-mayhem.html' title='Minigame Mayhem'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c2acN0yT_wA/TOzgnV-VyvI/AAAAAAAAAJU/J7k8_5PF-zc/s72-c/blogminigame1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-4867687439970133591</id><published>2010-11-23T15:07:00.004+01:00</published><updated>2010-11-23T15:53:10.302+01:00</updated><title type='text'>Just another awardless day…</title><content type='html'>&lt;span lang="EN-US"&gt;We at Xform find ourselves at the office again for another day of work. Lately it seems just a tad bit more meaningless than normal… Why? It’s because we didn’t win anything last Thursday at the Dutch Game Awards :(&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;I’m kidding ofcourse, we’re slightly disappointed, but we don’t need recognition from a… well from anyone really. The fact that a single Xform game gets played by more than a 100.000 people each day is recognition enough that what we do is liked by a lot of people. However, with all that said, we have won a little bit in spirit with Flipper. The game won an award for “Best Mobile/Handheld Game” and the jury credited its only developer Hugo Smits (Goodbyegalaxygames) for this huge achievement in designing and programming the game on his own. The term “Bedroom coder” was used to describe what he had achieved on his own… literally in his bedroom (in Dutch we normally tend to say: “attic coder” for that type of person, just to emphasize the loneliness of it all). He has had a lot of help from us in publishing Flipper, but as this prize is meant for the development, it’s only right that he should take the credit for this on his own. It was great to see Hugo shining with his red owl on stage, a great crown on all his efforts and hard work. It’s still unclear what will happen with Hugo’s upcoming &lt;a href="http://control-online.nl/gamesindustrie/2010/10/29/in-development-zit-die-vis-nou-alweer-in-de-penarie-flipper-2-voor-dsiware-in-productie/"&gt;Flipper 2&lt;/a&gt; but I’ll try to keep you up to date as much as I can what will happen from our standpoint. Nothing has been decided on this new game yet, so it’s up to Hugo!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TOu8aDahd5I/AAAAAAAAAJQ/ZYb2YN1Ta54/s1600/DutchGameAwards2010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TOu8aDahd5I/AAAAAAAAAJQ/ZYb2YN1Ta54/s400/DutchGameAwards2010.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;It wasn’t all bad… for me at least… I was able to claim two awards with my former colleagues for a game I’ve worked on in 2009 and 2010. It’s a testament to the open and kind character of the Xform people that I was able to join my ex-colleagues in celebration of the award for “Best Visual Design” and “Best Audio Design” for the game Fairytale Fights. It was my old employer Playlogic that developed and published this game and I helped (my ass off) to make it! The company has unfortunately filed for bankruptcy in the summer of this year. This was after the game proved unsuccessful, with a very small chance the company will start over under new management, but this chance remains minuscule at this point. I decided not to stay for all the pictures at the award ceremony, &lt;a href="http://rickvanbeem.com/"&gt;this is something that the PR person should do, he still represents the company&lt;/a&gt;, together with the &lt;a href="http://www.musicbyjonathan.com/"&gt;composer of the game, responsible for the audio&lt;/a&gt;. I’m working at Xform now! Next year we should definitely win a prize, as someone that has joined the company very recently I think there’s so much worthy of appreciation in the Xform line up, it’s high time for us to get the recognition we deserve from the jury. In the meantime millions of gamers will play our games, for now that really is all we need to keep going…&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;-- Erik&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/11/just-another-awardless-day.html"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-4867687439970133591?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/4867687439970133591/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/just-another-awardless-day.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4867687439970133591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/4867687439970133591'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/just-another-awardless-day.html' title='Just another awardless day…'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TOu8aDahd5I/AAAAAAAAAJQ/ZYb2YN1Ta54/s72-c/DutchGameAwards2010.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-7713986562173512879</id><published>2010-11-23T10:09:00.004+01:00</published><updated>2010-11-23T10:11:47.943+01:00</updated><title type='text'>Color correction on textures</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_c2acN0yT_wA/TOuENwoDfHI/AAAAAAAAAJM/dqiusWrfIzU/s1600/Shading.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://2.bp.blogspot.com/_c2acN0yT_wA/TOuENwoDfHI/AAAAAAAAAJM/dqiusWrfIzU/s320/Shading.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hi all!&lt;br /&gt;&lt;br /&gt;The last few days I've been working on some color correction for the textures for the water race game.&lt;br /&gt;&lt;br /&gt;In most 3d games, the designer wants to achieve a certain ambience in the level he is building (i.e. dark, gloomy or maybe bright, sunny or even red and vulcanic). Nowadays, this is done by using techniques such as ambient occlusion, realtime pixelshading and shadows and fancy postprocess color correction on (parts of) the screen. As you might have guessed, we can't use any of that :(&lt;br /&gt;&lt;br /&gt;Although for some games we do use lightmaps for more defined shadow and shading, sometimes this makes the whole game just too big and sluggish. So for now, we just use real cool retro realtime vertex shading and fogging.&lt;br /&gt;&lt;br /&gt;Vertex shading can color the object's faces darker depending on the vertex's position and orientation toward one or two lights. Not really a lot of control on final tinting unfortunately. But at least it gives some more definition to the object's form and perspective.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Next to this we use fogging of objects in the distance. When used with a nice atmospheric skybox this can work really well. We don't want to fog too much though since it may interfere with our transparent objects and particles. Doh!&lt;br /&gt;&lt;br /&gt;If done properly, this usually looks pretty okay, but not very special or unique. We sometimes like to add some additional color correction to the base texture to achieve more color depth and tinting, as seen in the final results picture above. Of course, this will make the texture only useable in one particular ambience! For our project, this is no problem.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TOuENQGbZfI/AAAAAAAAAJI/Ga1zQGzJT_I/s1600/ColorCorrection.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TOuENQGbZfI/AAAAAAAAAJI/Ga1zQGzJT_I/s320/ColorCorrection.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;colorcorrection.jpg&gt;In step 1, the darker tints in the base texture are desaturated. Often the darker tints of a particular texture are just darker version of the same color. This sometimes makes color spectrum a bit dull and fake. Maybe you could even add a step here to make the lighter colors more saturated.&lt;br /&gt;&lt;br /&gt;In step 2, we create a gradient map that defines the color scheme for our level and apply that to a copy of the base texture. We then blend that with the prior result to make the texture fit more into the environment.&lt;br /&gt;&lt;br /&gt;In step 3, we add just a tad of fog color to the texture. This will make it blend even more into the environment and sky. It removes too much unwanted distracting contrast and is more pleasing to the eye.&lt;br /&gt;&lt;br /&gt;Back to work!&lt;br /&gt;&lt;br /&gt;-- Diederik&lt;/colorcorrection.jpg&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://connect.facebook.net/en_US/all.js#xfbml=1"&gt;&lt;/script&gt;&lt;fb:like href="http://xformgamedevelopment.blogspot.com/2010/11/color-correction-on-textures.html"&gt;&lt;/fb:like&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109055551036769632-7713986562173512879?l=xformgamedevelopment.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xformgamedevelopment.blogspot.com/feeds/7713986562173512879/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/color-correction-on-textures.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7713986562173512879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109055551036769632/posts/default/7713986562173512879'/><link rel='alternate' type='text/html' href='http://xformgamedevelopment.blogspot.com/2010/11/color-correction-on-textures.html' title='Color correction on textures'/><author><name>Xform Game Development</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-ZLCSn3Flej8/TaxIB7170YI/AAAAAAAAAMw/OYSlNyBBJSY/s220/Xform.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c2acN0yT_wA/TOuENwoDfHI/AAAAAAAAAJM/dqiusWrfIzU/s72-c/Shading.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109055551036769632.post-8401799623015026729</id><published>2010-11-19T16:52:00.001+01:00</published><updated>2010-11-22T09:08:18.265+01:00</updated><title type='text'>Turn around, every now and then...</title><content type='html'>An important feature of platform games is enemies. Enemies that will try to harm you and make the levels harder and more diverse. From a level designers perspective you want to be able to place enemies wherever you'd like, so for a programmer there is no hard-coding enemy behaviour like "when the x coordinate is greater than 5 then turn around". Instead enemies should be able to find their own paths. When the enemy bumps into an object he should turn around, so we might think "Ok, let's use the collision report that the physic engine will give us", but that won't do because sometimes the enemy needs to turn around when there is no collision. "What?" you might say... well, we don't want enemies to run off platforms and in to pits, so they should turn around at the cliff but we won't get a collision report. We might introduce a new invisible kind of object and place that at every cliff, but our level designers won't like it. So let's explore a ray casting solution.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TOac8l1LawI/AAAAAAAAAJA/sIclqueulMc/s1600/EnemyRay.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ox="true" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TOac8l1LawI/AAAAAAAAAJA/sIclqueulMc/s1600/EnemyRay.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We cast a ray from the center of the enemy (a collision box, see image). W is the box width, H is the box height and L is how far to look ahead, R is the length before the ray hits the ground (on flat ground, ignoring slopes for now). This diagonal ray captures both to turn around on objects that are on the enemies path as well as to turn around when reaching a cliff. If the ray hits an object within distance R then there is some object in front of the enemy, but this doesn't necessarily mean the enemy should turn around. It could be that the ray hits the player in which case we don't want the enemy to turn around because we want the enemy to hurt the player. So some objects the ray hits should be ignored. When the ray hits an object at a distance exactly R then it's the ground the enemy walks on and it shouldn't turn around. If the ray didn't hit any object (ignoring the player) within distance R (plus a little bit) then we should turn around otherwise we will fall down possibly in to a pit which we don't want.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_c2acN0yT_wA/TOadFCAqmzI/AAAAAAAAAJE/3ssHzdIj9Jk/s1600/EnemyRay2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" ox="true" src="http://3.bp.blogspot.com/_c2acN0yT_wA/TOadFCAqmzI/AAAAAAAAAJE/3ssHzdIj9Jk/s320/EnemyRay2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now let's also explore slopes. Slopes sort of ruin our solution so far because now when the enemy starts walking up a slope we will get a ray hit with the ground within distance R as shown in the image. What we can do to avoid turning around now is taking into account the normal of the point on the ground we hit. If the normal is not strictly up (Y axis) or strictly to the side (X axis, the walls are also ground) then we've hit a slope and we won't turn around. It gets more tricky when walking down a slope. What we would like to know is "the distance along the ray when we can be certain we're not looking down a slope, but we're at a cliff and we should turn around". This depends on the steepest slope we have in the game which is 2 units right, 1 unit down. The ray we cast has "slope" (W/2)+L units right, H/2 units down. Looking at the im
