99 posts

The Lenzmaker Project


Lenzmaker Project is a Game Engine geared toward creating vast open game worlds with procedural content.

Platforms: Cross platform (Windows, Linux, Android – Working on it. ūüôā )

Written with: C/C++, OpenGL/GLSL, wxWidgets, DirectSound, OpenAL,  Python

Architectural pattern: Interface-based programming.

API Documentation:






The beginning

Somewhere around year 2007, I embarked the journey for a game project, the development plan included both game as well as the game engine.¬† Using a third party engine was not in my plan as¬†most of the commercial engines were not affordable for me during that time.¬† The free and the open source ones were good, since they are open source I had no idea when the authors of these frameworks discontinues their work.¬† Some of these Engines comes up with GPL license, integrating which may attract trouble at the time we bring it into the market as a commercial product.¬† Other than this legal stuff, what motivated me to write a game engine from the scratch is that the freedom it gives us to customize the source code according to the needs.¬† Almost all the commercial game engine’s are general purpose frameworks geared towards creating all genre¬†of games.¬† Having control over the whole thing let us specifically customize the required features at the fundamental level to create some stuff, possibly an out of the box stuff like Minecraft or No Man’s Sky.¬† But writing things from scratch seems hard, time consuming, still its a thrilling experience.¬† However, adopting a 3rd party engine is an ideal choice when there is a tight “Time to market” constraints.¬† During the development phase, there were many situations I felt like quitting.¬† Once I quit and completely disconnected from it. Later, there were some wake up calls, and it put myself back on track.¬† If you wish to know the development effort required for writing your own game engine, then have a look at these posts on Quora and get demotivated ūüôā

There are people exists on earth who is aware of hardships of climbing mount Everest, still they find joy in accomplishing it.

Read More →

The Bumblebee Project – NVIDIA Optimus support for Linux

What is the Bumblebee project?

The Ubuntu Wiki has a better explanation:

“Bumblebee aims to provide support for NVIDIA Optimus laptops for GNU/Linux distributions. Using Bumblebee, you can use your NVIDIA card for rendering graphics which will be displayed using the Intel card.Bumblebee is officially supported by Ubuntu in 14.04 newer. However, all releases are supported by the Bumblebee Project community from Ubuntu version 12.04 up to 14.04.”

I came across this while searching a driver for my graphics card.¬† I’m using a DELL laptop with a hybrid graphics card – NVIDIA GeForce GT 525M.¬† I found no satisfactory drivers in the linux(Ubuntu) platform that works perfectly.¬† Even though I tried configuring with different versions of NVIDIA Drivers for Ubuntu, the module was always crashing when the application loads.¬† I setup bumblebee, and it worked.

Click here for the instructions to setup graphics cards for your NVIDIA Optimus laptops with Linux(Ubuntu distribution)

After configuration, use the optirun command to run the application with the NVIDIA card,

optirun ./myapp

To test it, install glmark2 which is a benchmarking tool for Opengl.

sudo apt-get install glmark2

After successful installation, run the command in the terminal,

optirun glmark2

It will show up the details of the graphics card and performs various tests along with preview.

screenshot-from-2016-12-20-234012 screenshot-from-2016-12-20-234134

Blender Coordinate System to OpenGL

Some simple transformations may require when we import a 3d model from a modeling package which uses different coordinate system than the 3D engine we use.   Though both Blender and OpenGL use right handed coordinate system,  Blender is designed to have its z axis point upwards.  So if we import a 3d model which is created in Blender with its height along Z axis, the model seem to aligned with the view direction if we try to draw it in OpenGL with the default model, projection transformations.  We need to apply some rotations, translations as well as some vertex reordering to make the geometry visually appear similar to where we have created it.

I hope Blender has its coordinate system pretty hard coded into this.  And I found this question in a few game development forums asking for a solution.

Coordinate System

Differences in Axis orientations in both Blender and OpenGL.



Read More →

Writing a scene exporter addon for Blender

This tutorial will explain how to pull the scene data(meshes, lights, cameras, animations) from Blender and dump them into a desired file format for our use.  This is what every addon in the Blender does.  This article emphasize more on how to read the required data from blender scene, not how exactly the procedures to put them into an addon.

Blender Exporter Menu

First of all, Blender is a 3D modeling/animation platform is built using C++ and Python.  Python is used for extending its existing functionalities and is released as the Blender-Python API.  It can be found here.

Read More →

Music Studio

Hi folks, welcome to my music studio. I’m a big fan of instrumental music and movie BGM’s. These are some of my original compositions.

Headphones please!
Good to listen through headphones.

Rhythms Of Pride

The word “Pride” has two meanings. Its the conflict between those two forms.

Noritia Valley

A castle known for mysterious occult powers. The clock is ticking faster rushing its way to the sunset. Mist covered all over the place. The air became very dense and it was difficult to breathe. I felt like I was taking my last breath at Noritia Valley.

Moments Untold

Love is a promise; love is a souvenir,
once given never forgotten,
never let it disappear.

Rise Of the Heavens

We are unity in diversity. We are the visionaries working for the betterment of our nation and the whole world. We are here to revamp our civilization. We stand together and wish for the rise of the heavens !


If you are not one of us, then probably you are one of them. We are anarchists bringing transparency in Governance.

Starry Nights

Stars connects people on every planet. A night lit by moonlight, witnessed by stars, a lyric written from one planet take wings in another planet.

3D Projection using lens formula

This is how I re-invented the wheel ūüôā

This is an alternate approach to do projection in computer graphics using a lens formula. As it is a technique which is derived from lens formula, the focal length of the lens is the major parameter. The traditional projection techniques uses the ‘field of view’ value – which is an angle expressed in degrees or radians.

Anyways, if you are a person who didn’t even experienced the 3D graphics programming, you may ask these following questions to yourself before you get started.

1. How to draw 3D objects on a 2D Plane?

2. How can we plot a 3D vertex(x, y, z) into a 2D plane which has only 2 axes.

I asked this questions to myself long time back before attending some 3D graphics lessons. As a result, after some days of deep thought, I landed up with an idea to go through my Physics book. I flipped through the pages and stopped at the chapter Ray Optics. Finally, after some days, I ended up with some clues to solve the above problems. The final outcome of this was an equation by which we can accomplish projection. Later when I covered computer graphics I came to know that this is called the ‚ÄúProjection‚ÄĚ operation in 3D Graphics. Yeah. The moment I came to know that I re-invented the wheel.

Here we start,

\frac{1}{v} - \frac{1}{u} = \frac{1}{f}

Read More →