Sunday, May 10, 2009

Adrian v1.0 RELEASED!

At last I ironed out the bugs in the 1.0 branch and was able to release Adrian both for Windows and Linux. You can download the Linux version or the Pre-Compiled Windows Version.

Hope you guys enjoy the game. Do report any bugs you find here.

Source code is licensed under GPLv3 and the SVN repository is located here.

Here are some screenshots from the game (scaling them reduced the quality here)





New Model Loader

One of the sore points of the original game was that buildings attributes were handcoded. This was a very tedious effort. Also not to mention the results were not too appealing always, and the visual complexity of the objects was exceedingly little. But now by leveraging a third party Model loader, the loading of almost all formats has become a simple cake walk.

Thanks to ASSIMP, hosted at http://assimp.sourceforge.net/, we were able to load not just MD2, but even open source models like Collada etc. This has opened up a whole new array of resources for us. Also it lets us do away with the current MD2 loader which is pretty brittle. Even Skeleton animation can be included too if required.

However, Release 1.0 will be shipped without this feature.

Friday, May 8, 2009

Showstopper resolved - Release on track!

The showstopper with the windows release has been successfully resolved. The issue turned out to be a simple bug. Basically we have a structure which has an embedded vector STL class in it. What the code was doing was to create the structure, and before assigning contents to it, was simply memsetting the entire structure to 0. While this is normal operation in any C code, in C++ this can cause very weird bugs. More technical details can be had in the bug report or in my blog.

Now I have created a 1.0 branch to release Adrian, This branch will contain some basic bug fixes. The plan is to release it this Sunday. The trunk will continue to experiment with new features meant for 2.0 like new model loaders etc.

Wednesday, May 6, 2009

What is blocking Adrian Release

Currently we have done many improvements to the old game, but unfortunately unable to release, since the windows Release configuration crashes unexpectedly. The Debug configuration runs perfectly. The Linux version is running very well too. Some thing appears rotten there.

The problem occurs in some list handling in the MD2 model loading code. So we have two options - debug it or use a more professional loader. Basically we have seen a good open source model loader based on the BSD license at http://assimp.sourceforge.net/. This will be hopefully solve the woes. But I guess it pays to debug what the problem is with the existing code too, but not by blocking the release indefinitely. Technical details are tracked in this issue report.

So that is exactly what was blocking the release. I cant wait to populate the downloads section with the first "official" Beta release version of our game!

3D Models - accidental discovery

Well, in Adrian, when we initially created it, we hard coded the building load routines. But now that we are extending it to load maps on the fly, this had got to go. But I found out that it was a very tedious thing to migrate all this information into a normal file from C code by hand.

So I did a hack, which replaced all the GL function bodies with a simple printf about what they are doing and their coordinates. This caused it to generate an output file, which sequenced the list of OpenGL commands.

For loading the building, all I did was at load time I did a glNewList and put in all the vertices, textures drawing etc into it. Now for rendering, I just call the display list. This seemed like a very nice and unique solution. Basically then I realized that what I have done is exactly what 3D modelling formats do.

You kind of understand things at a whole new level, if you come up with a solution, which turns out to be actually widely used. You would actually know the exact usage of such a solution.

Chill.