Atman Software 

Feb 2008

Confusion in the Press.

First of all let me start by saying hello. It’s been a year since I entered anything in here and I have got a lot to say.

There seems to be some confusion in the media regarding io being India’s first completely in-house developed commercial game for the PC and the Mac.

Well, there is a simple test for that.

If you have answered NO to any of those questions, then I guess my claim stands good.

Frankly, though I hate that claim and I hate quoting it. But as they say, the squeaky wheel gets the oil. I have worked on io for 6 years without ever contacting the media or hyping about a non-existent product, and that product is now complete and ready for people to purchase and download. I have spent money, through loans and personal savings to develop io. And I need to recoup all that money, meaning I need to let the world know that io exists. So, as much as I hate stating things like that, although it is true, I just got to.

Whatever the marketing material might say, I don’t create any hype for Atman or myself. We do honest work at Atman and I believe that io is a milestone when it comes to computer game development in India. And the statement that io is India’s first completely in-house developed (the audio being the only exception) commercial computer game for both the PC and the Mac is true word for word, in my humble opinion. io isn’t a great game, but I think it’s a good technical achievement for a company that has no background in game technology development and exists in a country that has no game development culture. Io isn’t the first time Atman has developed a game completely in-house, we have done this before with the Rubiks Cube simulation. Atman is a true independent game development studio and we are only getting better with each title.

In an ideal world, I would have just made the game and given it away for free, like I did with Atman’s first game, the Rubik’s cube simulation. But I am older now and I have got bills to pay, debts to clear, meaning I have got to charge for io. And this thing about being India’s first is not something that holds any value or attraction to me. I am not competing against other Indian game developers, I am trying to catch up to the best game developers elsewhere in the world, so screw being India’s first. I say that only to get the attention of people who see value in that.

Feb 2007

Thank you.

"Thank you" to all who mailed (and continue to mail) to express their concerns, well wishes and business proposals. I read all my mails, but unfortunately can’t reply to all of them.

The good news is if you haven’t heard from me, it’s because I’m busy trying to wrap up io.

The bad news is I’m redoing most of the game maps again. I’m not quite happy with the gameplay. It seems monotonous both in terms of play and scenery.

To all the publishers who had mailed, you are foremost on my mind :) and I do intend to respond ASAP. Just give me time to put together a near-final version of the game.

I have also taken down the forums temporarily, since the only thing happening in there was porn and pruning the forum on a day to day basis is not a good use of my time. I have also decided to monetize the blog with ads, for obvious reasons.

Jan 2007

Happy new year.

List of to-dos.

No dates yet, but I'm hoping to wrap up io soon. The forums are now open. Frankly, I am not very keen on running a forum. I would be very glad if someone else could handle the forum moderation. I have already had people posting porn links in there.

In other news, I had entered the IGF competition this year. Didn't make it to the finals. Was a wee bit disappointed. I believe my entry was quite premature. Well, theres a next time. Good luck to the contestants. :)

October 2006

Io game update.

There have been a lot of changes to the engine and the game in the last many months. I am going to talk about all aspects of the game here.

Io is not a AAA title; neither does it ascribe to be. It’s a simple game, with high production values, developed entirely by one man. The reason I mention that is coz, since it’s a one man development effort, the game will have its set of limitations. I do NOT want people to set high/unrealistic expectations about io.

As to a release date, I'm not sure when I will get the whole thing out. As soon as possible is what I’m trying.

Io website update.

Well, the first io related news has gone up on the site. Ever since the igf announcement, people have been hitting the web site from all over the world. I realize its disappointing to see an empty site, so there you are now.

Io is now put up on the site for the world to see. More information and screenshots should make its way (soon I hope). It’s quite difficult for me to work on the website as well as the game. When I get totally burned out by working on io the game, I work on the io the website.

Support for forums should come up soon. I don’t see any reason to have a forum unless I plan to do an open beta test, since managing and moderating a forum can be a distraction and time consuming. Currently beta testing is done by friends.

I hope to have an open beta test, to make sure that the app works well in the real world. So stay tuned.

September 2006


The music in the game is being worked on by soundrangers.

I had initially decided to contact a few Indian bands to do the music for the game. They were willing. But in the end, I decided to move to soundrangers, since these guys (soundrangers) are into professional music making for games and other media. It saves me a lot of time by just having to sit at home and listen to samples and then sent feedback. These guys have done this countless times before and I can completely trust them with what they are doing, rather than contact a band and running around after them.

They are also very affordably priced and so far interacting with them has been pretty nice.

Game Content

In the last couple of months, I have modeled the levels, remodeled the guns, gave them some animation, wrote special effects for weapons and other environmental stuff. Worked on posters for io. And of course, the engine keeps getting tweaked constantly. Every time I learn something new or figure a better way of doing things, I rewire the guts of the system. My goal is clear. I want to write quality software, the kind that can stand up to the best in the world.


The plan for now is to distribute the game for sale online directly rather than going through a publisher. I have already evaluated some of the credit card payment systems and some of them I really like.

I’m not against publishers. But I don’t have the time or the interest to sit around and negotiate, I guess. If a publisher comes along and makes an interesting proposal, I might just give in.

I’m also thinking of using Steam. But the drawback of Steam is that they do not support Macs. Meaning which I will need a payment gateway solution for the Mac, in any case.

Of course nothing is confirmed yet.

February 2006


Working on the levels now, its quite a challenge to make an interesting exciting map with secret areas and good visuals.

I have made a list of props (walls, computer equipment, girders, rails, pipes, etc. )that I can drop into the levels as I see fit.

Its been exactly a year, since work on Io got started. Last feb, the story was put together. And in March work on the character design got started. So far, the following is complete

Pending work

December 2005

Texturing redux.

The in-game models do not support mirrored textures anymore. With support for texture compression, I can actually put more detail in there rather than have the textures mirrored.

I have unwrapped the character models once again to take advantage of the pelt mapping feature in 3d max 8. The last time I unwrapped the models, it took me two weeks to plough through all of them. With the new pelt mapping tool, I had it covered in 3 days. I have always loved 3d Studio Max. Although Max 8 does have a few bugs, its worth every paisa.

The unwrapping also means that characters have to be textured once again. All the previous texture work done will now become obsolete.

November - 2005

Legal Software.

Commercial software that I use:

On the Mac, its just OS X, panther and tiger. And of course Xcode.

All of the above are legal/licensed copies.

Development wise, I have made the switch to OpenAL from DirectSound for audio, primarily for code maintenance reasons. Having the same bunch of code for both the Mac and the PC version really helps. I also find it a lot more intuitive to code for OpenAL than DirectSound.

CSS and XHTML. - web programming

I have been working on the new atman website. The new web site is 100% compliant with XHTML and CSS. Works perfectly on gecko based browsers. It took a while to break out of the frame based mindset employed in the previous website. CSS is more efficient and everything just works great on Firefox and Navigator.

Well after my stint with CSS, FireFox is what I use all the time now. Also noticed that Ad-aware has less or no spyware to detect these days thanks to FFox.

The game will not be out by December as I had hoped. It's still a long way from completion.

October - 2005


Io now runs on a Mac. The graphics, audio, timing and input subsystems are all in place on the Mac version of Io.

When I first moved to Windows, I spent a lot of time roving around MFC. Thankfully I soon discovered Win32 programming. History repeated itself when I started programming on the Mac. I spent considerable amount of time, wrapping my brains around Cocoa. What I really needed and ended up using is Carbon. Once I got settled with Carbon, things went fairly smooth.

Xcode is easy to use and is free. However for someone used to word processing on a PC, the difference in functionality of the Home, end, delete keys on the Mac can be frustrating. Especially with thousands of lines of code. However there’s a nice little utility that kind of fixes the problem. It’s called DoubleCommand.

The most frustrating thing about programming on the Mac is the lack of documentation. I ended up buying a Rs.2000 ($40) book on Cocoa by Aaron Hillegass (The only Mac book I could find) only to realize a week later that I needed to learn Carbon. Although not an apple to apple comparison, it is safe to say that what Win32 is to MFC, Carbon is to Cocoa on the Mac.

Thanks to O’reillys digital library, I figured out Carbon programming. I have also got to mention Brian Greenstone’s nice book on Mac game programming. Read it after you try Carbon.

I tried getting a development machine from Apple. They obviously refused. Instead they sent two sales executives over through one of their partners here. Anyway, I went and got myself a Mac mini, the most affordable Mac.

The only downside to the Mac Mini is that it’s got a Radeon 9200 Video card, which has no support for ARB_FP1. So I perform my programming in two steps. I write all the code and test game play and other aspects on the Mini. I then take it to the nearest Apple showroom to test the graphics of the game. Note bugs, bring it back, correct the code and take it back again. (So, if you see a spectacled big shabby guy with an equally scruffy beard hunched in front of the Mac or having an animated discussion with one of the store employees at the Mac store in the Forum, don’t be a stranger. :)

The final product will not run on the Mac mini due to the video card. However it will run on all later models of the Mac running OS X, Tiger.

September - 2005

Home alone

I am back to being alone at atman.

The last modeler, Chung wah tham, left in July (went to look after his home run business). Then there was also the atman internee, Ashish Avin, who had a 3 month stint at atman.

Ashish and Chung are the only ones to have made some positive contribution to the game. (Chung is responsible for all the monster designs, although he never completed the monster models or designed the levels, which was part of our deal. I ended up cleaning and fixing the models and unwrapping them).

Ashish on the other hand was learning the different tools and techniques of whatever trade we had going on around here. As an internee he also contributed by texturing the monster models.

So I’m sincerely grateful to the both of them and also glad at being back alone, because I get a lot more work done when I don’t have to correct other people, provide feedback and generally manage stuff.

And No, I do not intend to hire anyone for the rest of the project.

July - 2005


Completed work

Pending work

March - 2005


Atmans next game now has a plot. It’s titled Io for now. I spent the whole of last month researching an interesting game plot. Settled with a sci-fi story based inside a spaceship. As to when it will be complete, not really sure. Aiming for a Christmas release. Haven’t written a single line of code last month.

Up until February, I was moving towards a multiplayer oriented game due to the lack of skilled people to work with. A multiplayer Quake 3 style game doesn’t demand a storyline or much in the way of story oriented maps and different character models. One model with different textures would suffice. Although all that was not a direction I liked a lot, it seemed like the only way to get a game out.

I threw all that out of the window in Feb. Glad I did. We are now focused on making a short game with a nice story and interesting characters. Lots of work ahead.

Feb 2005

Fire & Hire

The current guy at atman is being let go. Almost everyday with this guy was painful and I am more than happy to see him go with a full months pay in advance.

Ever since I decided to ask him to leave, I have been on the look out and through a common acquaintance, managed to find a guy who is keen on working at atman.

November - 2004

Skeletal animation.

I went ahead and rewrote the entire skeletal animation system. It’s a lot cleaner now.

Skeletal animation in games is as old as Half-life. The nice advantage of using skeletal animation over vertex animation is that it’s easy to programmatically control the character. Say, if you want the character to bend and look down, in-game; all you have to do is rotate the torso bone how many ever degrees and the mesh attached to that bone rotates accordingly. The skeletal bone structure is represented as a tree in the engine with the translation-rotation calculations cascading down to the child. As for translation-rotation, all internal calculations are handled using quaternions with the final result stored into a matrix.

The engine supports multi-frequency animation sequences for various body parts on the same character. i.e. the torso can be animated at 15Hz while the lower body can be animated at say 24Hz.

Player skeleton is actually broken down into 3 animatable groups, the head, torso and the lowerbody. The artist can now attach a single mesh or multimesh character to the skeleton and have it animated at various frequencies. The engine will take care of the real-time morphing and blending of animations.

I use 3ds max for animation and modeling. The characters are hand animated using Bones. The next iteration of the animation tools (read next game) will use Biped. The animation data is extracted out of max using in-house plug-ins developed in MaxScript, and plopped into the engine. I find myself wasting a lot of time in MaxScript thanks to its horrendous documentation.

The mesh that goes with the skeleton can be changed in-game. You could have multiple characters all using the same skeleton if you so wish. The animation for the guns is actually a bone animation which is part of the character skeleton. As the player switches guns, different gun mesh/models are replaced/attached to that bone.

All skinning is done on the CPU.

Character models use mirrored textures. There was a slight hiccup using mirrored textures with the lighting io has in place. Basically the lighting gets all inverted due to the normal maps computed for the other half of the mesh. To solve that I just flip the tangent space normal, if the tangent space normal and the triangles’ normal do not face the same direction. This is computed just once and is performed during load time.

Edit: (June 2006). I have now dropped support for mirrored textures. The entire character texture is now unique. With support for compressed textures built in, I dont really see any point going through the ruckus of mirroring and the entire light-related-special-case code that it deserves. I am also glad that characters in the game can now look asymmetrical and unique at various angles.

New modeler found.

Got a new modeler. This guy responded to the posters. His work is not the kind of talent I’m looking for, but he’s a lot better than the last guy. I am quite excited. Well. I get excited everytime there is someone around to assist.

I’m looking for a certain kind of talent, a certain kind of ethic, a certain kind of attitude in the guy I work with. Because Atman is really small, and since we will be in each others face the whole day, it matters to me.

The guys who usually come to atman, are the ones who can’t seem to find a job elsewhere or have lost jobs multiple times. Meaning, they wouldn’t take up the job at atman if they had a choice. :D

I don’t blame them. Everybody wants a plush office, nice location, lots of money, a company with a big name and big clients, a company with a lot of employees, job perks, etc...

Atman has none of that. In contrast, you get a plastic chair, one old computer, shitty location, and zero people to talk to, unless I’m in the mood to talk. To be honest I just can’t tolerate arrogant fools and therefore be very difficult to work with. The kind of arrogance these half baked so called modelers project can really get my goat.

Hopefully, once the game is done and atman gets some recognition, I can perhaps attract good talent.

October 2004

Artist wanted

Went all around town putting up artist wanted posters. It was a mistake printing 100 posters. Many of the cafes, shopping malls, restaurants don’t put up job related posters. So although, I went all around town, I could only manage to put up posters in 2 or 3 places, the rest I had to hand out to people on the streets, stick on trees, elevator doors and whatnot. So now here I am, with a lot of posters and no takers. What a waste.

On the other hand, I wish I didn’t need an artist, that I could just do it all myself. The last guy I had, left last month after being around for almost 2 months. He couldn’t handle it. I was quite upset when he left, coz I lost money on him (Rs.15k). I was teaching him and paying him as well. I don’t fault him. I should have been more thrifty and cautious as an employer.

August - 2004


People ask me why I use pirated software if I am against piracy.

I am going to state my stance on piracy pretty clearly here. My attitude towards piracy is I make sure I purchase a legitimate copy if I have in anyway benefited from the illegal version of the software. I don’t pirate games, since I can live without them and if I can help it, avoid pirated music and movies. I own legal versions of pirated games that I once played.

Pirated software I currently use are Windows XP, 3ds Max, Photoshop and Visual C++ 6. And I am saving up to get the legal licensed versions.

Piracy is the only way a cash strapped individual like me can learn Windows software, that doesn’t mean I pirate casually and without remorse. I clearly stay away from frills.

I dislike the attitude that some of us reflect towards software. I see people trying to gain an edge over one another over the VERSION of 3ds max, Photoshop or Windows that they have installed on their machines. Statements like "Oh! You still stuck with Photoshop 6? I use Photoshop 8" are not uncommon, and these by folks who cant tell between RGB mode and index mode.

The difference is in the principle.

March - 2004


I finally left my job. It’s been almost 2 years.

Bought a Compaq Presario Notebook. Not really happy about the built-in video card. But hey, beggars can’t be choosers.

I don’t think I will be taking up another full-time job until I finish the game.

August - 2003


Over the last two months I have implemented support for quaternions and the skeletal animation framework is now complete. Now the artist can setup a character with bones in 3ds max and our plug-in will export it correctly to the game. I haven’t included support for Biped using Maxscript. There were enough problems trying to get it to work right in the code. In the end I just stuck with bones as it does exactly what I want.

As for my real life job, it takes up a lot of my time. The nights I get now at atman are mostly spent honing my modeling and animating skills.

May - 2003

Note to self: Got to work harder.

Went in for a job interview at a company called think3. Didn’t get the job. The job post was for a 3D/opengl programmer. Out of the many questions they asked I couldn’t answer two very obvious concepts on vectors and I feel really ashamed about it.

February - 2003

nvidia Cg

Have been playing around with NVIDIA’s Cg. It’s just plain simpler to try out new ideas in a high level language. Coming from the Rubik’s cube project, where all the normals for any given surface were generated and interpolated for per-pixel lighting, I did have a hard time, figuring out per-pixel lighting under OpenGL.

January - 2003

3ds Max

Fooling around with 3ds Max.

August - 2002

Software Rendering and Maxscript

The last couple of months were spent writing a software based renderer. It’s now possible to render perspectively textured 3d objects that get clipped correctly in software. The whole thing was an exercise in implementing the 3d rasterization pipeline. Things were different with the last project. With the cube, the engine could not perform clipping or texturing. Along the way, also figured out how to use Maxscript for authoring tools, and Max for modeling.

Instead of writing separate tools for the game, I intend to use Maxscript to export the levels, light and texture information required for the game. I find myself wasting a lot of time due to lack of proper documentation. Maxscript particularly in that regard.

There were some real hair-tearing moments along the way of course. But, thanks to Mr. Chris Hecker and the Hearn & baker, and Foley & Van dam books, I have managed to pull it through. Aspiring 3D programmer’s owe it to themselves to write a complete software based 3D renderer to understand the concept well.

As of last month, I’m back at my previous job. Not quite sure how long I intend to stay this time. Nevertheless, the past couple of months have been very enlightening.

February - 2002


Well, my mother has proposed to partially fund my current game development. It’s interesting how things work out. It all took off when my brothers’ computer teacher called in to speak to her about my work on the Rubik’s cube.

Most of that money will go towards buying software and hardware. As of now, most software (Windows, VC 6, 3ds Max, Photoshop, quake3) on my machine is pirated. That is not a fact that I am proud of. Neither do I advocate piracy. I use these software with the full intention of legally procuring them as soon as I can.

In other news, I quit my job last month and have saved enough to get me going for the next couple of months. I intend to spend time writing a complete software renderer. This is going to end up as a pure academic thing, modern day games dont really require software rendering anymore.

January - 2002

Down side, Up side

Most people look down on you if you tell them you try to write games for a living. You get the occasional look of incredulity, but mostly its just disdain. People would expect a 22 year old to be more serious with his/her life than to write/make/develop computer games.

3D game programming is one of those unique fields in computer science where disciplines from various fields converge. You have things like analytical geometry, physics, artificial intelligence, computer systems programming and networking among other things (audio, anti-piracy issues) all of which make a modern day computer game.

When I see people my age in the computing field of work, breaking out into the software industry, doing well and making money, it pricks me a little about the wisdom in being at atman software.

On the other hand, the software industry that exists in India is really not my thing. I dislike it when the media makes out India to be some sort of software powerhouse. All that I see around is a lot of software services companies writing shit class software and the media hyping it out of normalcy.

In any case, companies like Patni, Infosys and many others deserve merit for whatever they have achieved in their fields despite being in India. They have my admiration and respect for that. And of course, I am sure that programmers worthy of that title exist in the country. But I believe the signal to noise ratio is very low.

Eventually, as economies and societies develop, all of this will change. I like to think that in my own little fantastical world that Atman will be part of the factor that brings about that change.

To me Atman software is not about software services. I am no expert at programming, but I want to be. I want to write good/clean/tight software and atman is where I get to do all that. Atman is my way of fighting back the fucking skeletons of society. It’s my attempt at changing the world.

Oh well, I’m feeling much better already.

December - 2001

Random Thoughts

I have been dabbling in VC++, opengl and directX. Windows programming is new to me.

The next game should be simple and story oriented. Thinking something along the lines of "Dangerous-Dave" kind of simplicity. The game will be a side-scroller in order to keep things simple and multiple man-power dependency low. I am counting on novelty as a way to catch some attention rather than write an FPS game in an already crowded FPS market. To write an FPS game that will make heads turn requires man-effort and talent that I just don’t have access to.

A 3D side scrolling engine, with support for sprites have been implemented. The scrolling and character animation is fluid enough, but something is amiss.

Following are some directions I plan to take with atman’s next game. None of this is set in stone.

Not quite sure whether writing a quasi-3D, side-scroller game is a move in the right direction. Unlike the cube, I intend to make some money out of this game.

Since August, I have been at a new job. Its ~15 minutes from where I stay and I like the work. As usual all this is nothing but means to an end.

August - 2001

The Rubik’s cube game - Development synopsis.

Around the time Atman got started, I was experimenting a lot with VGA. The game I had in mind was a 2D side-scroller with a peanut as the protagonist titled “Peter the Legume.” It was a cute little thing and it did look good.

However, to complete the game I would have needed committed artists, music and sound effects. Sound and music implied that I purchase an audio library capable of performing across all those DOS based audio cards. All this seemed overwhelming and was soon shelved. Instead I decided to write a simulation on the Rubik’s cube, because I could do it alone, didn’t need a story, music or a rocket launcher and therefore fit my budget well.

Work on CODA - the Rubik’s cube started around February 2000. The goals were

Development on DOS sounded strange even in 2000, when the rest of the world had already moved to Windows. DOS, primarily because of the programming challenge. Making money out of the game was not the intention anyway. The project was also supposed to be my last DOS program.

The game was written primarily in C++, with some assembly code. The DOS graphics library/engine could switch video modes, plot pixels, draw lines, draw shaded polygons, perform 3D projections, perform visible surface determination and also support per-pixel lighting.

The game runs on Mode X for two reasons. 256 colors and a 1:1 aspect ratio. Per-pixel lighting demanded more colors. And the Rubik’s cube being a cube demanded a square aspect ratio.

In between atman got an artist named Paul. I could only offer him the bus fare, and the opportunity to learn new things in return for working at atman. He was around for a week, then he got a job at weekenders and left. I liked Paul. He was talented and nice to work with.

Money is always an issue. At that point I was giving tuitions and performing other odd jobs to keep the project alive. When things got really bad, I took up a job at Citicorp and for the next 7-8 months development had almost come to a halt. However, time lost was replaced with money gained. I bought network cards, a 17” display, a CD-writer and had substantial savings for the next 7 months. I quit the job in Feb 2001.

By around March, I met Ryan who was very keen on joining atman. I could never really hire anybody. Ryan worked on the interface and the logo, while I did all the programming and directed the art. I distinctly knew the tone and appearance I wanted for the game and the atman logo. Frankie too came towards the end of the project and did some work on the HTML manual. Ryan did a pretty good job with the logo and the game interface; although I was getting increasingly irritated by the way I had to prod both of them to work.

When the game got completed, I went around town for a sponsor to host a site for the game. I went to companies that were involved with graphics. The sponsor thing didn’t work out, instead educed job offers.

The last impediment came in the form of Seven Towns, copyright holders of the Rubiks cube. They were initially apprehensive about us posting the cube online. However after explaining that the software was freeware, they finally grant permission.

The game and the site were launched on the 5th of July 2001.


This is a personal weblog and as such, the opinions expressed here represent my own, and not those of Atman. In addition, my opinions change from time to time which I consider a natural consequence of reasoning. Neither am I obligated to maintain this weblog.

The purpose of this weblog is to enlighten the reader with the various occurrences at Atman, things that I have learnt and my own personal experiences. The weblog also expresses various ideas and opinions I might hold, and as mentioned earlier, an opinion that I held in the past, may not be the same or similar to what I hold today.

This weblog does contain offensive language, not because it has to, but because I do not wish to be anymore diplomatic than I actually am.

Nothing that I say in this blog necessarily indicate intentions, plans or strategies that Atman might follow or make.

In short, my opinions are merely MY opinions and I take full responsibility and ownership for everything mentioned in this blog.