New screens of the Doofus 3D Game.

Update: Doofus Longears – Get ’em Gems has been released and can be found on

Whew, finally found some time to update the blog. I have been frantically working on putting final polish to the game, business related activities, tweaking graphics, ironing out small glitches in gameplay, play-testing levels, and the list goes on!

My major headache was the background. There were a lot of people who had complained about the background not being up to the mark. So I decided to paint a brand new background from scratch. It was a hell of a lot difficult though. Doofus 3D being a cartoon game, I wanted to have a flamboyant background (, rich and colorful with a distinct cartoon touch). However it’s not quite that simple, it’s not as easy as firing up good ol’ GIMP and just having a go at painting any ordinary scene. Since you are painting for a sky-box you really have to be a lot more careful and lot more sensitive about how to handle depth in your scene, plus you have to paint for a full panoramic view. A lot of experimentation went into this one, believe me! Lot’s of hits and misses later, and after studing some other skyboxes this is what I ended up with.

As you can see the background is a whole lot better than the muddy dingy background from the screenshots of the previous beta. Plus there is something more. Yes, the first pictures of new characters. More later 😉 .

Two great books from NVIDIA

NVIDIA released 2 great books (free) very recently which are a must for anyone who tinkers with graphics and specifically with shaders. First one is the GPU Gems book, which I happen to have as a h/c (, long before it was released). It’s such an invaluable resource of tricks that are still very much valid to this day. I would recommend this to anyone and everyone who wants to get their hands dirty with graphics. Then yesterday  The Cg tutorial was released. I haven’t got a h/c version of the book as I pretty much have a good hand at HLSL and both (HLSL and Cg) are essentially the same. I read thorugh the book and was equally impressed with it. So if you haven’t already read them, I would strongly recommend taking a good hard look at both.

EDIT [13th May, 2008]: Another one released today. GPU Gems 2.

Hardy is here.

UbuntuUbuntu 8.04, code name Hardy Heron was released 2 days ago and since my internet machine has nothing better to do while I finish up the game, I went for a full system upgrade right away. Ubuntu does go from strength to strength with each release of the OS and the story with Hardy is no different. I have been using Gutsy for the past 6 months now and with the release of Hardy, I think XP is in serious danger of losing it’s number one spot in my list of preferred OSes. I just don’t boot into XP these days on my internet PC and my reservations on Vista are well known. Ubuntu at the moment is all you could want from an OS, though some nagging issues clearly remain. I however do use XP for all my programming stuff, unfortunately that’s where the bulk of the gaming market is. I however do plan to release the Doofus game for Linux once I release a Windows version.

I have praised Ubuntu before on this blog, but it is funny how Canonical has consistently managed to do a good job and stick to it’s motto of providing a simple and yet promising Linux distribution that even a common, or should I say a non tech savvy person could use. They have successfully managed to change the “Linux is for Geeks” attitude into something people can look and use in their everyday lives. Lets be fair, there are others that are fast catching up and can be considered equally impressive, yet Ubuntu has managed to stay ahead of the curve, just that little bit. It’s just those small things and annoyances that Ubuntu has managed to address successfully that has led to it’s popularity. Some people would argue that Ubuntu could not have stood so tall if it weren’t standing on shoulders of teams like Fedora SUSE and of course Debian, and without whose support and work Ubuntu could not have been possible. Yes, thats indeed true. However, Ubuntu has made a difference by actually using and in some cases integrating the great work done by all these teams and putting together a strong stable distro which could easily be considered as the best of the Linux distros out there.

Little things go a long way. Many people have heard about Linux, probably more than you might think. However, very few have actually used it. Why? It’s a headache to partition your disks and actually have a Linux partition. A average-joe user dreads things like that. Walk in Wubi! Now some might say having Linux on an NTFS partition is not something new. It could be done with several other distros long before Ubuntu was around, but how many of the other distros allow this to be done with a simple few clicks? I threw in the Ubuntu CD in the drive under XP and the first thing that popped up was the Wubi installer. I could install an entire Linux distro in about 4-5 clicks and a couple of restarts of the machine. I am a long time Linux user, but even I was surprised how trivial it was to install Linux with Wubi. Now I wouldn’t recommend using Wubi for the experienced user, however this option is rather cool for a person who has never seen or used Linux before..

However, not every aspect of the distro is flawless. There are some issues that still need work. It may not be all the distro’s fault either. Somethings are still a miss with the community as a whole. Technical issues like sound and WiFi are the ones that comes to mind. There are some issues there that need to be sorted out. Needless to say such issues are no doubt small and Ubuntu has address a lot of them with Hardy. The only real complaint I have is, I still can’t seem to get my front headphone jack to work, not with Gutsy and not with Hardy. But I guess this is some weired ALSA problem. Fortunately the NVIDIA driver is doing a fine job. I remember there was a time when h/w vendors didn’t seem too interested with Linux but I must say things are changing for the better. It wasn’t that long ago, when you couldn’t find a decent driver for your graphics card, now most leading distros come bundled with one.

As a parting note, a few suggestions on download and upgrade. I would recommend using bittorrent since  found it far faster than using the overloaded Ubuntu servers. The CD ISOs can be found on all mirrors. Try this link if you want DVD ISO torrents. Also remember if you are upgrading from a CD use the “alternate” version of the install ISO. It is best to use the Update manager to do an upgrade of the OS, it’s the safest method. If you have downloaded the alternate version of the ISO, you can update without having to actually burn a CD ROM. Linux can directly mount ISOs and you don’t need any special software to do that. Make a directory under /mnt called “isocdrom” and use the command

sudo mount -o loop -t iso9660 ubuntu-8.04-alternate-i386.iso /mnt/isocdrom/

to mount the ISO directly. Then use the command

sudo /mnt/isocdrom/cdromupgrade

to start the upgrade and follow the instructions. Remember to use the full path “/mnt/isocdrom/cdromupgrade” while starting the upgrade.

Too busy to write?

Sorry, but I have been a little busy for the past two weeks. Too busy to blog I guess. I have been aiming for a code freeze on the Doofus game and it’s been hard work getting all the bugs and issues in. I’m going for the final push this time around to get at least the coding issues out of the way. The good thing is there isn’t too much left on the coding side, so I may be able to push out another beta by next week. Hopefully it will be the last and final beta before (; wait, don’t get your hopes up) at least one release candidate before Doofus goes gold. I guess there are still a sizable amount to levels to be completed.

Unlike release cycles of other software, Doofus game release cycles are a little bit different. I devised a new method after we initially found the old method to be rather monolithic for this particular project, and because of obvious constraints we have as a small team (unavailability of testers at specific times and things of that nature). Traditionally, you have a set of alpha releases of a product where each alpha release is tested in-house by both the developers and/or testers. Bugs are filed for specific releases and fixed during bug-fixing stage, whenever that maybe (, generally differs from project to project). Beta releases are pushed out when alpha releases get stable enough for “general consumption”. Beta releases are generally widely accepted as “almost complete” versions of the product. So a beta release often signifies a “feature-freeze” of the product. A bug fixed beta release can become a Release Candidate if the dev team feels confident enough which eventually turns Gold when everyone is confident enough.

In the case of the Doofus game, things are a little bit different. A beta release signifies a “feature freeze” for “a particular set of” features. Let me explain. When we started developing the game, the O2 Engine was the first to come (, before we started on the actual game code). The name “O2 engine” comes from the repository branch of my older game that was never released because it had too many flaws! I guess a lot was carried over including primitive libraries and some design decisions and implementations. Anyways, since the new project was a bit complex and our testing team small and working part-time, we decided to have specific release milestones having only limited set of completely complete features. When I say completely complete I mean “feature frozen”. Each beta release addressed different features. The first was for engine integration with geometry. The level structure was finalized and resource management was put in place. The first release looked really ugly because the renderer was partially finished.

The second beta addressed collision systems, basic gameplay things like triggers activators and integrations with third-party modules and libraries. The third was for rendering sub-systems, when those screenshots were posted. This release, the fourth, will be for AI (NPC) and Physics and that marks the end of the game features. The beta still has to go through a bug fixing stage before I am confident enough to even look at a RC, but it does mark and end to any major code modifications to the game code. Many would say the betas are actually alphas, but there are 2 reasons I call them beta releases. a) They are feature freeze releases. No features are added or removed to the already tested features. b) Our testers are no full-fledged project member so white-box testing responsibility falls on the dev team, mostly. That said, the beta testers are not just kids beating at the keyboard and have been instrumental in testing the product.

I guess this release has got me a bit exited, and I am working on the website/s at the same time. I have actually started on quite a few blog posts in the past week, but haven’t had the time to polish and/or finish them yet. Maybe this week will see more posts on the blog, I hope.

No more T-Junctions.

I must confess, my original post on optimization of game levels was, well, incomplete and inaccurate. Optimizations were not fully complete. There were a lot of T-Junctions that were left behind after optimization (, Sandeep was probably the only person to catch that). However, I managed to remove those too. They were causing a lot of problems with A* navigation and I am glad they are gone! So here are the updated screens. Some extra level geometry has been added so the screens might not look exactly the same as the earlier post.


The updated scene (Doofus 3D).


T-Junctions removed.

Optimizations on game levels.

Just an update on the Doofus game and on what I have been working on for the past couple of weeks. The past couple of weeks have seen me seriously working at getting the triangle count down in the game levels. The tri count had been increasing steadily for the last few levels and it just started hitting on the FPS value real bad. That is why I had no option but to go for Triangle decimation. The amount of triangles for even moderately complex levels started turning out to be surprisingly high and most triangles were all but useless. The reason; Doofus 3D levels use brush based geometry and the tris are a result of successive CSG (Constructive Solid Geometry) splits. The more detail I added to the levels, the more redundant splits occurred with the brushes. Meaning the FPS started falling like a rock for arbitrarily complex levels.

The optimization technique I was working on reduces the number of triangles by a) Removing redundant vertices and b) Collapsing unwanted edges. Simple right, not quite. Triangle decimation turned out to be somewhat more complex than I had anticipated. Fortunately and after some real hard brainstorming I managed to get it working just as I wanted it to. Now in some situations the triangle count reduces to as much as 4%. But an average value of around 10 to 20 % is what I usually get. That is also quite significant to say the least. Thank God my effort has not been in vain after all. It was a real pain to get that working correctly. Check out the images below to actually see the optimizations at work.

Original scene.
A smaple Doofus 3D scene

Triangles in the unoptimized version (click to enlarge)
Triangles in the scene before optimization.

Triangles in the optimized version (click to enlarge)
Triangles in the same scene after optimization.

I have also been working on completing the AI. Sorry but I don’t have screens for those, maybe the next time. The AI still needs some amount of tweaking to get things working perfectly. I am not saying too much at this point in time; maybe in one of my next posts I will get into more details. Hopefully I can finish this last pending thing in the game soon.

The showdown! vs OOXML.

It’s no secret Microsoft has been pushing for it’s Office Open XML (OOXML) standard with the International Organization for Standardization (ISO) for quite sometime now, some might say against the already standardized Open Document Format (ODF) used by It would seem MS is trying for a final push at it at the ballot resolution meeting this Februrary. I must admit this topic is not new and I had earlier refrained from commenting on this topic, since there are already too many blogs that have similar content and for a fact that I hate to be on any one side of the fence. The reason given by Microsoft over it’s rival seems to be that OOXML is more application friendly than ODF and more importantly far more compatible with legacy Microsoft Office formats. The argument put forth by Microsoft is, “There could be more than one XML standard and more than one document format in the market.” Yes there could be, but then again why does Microsoft want it’s format standardized? The fact is users (, like you and me) couldn’t care less what the internals of XML formats are made up of as long as they get the work done. They could just be happy with the OOXML format used by Office 2007 or, for the “poor” people (, like me) who can’t obviously afford MS Office, can be happy with So why push for standardization now when MS Office suites already use and do a pretty good job with proprietary formats, and MS already has 90% of the market?

MS vs OSS battle is nothing new and this just adds more to what has already become a endless debate. However, I like to look at this from a neutral position, someone who is sitting on the fence and not on any one side. To me the reasons given by Microsoft for standardization of the OOXML seem downright selfish. The OOXML format is clearly tailored for Microsoft products and interoperability with MS Office packages. It doesn’t take into account any other vendors or Office suites. People have often said that the OOXML specification is more complex. For products other than the MS line, OOXML is more difficult to adhere to accurately. There is even some talk about the OOXML format bring encumbered with patents which might not allow it’s adoption in any OSS products without infringement of some sort. This to me looks like typical market muscling by Microsoft. It’s argument over ODF holds little ground, even though it’s Office products are far superior to or any of it’s other competitors.

It would seem that this post is more about bashing Microsoft, but it is not. Standardization is a complex process that requires serious thought. The very definition of the term means party and vendor neutral standards, which the OOXML format fails to address. It may be true that the format is superior (, I don’t really know or care for that matter) to ODF, but should it be made a standard? You can guess the answer to that one yourself!

Nokia taking over Trolltech/Qt.

In some interesting news, at least for cross-platform and Open-Source developers and particularly to Linux-KDE enthusiasts, Trolltech was acquired by Nokia. I have worked on 2 projects using Qt, but I generally find favour with wxWidgets since I find the moc-compiler thingie to be too much of a compile burden when it comes to complex UI, not to mention the really suspicious licenses for Qt. However that is besides the point. The question to ask is what does Nokia gain with having a framework like Qt under it’s belt? Very clearly Nokia is interested in Qtopia. I first remember reading about it 2 years ago when I was still working with Qt, and it looked pretty impressive at that time. It seems to be have all the bells and whistles for serious mobile development. However, the thing that bothers me is the future of the toolkit/framework in general and all the projects using Qt. Where does Nokia take the toolkit from here? Nokia isn’t a company that licenses toolkits or frameworks. So that is a question one is obviously tempted to ask. My strong suspicion is that fact that Nokia is feeling the pressure from platforms like Windows Mobile and iPhone, and if they want to have at least some semblance of a development environment over these obviously more developer friendly platforms, Qt was the obvious choice. But that still leaves me with one more question; Why aquire Trolltech when you could just use, well, the Qt framework?

In the above linked article they mention that they intend to continue working with the OSS community and intend to port Qt to their mobile devices. That is smart. It would obviously mean a myriad of already existing and upcoming Open-Source applications for Nokia devices at no cost. In any case, KDE itself is quite secure, no need to worry there, but the thing that strikes me as odd is the fact that most Nokia Linux devices (, and I myself didn’t know this until I read this), use Gnome and might well, continue to do so.

Is there a server in the house!!?!!

It would seem, when all else fails you load a crap OS on to a super expensive machine and start marketing them as servers to kids and moms! I am talking about, well, Windows Home Server. Now Microsoft is all set to make children understand the Stay-At-Home Server by using a children’s book. Yes you heard it right! OK hold a sec there, back up a bit. First of all, can someone please explain me this whole concept of a home server? What is a home server and what exactly will it do or rather what extra functionality is it going to provide that is not already provided by the good o’l desktop. I was reading through the features list, and what a bunch of b**l s**t. A server for backup and photo sharing! You could do that with your lap and desktops as well, and yeah automatically too. They even go on to imply it could be used as a web-server. The last time I checked home internet plans explicitly forbid the use of their IPs for web servers. Oh yeah, on the same page, please read the disclaimers in small print. “Please contact your broadband service provider”, yeah right! It’s not Microsoft’s problem it’s the service provider’s problem. Wonder why the service providers are so paranoid about security? Maybe because it could be used for all illegal stuff, but hey, that’s just the service provider’s problem.

Ports, IP addresses, service providers, TOCs, subnets, DNS servers, name resolvers, firewalls, web-servers, hand-shakes, packet-fragmentation, VoIPs, streaming media. Kids, wasn’t this all taught in kindergarten to you. Hmm… maybe it should be, then you can be CCIEs by the time you graduate.

New year wishes and a look at the year gone by.

First of all, a “Very Happy New Year” to all.

Just to highlight some interesting news and events that happened the year gone by, plus my own experiences.

  • Games:
    1. It was probably the game of the year (, at least as far as I am concerned), I am talking about Bioshock. Enjoyed playing it even though not on my PC and I still haven’t completed it. Truly amazing graphics and a new twist to FPS style of play.
    2. The Elder Scrolls VI: Oblivion, this game didn’t come in first place because it was not launched this year, but the last. It is here since I could only manage to play and complete the game this year. Played this game along with the Shivering Isles and Knights of the nine expansions for like more than 5 months 😛 starting July, and I must say I have come to thoroughly enjoy the sandbox style gameplay the game offers. Don’t be surprised if I start getting crazy ideas of creating games like this in 2008 😉 .
    3. Just when we thought nothing could tax the 8800, Crysis hit! The game takes away the best visual graphics award of 2007. Amazing eye candy and surely the sign of things to come, though I am not sure about the overall gameplay.
    4. A couple of other interesting games as well like GOW 2 and Gears of War, but didn’t get my hands on them as yet.
  • Programming and Development:
    1. Biggest disappointment was the postponement of OpenGL 3.0 specs. I was hoping to see at least something concrete on this, but to no avail. I hope 2008 will give us more to look forward to.
    2. 2007 saw the release of Visual Studio 2008 and it’s Express editions. Not too much to complain or praise there. .NET 3.5 was released along with the studio versions.
    3. While major releases were few and far between, minor releases like Cg 2.0 and Silverlight dominated most of the programming and development news.
  • Personal projects:
    1. Biggest miss was not being able to launch Doofus 3D. Period! The game was stated to release October/November but inevitable delays and project pressures resulted in the game not being shipped. This has been the biggest disappointment from my side.
    2. The project is however still on track and baring time delays the product and the engine has become stable and looks more and more like a very solid platform for future projects. Most (almost all) of my ideas (some reallly crazy ones too) have thankfully worked!
    3. My RnD on scripting engine integrations has yielded good results. I remember my promise, will update the blog with some statistical data on this, just tied up with project pressures for now. On the whole RnD this year from my side was lower then what it was last year.
    4. Got a new website this year, migrated the blog and also have one lined up for the game release.
  • Hardware:
    1. The year belonged to NVIDIA and the 8800 has pretty much dominated the graphics scene unchallenged for most of 2007. There was a feeble attempt by AMD(/ATI) at the end of the year but the HD 3870 and 3850 have been plagued with shipping problems, though they have shown impressive figure and amazing value for money considering the price point. However, I expect the green brigade to counter that since they are already well ahead in the race to do so.
    2. The next was Intel which has successfully managed to run the competition (AMD) to the ground with it’s chips, the Core 2s, pretty much dominating the market. The Phenoms are here but still have to prove themselves. It’s safe to say Intel ruled 2007.
  • Operating Systems:
    1. I have done enough Vista bashing on this blog already, so no more! My sentiments however remain unchanged regarding the OS. 2007 has been particularly bad for Vista, the OS was given flak on a lot of articles on the web. My recommendation; give the OS a skip for the time and use XP and/or…
    2. Ubuntu 7.10 code named Gutsy Gibbon (released 2007) has been a revelation for me. I have been using this OS for a month now on my internet PC and I am more than happy with it. True there are some quirks that remain but Ubuntu is great OS for, well, everyone and anyone. I recommend this OS hands down!
  • Misc News:
    1. India wins the 20-20 world cup 2007.

New year resolution:

Release Doofus 3D.

A lot of plans in mind, but more on that later.