About my current programming project…

For about a year now, I've been working on a little cross-platform C++ library that would help put together 3D OpenGL games. I say a library, because I don't really want to make a game engine, I just want to keep common boilerplate code somewhere separate. I'm developing this library mainly for learning purposes, I do not intend to offer is as a actual game development library.

It all started when I bought two game programming related books - the Game Programming Gems and Game Coding Complete (3rd edition), which is an excellent and well-written book. The books gave me quite good understanding about what game programming is like and also provided many useful code snippets (such as the event system and hashed string from Game Coding Complete).

So far, I have managed to create a simple model viewer using my library. I've got OpenGL 3 functionality (I'm not using any fixed functionality... at least I try not to) as far as having a custom matrix stack, the renderer draw the scene into a frame buffer and display it on screen, I've just got diffuse and specular lighting working with GLSL shaders. I've also implemented a basic GUI system, which can draw images, buttons and text on screen and react to mouse input. There is also an in-game Quake-style console for sending commands to the application and a basic component based entity system that still needs a few quirks sorted out.

My library also supports Bitmap and TrueType fonts. I'm using the FreeType library for the TrueType fonts, and I'm just rendering the font glyphs to a texture during runtime (at initialization) to get pixel perfect fonts. If you are interested in the code, I might just make a post about it.

I'm currently only using a few 3rd party libraries including Boost, FreeType, GLEW, GLFW and GLM (which is an excellent math library by the way!). Probably some more libraries will be added later for sound and networking. At first I was using SDL for window creation and input polling, but then switched to GLFW, because it is more lightweight and more OpenGL oriented.

I've split the library into modules such as Core, Renderer, Input etc. so each module can be compiled into a separate DLL or linked statically to an executable (preferred way). I'm using Boost.Build as the build system, since I found it relatively easy to get started with. I might switch over to CMake at some point though, because it seems to be more popular and easier to use perhaps...

I will continue developing this library at least to a point where I can make a reasonable little 3D game with sound and networking... perhaps a pong sort of game. If you are also interested in game programing, I would definately recommend the books mentioned above and also theses sites: Game Development on StackExchange.com and GameDev.net.

Here are a few screenshots of the model viewer:

Toyota Supra MKIV

This second car I modeled for rFactor in 2009 is the famous Toyota Supra MKIV. I don't like heavy visual tuning (called ricing), but this car seems to be one of the most tuned sports car. I think nowadays it is quite hard to find a real stock Supra MKIV out there... Anyway, this car only has the TRD spoiler and two sets of aftermarket wheels for upgrades in rFactor, other than that is looks stock.

The mod contains two versions of the car - the 220hp normally aspirated one (GZ) and the 320hp twin turbo (RZ).

This mod is also special because it uses two custom shaders I wrote to make the visuals better. The first shader was a modified car paint shader that added the fresnel effect, which makes the reflections more realistic. The other shader I wrote is essentially a billboarding shader that adds realisting light glares - rFactor didn't have this effect, they just used static models for light glares, which looked quite unrealistic.

The Supra MKIV mod received very high scores from the community, and again, partly it is because of Niels Heusinkveld, who created very realistic physics for the car.

The car is modeled in 3DS Max. Here is some information about the model:

  • Polycount: approximately 23200 (35000 with high quality interior)
  • Number of textures: about 20

You can download the mod for rFactor here.

Chevrolet Corvette C6 (version 1)

I modeled this car in 2007, it was my first mod for the popular racing simulator rFactor. The community gave it quite good scores and it received the rFactorCentral Street Car Of The Year award. I guess the community liked the car and they said it was done very well, the textures and models were very good. I would say that the car was a success also because Niels Heusinkveld created the physics for the car and he is really talented at this!

The mod contains 4 versions of the Corvette - the Coupe, the Convertible, the Z06 and the 2007 Indy Pace Car.

The car is modeled in 3DS Max. Here is some information about the model:

  • 4 LOD levels for most parts
  • Polycount: about 21000 for highest LOD.
  • Number of textures: around 25 (this includes all versions)

You can download the Corvette mod for rFactor here.

By the way, since I'm currently remodeling this car from scratch, I've added the "version 1" in the title to avoid confusion.

Short Circuit – an underrated funny comedy

Have you seen Wall-E? Did you like it? Yes? Well, then check out Short Circuit (1986) and find out where Pixar gets its ideas from 😉

My most favorite quotes from the movie:

Ben Jabituya: I am thinking she is a virgin. Or at least she used to be.

Newton Crosby: Where are you from, anyway?
Ben Jabituya: Bakersfield, originally.
Newton Crosby: No, I mean your ancestors.
Ben Jabituya: Oh, them. Pittsburgh.
(the joke here is that Ben is an indian guy)

Ben Jabituya: Newton, we are wasting valueless time here.

Ben Jabituya: I am standing here beside myself.

Newton Crosby: Holy shit.
Number 5: No shit. Where see shit?

Ben Jabituya: Looks like you have created another Frankfurter's monster.
Number 2: Visibility 5 feet, 2 feet, no feet...

Stephanie Speck: Yes, I'd like to speak to one of your head warmongers, please.
Duke: Dr. Warmonger - I mean, Dr. Marner!

Yay… I now have my own personal website

Well, it took a long time, but I finally managed to get myself a host and my new site up and running. This site is supposed to be my online portfolio and blog.

Once upon a time about 10 years ago, I was a hell of a webmaster... well not really, because I was young and stupid but I did like to redesign my website almost weekly. At that time, it was all just HTML and frames and animated gifs and whatnot. But I was in constant search for a better design for my site and never really did turn much attention to the contents of my site. I remember, I had some images and tutorial about POV-Ray, which I was fooling around with at that time, I even sent one picture (search for 'cell.jpg') to the then popular Internet Ray Tracing Competition; my site also had some old games that you could download and so on.

All this constant updating of my website improved my skills in webdesign and eventually I taught myself PHP to some extent. At that point I started coding and designing websites for other people and entities too. I even created a completely new website for the high school I went to at that time. I was pretty proud of the site, and it lasted for a good 4-5 years before it was replaced. So as I discovered, creating websites for other people was much more interesting than constantly updating my own site, and that I didn't have time to update my own site, I decided to take it down.

So, fast forward about 5 years and here I am again, with a new site (runs on WordPress, but the theme is my own creation) and quite a few things to share, I hope. Because I like cars and computer games (and women and beer 😉 ), I played racing games a lot, Need For Speed series was one of my favorite. While playing, I always noticed the games lacked some features, cars, tracks etc. that I would've liked, so I looked into modding. I discovered some tools for NFS3 that enabled the user to change a car or track. That eventually led me to modeling, I began by trying to change the existing models to fit my needs and later, I decided to model a complete car from scratch. It turned out, I didn't suck too much at modeling according to other people, so I continued. A few projects were scrapped or never finished, but I did manage to create a few cars that got quite a lot of positive feedback from the communities of a few games. My most successful mods are the Chevrolet Corvette C6 I created in 2007 and the Toyota Supra MKIV I created in 2009. I'm currently remodeling the Corvette C6 from scratch to add the ZR-1 and increase the details (and because I just love that car 🙂 ).

In 2005 I went to study computer science at the University of Tartu, but unfortunately I could't wrap my head around the various math subjects (math is hard for me), so that was that... still not all was bad at that time, because I got a job as an entry level software developer and maintainer. Before that I had done only one web site as a contractor, but I also had beginner programming skills in Java. The job taught me a lot... really really lot! I got to work as part of a software development team on various projects over time and I also touched various technologies. I mostly programmed in Java but also did a few things in C/C++.

In 2008 I reentered the same university and took my chances once more with CS. This time I've almost made it to third year, partly thanks to the small restructuring of the subjects in the curriculum (not all math is on the first year) and partly thanks to my work experience, which enabled me to ace most of the programming classes. I'm still struggling with math, but I hope that this time I will succeed... Since the bills don't pay themselves, and "whether you're rich or poor, it's nice to have money", I still work part time as a C/C++ developer at a different company.

Since I played games a lot (now, I have less time to play) I naturally wanted to make a game myself one day. Learning Java and later C++ gave me an opportunity to cook something up myself. I kinda skipped the 2D phase and went straight to 3D by creating a Rubik's Cube solving game in Java 3D. Since I wanted to get closer to the real game programming I moved to C++ and OpenGL and started experimenting and learning game programming more deeply. I even bought two books on the subject, but since I like to code first and ask questions later (by that I mean, that I need to try things out as I learn new stuff; I can't just read a whole book on a subject, expect to understand it and then start coding), I haven't finished to yet... 🙂

I'm currently building a C++/OpenGL library for myself that would contain lots of boilerplate code for creating games... it already starts to look more like a game engine (yes, yes, I know, write games, not engines). The sole purpose of the library is learning. If I really want to create a nice game and some day I will, I will use a professional game engine.

I like traveling to warm places (I hate cold weather and snow!), so far I've been to Portugal once and Greece 4 times (once on mainland, once on Rhodos and twice on Crete) - Greek food is just too good (okay, the people are nice too) 😛

Ok, long post is long... and this was just an introduction and a bit of an overview of what can be found on my new site.