Thursday, January 29, 2009

My experiments with CrystalSpace

In an attempt to understand a 3d engine's internal layout, I decided to work with some free engine. Professional side is keeping me active on the Unreal3 engine, while I started my own experiments with CrystalSpace.
I downloaded the source code for the engine for mac and built it some weeks ago. I have now come to have read the documentation (partially)... and built the tutorials successfully. I would like to mention the interesting problem that i came across while working with the tutorial.

CrystalSpace is using the Appkit framework (NSApp) for the windowing interface with MacOS. The window comes up all right, and rendering is also proper, but I my app was not receiving the keyboard and mouse events. I found out after some struggling that MacOS treats the CS exec as a background process, hence does not deliver the events other than the rendering ones.
Only Cocoa processes are considered as foreground processes and receive all the events and a place in the dock.
As far as I understand, cocoa applications are simple folders with the name "XXX.app". MacOS shows these folders as single clickable (executable) files. To see the contents of these folders just RClk them and select "Show Package Contents".

As a solution I copied one of the Cocoa wrappers and changed it to include my app. I am now copying the generated executable into the wrapper as from the makefile itself.
I also modified the tutorial to generate a square out of the coordinates I provided... in my future works i will be loading meshes and providing the coordinates myself. I am now looking into the materials and wireframe rendering modes.
Unfortunately, I haven't found a screen capture utility with MacOS, hence cannot post the picture of my first humble experiment.

Thursday, January 22, 2009

Pulse3D stalled !!!

A lot of new stuff has been going on lately. This post is basically compressing the last 5 months into a few words. I had to stall pulse3d for an indefinate period owing to the excess work pressure building up at Nvidia. Also during that time, I was contacted by a Singapore based gaming studio, working of a MMOG. I took the opportunity as a break into the gaming industry, and decided to move here.
I'm working on the Unreal 3 engine, and it was now that I realized the large handicapp my design of Pulse3D was suffering with. I decided to get more info on the design of an engine by getting my hands wet using some of them first hand. As for now, I have stalled working on Pulse3D, but hope to come back someday to complete what I have started.
My loyal laptop stopped charging a few months ago, and I had to get a new one with a better graphics card... went in for a macbook. MacOS feels much like my first hands on Linux. Have downloaded and setup CrystalSpace, hoping that it will help me understand a typical 3D engine better.

Tuesday, June 10, 2008

Pulse3D

Pulse3D started as a result to the addiction to game programming. I got my first real taste of this new flavor of programming when I made a few ridiculously small games for competitions; and then a rather crude one for my college major project.

Pulse3D is supposed to be a game engine (rather rendering engine) that will allow game developers to use OpenGL or DirectX as the underlying rendering subsystem. Being a hardcore fan of Linux; I'm targeting OS independence by isolating the Windowing and event system from the engine.
The project being propelled by a one man army at the moment, I'm not much into documentation; but the design is rather clear in my mind. The features supported at the moment include frustum culling, meshes, lighting, collision detection, camera, memory management and the other basic infrastructure. Currently everything is using OpenGL as the renderer, but the design is flexible and will have DirectX added at a later stage.

After building in basic support for meshes, rendering and lighting, I thought of giving my own code a shot from the developer's side. So I built an app that was using Pulse3D, loaded and rendered a chess piece I found on the net. The screen-shots demonstrate the use of meshes, and lighting.
However, I did find out that my api as yet is not very user friendly; and has some bugs I'll like to get rid of.
The next feature on the list will be Textures; so that Pulse3D will be able to load basic textures, and instruct the underlying rendering subsystem on how to apply them.

The obvious question that comes to mind is that will it revolutionize something in the gaming industry ??? Well just being blunt in my answer, its too big of a dream to think that way. I'm working on this project just as a hobbyist programmer, just for the passion. I learn new stuff this way; going and developing stuff (often from scratch).

Pulse3D is hosted on Sourceforge where you can track its development;. http://sourceforge.net/projects/pulse3d
Although be warned that at times you will not see updates for weeks in a row... just presume that I'm either caught up with office stuff or collecting the ingredients for the next magical spell.

Tuesday, May 27, 2008

What's been keeping me busy ??? (continued)

I had to save my blog in a hurry yesterday.
Well, where was I ???
Yep, I remember; talking about the number of competitions I went along with Abhishek. Well we managed to sweep of prizes lots of stuff from those visits (include IIT Delhi, MBM Jodhpur, and lots of local colleges).
Also worth mentioning my work with my younger brother... Nikhil. He is following the same footsteps that i was during my earlier days. Also a great programmer, and animator, I spent some time with him too visiting (and winning) several software competitions. He was the one with whom I would play games throughout the night... NFS, Thief, SplinterCell, Age Of Empires, MaxPayne being among the most popular ones.
I also ventured into the unknown when I decided of going in for developing an OS kernel for my minor project at college. My frnds were also interested, and joined me in the crusade. Finally we landed up with a small, basic OS kernel that was handling Multitasking and Memory management. That was the end if it, and we never got time to get back to it. It was interesting while it lasted.

Then came the time for the major project; and I wanted to put my new skills at OpenGL to a test. Again my frnds and me kicked off a project that was crudely to resemble NeedForSpeed. OpenGL/Linux/C++/X-Windows were among the ingredients, and the project did well enough to get the Best Project award from the college.

After college, I joined Nvidia Graphics, Pune; and have been here since then.

More on my projects to come...

What's been keeping me busy ???

Well, here I am. Finally started my own blog. Late... but I believe that now is the perfect time... whenever you think its time :)
There was a lot of happening stuff going on in my life, that i would have loved to pin down; so that later in my life when I turn the pages thru my archives; it would only prove what a madman I was in the prime of my life.

Not much to say about my first post, so let me introduce myself. I've been known among friends for my addictiveness to programming (yes, it is weird). Most of the things in my life have started on the tougher side, then made my way to the easier side. I started with C++ before learning C. I started with MFC before I caught on to traditional VC++ programming. I even managed to start DirectX before OpenGL (not that it really has to be this way).
Through the years, I've grown to latch on to a number of stuff that include
* Network programming in C/Linux
* Multi threaded programming (again in C/Linux)
* GUI programming with MFC/VC++, QT, X-Windows/C
* Vertex and Fragment shaders (CG/OpenGL)
* STL, Assembly (x86 family)

I've teamed up with my friends in college days to get the best of almost everything. Back in college, I was with RVRK Abhishek (yep, he's somewhere on blogspot too)... among the best team-ups one could think of. We literally complementary... he was skilled in web designing, libraries, hacking, re-using stuff; while I was gr8 at programming, logic designing.