<?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-5073718535770039792</id><updated>2012-02-16T11:21:23.642-08:00</updated><category term='libgdx'/><category term='android'/><category term='rpg'/><category term='3d'/><category term='character artist'/><category term='assets'/><category term='engine'/><category term='editing'/><category term='elephantastic'/><category term='world'/><category term='tease'/><category term='screenshot'/><category term='deled'/><category term='md5'/><category term='strings'/><category term='freelance'/><category term='opengl floatbuffer bufferunderflowexception'/><category term='3d artist'/><category term='memory leaks'/><category term='gui'/><category term='library'/><title type='text'>Discretion Development Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-4282699040139846959</id><published>2011-11-29T08:55:00.000-08:00</published><updated>2011-11-29T10:00:54.715-08:00</updated><title type='text'>Discretion: Post-mortem of an Android game</title><content type='html'>Is it true that the best post-mortem is written after a decent cool-down period, giving the author time to gain some good old-fashioned perspective? Maybe. In my case, I told people on the libgdx forums back in January that I'd be writing a post-mortem of &lt;a href="http://redskyforge.com/Discretion.php"&gt;Discretion&lt;/a&gt; "soon". Well, soon has come and gone, but I'm sure there is advice in here somewhere that is useful and relevant to game development, and building/shipping your own product. Without further ado...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Background&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've wanted to make my own games since I learned programming in BASIC. I got into 3D programming back in the days of DOS4GW and directly accessing your graphics memory at 0xA000. I did some time in the games industry in my 20's, ending up working on a full blown, "triple A" PS3 first person shooter title. I gained lots of valuable experience, so when my friend suggested Android development I was very optimistic: history was repeating, and it was really possible again for a single indie dev to create and distribute a game with an actual chance at commercial success. The barrier to entry is absurdly low: the only money you need to spend to sell an Android game is the $100 or whatever for your Android Market key. Of course, it helps to have an Android phone to test your app on and make sure silly things like alignment, SD card settings and all those other little bits don't suck. But really, $100 and you can ship a product that's available to buy from millions of users worldwide.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course, shipping a &lt;i&gt;successful &lt;/i&gt;product is another thing...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Role-Playing Games: The Terror of Scope&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I came up with a lot of ideas while I was backpacking in India, and wrote them down. There were a lot of ideas, but one thing became clear very quickly: I wanted to make a role-playing game. I've worked on a variety of different kinds of games, on a variety of platforms, some for personal projects and some for work, but I've always loved the genre and always will. Yes, I'm a "swords and elves" geek. Yes, I think Tolkien is the God of modern literature. And yes, I believe the genre is overdue a healthy shot of creativity, as with many other genres -- the time has never been better for devs to really flex their imaginations and give the tired old paradigms a good kicking.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But a Role-Playing Game, for my first indie project, on a tiny budget with no outside investment. What was I thinking? After writing a few dozen pages of my design wiki, I came to realise: &lt;a href="http://discretiongame.blogspot.com/2010_09_01_archive.html"&gt;The scope was terrifying.&lt;/a&gt; But then I asked myself, what's the point of doing a startup if you're not doing something you love, something you're truly passionate about? And can you trust yourself to stay motivated making a Bejeweled Clone or the next Angry Birds? The thing I feared more than failing was failing to release anything. It was a big question mark for me, because although I've had one or two personal projects that did get off the ground, I've had many more that never saw the light of day.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, a RPG it was. On a fairly new platform. With 3D graphics.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of my friends who I met in the games industry thought I was crazy. As if making a RPG wasn't enough work - now you want to do one with 3D graphics, on smartphones? How are you going to do animation!? (3D animation is very resource intensive, and back then most Android phones didn't support &lt;a href="http://en.wikipedia.org/wiki/Shader"&gt;hardware shaders&lt;/a&gt;). Indeed, this decision came back to bite me on the ass. But looking back, I can't say I truly regret it, because some things are actually easier in 3D, and I had more faith in my ability to make assets myself in a 3D editor than in Photoshop. Focus on your strengths.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Development: Winter of 2010&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Winter was coming. What a winter it was: we had thick snow covering the country for weeks on end in the Netherlands. But it didn't affect me so much: I was working from home! What a joy it is, to sit at your computer and stare at the white vista outside of your window without having to go out in it. I put my head down and coded, day after day, relentless, unstoppable. I was a machine. Early on, I made one of the best decisions for the project: I chose a small open source multi-platform library called &lt;a href="http://code.google.com/p/libgdx/"&gt;libgdx&lt;/a&gt;, primarily for its 3D animation support and because you could build and run on your desktop machine, only deploying to a handset when you wanted to test. This was before the other popular commercial engines added Android targets. I ended up contributing back to the project, my first ever participation in open source. It felt good, and the community was great. I'll never forget the owner Mario and his biggest contributor Nate, tirelessly answering questions on the forums, showing people the way. It paid off. Books and job offers aside, libgdx is now starred by 839 users. I am proud to have been a small part of that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The game came along. I did beta testing with friends. It was hard getting people to try; being part of a bigger network would have been useful then, but I was (and still am) small fry on Twitter and in the larger community. But it was okay - I nailed most of the major bugs and the final release onto the Market was pretty damn stable for somebody who once caused 50% of all crash reports in a web design application release. The big day came. Four months of hard work and no income; something that I could really say was a labour of love. I launched. The first few sales trickled in. I shot off endless emails to Android blogs, posted on Android and gaming forums, day after day. A few more sales trickled in. I lowered the price from my somewhat optimistic $5 initial offering to the 99c "sweet spot". There was a small bump in sales. I got some fanmail that made me really happy, and I released a small but neat "content expansion", another area of the world with its own enemies and quests.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But it wasn't enough. It wasn't anywhere near enough. My product failed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the post-mortem didn't get written. I did some other much smaller projects, but the wind slowly fell out of my sails. Motivation slowly but surely ebbed away, and around April I bit the bullet and took a permanent job as a Java developer. The company put a "no working for yourself" clause in my contract. I took my apps off the Market. Discretion faded away into memory. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And now we come to the part that I hope can help others who want to make it in the brave new world of app development. Particularly game developers like me, who have dreams, not business plans. (Well, I actually did write a business plan! But because I never sought outside investment I never needed it.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Where did I go wrong?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Major points first:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Market / platform mismatch: Android and iPhone games are a firmly casual market. Duh. People want to pick up these games, play them on the train, and put them down again. They like to play for short times. Many of them like simple, social games, like Wordfeud. The platform for the RPG market is PC and console: successful games like The Witcher, Fable, Oblivion and Skyrim prove this. World of Warcraft proves this. It is undeniable. I chose Android for its low barrier to entry and its (for indies) awesome distribution network, but I missed my market.&lt;/li&gt;&lt;li&gt;Production costs: any game requires artwork. On Android I thought I had a chance to make a low budget game, because smartphones aren't as "hardcore" as desktops or consoles; they don't have the raw processing power, so people don't expect as much, right? Wrong. People still have standards. Not the same standards they expect from that $60 PS3 game they queued up in the middle of the night on launch day for, but still, it can't look crappy. Now, it is possible to make a low budget game that doesn't look crappy - but damn, you need to choose a genre that doesn't have requirements like 50 different character textures and 10 outside areas with rocks, trees, roads, houses, and 10 different weapons, and realtime lighting, and skeletal animation..... I just couldn't afford to make a good looking Role-Playing Game. It cost me bad reviews (the Market can be pretty hard, especially on free demos). It cost me conversions. It probably also cost me reviews on blogs too. Who wants to review a crappy looking game?&lt;/li&gt;&lt;li&gt;Marketing: for some reason, up till almost the end of my development time, I thought all I had to do was upload it to the Market and the money would roll in. Luckily I came to my senses and shortly before release, sent out emails to blogs, posted on forums, spammed the hell out of my poor friends on Facebook and Twitter followers. I even made a promotional YouTube video (it sucked - see above point for why), something I never had a clue about before. The great thing is, there are lots of free ways of marketing your product these days - it's really never been cheaper. The downside is, these channels are open to everybody else too. I don't envy the editors of big Android or iPhone blogs. So in the end, my marketing efforts weren't enough: I should have spent a small budget on actual advertising (places like Reddit.com might have been good for this, and Facebook offers really focused advertising campaigns). I should have spent more time Photoshopping my screenshots. (Everyone in the AAA industry does this, and everyone knows about the airbrushing that goes on in mainstream advertising. It may still have been lipstick on a pig, but it would have helped: first impressions matter). Still, marketing apps is hard. The sheer volume of the competition is incredible. How do you stand out?&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;There were other smaller things too, like failing to get dynamic lighting working at an acceptable framerate: it would have instantly made the game look better, given it more of an atmosphere. But I had a deadline, and I had some pretty fearsome technical constraints. Some features just aren't realistic.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;Where now?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The big question for me, is what next? I've had almost a year to think about it, but I knew quite soon after making my first RPG what I wanted to do next: make another RPG. I already had ideas for a more involved game when I first started writing down ideas for Discretion. The wiki is already there: it's called Game 2.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But it's not the genre with the most potential for getting rich, and it's not the easiest to develop, and there are 1001 better ideas for making a living from a startup, right?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've looked into some of these ideas. I even played around with a prototype for a website in Grails. Believe me, after coming home from a Java shop, Grails is a damn nice breath of fresh air! I've read &lt;a href="http://news.ycombinator.com/"&gt;Hackernews&lt;/a&gt;, read the &lt;a href="http://www.kreci.net/reports/developer-income-report-15/"&gt;success stories&lt;/a&gt; there; I know that with hard work, patience, dedication and a bit of luck, it's possible to make more than a sufficient living from web startups or the App markets. Hell, it's possible to get really fucking rich.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But it's not enough.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can't get excited enough about writing another web app. Grails is nice but technology alone is only part of the story. The &lt;a href="http://clojure.org/"&gt;functional&lt;/a&gt; &lt;a href="http://haskell.org/haskellwiki/Haskell"&gt;programming&lt;/a&gt; &lt;a href="http://www.scala-lang.org/"&gt;renaissance&lt;/a&gt; is fascinating to watch unfold, but it hasn't really pulled me in: the elegance is fantastic, but it's still just a different way of swinging your hammer in the end.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The technologies that excite me the most are OpenGL, DirectX, terrain engines, &lt;a href="http://udk.com/"&gt;UDK&lt;/a&gt; and &lt;a href="http://unity3d.com/"&gt;Unity&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because I want to make another RPG.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And I will.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-4282699040139846959?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/4282699040139846959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2011/11/discretion-post-mortem-of-android-game.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/4282699040139846959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/4282699040139846959'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2011/11/discretion-post-mortem-of-android-game.html' title='Discretion: Post-mortem of an Android game'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-874827514088005765</id><published>2011-01-31T07:31:00.000-08:00</published><updated>2011-01-31T07:37:54.785-08:00</updated><title type='text'>Finished! Discretion is out now on the Android Market</title><content type='html'>It's been a busy few weeks, but I'm very happy to blog that Discretion is now out in demo and paid versions on the Android Market :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I made a short gameplay video that sums up how everything came out pretty well. Here it is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="480" height="390" src="http://www.youtube.com/embed/TXggulrCLcQ" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, how do I feel? Pretty happy with getting it finished almost on time. I originally hoped to have it out at the start of January, so scraping in on the 31st wasn't too bad considering I took a good couple of weeks of holiday since I started work back in October.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm pretty tired now but I'm quite excited about doing a full post-mortem with all the blood, guts and glory that made up the experience of developing my very own role-playing game. I'll probably do this over a few blog articles, covering things like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Finding and managing someone to make assets&lt;/div&gt;&lt;div&gt;* Dev in pictures: screenshots of various parts of development including my attempt at making 3D stuff&lt;/div&gt;&lt;div&gt;* Pitfalls, trials and tribulations - what I would and wouldn't do again&lt;/div&gt;&lt;div&gt;* PR and marketing (still working on this bit but I will report back as it seems a very common subject)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it for now. Time to send out some more emails...&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/5073718535770039792-874827514088005765?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/874827514088005765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2011/01/finished-discretion-is-out-now-on.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/874827514088005765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/874827514088005765'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2011/01/finished-discretion-is-out-now-on.html' title='Finished! Discretion is out now on the Android Market'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/TXggulrCLcQ/default.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-1493688336680808564</id><published>2011-01-22T04:43:00.000-08:00</published><updated>2011-01-22T04:44:42.279-08:00</updated><title type='text'>Screenshot saturday</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xaWCMbSOxZ0/TTrRK2uDg4I/AAAAAAAAAAw/dWn6WNTJcII/s1600/screenshotsaturday.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://3.bp.blogspot.com/_xaWCMbSOxZ0/TTrRK2uDg4I/AAAAAAAAAAw/dWn6WNTJcII/s400/screenshotsaturday.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5564990273987249026" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-1493688336680808564?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/1493688336680808564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2011/01/screenshot-saturday.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/1493688336680808564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/1493688336680808564'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2011/01/screenshot-saturday.html' title='Screenshot saturday'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xaWCMbSOxZ0/TTrRK2uDg4I/AAAAAAAAAAw/dWn6WNTJcII/s72-c/screenshotsaturday.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-2231447111733621867</id><published>2010-12-26T07:24:00.000-08:00</published><updated>2010-12-26T07:27:01.202-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='elephantastic'/><title type='text'>Happy Noel!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xaWCMbSOxZ0/TRdelDgrB3I/AAAAAAAAAAo/b7d9R34Nnx8/s1600/noellephant.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://1.bp.blogspot.com/_xaWCMbSOxZ0/TRdelDgrB3I/AAAAAAAAAAo/b7d9R34Nnx8/s400/noellephant.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5555012656075310962" /&gt;&lt;/a&gt;&lt;div&gt;Happy Noel from the Discretion team!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Noellephant says hello.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-2231447111733621867?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/2231447111733621867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/12/happy-noel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/2231447111733621867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/2231447111733621867'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/12/happy-noel.html' title='Happy Noel!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xaWCMbSOxZ0/TRdelDgrB3I/AAAAAAAAAAo/b7d9R34Nnx8/s72-c/noellephant.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-464802457432818683</id><published>2010-12-16T07:51:00.000-08:00</published><updated>2010-12-16T08:01:36.329-08:00</updated><title type='text'>Libgdx efforts, and Chapter 1 almost feature complete!</title><content type='html'>Yesterday I did lots of tidying up of my codebase, bringing the bits I wanted to add to libgdx up to that project's standard. The end of the day saw me commit a lot of stuff - read the &lt;a href="http://www.badlogicgames.com/wordpress/?p=1365"&gt;libgdx blog&lt;/a&gt; for what I got up to.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today saw a lot more tidying up and polishing, with Chapter 1 looking almost feature complete, and a decent start to loading and saving. I'm very happy with my progress this week, and am looking forward to recruiting some beta testers in the near future.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Here's another screenshot! Look out for an introduction to the main characters soon...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_xaWCMbSOxZ0/TQo3rWFedJI/AAAAAAAAAAU/DT9i_xfLGiQ/s320/screenshot2.png" style="cursor:pointer; cursor:hand;width: 320px; height: 192px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5551310708490007698" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-464802457432818683?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/464802457432818683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/12/libgdx-efforts-and-chapter-1-almost.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/464802457432818683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/464802457432818683'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/12/libgdx-efforts-and-chapter-1-almost.html' title='Libgdx efforts, and Chapter 1 almost feature complete!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xaWCMbSOxZ0/TQo3rWFedJI/AAAAAAAAAAU/DT9i_xfLGiQ/s72-c/screenshot2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-6880603405274501129</id><published>2010-12-08T06:02:00.000-08:00</published><updated>2010-12-08T06:07:11.224-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tease'/><category scheme='http://www.blogger.com/atom/ns#' term='screenshot'/><title type='text'>Discretion's first pre-alpha screenshot</title><content type='html'>So, despite a crazy week which included getting stranded in the UK due to the bad weather, Google breaking ADT (rendering me unable to do any coding) with the latest Android release, internet outages due to our ISP and other setbacks, I've actually made some progress on the game! Enough that I'm willing to release this very pre-alpha, very basic screenshot of the main character and one of the party characters wandering around Atnar Castle. More will follow in the coming weeks.&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xaWCMbSOxZ0/TP-QnqHyDBI/AAAAAAAAAAM/-YpO52VlP_A/s1600/screenshot1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 167px;" src="http://2.bp.blogspot.com/_xaWCMbSOxZ0/TP-QnqHyDBI/AAAAAAAAAAM/-YpO52VlP_A/s320/screenshot1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5548312276939967506" /&gt;&lt;/a&gt;&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/5073718535770039792-6880603405274501129?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/6880603405274501129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/12/discretions-first-pre-alpha-screenshot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/6880603405274501129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/6880603405274501129'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/12/discretions-first-pre-alpha-screenshot.html' title='Discretion&apos;s first pre-alpha screenshot'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_xaWCMbSOxZ0/TP-QnqHyDBI/AAAAAAAAAAM/-YpO52VlP_A/s72-c/screenshot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-447595392794220054</id><published>2010-12-07T06:33:00.000-08:00</published><updated>2010-12-07T06:39:19.004-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deled'/><category scheme='http://www.blogger.com/atom/ns#' term='world'/><category scheme='http://www.blogger.com/atom/ns#' term='assets'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='editing'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Modelling with DeleD</title><content type='html'>Some thoughts on a workflow within &lt;a href="http://www.delgine.com/"&gt;DeleD&lt;/a&gt;, the world editor I'm using to build my levels with for Discretion.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Build world&lt;/div&gt;&lt;div&gt;2. Triangulate world (divide non-triangular meshes into triangles)&lt;/div&gt;&lt;div&gt;3. Apply materials and fix U/V mapping where necessary&lt;/div&gt;&lt;div&gt;4. Export&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's important to do as much modelling as possible in 1. before proceeding to the next steps, because the easiest way to ensure everything is triangulated once and only once is to select all objects then do triangulate. It's necessary to do 2. before 3. because U/V mapping a non-triangular polygon doesn't always work too well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Wavefront .obj exporter for DeleD has an extremely useful 'scale' option which allows you to model at the scale DeleD was designed to be used at instead of at real world (game) scale (mine is 1 unit = 1 meter which in DeleD is way too zoomed in). The triangulator in the exporter is broken however, so make sure you triangulate using the geometry toolbox instead.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope this helps someone!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-447595392794220054?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/447595392794220054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/12/modelling-with-deled.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/447595392794220054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/447595392794220054'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/12/modelling-with-deled.html' title='Modelling with DeleD'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-2894350647125347180</id><published>2010-11-29T04:59:00.000-08:00</published><updated>2010-11-29T05:03:38.057-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opengl floatbuffer bufferunderflowexception'/><title type='text'>Getting FloatBuffer data: BufferUnderFlowException</title><content type='html'>&lt;div&gt;When getting FloatBuffer data from a mesh, you must be sure to rewind your buffer before copying it if you already have before. I was iterating subsets of vertex data for the same mesh (I have "submeshes", which are equivalent to Wavefront .obj groups or objects) and trying to get the vertex data for each submesh for some processing, but the second iteration I was getting a BufferUnderFlowException.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It took me longer than it probably should have to realise I needed to "rewind" the buffer so I could copy the data again. To do this simply call FloatBuffer.position() with zero to set its internal position back to the start.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Of course if you need to be performant, you probably shouldn't be copying it twice anyway... :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-2894350647125347180?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/2894350647125347180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/11/getting-floatbuffer-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/2894350647125347180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/2894350647125347180'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/11/getting-floatbuffer-data.html' title='Getting FloatBuffer data: BufferUnderFlowException'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-7648111417358980832</id><published>2010-11-11T05:31:00.000-08:00</published><updated>2010-11-11T05:44:35.686-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='strings'/><category scheme='http://www.blogger.com/atom/ns#' term='memory leaks'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Java.String memory leak</title><content type='html'>Or "How I just saved myself 3 meg of precious Android heap memory".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I always glazed over whenever I came across how Strings are implemented in higher level languages. The most important advice I ever came across concerning them was "use a library that does all that string stuff for you". Of course I can make reasonable assumptions about how Java does strings:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. There's a char buffer somewhere in there storing sequences of raw characters&lt;/div&gt;&lt;div&gt;2. It probably does something clever with them along the lines of the same way I do textures&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what happened? A loader parses an entire &lt;a href="http://en.wikipedia.org/wiki/Obj"&gt;object file&lt;/a&gt; into a string, then passes a tokenized element of that string into an object as the object's name. It all seemed fine till I ran the &lt;a href="http://www.eclipse.org/mat/"&gt;Eclipse Memory Analysis Tool&lt;/a&gt;, when I found at the top of my memory usage hitlist a bit more than 3 megabytes of char data. As in, a couple of raw char[]. Full of, guess what? My entire object file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"What's happened here?", I thought, stroking my chin. A closer look at my object in the debugger (a Submesh) revealed that sure enough, its name (supposed to be something like "grp 1"), which is a String, has the entire object file in its buffer. The String object stores an offset and length into the character buffer. The garbage collector looks at the 3 meg buffer and says "well, this Submesh object here still has a reference to this sequence of data, so I can't delete it!".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The fix is trivial: construct a new string from the passed in string, which makes a new buffer and frees up the old one for the GC's unreferenced memory hit squad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought I'd post this because without running the MAT I never would have known I was leaking 3 megs of memory. It's worth checking.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-7648111417358980832?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/7648111417358980832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/11/javastring-memory-leak.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/7648111417358980832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/7648111417358980832'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/11/javastring-memory-leak.html' title='Java.String memory leak'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-2736963677010828556</id><published>2010-10-25T08:15:00.000-07:00</published><updated>2010-10-25T08:21:29.683-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d artist'/><category scheme='http://www.blogger.com/atom/ns#' term='character artist'/><category scheme='http://www.blogger.com/atom/ns#' term='rpg'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='freelance'/><title type='text'>Looking for a freelance 3D Character Artist</title><content type='html'>&lt;div&gt;3D Character Artist (Freelancer) required for Smartphone RPG project&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://redskyforge.com/"&gt;Red Sky Forge&lt;/a&gt; is a new startup developing games for Android smartphones. It currently consists of Dave Clayton, a programmer with more than 6 years of experience in software development, including experience on two released games titles (PC and PS3).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Discretion is a Role-Playing Game with a release date of Q1 2011. We require assets for the 3D game environment including 3D character models, textures and skeletal animations. As Smartphones are low to medium resolution with small amounts of memory and graphics processing power, the assets must have a low resource footprint.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The project requires the following deliverables over two milestones:&lt;/div&gt;&lt;div&gt;* 13 low-poly rigged models (10 humanoid and 3 animal)&lt;/div&gt;&lt;div&gt;* 42 textures for the models (the game characters re-use models with different textures)&lt;/div&gt;&lt;div&gt;* 17 animations&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The project deadline is January 2011.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please contact creative@redskyforge.com for the creative brief with your portfolio and relevant experience.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-2736963677010828556?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/2736963677010828556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/10/looking-for-freelance-3d-character.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/2736963677010828556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/2736963677010828556'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/10/looking-for-freelance-3d-character.html' title='Looking for a freelance 3D Character Artist'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-7114244277269814325</id><published>2010-10-25T07:53:00.000-07:00</published><updated>2010-10-25T08:21:01.366-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libgdx'/><category scheme='http://www.blogger.com/atom/ns#' term='library'/><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='md5'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><title type='text'>Discretion Development Update!</title><content type='html'>&lt;div&gt;It's only been 2 weeks since I began developing Discretion but already a lot has been done! First of all, I decided to use LibGdx as my low-level game engine. It's a nice open source Android library that's also cross-platform, which has some great productivity benefits. The project is very active and the lead developer, Mario, posts lots of extra information over on the &lt;a href="http://www.badlogicgames.com/wordpress/"&gt;Badlogic Games blog&lt;/a&gt;. The key reasons I decided to use LibGdx are:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Cross-platform: the library has multiple Java backends for Android, desktop and applet. This means you can essentially develop your app as a standalone Java desktop application, which means no more emulator! The productivity benefits are excellent: everything on the desktop is much faster to load and display so you don't waste lots of time waiting around when you could be coding the next bit of work. Developing in C++ for the PS3 taught me just how many man-hours it's possible to waste waiting around for things to build and run...&lt;/li&gt;&lt;li&gt;Skeletal animation: LibGdx loads &lt;a href="http://tfc.duke.free.fr/coding/md5-specs-en.html"&gt;MD5 files&lt;/a&gt; from the Doom 3 engine. This is a relatively modern model/animation format that allows smooth, lifelike animation to be used. It's also relatively costly. If you're interested in the guts of interpolation, quarternions and Java vs. C optimisations I recommend reading &lt;a href="http://www.badlogicgames.com/wordpress/?s=md5"&gt;Mario's posts on md5&lt;/a&gt;!&lt;/li&gt;&lt;li&gt;Music, sound and input layers: it's important in development; it's even more important for development on a startup project with a limited budget and timeline: don't reinvent the wheel. Re-use code, including that kindly made available by other devs. The main reason to use 3rd party libraries in general is so you have more time to focus on coding stuff that makes your software unique. Of course LibGdx doesn't just offer music, sound and input layers. Go read the &lt;a href="http://code.google.com/p/libgdx/"&gt;LibGDX project page&lt;/a&gt; to find out what else it does!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So I'm pretty happy with my library. But what about the code I've written myself? Have I actually done anything this past fortnight besides drink coffee and read Reddit? Well, I've probably not done anything that's interesting to the outside world. A lot of it has been working on my own framework layer sitting on top of LibGdx: a lightweight graphical user interface (a wheel reinvented but it's a wheel that turns exactly how I want it to!), game world and objects, high level animation, procedural terrain generation (for prototyping) and a start on the actual in-game menus. Although I don't have any models yet, you can equip a character with invisible weapons and armour! Fun, hey?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So far I'm very happy with my development environment. Eclipse runs nicely and besides some minor differences was a painfree transition from Visual Studio, the IDE I've been using for the past God knows how long. LibGdx's desktop backend minimises the "thumb twiddling" time, and my HTC Desire periodically shows me just how small and fiddly those buttons are on a 2.5" 800 x 480 screen... I've got an SVN repo I'm happy with and now I just need to find a&lt;a href="http://discretiongame.blogspot.com/2010/10/looking-for-freelance-3d-character.html"&gt; freelance 3D character artist&lt;/a&gt; to do my assets, and soon this ship will be well and truly sailing! Three sheets to the wind, of course!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-7114244277269814325?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/7114244277269814325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/10/discretion-development-update.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/7114244277269814325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/7114244277269814325'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/10/discretion-development-update.html' title='Discretion Development Update!'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5073718535770039792.post-740619356776935393</id><published>2010-09-11T21:29:00.000-07:00</published><updated>2010-09-11T22:54:02.215-07:00</updated><title type='text'>The Terror of Scope</title><content type='html'>I've been working on putting some game design documents together since I came away to India. At first in Manali, a week after I arrived; then here in Goa, towards the end of my trip, I picked up my pen again and opened the exercise book I'd been using to make my notes.&lt;br /&gt;&lt;br /&gt;Working on game development isn't new to me. I've worked on two titles, one at a small startup and one at a medium sized company with a respectable back catalog. Both titles made it to release and I was pleased to have worked on a variety of game development programming tasks, from AI to multiplayer, to low level script compilation and execution, to 3D animation and 2D GUI systems. I believe I'm capable of programming a game by myself.&lt;br /&gt;&lt;br /&gt;What I didn't realise, when I decided I wanted to make a Role Playing Game (RPG) for the Android Platform, was the true scope of what I was attempting. I've never worked on game design before, so when I started writing my design documents it was new, exciting territory. I enjoyed it immensely. I got to writing it up onto a private wiki. Then my partner, who is also in IT, suggested I should write a functional specification. I've done this kind of thing before too, in enterprise, and thought it was a great idea: from a functional spec, architecture is clearer, and so is the true size of your project. For those not in IT, a functional spec basically describes everything the application (the game) needs to do, in exhausting detail. It doesn't describe &lt;span style="font-weight: bold;"&gt;how &lt;/span&gt;- that's in a technical spec if you write one, or up to the programmer. But it shows you everything you need to do.&lt;br /&gt;&lt;br /&gt;So I started on my functional spec. I'm making an RPG. It started off with the basics: how gameplay flowed between the title screen, the main "roaming the world" mode, cut scenes, combat. Then it exploded.&lt;br /&gt;&lt;br /&gt;I don't mean it exploded as in, what happened when Luke fired his photon torpedoes into the Death Star's exhaust vent. I mean it got bigger; like a hungry octopus, stretching out its tentacles in every direction; like cancer. Before I knew it, I had multiple documents describing different functional parts of the game: scripting, combat, skills.&lt;br /&gt;&lt;br /&gt;A few days into this, however, I was pleased with my progress: I'd gotten huge parts of the functional spec finished, and was even precisely specifying how each episode of the game (there are nine in total) progressed. Then one day I thought it was a good time to start putting feelers out to some friends who were artists and seeing if any of them were interested in doing some 3D art for me. I'm making a 3D game, but I'm not an artist. Even if I learned how to use 3D Studio or Maya, I don't have time to make the creative stuff too. I've already realised how full my hands will be just with programming. But to get any kind of accurate quote for creative assets, I need to figure out how many I need!&lt;br /&gt;&lt;br /&gt;I start counting: first how many different "character classes" are in the game. (This doesn't include "extras" that might populate the world but not be directly involved in the story). "Kingdom Warrior", "Queen", "King". "Enemy Kingdom Captain". "Tiger". "Noble". The list expands before my eyes. I gulp.&lt;br /&gt;&lt;br /&gt;I write down which character classes could re-use the same models with a different texture. The list still ain't small: 14 models, 51 textures. Oh shit. I have difficulty sleeping that night: I really, passionately want to develop this game, more than any other game I've worked on in my life. Yet I've badly underestimated its scope. The reason there seems to be a gap in the market for RPGs on Android becomes clearer: RPGs are BIG.&lt;br /&gt;&lt;br /&gt;How many people &lt;a href="http://www.mobygames.com/game/snes/final-fantasy-iii__/credits"&gt;worked on Final Fantasy 6&lt;/a&gt;, my standard for a good RPG? The game I'm most inspired by? Almost 50. I won't be making a game with anywhere near as many gameplay hours as FF6, but still. That's scary.&lt;br /&gt;&lt;br /&gt;I still want to do this, but I've learned a valuable lesson: spec as early as you can. Derive some roadmaps estimating your project's lifespan as early as you can. Figure out a ballpark figure of how many man hours that adds up to. As early as you can.&lt;br /&gt;&lt;br /&gt;Then do it anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5073718535770039792-740619356776935393?l=discretiongame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://discretiongame.blogspot.com/feeds/740619356776935393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://discretiongame.blogspot.com/2010/09/terror-of-scope.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/740619356776935393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5073718535770039792/posts/default/740619356776935393'/><link rel='alternate' type='text/html' href='http://discretiongame.blogspot.com/2010/09/terror-of-scope.html' title='The Terror of Scope'/><author><name>Dave</name><uri>http://www.blogger.com/profile/09454202607949839421</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
